1*10524682SJagadeesh Kona // SPDX-License-Identifier: GPL-2.0-only 2*10524682SJagadeesh Kona /* 3*10524682SJagadeesh Kona * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 4*10524682SJagadeesh Kona */ 5*10524682SJagadeesh Kona 6*10524682SJagadeesh Kona #include <linux/clk-provider.h> 7*10524682SJagadeesh Kona #include <linux/mod_devicetable.h> 8*10524682SJagadeesh Kona #include <linux/module.h> 9*10524682SJagadeesh Kona #include <linux/platform_device.h> 10*10524682SJagadeesh Kona #include <linux/regmap.h> 11*10524682SJagadeesh Kona 12*10524682SJagadeesh Kona #include <dt-bindings/clock/qcom,x1e80100-camcc.h> 13*10524682SJagadeesh Kona 14*10524682SJagadeesh Kona #include "clk-alpha-pll.h" 15*10524682SJagadeesh Kona #include "clk-branch.h" 16*10524682SJagadeesh Kona #include "clk-rcg.h" 17*10524682SJagadeesh Kona #include "clk-regmap.h" 18*10524682SJagadeesh Kona #include "common.h" 19*10524682SJagadeesh Kona #include "gdsc.h" 20*10524682SJagadeesh Kona #include "reset.h" 21*10524682SJagadeesh Kona 22*10524682SJagadeesh Kona enum { 23*10524682SJagadeesh Kona DT_IFACE, 24*10524682SJagadeesh Kona DT_BI_TCXO, 25*10524682SJagadeesh Kona DT_BI_TCXO_AO, 26*10524682SJagadeesh Kona DT_SLEEP_CLK, 27*10524682SJagadeesh Kona }; 28*10524682SJagadeesh Kona 29*10524682SJagadeesh Kona enum { 30*10524682SJagadeesh Kona P_BI_TCXO, 31*10524682SJagadeesh Kona P_BI_TCXO_AO, 32*10524682SJagadeesh Kona P_CAM_CC_PLL0_OUT_EVEN, 33*10524682SJagadeesh Kona P_CAM_CC_PLL0_OUT_MAIN, 34*10524682SJagadeesh Kona P_CAM_CC_PLL0_OUT_ODD, 35*10524682SJagadeesh Kona P_CAM_CC_PLL1_OUT_EVEN, 36*10524682SJagadeesh Kona P_CAM_CC_PLL2_OUT_EVEN, 37*10524682SJagadeesh Kona P_CAM_CC_PLL2_OUT_MAIN, 38*10524682SJagadeesh Kona P_CAM_CC_PLL3_OUT_EVEN, 39*10524682SJagadeesh Kona P_CAM_CC_PLL6_OUT_EVEN, 40*10524682SJagadeesh Kona P_SLEEP_CLK, 41*10524682SJagadeesh Kona }; 42*10524682SJagadeesh Kona 43*10524682SJagadeesh Kona static const struct pll_vco lucid_ole_vco[] = { 44*10524682SJagadeesh Kona { 249600000, 2300000000, 0 }, 45*10524682SJagadeesh Kona }; 46*10524682SJagadeesh Kona 47*10524682SJagadeesh Kona static const struct pll_vco rivian_ole_vco[] = { 48*10524682SJagadeesh Kona { 777000000, 1285000000, 0 }, 49*10524682SJagadeesh Kona }; 50*10524682SJagadeesh Kona 51*10524682SJagadeesh Kona /* 1200.0 MHz Configuration */ 52*10524682SJagadeesh Kona static const struct alpha_pll_config cam_cc_pll0_config = { 53*10524682SJagadeesh Kona .l = 0x3e, 54*10524682SJagadeesh Kona .alpha = 0x8000, 55*10524682SJagadeesh Kona .config_ctl_val = 0x20485699, 56*10524682SJagadeesh Kona .config_ctl_hi_val = 0x00182261, 57*10524682SJagadeesh Kona .config_ctl_hi1_val = 0x82aa299c, 58*10524682SJagadeesh Kona .test_ctl_val = 0x00000000, 59*10524682SJagadeesh Kona .test_ctl_hi_val = 0x00000003, 60*10524682SJagadeesh Kona .test_ctl_hi1_val = 0x00009000, 61*10524682SJagadeesh Kona .test_ctl_hi2_val = 0x00000034, 62*10524682SJagadeesh Kona .user_ctl_val = 0x00008400, 63*10524682SJagadeesh Kona .user_ctl_hi_val = 0x00000005, 64*10524682SJagadeesh Kona }; 65*10524682SJagadeesh Kona 66*10524682SJagadeesh Kona static struct clk_alpha_pll cam_cc_pll0 = { 67*10524682SJagadeesh Kona .offset = 0x0, 68*10524682SJagadeesh Kona .config = &cam_cc_pll0_config, 69*10524682SJagadeesh Kona .vco_table = lucid_ole_vco, 70*10524682SJagadeesh Kona .num_vco = ARRAY_SIZE(lucid_ole_vco), 71*10524682SJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 72*10524682SJagadeesh Kona .clkr = { 73*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 74*10524682SJagadeesh Kona .name = "cam_cc_pll0", 75*10524682SJagadeesh Kona .parent_data = &(const struct clk_parent_data) { 76*10524682SJagadeesh Kona .index = DT_BI_TCXO, 77*10524682SJagadeesh Kona }, 78*10524682SJagadeesh Kona .num_parents = 1, 79*10524682SJagadeesh Kona .ops = &clk_alpha_pll_lucid_evo_ops, 80*10524682SJagadeesh Kona }, 81*10524682SJagadeesh Kona }, 82*10524682SJagadeesh Kona }; 83*10524682SJagadeesh Kona 84*10524682SJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll0_out_even[] = { 85*10524682SJagadeesh Kona { 0x1, 2 }, 86*10524682SJagadeesh Kona { } 87*10524682SJagadeesh Kona }; 88*10524682SJagadeesh Kona 89*10524682SJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll0_out_even = { 90*10524682SJagadeesh Kona .offset = 0x0, 91*10524682SJagadeesh Kona .post_div_shift = 10, 92*10524682SJagadeesh Kona .post_div_table = post_div_table_cam_cc_pll0_out_even, 93*10524682SJagadeesh Kona .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_even), 94*10524682SJagadeesh Kona .width = 4, 95*10524682SJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 96*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 97*10524682SJagadeesh Kona .name = "cam_cc_pll0_out_even", 98*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 99*10524682SJagadeesh Kona &cam_cc_pll0.clkr.hw, 100*10524682SJagadeesh Kona }, 101*10524682SJagadeesh Kona .num_parents = 1, 102*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 103*10524682SJagadeesh Kona .ops = &clk_alpha_pll_postdiv_lucid_ole_ops, 104*10524682SJagadeesh Kona }, 105*10524682SJagadeesh Kona }; 106*10524682SJagadeesh Kona 107*10524682SJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll0_out_odd[] = { 108*10524682SJagadeesh Kona { 0x2, 3 }, 109*10524682SJagadeesh Kona { } 110*10524682SJagadeesh Kona }; 111*10524682SJagadeesh Kona 112*10524682SJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll0_out_odd = { 113*10524682SJagadeesh Kona .offset = 0x0, 114*10524682SJagadeesh Kona .post_div_shift = 14, 115*10524682SJagadeesh Kona .post_div_table = post_div_table_cam_cc_pll0_out_odd, 116*10524682SJagadeesh Kona .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_odd), 117*10524682SJagadeesh Kona .width = 4, 118*10524682SJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 119*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 120*10524682SJagadeesh Kona .name = "cam_cc_pll0_out_odd", 121*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 122*10524682SJagadeesh Kona &cam_cc_pll0.clkr.hw, 123*10524682SJagadeesh Kona }, 124*10524682SJagadeesh Kona .num_parents = 1, 125*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 126*10524682SJagadeesh Kona .ops = &clk_alpha_pll_postdiv_lucid_ole_ops, 127*10524682SJagadeesh Kona }, 128*10524682SJagadeesh Kona }; 129*10524682SJagadeesh Kona 130*10524682SJagadeesh Kona /* 728.0 MHz Configuration */ 131*10524682SJagadeesh Kona static const struct alpha_pll_config cam_cc_pll1_config = { 132*10524682SJagadeesh Kona .l = 0x25, 133*10524682SJagadeesh Kona .alpha = 0xeaaa, 134*10524682SJagadeesh Kona .config_ctl_val = 0x20485699, 135*10524682SJagadeesh Kona .config_ctl_hi_val = 0x00182261, 136*10524682SJagadeesh Kona .config_ctl_hi1_val = 0x82aa299c, 137*10524682SJagadeesh Kona .test_ctl_val = 0x00000000, 138*10524682SJagadeesh Kona .test_ctl_hi_val = 0x00000003, 139*10524682SJagadeesh Kona .test_ctl_hi1_val = 0x00009000, 140*10524682SJagadeesh Kona .test_ctl_hi2_val = 0x00000034, 141*10524682SJagadeesh Kona .user_ctl_val = 0x00000400, 142*10524682SJagadeesh Kona .user_ctl_hi_val = 0x00000005, 143*10524682SJagadeesh Kona }; 144*10524682SJagadeesh Kona 145*10524682SJagadeesh Kona static struct clk_alpha_pll cam_cc_pll1 = { 146*10524682SJagadeesh Kona .offset = 0x1000, 147*10524682SJagadeesh Kona .config = &cam_cc_pll1_config, 148*10524682SJagadeesh Kona .vco_table = lucid_ole_vco, 149*10524682SJagadeesh Kona .num_vco = ARRAY_SIZE(lucid_ole_vco), 150*10524682SJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 151*10524682SJagadeesh Kona .clkr = { 152*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 153*10524682SJagadeesh Kona .name = "cam_cc_pll1", 154*10524682SJagadeesh Kona .parent_data = &(const struct clk_parent_data) { 155*10524682SJagadeesh Kona .index = DT_BI_TCXO, 156*10524682SJagadeesh Kona }, 157*10524682SJagadeesh Kona .num_parents = 1, 158*10524682SJagadeesh Kona .ops = &clk_alpha_pll_lucid_evo_ops, 159*10524682SJagadeesh Kona }, 160*10524682SJagadeesh Kona }, 161*10524682SJagadeesh Kona }; 162*10524682SJagadeesh Kona 163*10524682SJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll1_out_even[] = { 164*10524682SJagadeesh Kona { 0x1, 2 }, 165*10524682SJagadeesh Kona { } 166*10524682SJagadeesh Kona }; 167*10524682SJagadeesh Kona 168*10524682SJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll1_out_even = { 169*10524682SJagadeesh Kona .offset = 0x1000, 170*10524682SJagadeesh Kona .post_div_shift = 10, 171*10524682SJagadeesh Kona .post_div_table = post_div_table_cam_cc_pll1_out_even, 172*10524682SJagadeesh Kona .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll1_out_even), 173*10524682SJagadeesh Kona .width = 4, 174*10524682SJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 175*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 176*10524682SJagadeesh Kona .name = "cam_cc_pll1_out_even", 177*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 178*10524682SJagadeesh Kona &cam_cc_pll1.clkr.hw, 179*10524682SJagadeesh Kona }, 180*10524682SJagadeesh Kona .num_parents = 1, 181*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 182*10524682SJagadeesh Kona .ops = &clk_alpha_pll_postdiv_lucid_ole_ops, 183*10524682SJagadeesh Kona }, 184*10524682SJagadeesh Kona }; 185*10524682SJagadeesh Kona 186*10524682SJagadeesh Kona /* 960.0 MHz Configuration */ 187*10524682SJagadeesh Kona static const struct alpha_pll_config cam_cc_pll2_config = { 188*10524682SJagadeesh Kona .l = 0x32, 189*10524682SJagadeesh Kona .alpha = 0x0, 190*10524682SJagadeesh Kona .config_ctl_val = 0x10000030, 191*10524682SJagadeesh Kona .config_ctl_hi_val = 0x80890263, 192*10524682SJagadeesh Kona .config_ctl_hi1_val = 0x00000217, 193*10524682SJagadeesh Kona .user_ctl_val = 0x00000000, 194*10524682SJagadeesh Kona .user_ctl_hi_val = 0x00100000, 195*10524682SJagadeesh Kona }; 196*10524682SJagadeesh Kona 197*10524682SJagadeesh Kona static struct clk_alpha_pll cam_cc_pll2 = { 198*10524682SJagadeesh Kona .offset = 0x2000, 199*10524682SJagadeesh Kona .config = &cam_cc_pll2_config, 200*10524682SJagadeesh Kona .vco_table = rivian_ole_vco, 201*10524682SJagadeesh Kona .num_vco = ARRAY_SIZE(rivian_ole_vco), 202*10524682SJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_RIVIAN_EVO], 203*10524682SJagadeesh Kona .clkr = { 204*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 205*10524682SJagadeesh Kona .name = "cam_cc_pll2", 206*10524682SJagadeesh Kona .parent_data = &(const struct clk_parent_data) { 207*10524682SJagadeesh Kona .index = DT_BI_TCXO, 208*10524682SJagadeesh Kona }, 209*10524682SJagadeesh Kona .num_parents = 1, 210*10524682SJagadeesh Kona .ops = &clk_alpha_pll_rivian_evo_ops, 211*10524682SJagadeesh Kona }, 212*10524682SJagadeesh Kona }, 213*10524682SJagadeesh Kona }; 214*10524682SJagadeesh Kona 215*10524682SJagadeesh Kona /* 864.0 MHz Configuration */ 216*10524682SJagadeesh Kona static const struct alpha_pll_config cam_cc_pll3_config = { 217*10524682SJagadeesh Kona .l = 0x2d, 218*10524682SJagadeesh Kona .alpha = 0x0, 219*10524682SJagadeesh Kona .config_ctl_val = 0x20485699, 220*10524682SJagadeesh Kona .config_ctl_hi_val = 0x00182261, 221*10524682SJagadeesh Kona .config_ctl_hi1_val = 0x82aa299c, 222*10524682SJagadeesh Kona .test_ctl_val = 0x00000000, 223*10524682SJagadeesh Kona .test_ctl_hi_val = 0x00000003, 224*10524682SJagadeesh Kona .test_ctl_hi1_val = 0x00009000, 225*10524682SJagadeesh Kona .test_ctl_hi2_val = 0x00000034, 226*10524682SJagadeesh Kona .user_ctl_val = 0x00000400, 227*10524682SJagadeesh Kona .user_ctl_hi_val = 0x00000005, 228*10524682SJagadeesh Kona }; 229*10524682SJagadeesh Kona 230*10524682SJagadeesh Kona static struct clk_alpha_pll cam_cc_pll3 = { 231*10524682SJagadeesh Kona .offset = 0x3000, 232*10524682SJagadeesh Kona .config = &cam_cc_pll3_config, 233*10524682SJagadeesh Kona .vco_table = lucid_ole_vco, 234*10524682SJagadeesh Kona .num_vco = ARRAY_SIZE(lucid_ole_vco), 235*10524682SJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 236*10524682SJagadeesh Kona .clkr = { 237*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 238*10524682SJagadeesh Kona .name = "cam_cc_pll3", 239*10524682SJagadeesh Kona .parent_data = &(const struct clk_parent_data) { 240*10524682SJagadeesh Kona .index = DT_BI_TCXO, 241*10524682SJagadeesh Kona }, 242*10524682SJagadeesh Kona .num_parents = 1, 243*10524682SJagadeesh Kona .ops = &clk_alpha_pll_lucid_evo_ops, 244*10524682SJagadeesh Kona }, 245*10524682SJagadeesh Kona }, 246*10524682SJagadeesh Kona }; 247*10524682SJagadeesh Kona 248*10524682SJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll3_out_even[] = { 249*10524682SJagadeesh Kona { 0x1, 2 }, 250*10524682SJagadeesh Kona { } 251*10524682SJagadeesh Kona }; 252*10524682SJagadeesh Kona 253*10524682SJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll3_out_even = { 254*10524682SJagadeesh Kona .offset = 0x3000, 255*10524682SJagadeesh Kona .post_div_shift = 10, 256*10524682SJagadeesh Kona .post_div_table = post_div_table_cam_cc_pll3_out_even, 257*10524682SJagadeesh Kona .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll3_out_even), 258*10524682SJagadeesh Kona .width = 4, 259*10524682SJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 260*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 261*10524682SJagadeesh Kona .name = "cam_cc_pll3_out_even", 262*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 263*10524682SJagadeesh Kona &cam_cc_pll3.clkr.hw, 264*10524682SJagadeesh Kona }, 265*10524682SJagadeesh Kona .num_parents = 1, 266*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 267*10524682SJagadeesh Kona .ops = &clk_alpha_pll_postdiv_lucid_ole_ops, 268*10524682SJagadeesh Kona }, 269*10524682SJagadeesh Kona }; 270*10524682SJagadeesh Kona 271*10524682SJagadeesh Kona /* 960.0 MHz Configuration */ 272*10524682SJagadeesh Kona static const struct alpha_pll_config cam_cc_pll6_config = { 273*10524682SJagadeesh Kona .l = 0x32, 274*10524682SJagadeesh Kona .alpha = 0x0, 275*10524682SJagadeesh Kona .config_ctl_val = 0x20485699, 276*10524682SJagadeesh Kona .config_ctl_hi_val = 0x00182261, 277*10524682SJagadeesh Kona .config_ctl_hi1_val = 0x82aa299c, 278*10524682SJagadeesh Kona .test_ctl_val = 0x00000000, 279*10524682SJagadeesh Kona .test_ctl_hi_val = 0x00000003, 280*10524682SJagadeesh Kona .test_ctl_hi1_val = 0x00009000, 281*10524682SJagadeesh Kona .test_ctl_hi2_val = 0x00000034, 282*10524682SJagadeesh Kona .user_ctl_val = 0x00000400, 283*10524682SJagadeesh Kona .user_ctl_hi_val = 0x00000005, 284*10524682SJagadeesh Kona }; 285*10524682SJagadeesh Kona 286*10524682SJagadeesh Kona static struct clk_alpha_pll cam_cc_pll6 = { 287*10524682SJagadeesh Kona .offset = 0x6000, 288*10524682SJagadeesh Kona .config = &cam_cc_pll6_config, 289*10524682SJagadeesh Kona .vco_table = lucid_ole_vco, 290*10524682SJagadeesh Kona .num_vco = ARRAY_SIZE(lucid_ole_vco), 291*10524682SJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 292*10524682SJagadeesh Kona .clkr = { 293*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 294*10524682SJagadeesh Kona .name = "cam_cc_pll6", 295*10524682SJagadeesh Kona .parent_data = &(const struct clk_parent_data) { 296*10524682SJagadeesh Kona .index = DT_BI_TCXO, 297*10524682SJagadeesh Kona }, 298*10524682SJagadeesh Kona .num_parents = 1, 299*10524682SJagadeesh Kona .ops = &clk_alpha_pll_lucid_evo_ops, 300*10524682SJagadeesh Kona }, 301*10524682SJagadeesh Kona }, 302*10524682SJagadeesh Kona }; 303*10524682SJagadeesh Kona 304*10524682SJagadeesh Kona static const struct clk_div_table post_div_table_cam_cc_pll6_out_even[] = { 305*10524682SJagadeesh Kona { 0x1, 2 }, 306*10524682SJagadeesh Kona { } 307*10524682SJagadeesh Kona }; 308*10524682SJagadeesh Kona 309*10524682SJagadeesh Kona static struct clk_alpha_pll_postdiv cam_cc_pll6_out_even = { 310*10524682SJagadeesh Kona .offset = 0x6000, 311*10524682SJagadeesh Kona .post_div_shift = 10, 312*10524682SJagadeesh Kona .post_div_table = post_div_table_cam_cc_pll6_out_even, 313*10524682SJagadeesh Kona .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll6_out_even), 314*10524682SJagadeesh Kona .width = 4, 315*10524682SJagadeesh Kona .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE], 316*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 317*10524682SJagadeesh Kona .name = "cam_cc_pll6_out_even", 318*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 319*10524682SJagadeesh Kona &cam_cc_pll6.clkr.hw, 320*10524682SJagadeesh Kona }, 321*10524682SJagadeesh Kona .num_parents = 1, 322*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 323*10524682SJagadeesh Kona .ops = &clk_alpha_pll_postdiv_lucid_ole_ops, 324*10524682SJagadeesh Kona }, 325*10524682SJagadeesh Kona }; 326*10524682SJagadeesh Kona 327*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_0[] = { 328*10524682SJagadeesh Kona { P_BI_TCXO, 0 }, 329*10524682SJagadeesh Kona { P_CAM_CC_PLL0_OUT_MAIN, 1 }, 330*10524682SJagadeesh Kona { P_CAM_CC_PLL0_OUT_EVEN, 2 }, 331*10524682SJagadeesh Kona { P_CAM_CC_PLL0_OUT_ODD, 3 }, 332*10524682SJagadeesh Kona { P_CAM_CC_PLL6_OUT_EVEN, 5 }, 333*10524682SJagadeesh Kona }; 334*10524682SJagadeesh Kona 335*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_0[] = { 336*10524682SJagadeesh Kona { .index = DT_BI_TCXO }, 337*10524682SJagadeesh Kona { .hw = &cam_cc_pll0.clkr.hw }, 338*10524682SJagadeesh Kona { .hw = &cam_cc_pll0_out_even.clkr.hw }, 339*10524682SJagadeesh Kona { .hw = &cam_cc_pll0_out_odd.clkr.hw }, 340*10524682SJagadeesh Kona { .hw = &cam_cc_pll6_out_even.clkr.hw }, 341*10524682SJagadeesh Kona }; 342*10524682SJagadeesh Kona 343*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_1[] = { 344*10524682SJagadeesh Kona { P_BI_TCXO, 0 }, 345*10524682SJagadeesh Kona { P_CAM_CC_PLL2_OUT_EVEN, 3 }, 346*10524682SJagadeesh Kona { P_CAM_CC_PLL2_OUT_MAIN, 5 }, 347*10524682SJagadeesh Kona }; 348*10524682SJagadeesh Kona 349*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_1[] = { 350*10524682SJagadeesh Kona { .index = DT_BI_TCXO }, 351*10524682SJagadeesh Kona { .hw = &cam_cc_pll2.clkr.hw }, 352*10524682SJagadeesh Kona { .hw = &cam_cc_pll2.clkr.hw }, 353*10524682SJagadeesh Kona }; 354*10524682SJagadeesh Kona 355*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_2[] = { 356*10524682SJagadeesh Kona { P_BI_TCXO, 0 }, 357*10524682SJagadeesh Kona { P_CAM_CC_PLL3_OUT_EVEN, 6 }, 358*10524682SJagadeesh Kona }; 359*10524682SJagadeesh Kona 360*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_2[] = { 361*10524682SJagadeesh Kona { .index = DT_BI_TCXO }, 362*10524682SJagadeesh Kona { .hw = &cam_cc_pll3_out_even.clkr.hw }, 363*10524682SJagadeesh Kona }; 364*10524682SJagadeesh Kona 365*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_3[] = { 366*10524682SJagadeesh Kona { P_BI_TCXO, 0 }, 367*10524682SJagadeesh Kona { P_CAM_CC_PLL1_OUT_EVEN, 4 }, 368*10524682SJagadeesh Kona }; 369*10524682SJagadeesh Kona 370*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_3[] = { 371*10524682SJagadeesh Kona { .index = DT_BI_TCXO }, 372*10524682SJagadeesh Kona { .hw = &cam_cc_pll1_out_even.clkr.hw }, 373*10524682SJagadeesh Kona }; 374*10524682SJagadeesh Kona 375*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_4[] = { 376*10524682SJagadeesh Kona { P_SLEEP_CLK, 0 }, 377*10524682SJagadeesh Kona }; 378*10524682SJagadeesh Kona 379*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_4[] = { 380*10524682SJagadeesh Kona { .index = DT_SLEEP_CLK }, 381*10524682SJagadeesh Kona }; 382*10524682SJagadeesh Kona 383*10524682SJagadeesh Kona static const struct parent_map cam_cc_parent_map_5[] = { 384*10524682SJagadeesh Kona { P_BI_TCXO, 0 }, 385*10524682SJagadeesh Kona }; 386*10524682SJagadeesh Kona 387*10524682SJagadeesh Kona static const struct clk_parent_data cam_cc_parent_data_5[] = { 388*10524682SJagadeesh Kona { .index = DT_BI_TCXO }, 389*10524682SJagadeesh Kona }; 390*10524682SJagadeesh Kona 391*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_bps_clk_src[] = { 392*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 393*10524682SJagadeesh Kona F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0), 394*10524682SJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 395*10524682SJagadeesh Kona F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0), 396*10524682SJagadeesh Kona { } 397*10524682SJagadeesh Kona }; 398*10524682SJagadeesh Kona 399*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_bps_clk_src = { 400*10524682SJagadeesh Kona .cmd_rcgr = 0x10278, 401*10524682SJagadeesh Kona .mnd_width = 0, 402*10524682SJagadeesh Kona .hid_width = 5, 403*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 404*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_bps_clk_src, 405*10524682SJagadeesh Kona .hw_clk_ctrl = true, 406*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 407*10524682SJagadeesh Kona .name = "cam_cc_bps_clk_src", 408*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 409*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 410*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 411*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 412*10524682SJagadeesh Kona }, 413*10524682SJagadeesh Kona }; 414*10524682SJagadeesh Kona 415*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_camnoc_axi_rt_clk_src[] = { 416*10524682SJagadeesh Kona F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0), 417*10524682SJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 418*10524682SJagadeesh Kona { } 419*10524682SJagadeesh Kona }; 420*10524682SJagadeesh Kona 421*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_camnoc_axi_rt_clk_src = { 422*10524682SJagadeesh Kona .cmd_rcgr = 0x138f8, 423*10524682SJagadeesh Kona .mnd_width = 0, 424*10524682SJagadeesh Kona .hid_width = 5, 425*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 426*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_camnoc_axi_rt_clk_src, 427*10524682SJagadeesh Kona .hw_clk_ctrl = true, 428*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 429*10524682SJagadeesh Kona .name = "cam_cc_camnoc_axi_rt_clk_src", 430*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 431*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 432*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 433*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 434*10524682SJagadeesh Kona }, 435*10524682SJagadeesh Kona }; 436*10524682SJagadeesh Kona 437*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_cci_0_clk_src[] = { 438*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 439*10524682SJagadeesh Kona F(37500000, P_CAM_CC_PLL0_OUT_EVEN, 16, 0, 0), 440*10524682SJagadeesh Kona { } 441*10524682SJagadeesh Kona }; 442*10524682SJagadeesh Kona 443*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_cci_0_clk_src = { 444*10524682SJagadeesh Kona .cmd_rcgr = 0x1365c, 445*10524682SJagadeesh Kona .mnd_width = 8, 446*10524682SJagadeesh Kona .hid_width = 5, 447*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 448*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_cci_0_clk_src, 449*10524682SJagadeesh Kona .hw_clk_ctrl = true, 450*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 451*10524682SJagadeesh Kona .name = "cam_cc_cci_0_clk_src", 452*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 453*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 454*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 455*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 456*10524682SJagadeesh Kona }, 457*10524682SJagadeesh Kona }; 458*10524682SJagadeesh Kona 459*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_cci_1_clk_src = { 460*10524682SJagadeesh Kona .cmd_rcgr = 0x1378c, 461*10524682SJagadeesh Kona .mnd_width = 8, 462*10524682SJagadeesh Kona .hid_width = 5, 463*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 464*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_cci_0_clk_src, 465*10524682SJagadeesh Kona .hw_clk_ctrl = true, 466*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 467*10524682SJagadeesh Kona .name = "cam_cc_cci_1_clk_src", 468*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 469*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 470*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 471*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 472*10524682SJagadeesh Kona }, 473*10524682SJagadeesh Kona }; 474*10524682SJagadeesh Kona 475*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_cphy_rx_clk_src[] = { 476*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 477*10524682SJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0), 478*10524682SJagadeesh Kona F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0), 479*10524682SJagadeesh Kona { } 480*10524682SJagadeesh Kona }; 481*10524682SJagadeesh Kona 482*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_cphy_rx_clk_src = { 483*10524682SJagadeesh Kona .cmd_rcgr = 0x11164, 484*10524682SJagadeesh Kona .mnd_width = 0, 485*10524682SJagadeesh Kona .hid_width = 5, 486*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 487*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_cphy_rx_clk_src, 488*10524682SJagadeesh Kona .hw_clk_ctrl = true, 489*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 490*10524682SJagadeesh Kona .name = "cam_cc_cphy_rx_clk_src", 491*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 492*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 493*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 494*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 495*10524682SJagadeesh Kona }, 496*10524682SJagadeesh Kona }; 497*10524682SJagadeesh Kona 498*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_csi0phytimer_clk_src[] = { 499*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 500*10524682SJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 501*10524682SJagadeesh Kona { } 502*10524682SJagadeesh Kona }; 503*10524682SJagadeesh Kona 504*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi0phytimer_clk_src = { 505*10524682SJagadeesh Kona .cmd_rcgr = 0x150e0, 506*10524682SJagadeesh Kona .mnd_width = 0, 507*10524682SJagadeesh Kona .hid_width = 5, 508*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 509*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 510*10524682SJagadeesh Kona .hw_clk_ctrl = true, 511*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 512*10524682SJagadeesh Kona .name = "cam_cc_csi0phytimer_clk_src", 513*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 514*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 515*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 516*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 517*10524682SJagadeesh Kona }, 518*10524682SJagadeesh Kona }; 519*10524682SJagadeesh Kona 520*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi1phytimer_clk_src = { 521*10524682SJagadeesh Kona .cmd_rcgr = 0x15104, 522*10524682SJagadeesh Kona .mnd_width = 0, 523*10524682SJagadeesh Kona .hid_width = 5, 524*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 525*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 526*10524682SJagadeesh Kona .hw_clk_ctrl = true, 527*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 528*10524682SJagadeesh Kona .name = "cam_cc_csi1phytimer_clk_src", 529*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 530*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 531*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 532*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 533*10524682SJagadeesh Kona }, 534*10524682SJagadeesh Kona }; 535*10524682SJagadeesh Kona 536*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi2phytimer_clk_src = { 537*10524682SJagadeesh Kona .cmd_rcgr = 0x15124, 538*10524682SJagadeesh Kona .mnd_width = 0, 539*10524682SJagadeesh Kona .hid_width = 5, 540*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 541*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 542*10524682SJagadeesh Kona .hw_clk_ctrl = true, 543*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 544*10524682SJagadeesh Kona .name = "cam_cc_csi2phytimer_clk_src", 545*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 546*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 547*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 548*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 549*10524682SJagadeesh Kona }, 550*10524682SJagadeesh Kona }; 551*10524682SJagadeesh Kona 552*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi3phytimer_clk_src = { 553*10524682SJagadeesh Kona .cmd_rcgr = 0x15258, 554*10524682SJagadeesh Kona .mnd_width = 0, 555*10524682SJagadeesh Kona .hid_width = 5, 556*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 557*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 558*10524682SJagadeesh Kona .hw_clk_ctrl = true, 559*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 560*10524682SJagadeesh Kona .name = "cam_cc_csi3phytimer_clk_src", 561*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 562*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 563*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 564*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 565*10524682SJagadeesh Kona }, 566*10524682SJagadeesh Kona }; 567*10524682SJagadeesh Kona 568*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi4phytimer_clk_src = { 569*10524682SJagadeesh Kona .cmd_rcgr = 0x1538c, 570*10524682SJagadeesh Kona .mnd_width = 0, 571*10524682SJagadeesh Kona .hid_width = 5, 572*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 573*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 574*10524682SJagadeesh Kona .hw_clk_ctrl = true, 575*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 576*10524682SJagadeesh Kona .name = "cam_cc_csi4phytimer_clk_src", 577*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 578*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 579*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 580*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 581*10524682SJagadeesh Kona }, 582*10524682SJagadeesh Kona }; 583*10524682SJagadeesh Kona 584*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csi5phytimer_clk_src = { 585*10524682SJagadeesh Kona .cmd_rcgr = 0x154c0, 586*10524682SJagadeesh Kona .mnd_width = 0, 587*10524682SJagadeesh Kona .hid_width = 5, 588*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 589*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 590*10524682SJagadeesh Kona .hw_clk_ctrl = true, 591*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 592*10524682SJagadeesh Kona .name = "cam_cc_csi5phytimer_clk_src", 593*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 594*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 595*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 596*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 597*10524682SJagadeesh Kona }, 598*10524682SJagadeesh Kona }; 599*10524682SJagadeesh Kona 600*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_csid_clk_src[] = { 601*10524682SJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0), 602*10524682SJagadeesh Kona F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0), 603*10524682SJagadeesh Kona { } 604*10524682SJagadeesh Kona }; 605*10524682SJagadeesh Kona 606*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_csid_clk_src = { 607*10524682SJagadeesh Kona .cmd_rcgr = 0x138d4, 608*10524682SJagadeesh Kona .mnd_width = 0, 609*10524682SJagadeesh Kona .hid_width = 5, 610*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 611*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_csid_clk_src, 612*10524682SJagadeesh Kona .hw_clk_ctrl = true, 613*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 614*10524682SJagadeesh Kona .name = "cam_cc_csid_clk_src", 615*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 616*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 617*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 618*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 619*10524682SJagadeesh Kona }, 620*10524682SJagadeesh Kona }; 621*10524682SJagadeesh Kona 622*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_fast_ahb_clk_src[] = { 623*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 624*10524682SJagadeesh Kona F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0), 625*10524682SJagadeesh Kona F(200000000, P_CAM_CC_PLL0_OUT_EVEN, 3, 0, 0), 626*10524682SJagadeesh Kona F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0), 627*10524682SJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0), 628*10524682SJagadeesh Kona { } 629*10524682SJagadeesh Kona }; 630*10524682SJagadeesh Kona 631*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_fast_ahb_clk_src = { 632*10524682SJagadeesh Kona .cmd_rcgr = 0x10018, 633*10524682SJagadeesh Kona .mnd_width = 0, 634*10524682SJagadeesh Kona .hid_width = 5, 635*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 636*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_fast_ahb_clk_src, 637*10524682SJagadeesh Kona .hw_clk_ctrl = true, 638*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 639*10524682SJagadeesh Kona .name = "cam_cc_fast_ahb_clk_src", 640*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 641*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 642*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 643*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 644*10524682SJagadeesh Kona }, 645*10524682SJagadeesh Kona }; 646*10524682SJagadeesh Kona 647*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_icp_clk_src[] = { 648*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 649*10524682SJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 650*10524682SJagadeesh Kona F(480000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 651*10524682SJagadeesh Kona F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0), 652*10524682SJagadeesh Kona { } 653*10524682SJagadeesh Kona }; 654*10524682SJagadeesh Kona 655*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_icp_clk_src = { 656*10524682SJagadeesh Kona .cmd_rcgr = 0x13520, 657*10524682SJagadeesh Kona .mnd_width = 0, 658*10524682SJagadeesh Kona .hid_width = 5, 659*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 660*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_icp_clk_src, 661*10524682SJagadeesh Kona .hw_clk_ctrl = true, 662*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 663*10524682SJagadeesh Kona .name = "cam_cc_icp_clk_src", 664*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 665*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 666*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 667*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 668*10524682SJagadeesh Kona }, 669*10524682SJagadeesh Kona }; 670*10524682SJagadeesh Kona 671*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_ife_0_clk_src[] = { 672*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 673*10524682SJagadeesh Kona F(432000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 674*10524682SJagadeesh Kona F(594000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 675*10524682SJagadeesh Kona F(675000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 676*10524682SJagadeesh Kona F(727000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 677*10524682SJagadeesh Kona { } 678*10524682SJagadeesh Kona }; 679*10524682SJagadeesh Kona 680*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_ife_0_clk_src = { 681*10524682SJagadeesh Kona .cmd_rcgr = 0x11018, 682*10524682SJagadeesh Kona .mnd_width = 0, 683*10524682SJagadeesh Kona .hid_width = 5, 684*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_2, 685*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_ife_0_clk_src, 686*10524682SJagadeesh Kona .hw_clk_ctrl = true, 687*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 688*10524682SJagadeesh Kona .name = "cam_cc_ife_0_clk_src", 689*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_2, 690*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_2), 691*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 692*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 693*10524682SJagadeesh Kona }, 694*10524682SJagadeesh Kona }; 695*10524682SJagadeesh Kona 696*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_ife_lite_clk_src[] = { 697*10524682SJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 698*10524682SJagadeesh Kona F(480000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 699*10524682SJagadeesh Kona { } 700*10524682SJagadeesh Kona }; 701*10524682SJagadeesh Kona 702*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_ife_lite_clk_src = { 703*10524682SJagadeesh Kona .cmd_rcgr = 0x13000, 704*10524682SJagadeesh Kona .mnd_width = 0, 705*10524682SJagadeesh Kona .hid_width = 5, 706*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 707*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_ife_lite_clk_src, 708*10524682SJagadeesh Kona .hw_clk_ctrl = true, 709*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 710*10524682SJagadeesh Kona .name = "cam_cc_ife_lite_clk_src", 711*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 712*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 713*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 714*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 715*10524682SJagadeesh Kona }, 716*10524682SJagadeesh Kona }; 717*10524682SJagadeesh Kona 718*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_ife_lite_csid_clk_src = { 719*10524682SJagadeesh Kona .cmd_rcgr = 0x1313c, 720*10524682SJagadeesh Kona .mnd_width = 0, 721*10524682SJagadeesh Kona .hid_width = 5, 722*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 723*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_ife_lite_clk_src, 724*10524682SJagadeesh Kona .hw_clk_ctrl = true, 725*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 726*10524682SJagadeesh Kona .name = "cam_cc_ife_lite_csid_clk_src", 727*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 728*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 729*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 730*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 731*10524682SJagadeesh Kona }, 732*10524682SJagadeesh Kona }; 733*10524682SJagadeesh Kona 734*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_ipe_nps_clk_src[] = { 735*10524682SJagadeesh Kona F(364000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 736*10524682SJagadeesh Kona F(500000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 737*10524682SJagadeesh Kona F(600000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 738*10524682SJagadeesh Kona F(700000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 739*10524682SJagadeesh Kona { } 740*10524682SJagadeesh Kona }; 741*10524682SJagadeesh Kona 742*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_ipe_nps_clk_src = { 743*10524682SJagadeesh Kona .cmd_rcgr = 0x103cc, 744*10524682SJagadeesh Kona .mnd_width = 0, 745*10524682SJagadeesh Kona .hid_width = 5, 746*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_3, 747*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_ipe_nps_clk_src, 748*10524682SJagadeesh Kona .hw_clk_ctrl = true, 749*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 750*10524682SJagadeesh Kona .name = "cam_cc_ipe_nps_clk_src", 751*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_3, 752*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_3), 753*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 754*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 755*10524682SJagadeesh Kona }, 756*10524682SJagadeesh Kona }; 757*10524682SJagadeesh Kona 758*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_jpeg_clk_src[] = { 759*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 760*10524682SJagadeesh Kona F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0), 761*10524682SJagadeesh Kona F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 762*10524682SJagadeesh Kona F(480000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 763*10524682SJagadeesh Kona F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0), 764*10524682SJagadeesh Kona { } 765*10524682SJagadeesh Kona }; 766*10524682SJagadeesh Kona 767*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_jpeg_clk_src = { 768*10524682SJagadeesh Kona .cmd_rcgr = 0x133dc, 769*10524682SJagadeesh Kona .mnd_width = 0, 770*10524682SJagadeesh Kona .hid_width = 5, 771*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 772*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_jpeg_clk_src, 773*10524682SJagadeesh Kona .hw_clk_ctrl = true, 774*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 775*10524682SJagadeesh Kona .name = "cam_cc_jpeg_clk_src", 776*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 777*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 778*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 779*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 780*10524682SJagadeesh Kona }, 781*10524682SJagadeesh Kona }; 782*10524682SJagadeesh Kona 783*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_mclk0_clk_src[] = { 784*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 785*10524682SJagadeesh Kona F(24000000, P_CAM_CC_PLL2_OUT_MAIN, 10, 1, 4), 786*10524682SJagadeesh Kona F(68571429, P_CAM_CC_PLL2_OUT_MAIN, 14, 0, 0), 787*10524682SJagadeesh Kona { } 788*10524682SJagadeesh Kona }; 789*10524682SJagadeesh Kona 790*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk0_clk_src = { 791*10524682SJagadeesh Kona .cmd_rcgr = 0x15000, 792*10524682SJagadeesh Kona .mnd_width = 8, 793*10524682SJagadeesh Kona .hid_width = 5, 794*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_1, 795*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 796*10524682SJagadeesh Kona .hw_clk_ctrl = true, 797*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 798*10524682SJagadeesh Kona .name = "cam_cc_mclk0_clk_src", 799*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_1, 800*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 801*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 802*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 803*10524682SJagadeesh Kona }, 804*10524682SJagadeesh Kona }; 805*10524682SJagadeesh Kona 806*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk1_clk_src = { 807*10524682SJagadeesh Kona .cmd_rcgr = 0x1501c, 808*10524682SJagadeesh Kona .mnd_width = 8, 809*10524682SJagadeesh Kona .hid_width = 5, 810*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_1, 811*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 812*10524682SJagadeesh Kona .hw_clk_ctrl = true, 813*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 814*10524682SJagadeesh Kona .name = "cam_cc_mclk1_clk_src", 815*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_1, 816*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 817*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 818*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 819*10524682SJagadeesh Kona }, 820*10524682SJagadeesh Kona }; 821*10524682SJagadeesh Kona 822*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk2_clk_src = { 823*10524682SJagadeesh Kona .cmd_rcgr = 0x15038, 824*10524682SJagadeesh Kona .mnd_width = 8, 825*10524682SJagadeesh Kona .hid_width = 5, 826*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_1, 827*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 828*10524682SJagadeesh Kona .hw_clk_ctrl = true, 829*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 830*10524682SJagadeesh Kona .name = "cam_cc_mclk2_clk_src", 831*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_1, 832*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 833*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 834*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 835*10524682SJagadeesh Kona }, 836*10524682SJagadeesh Kona }; 837*10524682SJagadeesh Kona 838*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk3_clk_src = { 839*10524682SJagadeesh Kona .cmd_rcgr = 0x15054, 840*10524682SJagadeesh Kona .mnd_width = 8, 841*10524682SJagadeesh Kona .hid_width = 5, 842*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_1, 843*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 844*10524682SJagadeesh Kona .hw_clk_ctrl = true, 845*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 846*10524682SJagadeesh Kona .name = "cam_cc_mclk3_clk_src", 847*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_1, 848*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 849*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 850*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 851*10524682SJagadeesh Kona }, 852*10524682SJagadeesh Kona }; 853*10524682SJagadeesh Kona 854*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk4_clk_src = { 855*10524682SJagadeesh Kona .cmd_rcgr = 0x15070, 856*10524682SJagadeesh Kona .mnd_width = 8, 857*10524682SJagadeesh Kona .hid_width = 5, 858*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_1, 859*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 860*10524682SJagadeesh Kona .hw_clk_ctrl = true, 861*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 862*10524682SJagadeesh Kona .name = "cam_cc_mclk4_clk_src", 863*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_1, 864*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 865*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 866*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 867*10524682SJagadeesh Kona }, 868*10524682SJagadeesh Kona }; 869*10524682SJagadeesh Kona 870*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk5_clk_src = { 871*10524682SJagadeesh Kona .cmd_rcgr = 0x1508c, 872*10524682SJagadeesh Kona .mnd_width = 8, 873*10524682SJagadeesh Kona .hid_width = 5, 874*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_1, 875*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 876*10524682SJagadeesh Kona .hw_clk_ctrl = true, 877*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 878*10524682SJagadeesh Kona .name = "cam_cc_mclk5_clk_src", 879*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_1, 880*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 881*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 882*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 883*10524682SJagadeesh Kona }, 884*10524682SJagadeesh Kona }; 885*10524682SJagadeesh Kona 886*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk6_clk_src = { 887*10524682SJagadeesh Kona .cmd_rcgr = 0x150a8, 888*10524682SJagadeesh Kona .mnd_width = 8, 889*10524682SJagadeesh Kona .hid_width = 5, 890*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_1, 891*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 892*10524682SJagadeesh Kona .hw_clk_ctrl = true, 893*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 894*10524682SJagadeesh Kona .name = "cam_cc_mclk6_clk_src", 895*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_1, 896*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 897*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 898*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 899*10524682SJagadeesh Kona }, 900*10524682SJagadeesh Kona }; 901*10524682SJagadeesh Kona 902*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_mclk7_clk_src = { 903*10524682SJagadeesh Kona .cmd_rcgr = 0x150c4, 904*10524682SJagadeesh Kona .mnd_width = 8, 905*10524682SJagadeesh Kona .hid_width = 5, 906*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_1, 907*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 908*10524682SJagadeesh Kona .hw_clk_ctrl = true, 909*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 910*10524682SJagadeesh Kona .name = "cam_cc_mclk7_clk_src", 911*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_1, 912*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 913*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 914*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 915*10524682SJagadeesh Kona }, 916*10524682SJagadeesh Kona }; 917*10524682SJagadeesh Kona 918*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_qdss_debug_clk_src[] = { 919*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 920*10524682SJagadeesh Kona F(75000000, P_CAM_CC_PLL0_OUT_EVEN, 8, 0, 0), 921*10524682SJagadeesh Kona F(150000000, P_CAM_CC_PLL0_OUT_EVEN, 4, 0, 0), 922*10524682SJagadeesh Kona F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0), 923*10524682SJagadeesh Kona { } 924*10524682SJagadeesh Kona }; 925*10524682SJagadeesh Kona 926*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_qdss_debug_clk_src = { 927*10524682SJagadeesh Kona .cmd_rcgr = 0x13938, 928*10524682SJagadeesh Kona .mnd_width = 0, 929*10524682SJagadeesh Kona .hid_width = 5, 930*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 931*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_qdss_debug_clk_src, 932*10524682SJagadeesh Kona .hw_clk_ctrl = true, 933*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 934*10524682SJagadeesh Kona .name = "cam_cc_qdss_debug_clk_src", 935*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 936*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 937*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 938*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 939*10524682SJagadeesh Kona }, 940*10524682SJagadeesh Kona }; 941*10524682SJagadeesh Kona 942*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_sleep_clk_src[] = { 943*10524682SJagadeesh Kona F(32000, P_SLEEP_CLK, 1, 0, 0), 944*10524682SJagadeesh Kona { } 945*10524682SJagadeesh Kona }; 946*10524682SJagadeesh Kona 947*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_sleep_clk_src = { 948*10524682SJagadeesh Kona .cmd_rcgr = 0x13aa0, 949*10524682SJagadeesh Kona .mnd_width = 0, 950*10524682SJagadeesh Kona .hid_width = 5, 951*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_4, 952*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_sleep_clk_src, 953*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 954*10524682SJagadeesh Kona .name = "cam_cc_sleep_clk_src", 955*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_4, 956*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_4), 957*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 958*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 959*10524682SJagadeesh Kona }, 960*10524682SJagadeesh Kona }; 961*10524682SJagadeesh Kona 962*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src[] = { 963*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 964*10524682SJagadeesh Kona F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 7.5, 0, 0), 965*10524682SJagadeesh Kona { } 966*10524682SJagadeesh Kona }; 967*10524682SJagadeesh Kona 968*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_slow_ahb_clk_src = { 969*10524682SJagadeesh Kona .cmd_rcgr = 0x10148, 970*10524682SJagadeesh Kona .mnd_width = 8, 971*10524682SJagadeesh Kona .hid_width = 5, 972*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_0, 973*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_slow_ahb_clk_src, 974*10524682SJagadeesh Kona .hw_clk_ctrl = true, 975*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 976*10524682SJagadeesh Kona .name = "cam_cc_slow_ahb_clk_src", 977*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_0, 978*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 979*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 980*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 981*10524682SJagadeesh Kona }, 982*10524682SJagadeesh Kona }; 983*10524682SJagadeesh Kona 984*10524682SJagadeesh Kona static const struct freq_tbl ftbl_cam_cc_xo_clk_src[] = { 985*10524682SJagadeesh Kona F(19200000, P_BI_TCXO, 1, 0, 0), 986*10524682SJagadeesh Kona { } 987*10524682SJagadeesh Kona }; 988*10524682SJagadeesh Kona 989*10524682SJagadeesh Kona static struct clk_rcg2 cam_cc_xo_clk_src = { 990*10524682SJagadeesh Kona .cmd_rcgr = 0x13a84, 991*10524682SJagadeesh Kona .mnd_width = 0, 992*10524682SJagadeesh Kona .hid_width = 5, 993*10524682SJagadeesh Kona .parent_map = cam_cc_parent_map_5, 994*10524682SJagadeesh Kona .freq_tbl = ftbl_cam_cc_xo_clk_src, 995*10524682SJagadeesh Kona .hw_clk_ctrl = true, 996*10524682SJagadeesh Kona .clkr.hw.init = &(const struct clk_init_data) { 997*10524682SJagadeesh Kona .name = "cam_cc_xo_clk_src", 998*10524682SJagadeesh Kona .parent_data = cam_cc_parent_data_5, 999*10524682SJagadeesh Kona .num_parents = ARRAY_SIZE(cam_cc_parent_data_5), 1000*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1001*10524682SJagadeesh Kona .ops = &clk_rcg2_shared_ops, 1002*10524682SJagadeesh Kona }, 1003*10524682SJagadeesh Kona }; 1004*10524682SJagadeesh Kona 1005*10524682SJagadeesh Kona static struct clk_branch cam_cc_bps_ahb_clk = { 1006*10524682SJagadeesh Kona .halt_reg = 0x10274, 1007*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1008*10524682SJagadeesh Kona .clkr = { 1009*10524682SJagadeesh Kona .enable_reg = 0x10274, 1010*10524682SJagadeesh Kona .enable_mask = BIT(0), 1011*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1012*10524682SJagadeesh Kona .name = "cam_cc_bps_ahb_clk", 1013*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1014*10524682SJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw, 1015*10524682SJagadeesh Kona }, 1016*10524682SJagadeesh Kona .num_parents = 1, 1017*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1018*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1019*10524682SJagadeesh Kona }, 1020*10524682SJagadeesh Kona }, 1021*10524682SJagadeesh Kona }; 1022*10524682SJagadeesh Kona 1023*10524682SJagadeesh Kona static struct clk_branch cam_cc_bps_clk = { 1024*10524682SJagadeesh Kona .halt_reg = 0x103a4, 1025*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1026*10524682SJagadeesh Kona .clkr = { 1027*10524682SJagadeesh Kona .enable_reg = 0x103a4, 1028*10524682SJagadeesh Kona .enable_mask = BIT(0), 1029*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1030*10524682SJagadeesh Kona .name = "cam_cc_bps_clk", 1031*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1032*10524682SJagadeesh Kona &cam_cc_bps_clk_src.clkr.hw, 1033*10524682SJagadeesh Kona }, 1034*10524682SJagadeesh Kona .num_parents = 1, 1035*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1036*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1037*10524682SJagadeesh Kona }, 1038*10524682SJagadeesh Kona }, 1039*10524682SJagadeesh Kona }; 1040*10524682SJagadeesh Kona 1041*10524682SJagadeesh Kona static struct clk_branch cam_cc_bps_fast_ahb_clk = { 1042*10524682SJagadeesh Kona .halt_reg = 0x10144, 1043*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1044*10524682SJagadeesh Kona .clkr = { 1045*10524682SJagadeesh Kona .enable_reg = 0x10144, 1046*10524682SJagadeesh Kona .enable_mask = BIT(0), 1047*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1048*10524682SJagadeesh Kona .name = "cam_cc_bps_fast_ahb_clk", 1049*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1050*10524682SJagadeesh Kona &cam_cc_fast_ahb_clk_src.clkr.hw, 1051*10524682SJagadeesh Kona }, 1052*10524682SJagadeesh Kona .num_parents = 1, 1053*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1054*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1055*10524682SJagadeesh Kona }, 1056*10524682SJagadeesh Kona }, 1057*10524682SJagadeesh Kona }; 1058*10524682SJagadeesh Kona 1059*10524682SJagadeesh Kona static struct clk_branch cam_cc_camnoc_axi_nrt_clk = { 1060*10524682SJagadeesh Kona .halt_reg = 0x13920, 1061*10524682SJagadeesh Kona .halt_check = BRANCH_HALT_VOTED, 1062*10524682SJagadeesh Kona .hwcg_reg = 0x13920, 1063*10524682SJagadeesh Kona .hwcg_bit = 1, 1064*10524682SJagadeesh Kona .clkr = { 1065*10524682SJagadeesh Kona .enable_reg = 0x13920, 1066*10524682SJagadeesh Kona .enable_mask = BIT(0), 1067*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1068*10524682SJagadeesh Kona .name = "cam_cc_camnoc_axi_nrt_clk", 1069*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1070*10524682SJagadeesh Kona &cam_cc_camnoc_axi_rt_clk_src.clkr.hw, 1071*10524682SJagadeesh Kona }, 1072*10524682SJagadeesh Kona .num_parents = 1, 1073*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1074*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1075*10524682SJagadeesh Kona }, 1076*10524682SJagadeesh Kona }, 1077*10524682SJagadeesh Kona }; 1078*10524682SJagadeesh Kona 1079*10524682SJagadeesh Kona static struct clk_branch cam_cc_camnoc_axi_rt_clk = { 1080*10524682SJagadeesh Kona .halt_reg = 0x13910, 1081*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1082*10524682SJagadeesh Kona .clkr = { 1083*10524682SJagadeesh Kona .enable_reg = 0x13910, 1084*10524682SJagadeesh Kona .enable_mask = BIT(0), 1085*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1086*10524682SJagadeesh Kona .name = "cam_cc_camnoc_axi_rt_clk", 1087*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1088*10524682SJagadeesh Kona &cam_cc_camnoc_axi_rt_clk_src.clkr.hw, 1089*10524682SJagadeesh Kona }, 1090*10524682SJagadeesh Kona .num_parents = 1, 1091*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1092*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1093*10524682SJagadeesh Kona }, 1094*10524682SJagadeesh Kona }, 1095*10524682SJagadeesh Kona }; 1096*10524682SJagadeesh Kona 1097*10524682SJagadeesh Kona static struct clk_branch cam_cc_camnoc_dcd_xo_clk = { 1098*10524682SJagadeesh Kona .halt_reg = 0x1392c, 1099*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1100*10524682SJagadeesh Kona .clkr = { 1101*10524682SJagadeesh Kona .enable_reg = 0x1392c, 1102*10524682SJagadeesh Kona .enable_mask = BIT(0), 1103*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1104*10524682SJagadeesh Kona .name = "cam_cc_camnoc_dcd_xo_clk", 1105*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1106*10524682SJagadeesh Kona &cam_cc_xo_clk_src.clkr.hw, 1107*10524682SJagadeesh Kona }, 1108*10524682SJagadeesh Kona .num_parents = 1, 1109*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1110*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1111*10524682SJagadeesh Kona }, 1112*10524682SJagadeesh Kona }, 1113*10524682SJagadeesh Kona }; 1114*10524682SJagadeesh Kona 1115*10524682SJagadeesh Kona static struct clk_branch cam_cc_camnoc_xo_clk = { 1116*10524682SJagadeesh Kona .halt_reg = 0x13930, 1117*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1118*10524682SJagadeesh Kona .clkr = { 1119*10524682SJagadeesh Kona .enable_reg = 0x13930, 1120*10524682SJagadeesh Kona .enable_mask = BIT(0), 1121*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1122*10524682SJagadeesh Kona .name = "cam_cc_camnoc_xo_clk", 1123*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1124*10524682SJagadeesh Kona &cam_cc_xo_clk_src.clkr.hw, 1125*10524682SJagadeesh Kona }, 1126*10524682SJagadeesh Kona .num_parents = 1, 1127*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1128*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1129*10524682SJagadeesh Kona }, 1130*10524682SJagadeesh Kona }, 1131*10524682SJagadeesh Kona }; 1132*10524682SJagadeesh Kona 1133*10524682SJagadeesh Kona static struct clk_branch cam_cc_cci_0_clk = { 1134*10524682SJagadeesh Kona .halt_reg = 0x13788, 1135*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1136*10524682SJagadeesh Kona .clkr = { 1137*10524682SJagadeesh Kona .enable_reg = 0x13788, 1138*10524682SJagadeesh Kona .enable_mask = BIT(0), 1139*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1140*10524682SJagadeesh Kona .name = "cam_cc_cci_0_clk", 1141*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1142*10524682SJagadeesh Kona &cam_cc_cci_0_clk_src.clkr.hw, 1143*10524682SJagadeesh Kona }, 1144*10524682SJagadeesh Kona .num_parents = 1, 1145*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1146*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1147*10524682SJagadeesh Kona }, 1148*10524682SJagadeesh Kona }, 1149*10524682SJagadeesh Kona }; 1150*10524682SJagadeesh Kona 1151*10524682SJagadeesh Kona static struct clk_branch cam_cc_cci_1_clk = { 1152*10524682SJagadeesh Kona .halt_reg = 0x138b8, 1153*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1154*10524682SJagadeesh Kona .clkr = { 1155*10524682SJagadeesh Kona .enable_reg = 0x138b8, 1156*10524682SJagadeesh Kona .enable_mask = BIT(0), 1157*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1158*10524682SJagadeesh Kona .name = "cam_cc_cci_1_clk", 1159*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1160*10524682SJagadeesh Kona &cam_cc_cci_1_clk_src.clkr.hw, 1161*10524682SJagadeesh Kona }, 1162*10524682SJagadeesh Kona .num_parents = 1, 1163*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1164*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1165*10524682SJagadeesh Kona }, 1166*10524682SJagadeesh Kona }, 1167*10524682SJagadeesh Kona }; 1168*10524682SJagadeesh Kona 1169*10524682SJagadeesh Kona static struct clk_branch cam_cc_core_ahb_clk = { 1170*10524682SJagadeesh Kona .halt_reg = 0x13a80, 1171*10524682SJagadeesh Kona .halt_check = BRANCH_HALT_VOTED, 1172*10524682SJagadeesh Kona .clkr = { 1173*10524682SJagadeesh Kona .enable_reg = 0x13a80, 1174*10524682SJagadeesh Kona .enable_mask = BIT(0), 1175*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1176*10524682SJagadeesh Kona .name = "cam_cc_core_ahb_clk", 1177*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1178*10524682SJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw, 1179*10524682SJagadeesh Kona }, 1180*10524682SJagadeesh Kona .num_parents = 1, 1181*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1182*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1183*10524682SJagadeesh Kona }, 1184*10524682SJagadeesh Kona }, 1185*10524682SJagadeesh Kona }; 1186*10524682SJagadeesh Kona 1187*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_ahb_clk = { 1188*10524682SJagadeesh Kona .halt_reg = 0x138bc, 1189*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1190*10524682SJagadeesh Kona .clkr = { 1191*10524682SJagadeesh Kona .enable_reg = 0x138bc, 1192*10524682SJagadeesh Kona .enable_mask = BIT(0), 1193*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1194*10524682SJagadeesh Kona .name = "cam_cc_cpas_ahb_clk", 1195*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1196*10524682SJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw, 1197*10524682SJagadeesh Kona }, 1198*10524682SJagadeesh Kona .num_parents = 1, 1199*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1200*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1201*10524682SJagadeesh Kona }, 1202*10524682SJagadeesh Kona }, 1203*10524682SJagadeesh Kona }; 1204*10524682SJagadeesh Kona 1205*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_bps_clk = { 1206*10524682SJagadeesh Kona .halt_reg = 0x103b0, 1207*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1208*10524682SJagadeesh Kona .clkr = { 1209*10524682SJagadeesh Kona .enable_reg = 0x103b0, 1210*10524682SJagadeesh Kona .enable_mask = BIT(0), 1211*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1212*10524682SJagadeesh Kona .name = "cam_cc_cpas_bps_clk", 1213*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1214*10524682SJagadeesh Kona &cam_cc_bps_clk_src.clkr.hw, 1215*10524682SJagadeesh Kona }, 1216*10524682SJagadeesh Kona .num_parents = 1, 1217*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1218*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1219*10524682SJagadeesh Kona }, 1220*10524682SJagadeesh Kona }, 1221*10524682SJagadeesh Kona }; 1222*10524682SJagadeesh Kona 1223*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_fast_ahb_clk = { 1224*10524682SJagadeesh Kona .halt_reg = 0x138c8, 1225*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1226*10524682SJagadeesh Kona .clkr = { 1227*10524682SJagadeesh Kona .enable_reg = 0x138c8, 1228*10524682SJagadeesh Kona .enable_mask = BIT(0), 1229*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1230*10524682SJagadeesh Kona .name = "cam_cc_cpas_fast_ahb_clk", 1231*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1232*10524682SJagadeesh Kona &cam_cc_fast_ahb_clk_src.clkr.hw, 1233*10524682SJagadeesh Kona }, 1234*10524682SJagadeesh Kona .num_parents = 1, 1235*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1236*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1237*10524682SJagadeesh Kona }, 1238*10524682SJagadeesh Kona }, 1239*10524682SJagadeesh Kona }; 1240*10524682SJagadeesh Kona 1241*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_ife_0_clk = { 1242*10524682SJagadeesh Kona .halt_reg = 0x11150, 1243*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1244*10524682SJagadeesh Kona .clkr = { 1245*10524682SJagadeesh Kona .enable_reg = 0x11150, 1246*10524682SJagadeesh Kona .enable_mask = BIT(0), 1247*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1248*10524682SJagadeesh Kona .name = "cam_cc_cpas_ife_0_clk", 1249*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1250*10524682SJagadeesh Kona &cam_cc_ife_0_clk_src.clkr.hw, 1251*10524682SJagadeesh Kona }, 1252*10524682SJagadeesh Kona .num_parents = 1, 1253*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1254*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1255*10524682SJagadeesh Kona }, 1256*10524682SJagadeesh Kona }, 1257*10524682SJagadeesh Kona }; 1258*10524682SJagadeesh Kona 1259*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_ife_lite_clk = { 1260*10524682SJagadeesh Kona .halt_reg = 0x13138, 1261*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1262*10524682SJagadeesh Kona .clkr = { 1263*10524682SJagadeesh Kona .enable_reg = 0x13138, 1264*10524682SJagadeesh Kona .enable_mask = BIT(0), 1265*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1266*10524682SJagadeesh Kona .name = "cam_cc_cpas_ife_lite_clk", 1267*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1268*10524682SJagadeesh Kona &cam_cc_ife_lite_clk_src.clkr.hw, 1269*10524682SJagadeesh Kona }, 1270*10524682SJagadeesh Kona .num_parents = 1, 1271*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1272*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1273*10524682SJagadeesh Kona }, 1274*10524682SJagadeesh Kona }, 1275*10524682SJagadeesh Kona }; 1276*10524682SJagadeesh Kona 1277*10524682SJagadeesh Kona static struct clk_branch cam_cc_cpas_ipe_nps_clk = { 1278*10524682SJagadeesh Kona .halt_reg = 0x10504, 1279*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1280*10524682SJagadeesh Kona .clkr = { 1281*10524682SJagadeesh Kona .enable_reg = 0x10504, 1282*10524682SJagadeesh Kona .enable_mask = BIT(0), 1283*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1284*10524682SJagadeesh Kona .name = "cam_cc_cpas_ipe_nps_clk", 1285*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1286*10524682SJagadeesh Kona &cam_cc_ipe_nps_clk_src.clkr.hw, 1287*10524682SJagadeesh Kona }, 1288*10524682SJagadeesh Kona .num_parents = 1, 1289*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1290*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1291*10524682SJagadeesh Kona }, 1292*10524682SJagadeesh Kona }, 1293*10524682SJagadeesh Kona }; 1294*10524682SJagadeesh Kona 1295*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi0phytimer_clk = { 1296*10524682SJagadeesh Kona .halt_reg = 0x150f8, 1297*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1298*10524682SJagadeesh Kona .clkr = { 1299*10524682SJagadeesh Kona .enable_reg = 0x150f8, 1300*10524682SJagadeesh Kona .enable_mask = BIT(0), 1301*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1302*10524682SJagadeesh Kona .name = "cam_cc_csi0phytimer_clk", 1303*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1304*10524682SJagadeesh Kona &cam_cc_csi0phytimer_clk_src.clkr.hw, 1305*10524682SJagadeesh Kona }, 1306*10524682SJagadeesh Kona .num_parents = 1, 1307*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1308*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1309*10524682SJagadeesh Kona }, 1310*10524682SJagadeesh Kona }, 1311*10524682SJagadeesh Kona }; 1312*10524682SJagadeesh Kona 1313*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi1phytimer_clk = { 1314*10524682SJagadeesh Kona .halt_reg = 0x1511c, 1315*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1316*10524682SJagadeesh Kona .clkr = { 1317*10524682SJagadeesh Kona .enable_reg = 0x1511c, 1318*10524682SJagadeesh Kona .enable_mask = BIT(0), 1319*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1320*10524682SJagadeesh Kona .name = "cam_cc_csi1phytimer_clk", 1321*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1322*10524682SJagadeesh Kona &cam_cc_csi1phytimer_clk_src.clkr.hw, 1323*10524682SJagadeesh Kona }, 1324*10524682SJagadeesh Kona .num_parents = 1, 1325*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1326*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1327*10524682SJagadeesh Kona }, 1328*10524682SJagadeesh Kona }, 1329*10524682SJagadeesh Kona }; 1330*10524682SJagadeesh Kona 1331*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi2phytimer_clk = { 1332*10524682SJagadeesh Kona .halt_reg = 0x15250, 1333*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1334*10524682SJagadeesh Kona .clkr = { 1335*10524682SJagadeesh Kona .enable_reg = 0x15250, 1336*10524682SJagadeesh Kona .enable_mask = BIT(0), 1337*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1338*10524682SJagadeesh Kona .name = "cam_cc_csi2phytimer_clk", 1339*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1340*10524682SJagadeesh Kona &cam_cc_csi2phytimer_clk_src.clkr.hw, 1341*10524682SJagadeesh Kona }, 1342*10524682SJagadeesh Kona .num_parents = 1, 1343*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1344*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1345*10524682SJagadeesh Kona }, 1346*10524682SJagadeesh Kona }, 1347*10524682SJagadeesh Kona }; 1348*10524682SJagadeesh Kona 1349*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi3phytimer_clk = { 1350*10524682SJagadeesh Kona .halt_reg = 0x15384, 1351*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1352*10524682SJagadeesh Kona .clkr = { 1353*10524682SJagadeesh Kona .enable_reg = 0x15384, 1354*10524682SJagadeesh Kona .enable_mask = BIT(0), 1355*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1356*10524682SJagadeesh Kona .name = "cam_cc_csi3phytimer_clk", 1357*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1358*10524682SJagadeesh Kona &cam_cc_csi3phytimer_clk_src.clkr.hw, 1359*10524682SJagadeesh Kona }, 1360*10524682SJagadeesh Kona .num_parents = 1, 1361*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1362*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1363*10524682SJagadeesh Kona }, 1364*10524682SJagadeesh Kona }, 1365*10524682SJagadeesh Kona }; 1366*10524682SJagadeesh Kona 1367*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi4phytimer_clk = { 1368*10524682SJagadeesh Kona .halt_reg = 0x154b8, 1369*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1370*10524682SJagadeesh Kona .clkr = { 1371*10524682SJagadeesh Kona .enable_reg = 0x154b8, 1372*10524682SJagadeesh Kona .enable_mask = BIT(0), 1373*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1374*10524682SJagadeesh Kona .name = "cam_cc_csi4phytimer_clk", 1375*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1376*10524682SJagadeesh Kona &cam_cc_csi4phytimer_clk_src.clkr.hw, 1377*10524682SJagadeesh Kona }, 1378*10524682SJagadeesh Kona .num_parents = 1, 1379*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1380*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1381*10524682SJagadeesh Kona }, 1382*10524682SJagadeesh Kona }, 1383*10524682SJagadeesh Kona }; 1384*10524682SJagadeesh Kona 1385*10524682SJagadeesh Kona static struct clk_branch cam_cc_csi5phytimer_clk = { 1386*10524682SJagadeesh Kona .halt_reg = 0x155ec, 1387*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1388*10524682SJagadeesh Kona .clkr = { 1389*10524682SJagadeesh Kona .enable_reg = 0x155ec, 1390*10524682SJagadeesh Kona .enable_mask = BIT(0), 1391*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1392*10524682SJagadeesh Kona .name = "cam_cc_csi5phytimer_clk", 1393*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1394*10524682SJagadeesh Kona &cam_cc_csi5phytimer_clk_src.clkr.hw, 1395*10524682SJagadeesh Kona }, 1396*10524682SJagadeesh Kona .num_parents = 1, 1397*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1398*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1399*10524682SJagadeesh Kona }, 1400*10524682SJagadeesh Kona }, 1401*10524682SJagadeesh Kona }; 1402*10524682SJagadeesh Kona 1403*10524682SJagadeesh Kona static struct clk_branch cam_cc_csid_clk = { 1404*10524682SJagadeesh Kona .halt_reg = 0x138ec, 1405*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1406*10524682SJagadeesh Kona .clkr = { 1407*10524682SJagadeesh Kona .enable_reg = 0x138ec, 1408*10524682SJagadeesh Kona .enable_mask = BIT(0), 1409*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1410*10524682SJagadeesh Kona .name = "cam_cc_csid_clk", 1411*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1412*10524682SJagadeesh Kona &cam_cc_csid_clk_src.clkr.hw, 1413*10524682SJagadeesh Kona }, 1414*10524682SJagadeesh Kona .num_parents = 1, 1415*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1416*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1417*10524682SJagadeesh Kona }, 1418*10524682SJagadeesh Kona }, 1419*10524682SJagadeesh Kona }; 1420*10524682SJagadeesh Kona 1421*10524682SJagadeesh Kona static struct clk_branch cam_cc_csid_csiphy_rx_clk = { 1422*10524682SJagadeesh Kona .halt_reg = 0x15100, 1423*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1424*10524682SJagadeesh Kona .clkr = { 1425*10524682SJagadeesh Kona .enable_reg = 0x15100, 1426*10524682SJagadeesh Kona .enable_mask = BIT(0), 1427*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1428*10524682SJagadeesh Kona .name = "cam_cc_csid_csiphy_rx_clk", 1429*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1430*10524682SJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw, 1431*10524682SJagadeesh Kona }, 1432*10524682SJagadeesh Kona .num_parents = 1, 1433*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1434*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1435*10524682SJagadeesh Kona }, 1436*10524682SJagadeesh Kona }, 1437*10524682SJagadeesh Kona }; 1438*10524682SJagadeesh Kona 1439*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy0_clk = { 1440*10524682SJagadeesh Kona .halt_reg = 0x150fc, 1441*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1442*10524682SJagadeesh Kona .clkr = { 1443*10524682SJagadeesh Kona .enable_reg = 0x150fc, 1444*10524682SJagadeesh Kona .enable_mask = BIT(0), 1445*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1446*10524682SJagadeesh Kona .name = "cam_cc_csiphy0_clk", 1447*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1448*10524682SJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw, 1449*10524682SJagadeesh Kona }, 1450*10524682SJagadeesh Kona .num_parents = 1, 1451*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1452*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1453*10524682SJagadeesh Kona }, 1454*10524682SJagadeesh Kona }, 1455*10524682SJagadeesh Kona }; 1456*10524682SJagadeesh Kona 1457*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy1_clk = { 1458*10524682SJagadeesh Kona .halt_reg = 0x15120, 1459*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1460*10524682SJagadeesh Kona .clkr = { 1461*10524682SJagadeesh Kona .enable_reg = 0x15120, 1462*10524682SJagadeesh Kona .enable_mask = BIT(0), 1463*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1464*10524682SJagadeesh Kona .name = "cam_cc_csiphy1_clk", 1465*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1466*10524682SJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw, 1467*10524682SJagadeesh Kona }, 1468*10524682SJagadeesh Kona .num_parents = 1, 1469*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1470*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1471*10524682SJagadeesh Kona }, 1472*10524682SJagadeesh Kona }, 1473*10524682SJagadeesh Kona }; 1474*10524682SJagadeesh Kona 1475*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy2_clk = { 1476*10524682SJagadeesh Kona .halt_reg = 0x15254, 1477*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1478*10524682SJagadeesh Kona .clkr = { 1479*10524682SJagadeesh Kona .enable_reg = 0x15254, 1480*10524682SJagadeesh Kona .enable_mask = BIT(0), 1481*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1482*10524682SJagadeesh Kona .name = "cam_cc_csiphy2_clk", 1483*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1484*10524682SJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw, 1485*10524682SJagadeesh Kona }, 1486*10524682SJagadeesh Kona .num_parents = 1, 1487*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1488*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1489*10524682SJagadeesh Kona }, 1490*10524682SJagadeesh Kona }, 1491*10524682SJagadeesh Kona }; 1492*10524682SJagadeesh Kona 1493*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy3_clk = { 1494*10524682SJagadeesh Kona .halt_reg = 0x15388, 1495*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1496*10524682SJagadeesh Kona .clkr = { 1497*10524682SJagadeesh Kona .enable_reg = 0x15388, 1498*10524682SJagadeesh Kona .enable_mask = BIT(0), 1499*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1500*10524682SJagadeesh Kona .name = "cam_cc_csiphy3_clk", 1501*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1502*10524682SJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw, 1503*10524682SJagadeesh Kona }, 1504*10524682SJagadeesh Kona .num_parents = 1, 1505*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1506*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1507*10524682SJagadeesh Kona }, 1508*10524682SJagadeesh Kona }, 1509*10524682SJagadeesh Kona }; 1510*10524682SJagadeesh Kona 1511*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy4_clk = { 1512*10524682SJagadeesh Kona .halt_reg = 0x154bc, 1513*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1514*10524682SJagadeesh Kona .clkr = { 1515*10524682SJagadeesh Kona .enable_reg = 0x154bc, 1516*10524682SJagadeesh Kona .enable_mask = BIT(0), 1517*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1518*10524682SJagadeesh Kona .name = "cam_cc_csiphy4_clk", 1519*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1520*10524682SJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw, 1521*10524682SJagadeesh Kona }, 1522*10524682SJagadeesh Kona .num_parents = 1, 1523*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1524*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1525*10524682SJagadeesh Kona }, 1526*10524682SJagadeesh Kona }, 1527*10524682SJagadeesh Kona }; 1528*10524682SJagadeesh Kona 1529*10524682SJagadeesh Kona static struct clk_branch cam_cc_csiphy5_clk = { 1530*10524682SJagadeesh Kona .halt_reg = 0x155f0, 1531*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1532*10524682SJagadeesh Kona .clkr = { 1533*10524682SJagadeesh Kona .enable_reg = 0x155f0, 1534*10524682SJagadeesh Kona .enable_mask = BIT(0), 1535*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1536*10524682SJagadeesh Kona .name = "cam_cc_csiphy5_clk", 1537*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1538*10524682SJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw, 1539*10524682SJagadeesh Kona }, 1540*10524682SJagadeesh Kona .num_parents = 1, 1541*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1542*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1543*10524682SJagadeesh Kona }, 1544*10524682SJagadeesh Kona }, 1545*10524682SJagadeesh Kona }; 1546*10524682SJagadeesh Kona 1547*10524682SJagadeesh Kona static struct clk_branch cam_cc_icp_ahb_clk = { 1548*10524682SJagadeesh Kona .halt_reg = 0x13658, 1549*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1550*10524682SJagadeesh Kona .clkr = { 1551*10524682SJagadeesh Kona .enable_reg = 0x13658, 1552*10524682SJagadeesh Kona .enable_mask = BIT(0), 1553*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1554*10524682SJagadeesh Kona .name = "cam_cc_icp_ahb_clk", 1555*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1556*10524682SJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw, 1557*10524682SJagadeesh Kona }, 1558*10524682SJagadeesh Kona .num_parents = 1, 1559*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1560*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1561*10524682SJagadeesh Kona }, 1562*10524682SJagadeesh Kona }, 1563*10524682SJagadeesh Kona }; 1564*10524682SJagadeesh Kona 1565*10524682SJagadeesh Kona static struct clk_branch cam_cc_icp_clk = { 1566*10524682SJagadeesh Kona .halt_reg = 0x1364c, 1567*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1568*10524682SJagadeesh Kona .clkr = { 1569*10524682SJagadeesh Kona .enable_reg = 0x1364c, 1570*10524682SJagadeesh Kona .enable_mask = BIT(0), 1571*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1572*10524682SJagadeesh Kona .name = "cam_cc_icp_clk", 1573*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1574*10524682SJagadeesh Kona &cam_cc_icp_clk_src.clkr.hw, 1575*10524682SJagadeesh Kona }, 1576*10524682SJagadeesh Kona .num_parents = 1, 1577*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1578*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1579*10524682SJagadeesh Kona }, 1580*10524682SJagadeesh Kona }, 1581*10524682SJagadeesh Kona }; 1582*10524682SJagadeesh Kona 1583*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_0_clk = { 1584*10524682SJagadeesh Kona .halt_reg = 0x11144, 1585*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1586*10524682SJagadeesh Kona .clkr = { 1587*10524682SJagadeesh Kona .enable_reg = 0x11144, 1588*10524682SJagadeesh Kona .enable_mask = BIT(0), 1589*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1590*10524682SJagadeesh Kona .name = "cam_cc_ife_0_clk", 1591*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1592*10524682SJagadeesh Kona &cam_cc_ife_0_clk_src.clkr.hw, 1593*10524682SJagadeesh Kona }, 1594*10524682SJagadeesh Kona .num_parents = 1, 1595*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1596*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1597*10524682SJagadeesh Kona }, 1598*10524682SJagadeesh Kona }, 1599*10524682SJagadeesh Kona }; 1600*10524682SJagadeesh Kona 1601*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_0_dsp_clk = { 1602*10524682SJagadeesh Kona .halt_reg = 0x11154, 1603*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1604*10524682SJagadeesh Kona .clkr = { 1605*10524682SJagadeesh Kona .enable_reg = 0x11154, 1606*10524682SJagadeesh Kona .enable_mask = BIT(0), 1607*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1608*10524682SJagadeesh Kona .name = "cam_cc_ife_0_dsp_clk", 1609*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1610*10524682SJagadeesh Kona &cam_cc_ife_0_clk_src.clkr.hw, 1611*10524682SJagadeesh Kona }, 1612*10524682SJagadeesh Kona .num_parents = 1, 1613*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1614*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1615*10524682SJagadeesh Kona }, 1616*10524682SJagadeesh Kona }, 1617*10524682SJagadeesh Kona }; 1618*10524682SJagadeesh Kona 1619*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_0_fast_ahb_clk = { 1620*10524682SJagadeesh Kona .halt_reg = 0x11160, 1621*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1622*10524682SJagadeesh Kona .clkr = { 1623*10524682SJagadeesh Kona .enable_reg = 0x11160, 1624*10524682SJagadeesh Kona .enable_mask = BIT(0), 1625*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1626*10524682SJagadeesh Kona .name = "cam_cc_ife_0_fast_ahb_clk", 1627*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1628*10524682SJagadeesh Kona &cam_cc_fast_ahb_clk_src.clkr.hw, 1629*10524682SJagadeesh Kona }, 1630*10524682SJagadeesh Kona .num_parents = 1, 1631*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1632*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1633*10524682SJagadeesh Kona }, 1634*10524682SJagadeesh Kona }, 1635*10524682SJagadeesh Kona }; 1636*10524682SJagadeesh Kona 1637*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_lite_ahb_clk = { 1638*10524682SJagadeesh Kona .halt_reg = 0x13278, 1639*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1640*10524682SJagadeesh Kona .clkr = { 1641*10524682SJagadeesh Kona .enable_reg = 0x13278, 1642*10524682SJagadeesh Kona .enable_mask = BIT(0), 1643*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1644*10524682SJagadeesh Kona .name = "cam_cc_ife_lite_ahb_clk", 1645*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1646*10524682SJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw, 1647*10524682SJagadeesh Kona }, 1648*10524682SJagadeesh Kona .num_parents = 1, 1649*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1650*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1651*10524682SJagadeesh Kona }, 1652*10524682SJagadeesh Kona }, 1653*10524682SJagadeesh Kona }; 1654*10524682SJagadeesh Kona 1655*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_lite_clk = { 1656*10524682SJagadeesh Kona .halt_reg = 0x1312c, 1657*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1658*10524682SJagadeesh Kona .clkr = { 1659*10524682SJagadeesh Kona .enable_reg = 0x1312c, 1660*10524682SJagadeesh Kona .enable_mask = BIT(0), 1661*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1662*10524682SJagadeesh Kona .name = "cam_cc_ife_lite_clk", 1663*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1664*10524682SJagadeesh Kona &cam_cc_ife_lite_clk_src.clkr.hw, 1665*10524682SJagadeesh Kona }, 1666*10524682SJagadeesh Kona .num_parents = 1, 1667*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1668*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1669*10524682SJagadeesh Kona }, 1670*10524682SJagadeesh Kona }, 1671*10524682SJagadeesh Kona }; 1672*10524682SJagadeesh Kona 1673*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_lite_cphy_rx_clk = { 1674*10524682SJagadeesh Kona .halt_reg = 0x13274, 1675*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1676*10524682SJagadeesh Kona .clkr = { 1677*10524682SJagadeesh Kona .enable_reg = 0x13274, 1678*10524682SJagadeesh Kona .enable_mask = BIT(0), 1679*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1680*10524682SJagadeesh Kona .name = "cam_cc_ife_lite_cphy_rx_clk", 1681*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1682*10524682SJagadeesh Kona &cam_cc_cphy_rx_clk_src.clkr.hw, 1683*10524682SJagadeesh Kona }, 1684*10524682SJagadeesh Kona .num_parents = 1, 1685*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1686*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1687*10524682SJagadeesh Kona }, 1688*10524682SJagadeesh Kona }, 1689*10524682SJagadeesh Kona }; 1690*10524682SJagadeesh Kona 1691*10524682SJagadeesh Kona static struct clk_branch cam_cc_ife_lite_csid_clk = { 1692*10524682SJagadeesh Kona .halt_reg = 0x13268, 1693*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1694*10524682SJagadeesh Kona .clkr = { 1695*10524682SJagadeesh Kona .enable_reg = 0x13268, 1696*10524682SJagadeesh Kona .enable_mask = BIT(0), 1697*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1698*10524682SJagadeesh Kona .name = "cam_cc_ife_lite_csid_clk", 1699*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1700*10524682SJagadeesh Kona &cam_cc_ife_lite_csid_clk_src.clkr.hw, 1701*10524682SJagadeesh Kona }, 1702*10524682SJagadeesh Kona .num_parents = 1, 1703*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1704*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1705*10524682SJagadeesh Kona }, 1706*10524682SJagadeesh Kona }, 1707*10524682SJagadeesh Kona }; 1708*10524682SJagadeesh Kona 1709*10524682SJagadeesh Kona static struct clk_branch cam_cc_ipe_nps_ahb_clk = { 1710*10524682SJagadeesh Kona .halt_reg = 0x1051c, 1711*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1712*10524682SJagadeesh Kona .clkr = { 1713*10524682SJagadeesh Kona .enable_reg = 0x1051c, 1714*10524682SJagadeesh Kona .enable_mask = BIT(0), 1715*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1716*10524682SJagadeesh Kona .name = "cam_cc_ipe_nps_ahb_clk", 1717*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1718*10524682SJagadeesh Kona &cam_cc_slow_ahb_clk_src.clkr.hw, 1719*10524682SJagadeesh Kona }, 1720*10524682SJagadeesh Kona .num_parents = 1, 1721*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1722*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1723*10524682SJagadeesh Kona }, 1724*10524682SJagadeesh Kona }, 1725*10524682SJagadeesh Kona }; 1726*10524682SJagadeesh Kona 1727*10524682SJagadeesh Kona static struct clk_branch cam_cc_ipe_nps_clk = { 1728*10524682SJagadeesh Kona .halt_reg = 0x104f8, 1729*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1730*10524682SJagadeesh Kona .clkr = { 1731*10524682SJagadeesh Kona .enable_reg = 0x104f8, 1732*10524682SJagadeesh Kona .enable_mask = BIT(0), 1733*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1734*10524682SJagadeesh Kona .name = "cam_cc_ipe_nps_clk", 1735*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1736*10524682SJagadeesh Kona &cam_cc_ipe_nps_clk_src.clkr.hw, 1737*10524682SJagadeesh Kona }, 1738*10524682SJagadeesh Kona .num_parents = 1, 1739*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1740*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1741*10524682SJagadeesh Kona }, 1742*10524682SJagadeesh Kona }, 1743*10524682SJagadeesh Kona }; 1744*10524682SJagadeesh Kona 1745*10524682SJagadeesh Kona static struct clk_branch cam_cc_ipe_nps_fast_ahb_clk = { 1746*10524682SJagadeesh Kona .halt_reg = 0x10520, 1747*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1748*10524682SJagadeesh Kona .clkr = { 1749*10524682SJagadeesh Kona .enable_reg = 0x10520, 1750*10524682SJagadeesh Kona .enable_mask = BIT(0), 1751*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1752*10524682SJagadeesh Kona .name = "cam_cc_ipe_nps_fast_ahb_clk", 1753*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1754*10524682SJagadeesh Kona &cam_cc_fast_ahb_clk_src.clkr.hw, 1755*10524682SJagadeesh Kona }, 1756*10524682SJagadeesh Kona .num_parents = 1, 1757*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1758*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1759*10524682SJagadeesh Kona }, 1760*10524682SJagadeesh Kona }, 1761*10524682SJagadeesh Kona }; 1762*10524682SJagadeesh Kona 1763*10524682SJagadeesh Kona static struct clk_branch cam_cc_ipe_pps_clk = { 1764*10524682SJagadeesh Kona .halt_reg = 0x10508, 1765*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1766*10524682SJagadeesh Kona .clkr = { 1767*10524682SJagadeesh Kona .enable_reg = 0x10508, 1768*10524682SJagadeesh Kona .enable_mask = BIT(0), 1769*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1770*10524682SJagadeesh Kona .name = "cam_cc_ipe_pps_clk", 1771*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1772*10524682SJagadeesh Kona &cam_cc_ipe_nps_clk_src.clkr.hw, 1773*10524682SJagadeesh Kona }, 1774*10524682SJagadeesh Kona .num_parents = 1, 1775*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1776*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1777*10524682SJagadeesh Kona }, 1778*10524682SJagadeesh Kona }, 1779*10524682SJagadeesh Kona }; 1780*10524682SJagadeesh Kona 1781*10524682SJagadeesh Kona static struct clk_branch cam_cc_ipe_pps_fast_ahb_clk = { 1782*10524682SJagadeesh Kona .halt_reg = 0x10524, 1783*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1784*10524682SJagadeesh Kona .clkr = { 1785*10524682SJagadeesh Kona .enable_reg = 0x10524, 1786*10524682SJagadeesh Kona .enable_mask = BIT(0), 1787*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1788*10524682SJagadeesh Kona .name = "cam_cc_ipe_pps_fast_ahb_clk", 1789*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1790*10524682SJagadeesh Kona &cam_cc_fast_ahb_clk_src.clkr.hw, 1791*10524682SJagadeesh Kona }, 1792*10524682SJagadeesh Kona .num_parents = 1, 1793*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1794*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1795*10524682SJagadeesh Kona }, 1796*10524682SJagadeesh Kona }, 1797*10524682SJagadeesh Kona }; 1798*10524682SJagadeesh Kona 1799*10524682SJagadeesh Kona static struct clk_branch cam_cc_jpeg_clk = { 1800*10524682SJagadeesh Kona .halt_reg = 0x13508, 1801*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1802*10524682SJagadeesh Kona .clkr = { 1803*10524682SJagadeesh Kona .enable_reg = 0x13508, 1804*10524682SJagadeesh Kona .enable_mask = BIT(0), 1805*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1806*10524682SJagadeesh Kona .name = "cam_cc_jpeg_clk", 1807*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1808*10524682SJagadeesh Kona &cam_cc_jpeg_clk_src.clkr.hw, 1809*10524682SJagadeesh Kona }, 1810*10524682SJagadeesh Kona .num_parents = 1, 1811*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1812*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1813*10524682SJagadeesh Kona }, 1814*10524682SJagadeesh Kona }, 1815*10524682SJagadeesh Kona }; 1816*10524682SJagadeesh Kona 1817*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk0_clk = { 1818*10524682SJagadeesh Kona .halt_reg = 0x15018, 1819*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1820*10524682SJagadeesh Kona .clkr = { 1821*10524682SJagadeesh Kona .enable_reg = 0x15018, 1822*10524682SJagadeesh Kona .enable_mask = BIT(0), 1823*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1824*10524682SJagadeesh Kona .name = "cam_cc_mclk0_clk", 1825*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1826*10524682SJagadeesh Kona &cam_cc_mclk0_clk_src.clkr.hw, 1827*10524682SJagadeesh Kona }, 1828*10524682SJagadeesh Kona .num_parents = 1, 1829*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1830*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1831*10524682SJagadeesh Kona }, 1832*10524682SJagadeesh Kona }, 1833*10524682SJagadeesh Kona }; 1834*10524682SJagadeesh Kona 1835*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk1_clk = { 1836*10524682SJagadeesh Kona .halt_reg = 0x15034, 1837*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1838*10524682SJagadeesh Kona .clkr = { 1839*10524682SJagadeesh Kona .enable_reg = 0x15034, 1840*10524682SJagadeesh Kona .enable_mask = BIT(0), 1841*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1842*10524682SJagadeesh Kona .name = "cam_cc_mclk1_clk", 1843*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1844*10524682SJagadeesh Kona &cam_cc_mclk1_clk_src.clkr.hw, 1845*10524682SJagadeesh Kona }, 1846*10524682SJagadeesh Kona .num_parents = 1, 1847*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1848*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1849*10524682SJagadeesh Kona }, 1850*10524682SJagadeesh Kona }, 1851*10524682SJagadeesh Kona }; 1852*10524682SJagadeesh Kona 1853*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk2_clk = { 1854*10524682SJagadeesh Kona .halt_reg = 0x15050, 1855*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1856*10524682SJagadeesh Kona .clkr = { 1857*10524682SJagadeesh Kona .enable_reg = 0x15050, 1858*10524682SJagadeesh Kona .enable_mask = BIT(0), 1859*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1860*10524682SJagadeesh Kona .name = "cam_cc_mclk2_clk", 1861*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1862*10524682SJagadeesh Kona &cam_cc_mclk2_clk_src.clkr.hw, 1863*10524682SJagadeesh Kona }, 1864*10524682SJagadeesh Kona .num_parents = 1, 1865*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1866*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1867*10524682SJagadeesh Kona }, 1868*10524682SJagadeesh Kona }, 1869*10524682SJagadeesh Kona }; 1870*10524682SJagadeesh Kona 1871*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk3_clk = { 1872*10524682SJagadeesh Kona .halt_reg = 0x1506c, 1873*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1874*10524682SJagadeesh Kona .clkr = { 1875*10524682SJagadeesh Kona .enable_reg = 0x1506c, 1876*10524682SJagadeesh Kona .enable_mask = BIT(0), 1877*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1878*10524682SJagadeesh Kona .name = "cam_cc_mclk3_clk", 1879*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1880*10524682SJagadeesh Kona &cam_cc_mclk3_clk_src.clkr.hw, 1881*10524682SJagadeesh Kona }, 1882*10524682SJagadeesh Kona .num_parents = 1, 1883*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1884*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1885*10524682SJagadeesh Kona }, 1886*10524682SJagadeesh Kona }, 1887*10524682SJagadeesh Kona }; 1888*10524682SJagadeesh Kona 1889*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk4_clk = { 1890*10524682SJagadeesh Kona .halt_reg = 0x15088, 1891*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1892*10524682SJagadeesh Kona .clkr = { 1893*10524682SJagadeesh Kona .enable_reg = 0x15088, 1894*10524682SJagadeesh Kona .enable_mask = BIT(0), 1895*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1896*10524682SJagadeesh Kona .name = "cam_cc_mclk4_clk", 1897*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1898*10524682SJagadeesh Kona &cam_cc_mclk4_clk_src.clkr.hw, 1899*10524682SJagadeesh Kona }, 1900*10524682SJagadeesh Kona .num_parents = 1, 1901*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1902*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1903*10524682SJagadeesh Kona }, 1904*10524682SJagadeesh Kona }, 1905*10524682SJagadeesh Kona }; 1906*10524682SJagadeesh Kona 1907*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk5_clk = { 1908*10524682SJagadeesh Kona .halt_reg = 0x150a4, 1909*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1910*10524682SJagadeesh Kona .clkr = { 1911*10524682SJagadeesh Kona .enable_reg = 0x150a4, 1912*10524682SJagadeesh Kona .enable_mask = BIT(0), 1913*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1914*10524682SJagadeesh Kona .name = "cam_cc_mclk5_clk", 1915*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1916*10524682SJagadeesh Kona &cam_cc_mclk5_clk_src.clkr.hw, 1917*10524682SJagadeesh Kona }, 1918*10524682SJagadeesh Kona .num_parents = 1, 1919*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1920*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1921*10524682SJagadeesh Kona }, 1922*10524682SJagadeesh Kona }, 1923*10524682SJagadeesh Kona }; 1924*10524682SJagadeesh Kona 1925*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk6_clk = { 1926*10524682SJagadeesh Kona .halt_reg = 0x150c0, 1927*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1928*10524682SJagadeesh Kona .clkr = { 1929*10524682SJagadeesh Kona .enable_reg = 0x150c0, 1930*10524682SJagadeesh Kona .enable_mask = BIT(0), 1931*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1932*10524682SJagadeesh Kona .name = "cam_cc_mclk6_clk", 1933*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1934*10524682SJagadeesh Kona &cam_cc_mclk6_clk_src.clkr.hw, 1935*10524682SJagadeesh Kona }, 1936*10524682SJagadeesh Kona .num_parents = 1, 1937*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1938*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1939*10524682SJagadeesh Kona }, 1940*10524682SJagadeesh Kona }, 1941*10524682SJagadeesh Kona }; 1942*10524682SJagadeesh Kona 1943*10524682SJagadeesh Kona static struct clk_branch cam_cc_mclk7_clk = { 1944*10524682SJagadeesh Kona .halt_reg = 0x150dc, 1945*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1946*10524682SJagadeesh Kona .clkr = { 1947*10524682SJagadeesh Kona .enable_reg = 0x150dc, 1948*10524682SJagadeesh Kona .enable_mask = BIT(0), 1949*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1950*10524682SJagadeesh Kona .name = "cam_cc_mclk7_clk", 1951*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1952*10524682SJagadeesh Kona &cam_cc_mclk7_clk_src.clkr.hw, 1953*10524682SJagadeesh Kona }, 1954*10524682SJagadeesh Kona .num_parents = 1, 1955*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1956*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1957*10524682SJagadeesh Kona }, 1958*10524682SJagadeesh Kona }, 1959*10524682SJagadeesh Kona }; 1960*10524682SJagadeesh Kona 1961*10524682SJagadeesh Kona static struct clk_branch cam_cc_qdss_debug_clk = { 1962*10524682SJagadeesh Kona .halt_reg = 0x13a64, 1963*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1964*10524682SJagadeesh Kona .clkr = { 1965*10524682SJagadeesh Kona .enable_reg = 0x13a64, 1966*10524682SJagadeesh Kona .enable_mask = BIT(0), 1967*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1968*10524682SJagadeesh Kona .name = "cam_cc_qdss_debug_clk", 1969*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1970*10524682SJagadeesh Kona &cam_cc_qdss_debug_clk_src.clkr.hw, 1971*10524682SJagadeesh Kona }, 1972*10524682SJagadeesh Kona .num_parents = 1, 1973*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1974*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1975*10524682SJagadeesh Kona }, 1976*10524682SJagadeesh Kona }, 1977*10524682SJagadeesh Kona }; 1978*10524682SJagadeesh Kona 1979*10524682SJagadeesh Kona static struct clk_branch cam_cc_qdss_debug_xo_clk = { 1980*10524682SJagadeesh Kona .halt_reg = 0x13a68, 1981*10524682SJagadeesh Kona .halt_check = BRANCH_HALT, 1982*10524682SJagadeesh Kona .clkr = { 1983*10524682SJagadeesh Kona .enable_reg = 0x13a68, 1984*10524682SJagadeesh Kona .enable_mask = BIT(0), 1985*10524682SJagadeesh Kona .hw.init = &(const struct clk_init_data) { 1986*10524682SJagadeesh Kona .name = "cam_cc_qdss_debug_xo_clk", 1987*10524682SJagadeesh Kona .parent_hws = (const struct clk_hw*[]) { 1988*10524682SJagadeesh Kona &cam_cc_xo_clk_src.clkr.hw, 1989*10524682SJagadeesh Kona }, 1990*10524682SJagadeesh Kona .num_parents = 1, 1991*10524682SJagadeesh Kona .flags = CLK_SET_RATE_PARENT, 1992*10524682SJagadeesh Kona .ops = &clk_branch2_ops, 1993*10524682SJagadeesh Kona }, 1994*10524682SJagadeesh Kona }, 1995*10524682SJagadeesh Kona }; 1996*10524682SJagadeesh Kona 1997*10524682SJagadeesh Kona static struct gdsc cam_cc_titan_top_gdsc = { 1998*10524682SJagadeesh Kona .gdscr = 0x13a6c, 1999*10524682SJagadeesh Kona .en_rest_wait_val = 0x2, 2000*10524682SJagadeesh Kona .en_few_wait_val = 0x2, 2001*10524682SJagadeesh Kona .clk_dis_wait_val = 0xf, 2002*10524682SJagadeesh Kona .pd = { 2003*10524682SJagadeesh Kona .name = "cam_cc_titan_top_gdsc", 2004*10524682SJagadeesh Kona }, 2005*10524682SJagadeesh Kona .pwrsts = PWRSTS_OFF_ON, 2006*10524682SJagadeesh Kona .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2007*10524682SJagadeesh Kona }; 2008*10524682SJagadeesh Kona 2009*10524682SJagadeesh Kona static struct gdsc cam_cc_bps_gdsc = { 2010*10524682SJagadeesh Kona .gdscr = 0x10004, 2011*10524682SJagadeesh Kona .en_rest_wait_val = 0x2, 2012*10524682SJagadeesh Kona .en_few_wait_val = 0x2, 2013*10524682SJagadeesh Kona .clk_dis_wait_val = 0xf, 2014*10524682SJagadeesh Kona .pd = { 2015*10524682SJagadeesh Kona .name = "cam_cc_bps_gdsc", 2016*10524682SJagadeesh Kona }, 2017*10524682SJagadeesh Kona .pwrsts = PWRSTS_OFF_ON, 2018*10524682SJagadeesh Kona .parent = &cam_cc_titan_top_gdsc.pd, 2019*10524682SJagadeesh Kona .flags = HW_CTRL_TRIGGER | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2020*10524682SJagadeesh Kona }; 2021*10524682SJagadeesh Kona 2022*10524682SJagadeesh Kona static struct gdsc cam_cc_ife_0_gdsc = { 2023*10524682SJagadeesh Kona .gdscr = 0x11004, 2024*10524682SJagadeesh Kona .en_rest_wait_val = 0x2, 2025*10524682SJagadeesh Kona .en_few_wait_val = 0x2, 2026*10524682SJagadeesh Kona .clk_dis_wait_val = 0xf, 2027*10524682SJagadeesh Kona .pd = { 2028*10524682SJagadeesh Kona .name = "cam_cc_ife_0_gdsc", 2029*10524682SJagadeesh Kona }, 2030*10524682SJagadeesh Kona .pwrsts = PWRSTS_OFF_ON, 2031*10524682SJagadeesh Kona .parent = &cam_cc_titan_top_gdsc.pd, 2032*10524682SJagadeesh Kona .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2033*10524682SJagadeesh Kona }; 2034*10524682SJagadeesh Kona 2035*10524682SJagadeesh Kona static struct gdsc cam_cc_ipe_0_gdsc = { 2036*10524682SJagadeesh Kona .gdscr = 0x103b8, 2037*10524682SJagadeesh Kona .en_rest_wait_val = 0x2, 2038*10524682SJagadeesh Kona .en_few_wait_val = 0x2, 2039*10524682SJagadeesh Kona .clk_dis_wait_val = 0xf, 2040*10524682SJagadeesh Kona .pd = { 2041*10524682SJagadeesh Kona .name = "cam_cc_ipe_0_gdsc", 2042*10524682SJagadeesh Kona }, 2043*10524682SJagadeesh Kona .pwrsts = PWRSTS_OFF_ON, 2044*10524682SJagadeesh Kona .parent = &cam_cc_titan_top_gdsc.pd, 2045*10524682SJagadeesh Kona .flags = HW_CTRL_TRIGGER | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2046*10524682SJagadeesh Kona }; 2047*10524682SJagadeesh Kona 2048*10524682SJagadeesh Kona static struct clk_regmap *cam_cc_x1p42100_clocks[] = { 2049*10524682SJagadeesh Kona [CAM_CC_BPS_AHB_CLK] = &cam_cc_bps_ahb_clk.clkr, 2050*10524682SJagadeesh Kona [CAM_CC_BPS_CLK] = &cam_cc_bps_clk.clkr, 2051*10524682SJagadeesh Kona [CAM_CC_BPS_CLK_SRC] = &cam_cc_bps_clk_src.clkr, 2052*10524682SJagadeesh Kona [CAM_CC_BPS_FAST_AHB_CLK] = &cam_cc_bps_fast_ahb_clk.clkr, 2053*10524682SJagadeesh Kona [CAM_CC_CAMNOC_AXI_NRT_CLK] = &cam_cc_camnoc_axi_nrt_clk.clkr, 2054*10524682SJagadeesh Kona [CAM_CC_CAMNOC_AXI_RT_CLK] = &cam_cc_camnoc_axi_rt_clk.clkr, 2055*10524682SJagadeesh Kona [CAM_CC_CAMNOC_AXI_RT_CLK_SRC] = &cam_cc_camnoc_axi_rt_clk_src.clkr, 2056*10524682SJagadeesh Kona [CAM_CC_CAMNOC_DCD_XO_CLK] = &cam_cc_camnoc_dcd_xo_clk.clkr, 2057*10524682SJagadeesh Kona [CAM_CC_CAMNOC_XO_CLK] = &cam_cc_camnoc_xo_clk.clkr, 2058*10524682SJagadeesh Kona [CAM_CC_CCI_0_CLK] = &cam_cc_cci_0_clk.clkr, 2059*10524682SJagadeesh Kona [CAM_CC_CCI_0_CLK_SRC] = &cam_cc_cci_0_clk_src.clkr, 2060*10524682SJagadeesh Kona [CAM_CC_CCI_1_CLK] = &cam_cc_cci_1_clk.clkr, 2061*10524682SJagadeesh Kona [CAM_CC_CCI_1_CLK_SRC] = &cam_cc_cci_1_clk_src.clkr, 2062*10524682SJagadeesh Kona [CAM_CC_CORE_AHB_CLK] = &cam_cc_core_ahb_clk.clkr, 2063*10524682SJagadeesh Kona [CAM_CC_CPAS_AHB_CLK] = &cam_cc_cpas_ahb_clk.clkr, 2064*10524682SJagadeesh Kona [CAM_CC_CPAS_BPS_CLK] = &cam_cc_cpas_bps_clk.clkr, 2065*10524682SJagadeesh Kona [CAM_CC_CPAS_FAST_AHB_CLK] = &cam_cc_cpas_fast_ahb_clk.clkr, 2066*10524682SJagadeesh Kona [CAM_CC_CPAS_IFE_0_CLK] = &cam_cc_cpas_ife_0_clk.clkr, 2067*10524682SJagadeesh Kona [CAM_CC_CPAS_IFE_LITE_CLK] = &cam_cc_cpas_ife_lite_clk.clkr, 2068*10524682SJagadeesh Kona [CAM_CC_CPAS_IPE_NPS_CLK] = &cam_cc_cpas_ipe_nps_clk.clkr, 2069*10524682SJagadeesh Kona [CAM_CC_CPHY_RX_CLK_SRC] = &cam_cc_cphy_rx_clk_src.clkr, 2070*10524682SJagadeesh Kona [CAM_CC_CSI0PHYTIMER_CLK] = &cam_cc_csi0phytimer_clk.clkr, 2071*10524682SJagadeesh Kona [CAM_CC_CSI0PHYTIMER_CLK_SRC] = &cam_cc_csi0phytimer_clk_src.clkr, 2072*10524682SJagadeesh Kona [CAM_CC_CSI1PHYTIMER_CLK] = &cam_cc_csi1phytimer_clk.clkr, 2073*10524682SJagadeesh Kona [CAM_CC_CSI1PHYTIMER_CLK_SRC] = &cam_cc_csi1phytimer_clk_src.clkr, 2074*10524682SJagadeesh Kona [CAM_CC_CSI2PHYTIMER_CLK] = &cam_cc_csi2phytimer_clk.clkr, 2075*10524682SJagadeesh Kona [CAM_CC_CSI2PHYTIMER_CLK_SRC] = &cam_cc_csi2phytimer_clk_src.clkr, 2076*10524682SJagadeesh Kona [CAM_CC_CSI3PHYTIMER_CLK] = &cam_cc_csi3phytimer_clk.clkr, 2077*10524682SJagadeesh Kona [CAM_CC_CSI3PHYTIMER_CLK_SRC] = &cam_cc_csi3phytimer_clk_src.clkr, 2078*10524682SJagadeesh Kona [CAM_CC_CSI4PHYTIMER_CLK] = &cam_cc_csi4phytimer_clk.clkr, 2079*10524682SJagadeesh Kona [CAM_CC_CSI4PHYTIMER_CLK_SRC] = &cam_cc_csi4phytimer_clk_src.clkr, 2080*10524682SJagadeesh Kona [CAM_CC_CSI5PHYTIMER_CLK] = &cam_cc_csi5phytimer_clk.clkr, 2081*10524682SJagadeesh Kona [CAM_CC_CSI5PHYTIMER_CLK_SRC] = &cam_cc_csi5phytimer_clk_src.clkr, 2082*10524682SJagadeesh Kona [CAM_CC_CSID_CLK] = &cam_cc_csid_clk.clkr, 2083*10524682SJagadeesh Kona [CAM_CC_CSID_CLK_SRC] = &cam_cc_csid_clk_src.clkr, 2084*10524682SJagadeesh Kona [CAM_CC_CSID_CSIPHY_RX_CLK] = &cam_cc_csid_csiphy_rx_clk.clkr, 2085*10524682SJagadeesh Kona [CAM_CC_CSIPHY0_CLK] = &cam_cc_csiphy0_clk.clkr, 2086*10524682SJagadeesh Kona [CAM_CC_CSIPHY1_CLK] = &cam_cc_csiphy1_clk.clkr, 2087*10524682SJagadeesh Kona [CAM_CC_CSIPHY2_CLK] = &cam_cc_csiphy2_clk.clkr, 2088*10524682SJagadeesh Kona [CAM_CC_CSIPHY3_CLK] = &cam_cc_csiphy3_clk.clkr, 2089*10524682SJagadeesh Kona [CAM_CC_CSIPHY4_CLK] = &cam_cc_csiphy4_clk.clkr, 2090*10524682SJagadeesh Kona [CAM_CC_CSIPHY5_CLK] = &cam_cc_csiphy5_clk.clkr, 2091*10524682SJagadeesh Kona [CAM_CC_FAST_AHB_CLK_SRC] = &cam_cc_fast_ahb_clk_src.clkr, 2092*10524682SJagadeesh Kona [CAM_CC_ICP_AHB_CLK] = &cam_cc_icp_ahb_clk.clkr, 2093*10524682SJagadeesh Kona [CAM_CC_ICP_CLK] = &cam_cc_icp_clk.clkr, 2094*10524682SJagadeesh Kona [CAM_CC_ICP_CLK_SRC] = &cam_cc_icp_clk_src.clkr, 2095*10524682SJagadeesh Kona [CAM_CC_IFE_0_CLK] = &cam_cc_ife_0_clk.clkr, 2096*10524682SJagadeesh Kona [CAM_CC_IFE_0_CLK_SRC] = &cam_cc_ife_0_clk_src.clkr, 2097*10524682SJagadeesh Kona [CAM_CC_IFE_0_DSP_CLK] = &cam_cc_ife_0_dsp_clk.clkr, 2098*10524682SJagadeesh Kona [CAM_CC_IFE_0_FAST_AHB_CLK] = &cam_cc_ife_0_fast_ahb_clk.clkr, 2099*10524682SJagadeesh Kona [CAM_CC_IFE_LITE_AHB_CLK] = &cam_cc_ife_lite_ahb_clk.clkr, 2100*10524682SJagadeesh Kona [CAM_CC_IFE_LITE_CLK] = &cam_cc_ife_lite_clk.clkr, 2101*10524682SJagadeesh Kona [CAM_CC_IFE_LITE_CLK_SRC] = &cam_cc_ife_lite_clk_src.clkr, 2102*10524682SJagadeesh Kona [CAM_CC_IFE_LITE_CPHY_RX_CLK] = &cam_cc_ife_lite_cphy_rx_clk.clkr, 2103*10524682SJagadeesh Kona [CAM_CC_IFE_LITE_CSID_CLK] = &cam_cc_ife_lite_csid_clk.clkr, 2104*10524682SJagadeesh Kona [CAM_CC_IFE_LITE_CSID_CLK_SRC] = &cam_cc_ife_lite_csid_clk_src.clkr, 2105*10524682SJagadeesh Kona [CAM_CC_IPE_NPS_AHB_CLK] = &cam_cc_ipe_nps_ahb_clk.clkr, 2106*10524682SJagadeesh Kona [CAM_CC_IPE_NPS_CLK] = &cam_cc_ipe_nps_clk.clkr, 2107*10524682SJagadeesh Kona [CAM_CC_IPE_NPS_CLK_SRC] = &cam_cc_ipe_nps_clk_src.clkr, 2108*10524682SJagadeesh Kona [CAM_CC_IPE_NPS_FAST_AHB_CLK] = &cam_cc_ipe_nps_fast_ahb_clk.clkr, 2109*10524682SJagadeesh Kona [CAM_CC_IPE_PPS_CLK] = &cam_cc_ipe_pps_clk.clkr, 2110*10524682SJagadeesh Kona [CAM_CC_IPE_PPS_FAST_AHB_CLK] = &cam_cc_ipe_pps_fast_ahb_clk.clkr, 2111*10524682SJagadeesh Kona [CAM_CC_JPEG_CLK] = &cam_cc_jpeg_clk.clkr, 2112*10524682SJagadeesh Kona [CAM_CC_JPEG_CLK_SRC] = &cam_cc_jpeg_clk_src.clkr, 2113*10524682SJagadeesh Kona [CAM_CC_MCLK0_CLK] = &cam_cc_mclk0_clk.clkr, 2114*10524682SJagadeesh Kona [CAM_CC_MCLK0_CLK_SRC] = &cam_cc_mclk0_clk_src.clkr, 2115*10524682SJagadeesh Kona [CAM_CC_MCLK1_CLK] = &cam_cc_mclk1_clk.clkr, 2116*10524682SJagadeesh Kona [CAM_CC_MCLK1_CLK_SRC] = &cam_cc_mclk1_clk_src.clkr, 2117*10524682SJagadeesh Kona [CAM_CC_MCLK2_CLK] = &cam_cc_mclk2_clk.clkr, 2118*10524682SJagadeesh Kona [CAM_CC_MCLK2_CLK_SRC] = &cam_cc_mclk2_clk_src.clkr, 2119*10524682SJagadeesh Kona [CAM_CC_MCLK3_CLK] = &cam_cc_mclk3_clk.clkr, 2120*10524682SJagadeesh Kona [CAM_CC_MCLK3_CLK_SRC] = &cam_cc_mclk3_clk_src.clkr, 2121*10524682SJagadeesh Kona [CAM_CC_MCLK4_CLK] = &cam_cc_mclk4_clk.clkr, 2122*10524682SJagadeesh Kona [CAM_CC_MCLK4_CLK_SRC] = &cam_cc_mclk4_clk_src.clkr, 2123*10524682SJagadeesh Kona [CAM_CC_MCLK5_CLK] = &cam_cc_mclk5_clk.clkr, 2124*10524682SJagadeesh Kona [CAM_CC_MCLK5_CLK_SRC] = &cam_cc_mclk5_clk_src.clkr, 2125*10524682SJagadeesh Kona [CAM_CC_MCLK6_CLK] = &cam_cc_mclk6_clk.clkr, 2126*10524682SJagadeesh Kona [CAM_CC_MCLK6_CLK_SRC] = &cam_cc_mclk6_clk_src.clkr, 2127*10524682SJagadeesh Kona [CAM_CC_MCLK7_CLK] = &cam_cc_mclk7_clk.clkr, 2128*10524682SJagadeesh Kona [CAM_CC_MCLK7_CLK_SRC] = &cam_cc_mclk7_clk_src.clkr, 2129*10524682SJagadeesh Kona [CAM_CC_PLL0] = &cam_cc_pll0.clkr, 2130*10524682SJagadeesh Kona [CAM_CC_PLL0_OUT_EVEN] = &cam_cc_pll0_out_even.clkr, 2131*10524682SJagadeesh Kona [CAM_CC_PLL0_OUT_ODD] = &cam_cc_pll0_out_odd.clkr, 2132*10524682SJagadeesh Kona [CAM_CC_PLL1] = &cam_cc_pll1.clkr, 2133*10524682SJagadeesh Kona [CAM_CC_PLL1_OUT_EVEN] = &cam_cc_pll1_out_even.clkr, 2134*10524682SJagadeesh Kona [CAM_CC_PLL2] = &cam_cc_pll2.clkr, 2135*10524682SJagadeesh Kona [CAM_CC_PLL3] = &cam_cc_pll3.clkr, 2136*10524682SJagadeesh Kona [CAM_CC_PLL3_OUT_EVEN] = &cam_cc_pll3_out_even.clkr, 2137*10524682SJagadeesh Kona [CAM_CC_PLL6] = &cam_cc_pll6.clkr, 2138*10524682SJagadeesh Kona [CAM_CC_PLL6_OUT_EVEN] = &cam_cc_pll6_out_even.clkr, 2139*10524682SJagadeesh Kona [CAM_CC_QDSS_DEBUG_CLK] = &cam_cc_qdss_debug_clk.clkr, 2140*10524682SJagadeesh Kona [CAM_CC_QDSS_DEBUG_CLK_SRC] = &cam_cc_qdss_debug_clk_src.clkr, 2141*10524682SJagadeesh Kona [CAM_CC_QDSS_DEBUG_XO_CLK] = &cam_cc_qdss_debug_xo_clk.clkr, 2142*10524682SJagadeesh Kona [CAM_CC_SLEEP_CLK_SRC] = &cam_cc_sleep_clk_src.clkr, 2143*10524682SJagadeesh Kona [CAM_CC_SLOW_AHB_CLK_SRC] = &cam_cc_slow_ahb_clk_src.clkr, 2144*10524682SJagadeesh Kona [CAM_CC_XO_CLK_SRC] = &cam_cc_xo_clk_src.clkr, 2145*10524682SJagadeesh Kona }; 2146*10524682SJagadeesh Kona 2147*10524682SJagadeesh Kona static struct gdsc *cam_cc_x1p42100_gdscs[] = { 2148*10524682SJagadeesh Kona [CAM_CC_BPS_GDSC] = &cam_cc_bps_gdsc, 2149*10524682SJagadeesh Kona [CAM_CC_IFE_0_GDSC] = &cam_cc_ife_0_gdsc, 2150*10524682SJagadeesh Kona [CAM_CC_IPE_0_GDSC] = &cam_cc_ipe_0_gdsc, 2151*10524682SJagadeesh Kona [CAM_CC_TITAN_TOP_GDSC] = &cam_cc_titan_top_gdsc, 2152*10524682SJagadeesh Kona }; 2153*10524682SJagadeesh Kona 2154*10524682SJagadeesh Kona static const struct qcom_reset_map cam_cc_x1p42100_resets[] = { 2155*10524682SJagadeesh Kona [CAM_CC_BPS_BCR] = { 0x10000 }, 2156*10524682SJagadeesh Kona [CAM_CC_ICP_BCR] = { 0x1351c }, 2157*10524682SJagadeesh Kona [CAM_CC_IFE_0_BCR] = { 0x11000 }, 2158*10524682SJagadeesh Kona [CAM_CC_IPE_0_BCR] = { 0x103b4 }, 2159*10524682SJagadeesh Kona }; 2160*10524682SJagadeesh Kona 2161*10524682SJagadeesh Kona static struct clk_alpha_pll *cam_cc_x1p42100_plls[] = { 2162*10524682SJagadeesh Kona &cam_cc_pll0, 2163*10524682SJagadeesh Kona &cam_cc_pll1, 2164*10524682SJagadeesh Kona &cam_cc_pll2, 2165*10524682SJagadeesh Kona &cam_cc_pll3, 2166*10524682SJagadeesh Kona &cam_cc_pll6, 2167*10524682SJagadeesh Kona }; 2168*10524682SJagadeesh Kona 2169*10524682SJagadeesh Kona static u32 cam_cc_x1p42100_critical_cbcrs[] = { 2170*10524682SJagadeesh Kona 0x13a9c, /* CAM_CC_GDSC_CLK */ 2171*10524682SJagadeesh Kona 0x13ab8, /* CAM_CC_SLEEP_CLK */ 2172*10524682SJagadeesh Kona }; 2173*10524682SJagadeesh Kona 2174*10524682SJagadeesh Kona static const struct regmap_config cam_cc_x1p42100_regmap_config = { 2175*10524682SJagadeesh Kona .reg_bits = 32, 2176*10524682SJagadeesh Kona .reg_stride = 4, 2177*10524682SJagadeesh Kona .val_bits = 32, 2178*10524682SJagadeesh Kona .max_register = 0x1603c, 2179*10524682SJagadeesh Kona .fast_io = true, 2180*10524682SJagadeesh Kona }; 2181*10524682SJagadeesh Kona 2182*10524682SJagadeesh Kona static struct qcom_cc_driver_data cam_cc_x1p42100_driver_data = { 2183*10524682SJagadeesh Kona .alpha_plls = cam_cc_x1p42100_plls, 2184*10524682SJagadeesh Kona .num_alpha_plls = ARRAY_SIZE(cam_cc_x1p42100_plls), 2185*10524682SJagadeesh Kona .clk_cbcrs = cam_cc_x1p42100_critical_cbcrs, 2186*10524682SJagadeesh Kona .num_clk_cbcrs = ARRAY_SIZE(cam_cc_x1p42100_critical_cbcrs), 2187*10524682SJagadeesh Kona }; 2188*10524682SJagadeesh Kona 2189*10524682SJagadeesh Kona static struct qcom_cc_desc cam_cc_x1p42100_desc = { 2190*10524682SJagadeesh Kona .config = &cam_cc_x1p42100_regmap_config, 2191*10524682SJagadeesh Kona .clks = cam_cc_x1p42100_clocks, 2192*10524682SJagadeesh Kona .num_clks = ARRAY_SIZE(cam_cc_x1p42100_clocks), 2193*10524682SJagadeesh Kona .resets = cam_cc_x1p42100_resets, 2194*10524682SJagadeesh Kona .num_resets = ARRAY_SIZE(cam_cc_x1p42100_resets), 2195*10524682SJagadeesh Kona .gdscs = cam_cc_x1p42100_gdscs, 2196*10524682SJagadeesh Kona .num_gdscs = ARRAY_SIZE(cam_cc_x1p42100_gdscs), 2197*10524682SJagadeesh Kona .use_rpm = true, 2198*10524682SJagadeesh Kona .driver_data = &cam_cc_x1p42100_driver_data, 2199*10524682SJagadeesh Kona }; 2200*10524682SJagadeesh Kona 2201*10524682SJagadeesh Kona static const struct of_device_id cam_cc_x1p42100_match_table[] = { 2202*10524682SJagadeesh Kona { .compatible = "qcom,x1p42100-camcc" }, 2203*10524682SJagadeesh Kona { } 2204*10524682SJagadeesh Kona }; 2205*10524682SJagadeesh Kona MODULE_DEVICE_TABLE(of, cam_cc_x1p42100_match_table); 2206*10524682SJagadeesh Kona 2207*10524682SJagadeesh Kona static int cam_cc_x1p42100_probe(struct platform_device *pdev) 2208*10524682SJagadeesh Kona { 2209*10524682SJagadeesh Kona return qcom_cc_probe(pdev, &cam_cc_x1p42100_desc); 2210*10524682SJagadeesh Kona } 2211*10524682SJagadeesh Kona 2212*10524682SJagadeesh Kona static struct platform_driver cam_cc_x1p42100_driver = { 2213*10524682SJagadeesh Kona .probe = cam_cc_x1p42100_probe, 2214*10524682SJagadeesh Kona .driver = { 2215*10524682SJagadeesh Kona .name = "camcc-x1p42100", 2216*10524682SJagadeesh Kona .of_match_table = cam_cc_x1p42100_match_table, 2217*10524682SJagadeesh Kona }, 2218*10524682SJagadeesh Kona }; 2219*10524682SJagadeesh Kona 2220*10524682SJagadeesh Kona module_platform_driver(cam_cc_x1p42100_driver); 2221*10524682SJagadeesh Kona 2222*10524682SJagadeesh Kona MODULE_DESCRIPTION("QTI CAMCC X1P42100 Driver"); 2223*10524682SJagadeesh Kona MODULE_LICENSE("GPL"); 2224