1*92aae35fSTaniya Das // SPDX-License-Identifier: GPL-2.0-only 2*92aae35fSTaniya Das /* 3*92aae35fSTaniya Das * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 4*92aae35fSTaniya Das */ 5*92aae35fSTaniya Das 6*92aae35fSTaniya Das #include <linux/clk-provider.h> 7*92aae35fSTaniya Das #include <linux/mod_devicetable.h> 8*92aae35fSTaniya Das #include <linux/module.h> 9*92aae35fSTaniya Das #include <linux/of.h> 10*92aae35fSTaniya Das #include <linux/platform_device.h> 11*92aae35fSTaniya Das #include <linux/pm_runtime.h> 12*92aae35fSTaniya Das #include <linux/regmap.h> 13*92aae35fSTaniya Das 14*92aae35fSTaniya Das #include <dt-bindings/clock/qcom,kaanapali-camcc.h> 15*92aae35fSTaniya Das 16*92aae35fSTaniya Das #include "clk-alpha-pll.h" 17*92aae35fSTaniya Das #include "clk-branch.h" 18*92aae35fSTaniya Das #include "clk-pll.h" 19*92aae35fSTaniya Das #include "clk-rcg.h" 20*92aae35fSTaniya Das #include "clk-regmap.h" 21*92aae35fSTaniya Das #include "clk-regmap-divider.h" 22*92aae35fSTaniya Das #include "clk-regmap-mux.h" 23*92aae35fSTaniya Das #include "common.h" 24*92aae35fSTaniya Das #include "gdsc.h" 25*92aae35fSTaniya Das #include "reset.h" 26*92aae35fSTaniya Das 27*92aae35fSTaniya Das enum { 28*92aae35fSTaniya Das DT_AHB_CLK, 29*92aae35fSTaniya Das DT_BI_TCXO, 30*92aae35fSTaniya Das DT_BI_TCXO_AO, 31*92aae35fSTaniya Das DT_SLEEP_CLK, 32*92aae35fSTaniya Das }; 33*92aae35fSTaniya Das 34*92aae35fSTaniya Das enum { 35*92aae35fSTaniya Das P_BI_TCXO, 36*92aae35fSTaniya Das P_CAM_CC_PLL0_OUT_EVEN, 37*92aae35fSTaniya Das P_CAM_CC_PLL0_OUT_MAIN, 38*92aae35fSTaniya Das P_CAM_CC_PLL0_OUT_ODD, 39*92aae35fSTaniya Das P_CAM_CC_PLL1_OUT_EVEN, 40*92aae35fSTaniya Das P_CAM_CC_PLL2_OUT_EVEN, 41*92aae35fSTaniya Das P_CAM_CC_PLL3_OUT_EVEN, 42*92aae35fSTaniya Das P_CAM_CC_PLL4_OUT_EVEN, 43*92aae35fSTaniya Das P_CAM_CC_PLL5_OUT_EVEN, 44*92aae35fSTaniya Das P_CAM_CC_PLL6_OUT_EVEN, 45*92aae35fSTaniya Das P_CAM_CC_PLL6_OUT_ODD, 46*92aae35fSTaniya Das P_CAM_CC_PLL7_OUT_EVEN, 47*92aae35fSTaniya Das }; 48*92aae35fSTaniya Das 49*92aae35fSTaniya Das static const struct pll_vco taycan_eko_t_vco[] = { 50*92aae35fSTaniya Das { 249600000, 2500000000, 0 }, 51*92aae35fSTaniya Das }; 52*92aae35fSTaniya Das 53*92aae35fSTaniya Das /* 1200.0 MHz Configuration */ 54*92aae35fSTaniya Das static const struct alpha_pll_config cam_cc_pll0_config = { 55*92aae35fSTaniya Das .l = 0x3e, 56*92aae35fSTaniya Das .cal_l = 0x48, 57*92aae35fSTaniya Das .alpha = 0x8000, 58*92aae35fSTaniya Das .config_ctl_val = 0x25c400e7, 59*92aae35fSTaniya Das .config_ctl_hi_val = 0x0a8062e0, 60*92aae35fSTaniya Das .config_ctl_hi1_val = 0xf51dea20, 61*92aae35fSTaniya Das .user_ctl_val = 0x00008408, 62*92aae35fSTaniya Das .user_ctl_hi_val = 0x00000002, 63*92aae35fSTaniya Das }; 64*92aae35fSTaniya Das 65*92aae35fSTaniya Das static struct clk_alpha_pll cam_cc_pll0 = { 66*92aae35fSTaniya Das .offset = 0x0, 67*92aae35fSTaniya Das .config = &cam_cc_pll0_config, 68*92aae35fSTaniya Das .vco_table = taycan_eko_t_vco, 69*92aae35fSTaniya Das .num_vco = ARRAY_SIZE(taycan_eko_t_vco), 70*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 71*92aae35fSTaniya Das .clkr = { 72*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 73*92aae35fSTaniya Das .name = "cam_cc_pll0", 74*92aae35fSTaniya Das .parent_data = &(const struct clk_parent_data) { 75*92aae35fSTaniya Das .index = DT_BI_TCXO, 76*92aae35fSTaniya Das }, 77*92aae35fSTaniya Das .num_parents = 1, 78*92aae35fSTaniya Das .ops = &clk_alpha_pll_taycan_eko_t_ops, 79*92aae35fSTaniya Das }, 80*92aae35fSTaniya Das }, 81*92aae35fSTaniya Das }; 82*92aae35fSTaniya Das 83*92aae35fSTaniya Das static const struct clk_div_table post_div_table_cam_cc_pll0_out_even[] = { 84*92aae35fSTaniya Das { 0x1, 2 }, 85*92aae35fSTaniya Das { } 86*92aae35fSTaniya Das }; 87*92aae35fSTaniya Das 88*92aae35fSTaniya Das static struct clk_alpha_pll_postdiv cam_cc_pll0_out_even = { 89*92aae35fSTaniya Das .offset = 0x0, 90*92aae35fSTaniya Das .post_div_shift = 10, 91*92aae35fSTaniya Das .post_div_table = post_div_table_cam_cc_pll0_out_even, 92*92aae35fSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_even), 93*92aae35fSTaniya Das .width = 4, 94*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 95*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 96*92aae35fSTaniya Das .name = "cam_cc_pll0_out_even", 97*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 98*92aae35fSTaniya Das &cam_cc_pll0.clkr.hw, 99*92aae35fSTaniya Das }, 100*92aae35fSTaniya Das .num_parents = 1, 101*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 102*92aae35fSTaniya Das .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops, 103*92aae35fSTaniya Das }, 104*92aae35fSTaniya Das }; 105*92aae35fSTaniya Das 106*92aae35fSTaniya Das static const struct clk_div_table post_div_table_cam_cc_pll0_out_odd[] = { 107*92aae35fSTaniya Das { 0x2, 3 }, 108*92aae35fSTaniya Das { } 109*92aae35fSTaniya Das }; 110*92aae35fSTaniya Das 111*92aae35fSTaniya Das static struct clk_alpha_pll_postdiv cam_cc_pll0_out_odd = { 112*92aae35fSTaniya Das .offset = 0x0, 113*92aae35fSTaniya Das .post_div_shift = 14, 114*92aae35fSTaniya Das .post_div_table = post_div_table_cam_cc_pll0_out_odd, 115*92aae35fSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_odd), 116*92aae35fSTaniya Das .width = 4, 117*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 118*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 119*92aae35fSTaniya Das .name = "cam_cc_pll0_out_odd", 120*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 121*92aae35fSTaniya Das &cam_cc_pll0.clkr.hw, 122*92aae35fSTaniya Das }, 123*92aae35fSTaniya Das .num_parents = 1, 124*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 125*92aae35fSTaniya Das .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops, 126*92aae35fSTaniya Das }, 127*92aae35fSTaniya Das }; 128*92aae35fSTaniya Das 129*92aae35fSTaniya Das /* 665.0 MHz Configuration */ 130*92aae35fSTaniya Das static const struct alpha_pll_config cam_cc_pll1_config = { 131*92aae35fSTaniya Das .l = 0x22, 132*92aae35fSTaniya Das .cal_l = 0x48, 133*92aae35fSTaniya Das .alpha = 0xa2aa, 134*92aae35fSTaniya Das .config_ctl_val = 0x25c400e7, 135*92aae35fSTaniya Das .config_ctl_hi_val = 0x0a8062e0, 136*92aae35fSTaniya Das .config_ctl_hi1_val = 0xf51dea20, 137*92aae35fSTaniya Das .user_ctl_val = 0x00000408, 138*92aae35fSTaniya Das .user_ctl_hi_val = 0x00000002, 139*92aae35fSTaniya Das }; 140*92aae35fSTaniya Das 141*92aae35fSTaniya Das static struct clk_alpha_pll cam_cc_pll1 = { 142*92aae35fSTaniya Das .offset = 0x1000, 143*92aae35fSTaniya Das .config = &cam_cc_pll1_config, 144*92aae35fSTaniya Das .vco_table = taycan_eko_t_vco, 145*92aae35fSTaniya Das .num_vco = ARRAY_SIZE(taycan_eko_t_vco), 146*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 147*92aae35fSTaniya Das .clkr = { 148*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 149*92aae35fSTaniya Das .name = "cam_cc_pll1", 150*92aae35fSTaniya Das .parent_data = &(const struct clk_parent_data) { 151*92aae35fSTaniya Das .index = DT_BI_TCXO, 152*92aae35fSTaniya Das }, 153*92aae35fSTaniya Das .num_parents = 1, 154*92aae35fSTaniya Das .ops = &clk_alpha_pll_taycan_eko_t_ops, 155*92aae35fSTaniya Das }, 156*92aae35fSTaniya Das }, 157*92aae35fSTaniya Das }; 158*92aae35fSTaniya Das 159*92aae35fSTaniya Das static const struct clk_div_table post_div_table_cam_cc_pll1_out_even[] = { 160*92aae35fSTaniya Das { 0x1, 2 }, 161*92aae35fSTaniya Das { } 162*92aae35fSTaniya Das }; 163*92aae35fSTaniya Das 164*92aae35fSTaniya Das static struct clk_alpha_pll_postdiv cam_cc_pll1_out_even = { 165*92aae35fSTaniya Das .offset = 0x1000, 166*92aae35fSTaniya Das .post_div_shift = 10, 167*92aae35fSTaniya Das .post_div_table = post_div_table_cam_cc_pll1_out_even, 168*92aae35fSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll1_out_even), 169*92aae35fSTaniya Das .width = 4, 170*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 171*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 172*92aae35fSTaniya Das .name = "cam_cc_pll1_out_even", 173*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 174*92aae35fSTaniya Das &cam_cc_pll1.clkr.hw, 175*92aae35fSTaniya Das }, 176*92aae35fSTaniya Das .num_parents = 1, 177*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 178*92aae35fSTaniya Das .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops, 179*92aae35fSTaniya Das }, 180*92aae35fSTaniya Das }; 181*92aae35fSTaniya Das 182*92aae35fSTaniya Das /* 677.6 MHz Configuration */ 183*92aae35fSTaniya Das static const struct alpha_pll_config cam_cc_pll2_config = { 184*92aae35fSTaniya Das .l = 0x23, 185*92aae35fSTaniya Das .cal_l = 0x48, 186*92aae35fSTaniya Das .alpha = 0x4aaa, 187*92aae35fSTaniya Das .config_ctl_val = 0x25c400e7, 188*92aae35fSTaniya Das .config_ctl_hi_val = 0x0a8062e0, 189*92aae35fSTaniya Das .config_ctl_hi1_val = 0xf51dea20, 190*92aae35fSTaniya Das .user_ctl_val = 0x00000408, 191*92aae35fSTaniya Das .user_ctl_hi_val = 0x00000002, 192*92aae35fSTaniya Das }; 193*92aae35fSTaniya Das 194*92aae35fSTaniya Das static struct clk_alpha_pll cam_cc_pll2 = { 195*92aae35fSTaniya Das .offset = 0x2000, 196*92aae35fSTaniya Das .config = &cam_cc_pll2_config, 197*92aae35fSTaniya Das .vco_table = taycan_eko_t_vco, 198*92aae35fSTaniya Das .num_vco = ARRAY_SIZE(taycan_eko_t_vco), 199*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 200*92aae35fSTaniya Das .clkr = { 201*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 202*92aae35fSTaniya Das .name = "cam_cc_pll2", 203*92aae35fSTaniya Das .parent_data = &(const struct clk_parent_data) { 204*92aae35fSTaniya Das .index = DT_BI_TCXO, 205*92aae35fSTaniya Das }, 206*92aae35fSTaniya Das .num_parents = 1, 207*92aae35fSTaniya Das .ops = &clk_alpha_pll_taycan_eko_t_ops, 208*92aae35fSTaniya Das }, 209*92aae35fSTaniya Das }, 210*92aae35fSTaniya Das }; 211*92aae35fSTaniya Das 212*92aae35fSTaniya Das static const struct clk_div_table post_div_table_cam_cc_pll2_out_even[] = { 213*92aae35fSTaniya Das { 0x1, 2 }, 214*92aae35fSTaniya Das { } 215*92aae35fSTaniya Das }; 216*92aae35fSTaniya Das 217*92aae35fSTaniya Das static struct clk_alpha_pll_postdiv cam_cc_pll2_out_even = { 218*92aae35fSTaniya Das .offset = 0x2000, 219*92aae35fSTaniya Das .post_div_shift = 10, 220*92aae35fSTaniya Das .post_div_table = post_div_table_cam_cc_pll2_out_even, 221*92aae35fSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll2_out_even), 222*92aae35fSTaniya Das .width = 4, 223*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 224*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 225*92aae35fSTaniya Das .name = "cam_cc_pll2_out_even", 226*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 227*92aae35fSTaniya Das &cam_cc_pll2.clkr.hw, 228*92aae35fSTaniya Das }, 229*92aae35fSTaniya Das .num_parents = 1, 230*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 231*92aae35fSTaniya Das .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops, 232*92aae35fSTaniya Das }, 233*92aae35fSTaniya Das }; 234*92aae35fSTaniya Das 235*92aae35fSTaniya Das /* 720.56 MHz Configuration */ 236*92aae35fSTaniya Das static const struct alpha_pll_config cam_cc_pll3_config = { 237*92aae35fSTaniya Das .l = 0x25, 238*92aae35fSTaniya Das .cal_l = 0x48, 239*92aae35fSTaniya Das .alpha = 0x8777, 240*92aae35fSTaniya Das .config_ctl_val = 0x25c400e7, 241*92aae35fSTaniya Das .config_ctl_hi_val = 0x0a8062e0, 242*92aae35fSTaniya Das .config_ctl_hi1_val = 0xf51dea20, 243*92aae35fSTaniya Das .user_ctl_val = 0x00000408, 244*92aae35fSTaniya Das .user_ctl_hi_val = 0x00000002, 245*92aae35fSTaniya Das }; 246*92aae35fSTaniya Das 247*92aae35fSTaniya Das static struct clk_alpha_pll cam_cc_pll3 = { 248*92aae35fSTaniya Das .offset = 0x3000, 249*92aae35fSTaniya Das .config = &cam_cc_pll3_config, 250*92aae35fSTaniya Das .vco_table = taycan_eko_t_vco, 251*92aae35fSTaniya Das .num_vco = ARRAY_SIZE(taycan_eko_t_vco), 252*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 253*92aae35fSTaniya Das .clkr = { 254*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 255*92aae35fSTaniya Das .name = "cam_cc_pll3", 256*92aae35fSTaniya Das .parent_data = &(const struct clk_parent_data) { 257*92aae35fSTaniya Das .index = DT_BI_TCXO, 258*92aae35fSTaniya Das }, 259*92aae35fSTaniya Das .num_parents = 1, 260*92aae35fSTaniya Das .ops = &clk_alpha_pll_taycan_eko_t_ops, 261*92aae35fSTaniya Das }, 262*92aae35fSTaniya Das }, 263*92aae35fSTaniya Das }; 264*92aae35fSTaniya Das 265*92aae35fSTaniya Das static const struct clk_div_table post_div_table_cam_cc_pll3_out_even[] = { 266*92aae35fSTaniya Das { 0x1, 2 }, 267*92aae35fSTaniya Das { } 268*92aae35fSTaniya Das }; 269*92aae35fSTaniya Das 270*92aae35fSTaniya Das static struct clk_alpha_pll_postdiv cam_cc_pll3_out_even = { 271*92aae35fSTaniya Das .offset = 0x3000, 272*92aae35fSTaniya Das .post_div_shift = 10, 273*92aae35fSTaniya Das .post_div_table = post_div_table_cam_cc_pll3_out_even, 274*92aae35fSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll3_out_even), 275*92aae35fSTaniya Das .width = 4, 276*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 277*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 278*92aae35fSTaniya Das .name = "cam_cc_pll3_out_even", 279*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 280*92aae35fSTaniya Das &cam_cc_pll3.clkr.hw, 281*92aae35fSTaniya Das }, 282*92aae35fSTaniya Das .num_parents = 1, 283*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 284*92aae35fSTaniya Das .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops, 285*92aae35fSTaniya Das }, 286*92aae35fSTaniya Das }; 287*92aae35fSTaniya Das 288*92aae35fSTaniya Das /* 720.56 MHz Configuration */ 289*92aae35fSTaniya Das static const struct alpha_pll_config cam_cc_pll4_config = { 290*92aae35fSTaniya Das .l = 0x25, 291*92aae35fSTaniya Das .cal_l = 0x48, 292*92aae35fSTaniya Das .alpha = 0x8777, 293*92aae35fSTaniya Das .config_ctl_val = 0x25c400e7, 294*92aae35fSTaniya Das .config_ctl_hi_val = 0x0a8062e0, 295*92aae35fSTaniya Das .config_ctl_hi1_val = 0xf51dea20, 296*92aae35fSTaniya Das .user_ctl_val = 0x00000408, 297*92aae35fSTaniya Das .user_ctl_hi_val = 0x00000002, 298*92aae35fSTaniya Das }; 299*92aae35fSTaniya Das 300*92aae35fSTaniya Das static struct clk_alpha_pll cam_cc_pll4 = { 301*92aae35fSTaniya Das .offset = 0x4000, 302*92aae35fSTaniya Das .config = &cam_cc_pll4_config, 303*92aae35fSTaniya Das .vco_table = taycan_eko_t_vco, 304*92aae35fSTaniya Das .num_vco = ARRAY_SIZE(taycan_eko_t_vco), 305*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 306*92aae35fSTaniya Das .clkr = { 307*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 308*92aae35fSTaniya Das .name = "cam_cc_pll4", 309*92aae35fSTaniya Das .parent_data = &(const struct clk_parent_data) { 310*92aae35fSTaniya Das .index = DT_BI_TCXO, 311*92aae35fSTaniya Das }, 312*92aae35fSTaniya Das .num_parents = 1, 313*92aae35fSTaniya Das .ops = &clk_alpha_pll_taycan_eko_t_ops, 314*92aae35fSTaniya Das }, 315*92aae35fSTaniya Das }, 316*92aae35fSTaniya Das }; 317*92aae35fSTaniya Das 318*92aae35fSTaniya Das static const struct clk_div_table post_div_table_cam_cc_pll4_out_even[] = { 319*92aae35fSTaniya Das { 0x1, 2 }, 320*92aae35fSTaniya Das { } 321*92aae35fSTaniya Das }; 322*92aae35fSTaniya Das 323*92aae35fSTaniya Das static struct clk_alpha_pll_postdiv cam_cc_pll4_out_even = { 324*92aae35fSTaniya Das .offset = 0x4000, 325*92aae35fSTaniya Das .post_div_shift = 10, 326*92aae35fSTaniya Das .post_div_table = post_div_table_cam_cc_pll4_out_even, 327*92aae35fSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll4_out_even), 328*92aae35fSTaniya Das .width = 4, 329*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 330*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 331*92aae35fSTaniya Das .name = "cam_cc_pll4_out_even", 332*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 333*92aae35fSTaniya Das &cam_cc_pll4.clkr.hw, 334*92aae35fSTaniya Das }, 335*92aae35fSTaniya Das .num_parents = 1, 336*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 337*92aae35fSTaniya Das .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops, 338*92aae35fSTaniya Das }, 339*92aae35fSTaniya Das }; 340*92aae35fSTaniya Das 341*92aae35fSTaniya Das /* 720.56 MHz Configuration */ 342*92aae35fSTaniya Das static const struct alpha_pll_config cam_cc_pll5_config = { 343*92aae35fSTaniya Das .l = 0x25, 344*92aae35fSTaniya Das .cal_l = 0x48, 345*92aae35fSTaniya Das .alpha = 0x8777, 346*92aae35fSTaniya Das .config_ctl_val = 0x25c400e7, 347*92aae35fSTaniya Das .config_ctl_hi_val = 0x0a8062e0, 348*92aae35fSTaniya Das .config_ctl_hi1_val = 0xf51dea20, 349*92aae35fSTaniya Das .user_ctl_val = 0x00000408, 350*92aae35fSTaniya Das .user_ctl_hi_val = 0x00000002, 351*92aae35fSTaniya Das }; 352*92aae35fSTaniya Das 353*92aae35fSTaniya Das static struct clk_alpha_pll cam_cc_pll5 = { 354*92aae35fSTaniya Das .offset = 0x5000, 355*92aae35fSTaniya Das .config = &cam_cc_pll5_config, 356*92aae35fSTaniya Das .vco_table = taycan_eko_t_vco, 357*92aae35fSTaniya Das .num_vco = ARRAY_SIZE(taycan_eko_t_vco), 358*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 359*92aae35fSTaniya Das .clkr = { 360*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 361*92aae35fSTaniya Das .name = "cam_cc_pll5", 362*92aae35fSTaniya Das .parent_data = &(const struct clk_parent_data) { 363*92aae35fSTaniya Das .index = DT_BI_TCXO, 364*92aae35fSTaniya Das }, 365*92aae35fSTaniya Das .num_parents = 1, 366*92aae35fSTaniya Das .ops = &clk_alpha_pll_taycan_eko_t_ops, 367*92aae35fSTaniya Das }, 368*92aae35fSTaniya Das }, 369*92aae35fSTaniya Das }; 370*92aae35fSTaniya Das 371*92aae35fSTaniya Das static const struct clk_div_table post_div_table_cam_cc_pll5_out_even[] = { 372*92aae35fSTaniya Das { 0x1, 2 }, 373*92aae35fSTaniya Das { } 374*92aae35fSTaniya Das }; 375*92aae35fSTaniya Das 376*92aae35fSTaniya Das static struct clk_alpha_pll_postdiv cam_cc_pll5_out_even = { 377*92aae35fSTaniya Das .offset = 0x5000, 378*92aae35fSTaniya Das .post_div_shift = 10, 379*92aae35fSTaniya Das .post_div_table = post_div_table_cam_cc_pll5_out_even, 380*92aae35fSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll5_out_even), 381*92aae35fSTaniya Das .width = 4, 382*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 383*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 384*92aae35fSTaniya Das .name = "cam_cc_pll5_out_even", 385*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 386*92aae35fSTaniya Das &cam_cc_pll5.clkr.hw, 387*92aae35fSTaniya Das }, 388*92aae35fSTaniya Das .num_parents = 1, 389*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 390*92aae35fSTaniya Das .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops, 391*92aae35fSTaniya Das }, 392*92aae35fSTaniya Das }; 393*92aae35fSTaniya Das 394*92aae35fSTaniya Das /* 960.0 MHz Configuration */ 395*92aae35fSTaniya Das static const struct alpha_pll_config cam_cc_pll6_config = { 396*92aae35fSTaniya Das .l = 0x32, 397*92aae35fSTaniya Das .cal_l = 0x48, 398*92aae35fSTaniya Das .alpha = 0x0, 399*92aae35fSTaniya Das .config_ctl_val = 0x25c400e7, 400*92aae35fSTaniya Das .config_ctl_hi_val = 0x0a8062e0, 401*92aae35fSTaniya Das .config_ctl_hi1_val = 0xf51dea20, 402*92aae35fSTaniya Das .user_ctl_val = 0x00008408, 403*92aae35fSTaniya Das .user_ctl_hi_val = 0x00000002, 404*92aae35fSTaniya Das }; 405*92aae35fSTaniya Das 406*92aae35fSTaniya Das static struct clk_alpha_pll cam_cc_pll6 = { 407*92aae35fSTaniya Das .offset = 0x6000, 408*92aae35fSTaniya Das .config = &cam_cc_pll6_config, 409*92aae35fSTaniya Das .vco_table = taycan_eko_t_vco, 410*92aae35fSTaniya Das .num_vco = ARRAY_SIZE(taycan_eko_t_vco), 411*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 412*92aae35fSTaniya Das .clkr = { 413*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 414*92aae35fSTaniya Das .name = "cam_cc_pll6", 415*92aae35fSTaniya Das .parent_data = &(const struct clk_parent_data) { 416*92aae35fSTaniya Das .index = DT_BI_TCXO, 417*92aae35fSTaniya Das }, 418*92aae35fSTaniya Das .num_parents = 1, 419*92aae35fSTaniya Das .ops = &clk_alpha_pll_taycan_eko_t_ops, 420*92aae35fSTaniya Das }, 421*92aae35fSTaniya Das }, 422*92aae35fSTaniya Das }; 423*92aae35fSTaniya Das 424*92aae35fSTaniya Das static const struct clk_div_table post_div_table_cam_cc_pll6_out_even[] = { 425*92aae35fSTaniya Das { 0x1, 2 }, 426*92aae35fSTaniya Das { } 427*92aae35fSTaniya Das }; 428*92aae35fSTaniya Das 429*92aae35fSTaniya Das static struct clk_alpha_pll_postdiv cam_cc_pll6_out_even = { 430*92aae35fSTaniya Das .offset = 0x6000, 431*92aae35fSTaniya Das .post_div_shift = 10, 432*92aae35fSTaniya Das .post_div_table = post_div_table_cam_cc_pll6_out_even, 433*92aae35fSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll6_out_even), 434*92aae35fSTaniya Das .width = 4, 435*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 436*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 437*92aae35fSTaniya Das .name = "cam_cc_pll6_out_even", 438*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 439*92aae35fSTaniya Das &cam_cc_pll6.clkr.hw, 440*92aae35fSTaniya Das }, 441*92aae35fSTaniya Das .num_parents = 1, 442*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 443*92aae35fSTaniya Das .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops, 444*92aae35fSTaniya Das }, 445*92aae35fSTaniya Das }; 446*92aae35fSTaniya Das 447*92aae35fSTaniya Das static const struct clk_div_table post_div_table_cam_cc_pll6_out_odd[] = { 448*92aae35fSTaniya Das { 0x2, 3 }, 449*92aae35fSTaniya Das { } 450*92aae35fSTaniya Das }; 451*92aae35fSTaniya Das 452*92aae35fSTaniya Das static struct clk_alpha_pll_postdiv cam_cc_pll6_out_odd = { 453*92aae35fSTaniya Das .offset = 0x6000, 454*92aae35fSTaniya Das .post_div_shift = 14, 455*92aae35fSTaniya Das .post_div_table = post_div_table_cam_cc_pll6_out_odd, 456*92aae35fSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll6_out_odd), 457*92aae35fSTaniya Das .width = 4, 458*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 459*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 460*92aae35fSTaniya Das .name = "cam_cc_pll6_out_odd", 461*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 462*92aae35fSTaniya Das &cam_cc_pll6.clkr.hw, 463*92aae35fSTaniya Das }, 464*92aae35fSTaniya Das .num_parents = 1, 465*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 466*92aae35fSTaniya Das .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops, 467*92aae35fSTaniya Das }, 468*92aae35fSTaniya Das }; 469*92aae35fSTaniya Das 470*92aae35fSTaniya Das /* 1000.0 MHz Configuration */ 471*92aae35fSTaniya Das static const struct alpha_pll_config cam_cc_pll7_config = { 472*92aae35fSTaniya Das .l = 0x34, 473*92aae35fSTaniya Das .cal_l = 0x48, 474*92aae35fSTaniya Das .alpha = 0x1555, 475*92aae35fSTaniya Das .config_ctl_val = 0x25c400e7, 476*92aae35fSTaniya Das .config_ctl_hi_val = 0x0a8062e0, 477*92aae35fSTaniya Das .config_ctl_hi1_val = 0xf51dea20, 478*92aae35fSTaniya Das .user_ctl_val = 0x00000408, 479*92aae35fSTaniya Das .user_ctl_hi_val = 0x00000002, 480*92aae35fSTaniya Das }; 481*92aae35fSTaniya Das 482*92aae35fSTaniya Das static struct clk_alpha_pll cam_cc_pll7 = { 483*92aae35fSTaniya Das .offset = 0x7000, 484*92aae35fSTaniya Das .config = &cam_cc_pll7_config, 485*92aae35fSTaniya Das .vco_table = taycan_eko_t_vco, 486*92aae35fSTaniya Das .num_vco = ARRAY_SIZE(taycan_eko_t_vco), 487*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 488*92aae35fSTaniya Das .clkr = { 489*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 490*92aae35fSTaniya Das .name = "cam_cc_pll7", 491*92aae35fSTaniya Das .parent_data = &(const struct clk_parent_data) { 492*92aae35fSTaniya Das .index = DT_BI_TCXO, 493*92aae35fSTaniya Das }, 494*92aae35fSTaniya Das .num_parents = 1, 495*92aae35fSTaniya Das .ops = &clk_alpha_pll_taycan_eko_t_ops, 496*92aae35fSTaniya Das }, 497*92aae35fSTaniya Das }, 498*92aae35fSTaniya Das }; 499*92aae35fSTaniya Das 500*92aae35fSTaniya Das static const struct clk_div_table post_div_table_cam_cc_pll7_out_even[] = { 501*92aae35fSTaniya Das { 0x1, 2 }, 502*92aae35fSTaniya Das { } 503*92aae35fSTaniya Das }; 504*92aae35fSTaniya Das 505*92aae35fSTaniya Das static struct clk_alpha_pll_postdiv cam_cc_pll7_out_even = { 506*92aae35fSTaniya Das .offset = 0x7000, 507*92aae35fSTaniya Das .post_div_shift = 10, 508*92aae35fSTaniya Das .post_div_table = post_div_table_cam_cc_pll7_out_even, 509*92aae35fSTaniya Das .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll7_out_even), 510*92aae35fSTaniya Das .width = 4, 511*92aae35fSTaniya Das .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EKO_T], 512*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 513*92aae35fSTaniya Das .name = "cam_cc_pll7_out_even", 514*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 515*92aae35fSTaniya Das &cam_cc_pll7.clkr.hw, 516*92aae35fSTaniya Das }, 517*92aae35fSTaniya Das .num_parents = 1, 518*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 519*92aae35fSTaniya Das .ops = &clk_alpha_pll_postdiv_taycan_eko_t_ops, 520*92aae35fSTaniya Das }, 521*92aae35fSTaniya Das }; 522*92aae35fSTaniya Das 523*92aae35fSTaniya Das static const struct parent_map cam_cc_parent_map_0[] = { 524*92aae35fSTaniya Das { P_BI_TCXO, 0 }, 525*92aae35fSTaniya Das { P_CAM_CC_PLL0_OUT_MAIN, 1 }, 526*92aae35fSTaniya Das { P_CAM_CC_PLL0_OUT_EVEN, 2 }, 527*92aae35fSTaniya Das { P_CAM_CC_PLL0_OUT_ODD, 3 }, 528*92aae35fSTaniya Das { P_CAM_CC_PLL6_OUT_ODD, 4 }, 529*92aae35fSTaniya Das { P_CAM_CC_PLL6_OUT_EVEN, 5 }, 530*92aae35fSTaniya Das }; 531*92aae35fSTaniya Das 532*92aae35fSTaniya Das static const struct clk_parent_data cam_cc_parent_data_0[] = { 533*92aae35fSTaniya Das { .index = DT_BI_TCXO }, 534*92aae35fSTaniya Das { .hw = &cam_cc_pll0.clkr.hw }, 535*92aae35fSTaniya Das { .hw = &cam_cc_pll0_out_even.clkr.hw }, 536*92aae35fSTaniya Das { .hw = &cam_cc_pll0_out_odd.clkr.hw }, 537*92aae35fSTaniya Das { .hw = &cam_cc_pll6_out_odd.clkr.hw }, 538*92aae35fSTaniya Das { .hw = &cam_cc_pll6_out_even.clkr.hw }, 539*92aae35fSTaniya Das }; 540*92aae35fSTaniya Das 541*92aae35fSTaniya Das static const struct parent_map cam_cc_parent_map_1[] = { 542*92aae35fSTaniya Das { P_BI_TCXO, 0 }, 543*92aae35fSTaniya Das { P_CAM_CC_PLL0_OUT_MAIN, 1 }, 544*92aae35fSTaniya Das { P_CAM_CC_PLL0_OUT_EVEN, 2 }, 545*92aae35fSTaniya Das { P_CAM_CC_PLL0_OUT_ODD, 3 }, 546*92aae35fSTaniya Das { P_CAM_CC_PLL6_OUT_ODD, 4 }, 547*92aae35fSTaniya Das { P_CAM_CC_PLL6_OUT_EVEN, 5 }, 548*92aae35fSTaniya Das }; 549*92aae35fSTaniya Das 550*92aae35fSTaniya Das static const struct clk_parent_data cam_cc_parent_data_1[] = { 551*92aae35fSTaniya Das { .index = DT_BI_TCXO }, 552*92aae35fSTaniya Das { .hw = &cam_cc_pll0.clkr.hw }, 553*92aae35fSTaniya Das { .hw = &cam_cc_pll0_out_even.clkr.hw }, 554*92aae35fSTaniya Das { .hw = &cam_cc_pll0_out_odd.clkr.hw }, 555*92aae35fSTaniya Das { .hw = &cam_cc_pll6_out_odd.clkr.hw }, 556*92aae35fSTaniya Das { .hw = &cam_cc_pll6_out_even.clkr.hw }, 557*92aae35fSTaniya Das }; 558*92aae35fSTaniya Das 559*92aae35fSTaniya Das static const struct parent_map cam_cc_parent_map_2[] = { 560*92aae35fSTaniya Das { P_BI_TCXO, 0 }, 561*92aae35fSTaniya Das { P_CAM_CC_PLL0_OUT_MAIN, 1 }, 562*92aae35fSTaniya Das { P_CAM_CC_PLL0_OUT_EVEN, 2 }, 563*92aae35fSTaniya Das { P_CAM_CC_PLL0_OUT_ODD, 3 }, 564*92aae35fSTaniya Das { P_CAM_CC_PLL7_OUT_EVEN, 6 }, 565*92aae35fSTaniya Das }; 566*92aae35fSTaniya Das 567*92aae35fSTaniya Das static const struct clk_parent_data cam_cc_parent_data_2[] = { 568*92aae35fSTaniya Das { .index = DT_BI_TCXO }, 569*92aae35fSTaniya Das { .hw = &cam_cc_pll0.clkr.hw }, 570*92aae35fSTaniya Das { .hw = &cam_cc_pll0_out_even.clkr.hw }, 571*92aae35fSTaniya Das { .hw = &cam_cc_pll0_out_odd.clkr.hw }, 572*92aae35fSTaniya Das { .hw = &cam_cc_pll7_out_even.clkr.hw }, 573*92aae35fSTaniya Das }; 574*92aae35fSTaniya Das 575*92aae35fSTaniya Das static const struct parent_map cam_cc_parent_map_3[] = { 576*92aae35fSTaniya Das { P_BI_TCXO, 0 }, 577*92aae35fSTaniya Das { P_CAM_CC_PLL1_OUT_EVEN, 4 }, 578*92aae35fSTaniya Das }; 579*92aae35fSTaniya Das 580*92aae35fSTaniya Das static const struct clk_parent_data cam_cc_parent_data_3[] = { 581*92aae35fSTaniya Das { .index = DT_BI_TCXO }, 582*92aae35fSTaniya Das { .hw = &cam_cc_pll1_out_even.clkr.hw }, 583*92aae35fSTaniya Das }; 584*92aae35fSTaniya Das 585*92aae35fSTaniya Das static const struct parent_map cam_cc_parent_map_4[] = { 586*92aae35fSTaniya Das { P_BI_TCXO, 0 }, 587*92aae35fSTaniya Das { P_CAM_CC_PLL2_OUT_EVEN, 5 }, 588*92aae35fSTaniya Das }; 589*92aae35fSTaniya Das 590*92aae35fSTaniya Das static const struct clk_parent_data cam_cc_parent_data_4[] = { 591*92aae35fSTaniya Das { .index = DT_BI_TCXO }, 592*92aae35fSTaniya Das { .hw = &cam_cc_pll2_out_even.clkr.hw }, 593*92aae35fSTaniya Das }; 594*92aae35fSTaniya Das 595*92aae35fSTaniya Das static const struct parent_map cam_cc_parent_map_5[] = { 596*92aae35fSTaniya Das { P_BI_TCXO, 0 }, 597*92aae35fSTaniya Das { P_CAM_CC_PLL3_OUT_EVEN, 6 }, 598*92aae35fSTaniya Das }; 599*92aae35fSTaniya Das 600*92aae35fSTaniya Das static const struct clk_parent_data cam_cc_parent_data_5[] = { 601*92aae35fSTaniya Das { .index = DT_BI_TCXO }, 602*92aae35fSTaniya Das { .hw = &cam_cc_pll3_out_even.clkr.hw }, 603*92aae35fSTaniya Das }; 604*92aae35fSTaniya Das 605*92aae35fSTaniya Das static const struct parent_map cam_cc_parent_map_6[] = { 606*92aae35fSTaniya Das { P_BI_TCXO, 0 }, 607*92aae35fSTaniya Das { P_CAM_CC_PLL4_OUT_EVEN, 6 }, 608*92aae35fSTaniya Das }; 609*92aae35fSTaniya Das 610*92aae35fSTaniya Das static const struct clk_parent_data cam_cc_parent_data_6[] = { 611*92aae35fSTaniya Das { .index = DT_BI_TCXO }, 612*92aae35fSTaniya Das { .hw = &cam_cc_pll4_out_even.clkr.hw }, 613*92aae35fSTaniya Das }; 614*92aae35fSTaniya Das 615*92aae35fSTaniya Das static const struct parent_map cam_cc_parent_map_7[] = { 616*92aae35fSTaniya Das { P_BI_TCXO, 0 }, 617*92aae35fSTaniya Das { P_CAM_CC_PLL5_OUT_EVEN, 6 }, 618*92aae35fSTaniya Das }; 619*92aae35fSTaniya Das 620*92aae35fSTaniya Das static const struct clk_parent_data cam_cc_parent_data_7[] = { 621*92aae35fSTaniya Das { .index = DT_BI_TCXO }, 622*92aae35fSTaniya Das { .hw = &cam_cc_pll5_out_even.clkr.hw }, 623*92aae35fSTaniya Das }; 624*92aae35fSTaniya Das 625*92aae35fSTaniya Das static const struct parent_map cam_cc_parent_map_8[] = { 626*92aae35fSTaniya Das { P_BI_TCXO, 0 }, 627*92aae35fSTaniya Das }; 628*92aae35fSTaniya Das 629*92aae35fSTaniya Das static const struct clk_parent_data cam_cc_parent_data_8[] = { 630*92aae35fSTaniya Das { .index = DT_BI_TCXO }, 631*92aae35fSTaniya Das }; 632*92aae35fSTaniya Das 633*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_camnoc_rt_axi_clk_src[] = { 634*92aae35fSTaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 635*92aae35fSTaniya Das F(200000000, P_CAM_CC_PLL0_OUT_EVEN, 3, 0, 0), 636*92aae35fSTaniya Das F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0), 637*92aae35fSTaniya Das F(400000000, P_CAM_CC_PLL0_OUT_EVEN, 1.5, 0, 0), 638*92aae35fSTaniya Das F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0), 639*92aae35fSTaniya Das { } 640*92aae35fSTaniya Das }; 641*92aae35fSTaniya Das 642*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_camnoc_rt_axi_clk_src = { 643*92aae35fSTaniya Das .cmd_rcgr = 0x212cc, 644*92aae35fSTaniya Das .mnd_width = 0, 645*92aae35fSTaniya Das .hid_width = 5, 646*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_1, 647*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_camnoc_rt_axi_clk_src, 648*92aae35fSTaniya Das .hw_clk_ctrl = true, 649*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 650*92aae35fSTaniya Das .name = "cam_cc_camnoc_rt_axi_clk_src", 651*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_1, 652*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 653*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 654*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 655*92aae35fSTaniya Das }, 656*92aae35fSTaniya Das }; 657*92aae35fSTaniya Das 658*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_cci_0_clk_src[] = { 659*92aae35fSTaniya Das F(37500000, P_CAM_CC_PLL0_OUT_EVEN, 16, 0, 0), 660*92aae35fSTaniya Das { } 661*92aae35fSTaniya Das }; 662*92aae35fSTaniya Das 663*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_cci_0_clk_src = { 664*92aae35fSTaniya Das .cmd_rcgr = 0x21250, 665*92aae35fSTaniya Das .mnd_width = 8, 666*92aae35fSTaniya Das .hid_width = 5, 667*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_1, 668*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_cci_0_clk_src, 669*92aae35fSTaniya Das .hw_clk_ctrl = true, 670*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 671*92aae35fSTaniya Das .name = "cam_cc_cci_0_clk_src", 672*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_1, 673*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 674*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 675*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 676*92aae35fSTaniya Das }, 677*92aae35fSTaniya Das }; 678*92aae35fSTaniya Das 679*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_cci_1_clk_src = { 680*92aae35fSTaniya Das .cmd_rcgr = 0x2126c, 681*92aae35fSTaniya Das .mnd_width = 8, 682*92aae35fSTaniya Das .hid_width = 5, 683*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_1, 684*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_cci_0_clk_src, 685*92aae35fSTaniya Das .hw_clk_ctrl = true, 686*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 687*92aae35fSTaniya Das .name = "cam_cc_cci_1_clk_src", 688*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_1, 689*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 690*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 691*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 692*92aae35fSTaniya Das }, 693*92aae35fSTaniya Das }; 694*92aae35fSTaniya Das 695*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_cci_2_clk_src = { 696*92aae35fSTaniya Das .cmd_rcgr = 0x21288, 697*92aae35fSTaniya Das .mnd_width = 8, 698*92aae35fSTaniya Das .hid_width = 5, 699*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_1, 700*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_cci_0_clk_src, 701*92aae35fSTaniya Das .hw_clk_ctrl = true, 702*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 703*92aae35fSTaniya Das .name = "cam_cc_cci_2_clk_src", 704*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_1, 705*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 706*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 707*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 708*92aae35fSTaniya Das }, 709*92aae35fSTaniya Das }; 710*92aae35fSTaniya Das 711*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_cphy_rx_clk_src[] = { 712*92aae35fSTaniya Das F(266666667, P_CAM_CC_PLL0_OUT_MAIN, 4.5, 0, 0), 713*92aae35fSTaniya Das F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0), 714*92aae35fSTaniya Das F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0), 715*92aae35fSTaniya Das { } 716*92aae35fSTaniya Das }; 717*92aae35fSTaniya Das 718*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_cphy_rx_clk_src = { 719*92aae35fSTaniya Das .cmd_rcgr = 0x21064, 720*92aae35fSTaniya Das .mnd_width = 0, 721*92aae35fSTaniya Das .hid_width = 5, 722*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_0, 723*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_cphy_rx_clk_src, 724*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 725*92aae35fSTaniya Das .name = "cam_cc_cphy_rx_clk_src", 726*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_0, 727*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 728*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 729*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 730*92aae35fSTaniya Das }, 731*92aae35fSTaniya Das }; 732*92aae35fSTaniya Das 733*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_cre_clk_src[] = { 734*92aae35fSTaniya Das F(137142857, P_CAM_CC_PLL6_OUT_EVEN, 3.5, 0, 0), 735*92aae35fSTaniya Das F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0), 736*92aae35fSTaniya Das F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 737*92aae35fSTaniya Das F(480000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 738*92aae35fSTaniya Das F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0), 739*92aae35fSTaniya Das { } 740*92aae35fSTaniya Das }; 741*92aae35fSTaniya Das 742*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_cre_clk_src = { 743*92aae35fSTaniya Das .cmd_rcgr = 0x211a0, 744*92aae35fSTaniya Das .mnd_width = 0, 745*92aae35fSTaniya Das .hid_width = 5, 746*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_1, 747*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_cre_clk_src, 748*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 749*92aae35fSTaniya Das .name = "cam_cc_cre_clk_src", 750*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_1, 751*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 752*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 753*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 754*92aae35fSTaniya Das }, 755*92aae35fSTaniya Das }; 756*92aae35fSTaniya Das 757*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_csi0phytimer_clk_src[] = { 758*92aae35fSTaniya Das F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 759*92aae35fSTaniya Das { } 760*92aae35fSTaniya Das }; 761*92aae35fSTaniya Das 762*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_csi0phytimer_clk_src = { 763*92aae35fSTaniya Das .cmd_rcgr = 0x20000, 764*92aae35fSTaniya Das .mnd_width = 0, 765*92aae35fSTaniya Das .hid_width = 5, 766*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_0, 767*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 768*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 769*92aae35fSTaniya Das .name = "cam_cc_csi0phytimer_clk_src", 770*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_0, 771*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 772*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 773*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 774*92aae35fSTaniya Das }, 775*92aae35fSTaniya Das }; 776*92aae35fSTaniya Das 777*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_csi1phytimer_clk_src = { 778*92aae35fSTaniya Das .cmd_rcgr = 0x20024, 779*92aae35fSTaniya Das .mnd_width = 0, 780*92aae35fSTaniya Das .hid_width = 5, 781*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_0, 782*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 783*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 784*92aae35fSTaniya Das .name = "cam_cc_csi1phytimer_clk_src", 785*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_0, 786*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 787*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 788*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 789*92aae35fSTaniya Das }, 790*92aae35fSTaniya Das }; 791*92aae35fSTaniya Das 792*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_csi2phytimer_clk_src = { 793*92aae35fSTaniya Das .cmd_rcgr = 0x20044, 794*92aae35fSTaniya Das .mnd_width = 0, 795*92aae35fSTaniya Das .hid_width = 5, 796*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_0, 797*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 798*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 799*92aae35fSTaniya Das .name = "cam_cc_csi2phytimer_clk_src", 800*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_0, 801*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 802*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 803*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 804*92aae35fSTaniya Das }, 805*92aae35fSTaniya Das }; 806*92aae35fSTaniya Das 807*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_csi3phytimer_clk_src = { 808*92aae35fSTaniya Das .cmd_rcgr = 0x20064, 809*92aae35fSTaniya Das .mnd_width = 0, 810*92aae35fSTaniya Das .hid_width = 5, 811*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_0, 812*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 813*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 814*92aae35fSTaniya Das .name = "cam_cc_csi3phytimer_clk_src", 815*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_0, 816*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 817*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 818*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 819*92aae35fSTaniya Das }, 820*92aae35fSTaniya Das }; 821*92aae35fSTaniya Das 822*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_csi4phytimer_clk_src = { 823*92aae35fSTaniya Das .cmd_rcgr = 0x20084, 824*92aae35fSTaniya Das .mnd_width = 0, 825*92aae35fSTaniya Das .hid_width = 5, 826*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_0, 827*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 828*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 829*92aae35fSTaniya Das .name = "cam_cc_csi4phytimer_clk_src", 830*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_0, 831*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 832*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 833*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 834*92aae35fSTaniya Das }, 835*92aae35fSTaniya Das }; 836*92aae35fSTaniya Das 837*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_csi5phytimer_clk_src = { 838*92aae35fSTaniya Das .cmd_rcgr = 0x200a4, 839*92aae35fSTaniya Das .mnd_width = 0, 840*92aae35fSTaniya Das .hid_width = 5, 841*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_0, 842*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 843*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 844*92aae35fSTaniya Das .name = "cam_cc_csi5phytimer_clk_src", 845*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_0, 846*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 847*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 848*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 849*92aae35fSTaniya Das }, 850*92aae35fSTaniya Das }; 851*92aae35fSTaniya Das 852*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_csid_clk_src = { 853*92aae35fSTaniya Das .cmd_rcgr = 0x212a4, 854*92aae35fSTaniya Das .mnd_width = 0, 855*92aae35fSTaniya Das .hid_width = 5, 856*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_0, 857*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_cphy_rx_clk_src, 858*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 859*92aae35fSTaniya Das .name = "cam_cc_csid_clk_src", 860*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_0, 861*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 862*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 863*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 864*92aae35fSTaniya Das }, 865*92aae35fSTaniya Das }; 866*92aae35fSTaniya Das 867*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_fast_ahb_clk_src[] = { 868*92aae35fSTaniya Das F(213333333, P_CAM_CC_PLL6_OUT_ODD, 1.5, 0, 0), 869*92aae35fSTaniya Das F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0), 870*92aae35fSTaniya Das F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0), 871*92aae35fSTaniya Das { } 872*92aae35fSTaniya Das }; 873*92aae35fSTaniya Das 874*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_fast_ahb_clk_src = { 875*92aae35fSTaniya Das .cmd_rcgr = 0x200dc, 876*92aae35fSTaniya Das .mnd_width = 0, 877*92aae35fSTaniya Das .hid_width = 5, 878*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_1, 879*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_fast_ahb_clk_src, 880*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 881*92aae35fSTaniya Das .name = "cam_cc_fast_ahb_clk_src", 882*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_1, 883*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 884*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 885*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 886*92aae35fSTaniya Das }, 887*92aae35fSTaniya Das }; 888*92aae35fSTaniya Das 889*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_icp_0_clk_src[] = { 890*92aae35fSTaniya Das F(500000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0), 891*92aae35fSTaniya Das F(600000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0), 892*92aae35fSTaniya Das F(740000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0), 893*92aae35fSTaniya Das F(875000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0), 894*92aae35fSTaniya Das F(1000000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0), 895*92aae35fSTaniya Das { } 896*92aae35fSTaniya Das }; 897*92aae35fSTaniya Das 898*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_icp_0_clk_src = { 899*92aae35fSTaniya Das .cmd_rcgr = 0x211f8, 900*92aae35fSTaniya Das .mnd_width = 0, 901*92aae35fSTaniya Das .hid_width = 5, 902*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_2, 903*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_icp_0_clk_src, 904*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 905*92aae35fSTaniya Das .name = "cam_cc_icp_0_clk_src", 906*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_2, 907*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_2), 908*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 909*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 910*92aae35fSTaniya Das }, 911*92aae35fSTaniya Das }; 912*92aae35fSTaniya Das 913*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_icp_1_clk_src = { 914*92aae35fSTaniya Das .cmd_rcgr = 0x21220, 915*92aae35fSTaniya Das .mnd_width = 0, 916*92aae35fSTaniya Das .hid_width = 5, 917*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_2, 918*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_icp_0_clk_src, 919*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 920*92aae35fSTaniya Das .name = "cam_cc_icp_1_clk_src", 921*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_2, 922*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_2), 923*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 924*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 925*92aae35fSTaniya Das }, 926*92aae35fSTaniya Das }; 927*92aae35fSTaniya Das 928*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_ife_lite_clk_src = { 929*92aae35fSTaniya Das .cmd_rcgr = 0x21144, 930*92aae35fSTaniya Das .mnd_width = 0, 931*92aae35fSTaniya Das .hid_width = 5, 932*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_0, 933*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_cphy_rx_clk_src, 934*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 935*92aae35fSTaniya Das .name = "cam_cc_ife_lite_clk_src", 936*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_0, 937*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 938*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 939*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 940*92aae35fSTaniya Das }, 941*92aae35fSTaniya Das }; 942*92aae35fSTaniya Das 943*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_ife_lite_csid_clk_src = { 944*92aae35fSTaniya Das .cmd_rcgr = 0x21170, 945*92aae35fSTaniya Das .mnd_width = 0, 946*92aae35fSTaniya Das .hid_width = 5, 947*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_0, 948*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_cphy_rx_clk_src, 949*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 950*92aae35fSTaniya Das .name = "cam_cc_ife_lite_csid_clk_src", 951*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_0, 952*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 953*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 954*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 955*92aae35fSTaniya Das }, 956*92aae35fSTaniya Das }; 957*92aae35fSTaniya Das 958*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_ipe_nps_clk_src[] = { 959*92aae35fSTaniya Das F(332500000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 960*92aae35fSTaniya Das F(475000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 961*92aae35fSTaniya Das F(575000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 962*92aae35fSTaniya Das F(675000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 963*92aae35fSTaniya Das F(825000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 964*92aae35fSTaniya Das { } 965*92aae35fSTaniya Das }; 966*92aae35fSTaniya Das 967*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_ipe_nps_clk_src = { 968*92aae35fSTaniya Das .cmd_rcgr = 0x20188, 969*92aae35fSTaniya Das .mnd_width = 0, 970*92aae35fSTaniya Das .hid_width = 5, 971*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_3, 972*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_ipe_nps_clk_src, 973*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 974*92aae35fSTaniya Das .name = "cam_cc_ipe_nps_clk_src", 975*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_3, 976*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_3), 977*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 978*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 979*92aae35fSTaniya Das }, 980*92aae35fSTaniya Das }; 981*92aae35fSTaniya Das 982*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_jpeg_clk_src = { 983*92aae35fSTaniya Das .cmd_rcgr = 0x211c4, 984*92aae35fSTaniya Das .mnd_width = 0, 985*92aae35fSTaniya Das .hid_width = 5, 986*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_1, 987*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_cre_clk_src, 988*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 989*92aae35fSTaniya Das .name = "cam_cc_jpeg_clk_src", 990*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_1, 991*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 992*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 993*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 994*92aae35fSTaniya Das }, 995*92aae35fSTaniya Das }; 996*92aae35fSTaniya Das 997*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_ofe_clk_src[] = { 998*92aae35fSTaniya Das F(338800000, P_CAM_CC_PLL2_OUT_EVEN, 1, 0, 0), 999*92aae35fSTaniya Das F(484000000, P_CAM_CC_PLL2_OUT_EVEN, 1, 0, 0), 1000*92aae35fSTaniya Das F(586000000, P_CAM_CC_PLL2_OUT_EVEN, 1, 0, 0), 1001*92aae35fSTaniya Das F(688000000, P_CAM_CC_PLL2_OUT_EVEN, 1, 0, 0), 1002*92aae35fSTaniya Das F(841000000, P_CAM_CC_PLL2_OUT_EVEN, 1, 0, 0), 1003*92aae35fSTaniya Das { } 1004*92aae35fSTaniya Das }; 1005*92aae35fSTaniya Das 1006*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_ofe_clk_src = { 1007*92aae35fSTaniya Das .cmd_rcgr = 0x2011c, 1008*92aae35fSTaniya Das .mnd_width = 0, 1009*92aae35fSTaniya Das .hid_width = 5, 1010*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_4, 1011*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_ofe_clk_src, 1012*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 1013*92aae35fSTaniya Das .name = "cam_cc_ofe_clk_src", 1014*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_4, 1015*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_4), 1016*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1017*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 1018*92aae35fSTaniya Das }, 1019*92aae35fSTaniya Das }; 1020*92aae35fSTaniya Das 1021*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_qdss_debug_clk_src[] = { 1022*92aae35fSTaniya Das F(40000000, P_CAM_CC_PLL6_OUT_ODD, 8, 0, 0), 1023*92aae35fSTaniya Das F(60000000, P_CAM_CC_PLL6_OUT_EVEN, 8, 0, 0), 1024*92aae35fSTaniya Das F(120000000, P_CAM_CC_PLL0_OUT_EVEN, 5, 0, 0), 1025*92aae35fSTaniya Das F(240000000, P_CAM_CC_PLL0_OUT_MAIN, 5, 0, 0), 1026*92aae35fSTaniya Das { } 1027*92aae35fSTaniya Das }; 1028*92aae35fSTaniya Das 1029*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_qdss_debug_clk_src = { 1030*92aae35fSTaniya Das .cmd_rcgr = 0x21314, 1031*92aae35fSTaniya Das .mnd_width = 0, 1032*92aae35fSTaniya Das .hid_width = 5, 1033*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_1, 1034*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_qdss_debug_clk_src, 1035*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 1036*92aae35fSTaniya Das .name = "cam_cc_qdss_debug_clk_src", 1037*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_1, 1038*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 1039*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1040*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 1041*92aae35fSTaniya Das }, 1042*92aae35fSTaniya Das }; 1043*92aae35fSTaniya Das 1044*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src[] = { 1045*92aae35fSTaniya Das F(56470588, P_CAM_CC_PLL6_OUT_EVEN, 8.5, 0, 0), 1046*92aae35fSTaniya Das F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 7.5, 0, 0), 1047*92aae35fSTaniya Das { } 1048*92aae35fSTaniya Das }; 1049*92aae35fSTaniya Das 1050*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_slow_ahb_clk_src = { 1051*92aae35fSTaniya Das .cmd_rcgr = 0x20100, 1052*92aae35fSTaniya Das .mnd_width = 0, 1053*92aae35fSTaniya Das .hid_width = 5, 1054*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_1, 1055*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_slow_ahb_clk_src, 1056*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 1057*92aae35fSTaniya Das .name = "cam_cc_slow_ahb_clk_src", 1058*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_1, 1059*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 1060*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1061*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 1062*92aae35fSTaniya Das }, 1063*92aae35fSTaniya Das }; 1064*92aae35fSTaniya Das 1065*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_tfe_0_clk_src[] = { 1066*92aae35fSTaniya Das F(360280000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 1067*92aae35fSTaniya Das F(480000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 1068*92aae35fSTaniya Das F(630000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 1069*92aae35fSTaniya Das F(716000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 1070*92aae35fSTaniya Das F(833000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 1071*92aae35fSTaniya Das { } 1072*92aae35fSTaniya Das }; 1073*92aae35fSTaniya Das 1074*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_tfe_0_clk_src = { 1075*92aae35fSTaniya Das .cmd_rcgr = 0x21018, 1076*92aae35fSTaniya Das .mnd_width = 0, 1077*92aae35fSTaniya Das .hid_width = 5, 1078*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_5, 1079*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_tfe_0_clk_src, 1080*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 1081*92aae35fSTaniya Das .name = "cam_cc_tfe_0_clk_src", 1082*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_5, 1083*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_5), 1084*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1085*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 1086*92aae35fSTaniya Das }, 1087*92aae35fSTaniya Das }; 1088*92aae35fSTaniya Das 1089*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_tfe_1_clk_src[] = { 1090*92aae35fSTaniya Das F(360280000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 1091*92aae35fSTaniya Das F(480000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 1092*92aae35fSTaniya Das F(630000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 1093*92aae35fSTaniya Das F(716000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 1094*92aae35fSTaniya Das F(833000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 1095*92aae35fSTaniya Das { } 1096*92aae35fSTaniya Das }; 1097*92aae35fSTaniya Das 1098*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_tfe_1_clk_src = { 1099*92aae35fSTaniya Das .cmd_rcgr = 0x21094, 1100*92aae35fSTaniya Das .mnd_width = 0, 1101*92aae35fSTaniya Das .hid_width = 5, 1102*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_6, 1103*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_tfe_1_clk_src, 1104*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 1105*92aae35fSTaniya Das .name = "cam_cc_tfe_1_clk_src", 1106*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_6, 1107*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_6), 1108*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1109*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 1110*92aae35fSTaniya Das }, 1111*92aae35fSTaniya Das }; 1112*92aae35fSTaniya Das 1113*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_tfe_2_clk_src[] = { 1114*92aae35fSTaniya Das F(360280000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 1115*92aae35fSTaniya Das F(480000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 1116*92aae35fSTaniya Das F(630000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 1117*92aae35fSTaniya Das F(716000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 1118*92aae35fSTaniya Das F(833000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 1119*92aae35fSTaniya Das { } 1120*92aae35fSTaniya Das }; 1121*92aae35fSTaniya Das 1122*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_tfe_2_clk_src = { 1123*92aae35fSTaniya Das .cmd_rcgr = 0x210f8, 1124*92aae35fSTaniya Das .mnd_width = 0, 1125*92aae35fSTaniya Das .hid_width = 5, 1126*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_7, 1127*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_tfe_2_clk_src, 1128*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 1129*92aae35fSTaniya Das .name = "cam_cc_tfe_2_clk_src", 1130*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_7, 1131*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_7), 1132*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1133*92aae35fSTaniya Das .ops = &clk_rcg2_shared_ops, 1134*92aae35fSTaniya Das }, 1135*92aae35fSTaniya Das }; 1136*92aae35fSTaniya Das 1137*92aae35fSTaniya Das static const struct freq_tbl ftbl_cam_cc_xo_clk_src[] = { 1138*92aae35fSTaniya Das F(19200000, P_BI_TCXO, 1, 0, 0), 1139*92aae35fSTaniya Das { } 1140*92aae35fSTaniya Das }; 1141*92aae35fSTaniya Das 1142*92aae35fSTaniya Das static struct clk_rcg2 cam_cc_xo_clk_src = { 1143*92aae35fSTaniya Das .cmd_rcgr = 0x2134c, 1144*92aae35fSTaniya Das .mnd_width = 0, 1145*92aae35fSTaniya Das .hid_width = 5, 1146*92aae35fSTaniya Das .parent_map = cam_cc_parent_map_8, 1147*92aae35fSTaniya Das .freq_tbl = ftbl_cam_cc_xo_clk_src, 1148*92aae35fSTaniya Das .clkr.hw.init = &(const struct clk_init_data) { 1149*92aae35fSTaniya Das .name = "cam_cc_xo_clk_src", 1150*92aae35fSTaniya Das .parent_data = cam_cc_parent_data_8, 1151*92aae35fSTaniya Das .num_parents = ARRAY_SIZE(cam_cc_parent_data_8), 1152*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1153*92aae35fSTaniya Das .ops = &clk_rcg2_ops, 1154*92aae35fSTaniya Das }, 1155*92aae35fSTaniya Das }; 1156*92aae35fSTaniya Das 1157*92aae35fSTaniya Das static struct clk_branch cam_cc_cam_top_ahb_clk = { 1158*92aae35fSTaniya Das .halt_reg = 0x2137c, 1159*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1160*92aae35fSTaniya Das .clkr = { 1161*92aae35fSTaniya Das .enable_reg = 0x2137c, 1162*92aae35fSTaniya Das .enable_mask = BIT(0), 1163*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1164*92aae35fSTaniya Das .name = "cam_cc_cam_top_ahb_clk", 1165*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1166*92aae35fSTaniya Das &cam_cc_slow_ahb_clk_src.clkr.hw, 1167*92aae35fSTaniya Das }, 1168*92aae35fSTaniya Das .num_parents = 1, 1169*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1170*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1171*92aae35fSTaniya Das }, 1172*92aae35fSTaniya Das }, 1173*92aae35fSTaniya Das }; 1174*92aae35fSTaniya Das 1175*92aae35fSTaniya Das static struct clk_branch cam_cc_cam_top_fast_ahb_clk = { 1176*92aae35fSTaniya Das .halt_reg = 0x2136c, 1177*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1178*92aae35fSTaniya Das .clkr = { 1179*92aae35fSTaniya Das .enable_reg = 0x2136c, 1180*92aae35fSTaniya Das .enable_mask = BIT(0), 1181*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1182*92aae35fSTaniya Das .name = "cam_cc_cam_top_fast_ahb_clk", 1183*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1184*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 1185*92aae35fSTaniya Das }, 1186*92aae35fSTaniya Das .num_parents = 1, 1187*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1188*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1189*92aae35fSTaniya Das }, 1190*92aae35fSTaniya Das }, 1191*92aae35fSTaniya Das }; 1192*92aae35fSTaniya Das 1193*92aae35fSTaniya Das static struct clk_branch cam_cc_camnoc_nrt_axi_clk = { 1194*92aae35fSTaniya Das .halt_reg = 0x212f8, 1195*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1196*92aae35fSTaniya Das .clkr = { 1197*92aae35fSTaniya Das .enable_reg = 0x212f8, 1198*92aae35fSTaniya Das .enable_mask = BIT(0), 1199*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1200*92aae35fSTaniya Das .name = "cam_cc_camnoc_nrt_axi_clk", 1201*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1202*92aae35fSTaniya Das &cam_cc_camnoc_rt_axi_clk_src.clkr.hw, 1203*92aae35fSTaniya Das }, 1204*92aae35fSTaniya Das .num_parents = 1, 1205*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1206*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1207*92aae35fSTaniya Das }, 1208*92aae35fSTaniya Das }, 1209*92aae35fSTaniya Das }; 1210*92aae35fSTaniya Das 1211*92aae35fSTaniya Das static struct clk_branch cam_cc_camnoc_nrt_cre_clk = { 1212*92aae35fSTaniya Das .halt_reg = 0x211bc, 1213*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1214*92aae35fSTaniya Das .clkr = { 1215*92aae35fSTaniya Das .enable_reg = 0x211bc, 1216*92aae35fSTaniya Das .enable_mask = BIT(0), 1217*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1218*92aae35fSTaniya Das .name = "cam_cc_camnoc_nrt_cre_clk", 1219*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1220*92aae35fSTaniya Das &cam_cc_cre_clk_src.clkr.hw, 1221*92aae35fSTaniya Das }, 1222*92aae35fSTaniya Das .num_parents = 1, 1223*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1224*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1225*92aae35fSTaniya Das }, 1226*92aae35fSTaniya Das }, 1227*92aae35fSTaniya Das }; 1228*92aae35fSTaniya Das 1229*92aae35fSTaniya Das static struct clk_branch cam_cc_camnoc_nrt_ipe_nps_clk = { 1230*92aae35fSTaniya Das .halt_reg = 0x201b0, 1231*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1232*92aae35fSTaniya Das .clkr = { 1233*92aae35fSTaniya Das .enable_reg = 0x201b0, 1234*92aae35fSTaniya Das .enable_mask = BIT(0), 1235*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1236*92aae35fSTaniya Das .name = "cam_cc_camnoc_nrt_ipe_nps_clk", 1237*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1238*92aae35fSTaniya Das &cam_cc_ipe_nps_clk_src.clkr.hw, 1239*92aae35fSTaniya Das }, 1240*92aae35fSTaniya Das .num_parents = 1, 1241*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1242*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1243*92aae35fSTaniya Das }, 1244*92aae35fSTaniya Das }, 1245*92aae35fSTaniya Das }; 1246*92aae35fSTaniya Das 1247*92aae35fSTaniya Das static struct clk_branch cam_cc_camnoc_nrt_ofe_main_clk = { 1248*92aae35fSTaniya Das .halt_reg = 0x20144, 1249*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1250*92aae35fSTaniya Das .clkr = { 1251*92aae35fSTaniya Das .enable_reg = 0x20144, 1252*92aae35fSTaniya Das .enable_mask = BIT(0), 1253*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1254*92aae35fSTaniya Das .name = "cam_cc_camnoc_nrt_ofe_main_clk", 1255*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1256*92aae35fSTaniya Das &cam_cc_ofe_clk_src.clkr.hw, 1257*92aae35fSTaniya Das }, 1258*92aae35fSTaniya Das .num_parents = 1, 1259*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1260*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1261*92aae35fSTaniya Das }, 1262*92aae35fSTaniya Das }, 1263*92aae35fSTaniya Das }; 1264*92aae35fSTaniya Das 1265*92aae35fSTaniya Das static struct clk_branch cam_cc_camnoc_rt_axi_clk = { 1266*92aae35fSTaniya Das .halt_reg = 0x212e4, 1267*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1268*92aae35fSTaniya Das .clkr = { 1269*92aae35fSTaniya Das .enable_reg = 0x212e4, 1270*92aae35fSTaniya Das .enable_mask = BIT(0), 1271*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1272*92aae35fSTaniya Das .name = "cam_cc_camnoc_rt_axi_clk", 1273*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1274*92aae35fSTaniya Das &cam_cc_camnoc_rt_axi_clk_src.clkr.hw, 1275*92aae35fSTaniya Das }, 1276*92aae35fSTaniya Das .num_parents = 1, 1277*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1278*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1279*92aae35fSTaniya Das }, 1280*92aae35fSTaniya Das }, 1281*92aae35fSTaniya Das }; 1282*92aae35fSTaniya Das 1283*92aae35fSTaniya Das static struct clk_branch cam_cc_camnoc_rt_ife_lite_clk = { 1284*92aae35fSTaniya Das .halt_reg = 0x2116c, 1285*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1286*92aae35fSTaniya Das .clkr = { 1287*92aae35fSTaniya Das .enable_reg = 0x2116c, 1288*92aae35fSTaniya Das .enable_mask = BIT(0), 1289*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1290*92aae35fSTaniya Das .name = "cam_cc_camnoc_rt_ife_lite_clk", 1291*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1292*92aae35fSTaniya Das &cam_cc_ife_lite_clk_src.clkr.hw, 1293*92aae35fSTaniya Das }, 1294*92aae35fSTaniya Das .num_parents = 1, 1295*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1296*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1297*92aae35fSTaniya Das }, 1298*92aae35fSTaniya Das }, 1299*92aae35fSTaniya Das }; 1300*92aae35fSTaniya Das 1301*92aae35fSTaniya Das static struct clk_branch cam_cc_camnoc_rt_tfe_0_main_clk = { 1302*92aae35fSTaniya Das .halt_reg = 0x21040, 1303*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1304*92aae35fSTaniya Das .clkr = { 1305*92aae35fSTaniya Das .enable_reg = 0x21040, 1306*92aae35fSTaniya Das .enable_mask = BIT(0), 1307*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1308*92aae35fSTaniya Das .name = "cam_cc_camnoc_rt_tfe_0_main_clk", 1309*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1310*92aae35fSTaniya Das &cam_cc_tfe_0_clk_src.clkr.hw, 1311*92aae35fSTaniya Das }, 1312*92aae35fSTaniya Das .num_parents = 1, 1313*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1314*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1315*92aae35fSTaniya Das }, 1316*92aae35fSTaniya Das }, 1317*92aae35fSTaniya Das }; 1318*92aae35fSTaniya Das 1319*92aae35fSTaniya Das static struct clk_branch cam_cc_camnoc_rt_tfe_1_main_clk = { 1320*92aae35fSTaniya Das .halt_reg = 0x210bc, 1321*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1322*92aae35fSTaniya Das .clkr = { 1323*92aae35fSTaniya Das .enable_reg = 0x210bc, 1324*92aae35fSTaniya Das .enable_mask = BIT(0), 1325*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1326*92aae35fSTaniya Das .name = "cam_cc_camnoc_rt_tfe_1_main_clk", 1327*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1328*92aae35fSTaniya Das &cam_cc_tfe_1_clk_src.clkr.hw, 1329*92aae35fSTaniya Das }, 1330*92aae35fSTaniya Das .num_parents = 1, 1331*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1332*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1333*92aae35fSTaniya Das }, 1334*92aae35fSTaniya Das }, 1335*92aae35fSTaniya Das }; 1336*92aae35fSTaniya Das 1337*92aae35fSTaniya Das static struct clk_branch cam_cc_camnoc_rt_tfe_2_main_clk = { 1338*92aae35fSTaniya Das .halt_reg = 0x21120, 1339*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1340*92aae35fSTaniya Das .clkr = { 1341*92aae35fSTaniya Das .enable_reg = 0x21120, 1342*92aae35fSTaniya Das .enable_mask = BIT(0), 1343*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1344*92aae35fSTaniya Das .name = "cam_cc_camnoc_rt_tfe_2_main_clk", 1345*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1346*92aae35fSTaniya Das &cam_cc_tfe_2_clk_src.clkr.hw, 1347*92aae35fSTaniya Das }, 1348*92aae35fSTaniya Das .num_parents = 1, 1349*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1350*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1351*92aae35fSTaniya Das }, 1352*92aae35fSTaniya Das }, 1353*92aae35fSTaniya Das }; 1354*92aae35fSTaniya Das 1355*92aae35fSTaniya Das static struct clk_branch cam_cc_camnoc_xo_clk = { 1356*92aae35fSTaniya Das .halt_reg = 0x2130c, 1357*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1358*92aae35fSTaniya Das .clkr = { 1359*92aae35fSTaniya Das .enable_reg = 0x2130c, 1360*92aae35fSTaniya Das .enable_mask = BIT(0), 1361*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1362*92aae35fSTaniya Das .name = "cam_cc_camnoc_xo_clk", 1363*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1364*92aae35fSTaniya Das &cam_cc_xo_clk_src.clkr.hw, 1365*92aae35fSTaniya Das }, 1366*92aae35fSTaniya Das .num_parents = 1, 1367*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1368*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1369*92aae35fSTaniya Das }, 1370*92aae35fSTaniya Das }, 1371*92aae35fSTaniya Das }; 1372*92aae35fSTaniya Das 1373*92aae35fSTaniya Das static struct clk_branch cam_cc_cci_0_clk = { 1374*92aae35fSTaniya Das .halt_reg = 0x21268, 1375*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1376*92aae35fSTaniya Das .clkr = { 1377*92aae35fSTaniya Das .enable_reg = 0x21268, 1378*92aae35fSTaniya Das .enable_mask = BIT(0), 1379*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1380*92aae35fSTaniya Das .name = "cam_cc_cci_0_clk", 1381*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1382*92aae35fSTaniya Das &cam_cc_cci_0_clk_src.clkr.hw, 1383*92aae35fSTaniya Das }, 1384*92aae35fSTaniya Das .num_parents = 1, 1385*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1386*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1387*92aae35fSTaniya Das }, 1388*92aae35fSTaniya Das }, 1389*92aae35fSTaniya Das }; 1390*92aae35fSTaniya Das 1391*92aae35fSTaniya Das static struct clk_branch cam_cc_cci_1_clk = { 1392*92aae35fSTaniya Das .halt_reg = 0x21284, 1393*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1394*92aae35fSTaniya Das .clkr = { 1395*92aae35fSTaniya Das .enable_reg = 0x21284, 1396*92aae35fSTaniya Das .enable_mask = BIT(0), 1397*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1398*92aae35fSTaniya Das .name = "cam_cc_cci_1_clk", 1399*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1400*92aae35fSTaniya Das &cam_cc_cci_1_clk_src.clkr.hw, 1401*92aae35fSTaniya Das }, 1402*92aae35fSTaniya Das .num_parents = 1, 1403*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1404*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1405*92aae35fSTaniya Das }, 1406*92aae35fSTaniya Das }, 1407*92aae35fSTaniya Das }; 1408*92aae35fSTaniya Das 1409*92aae35fSTaniya Das static struct clk_branch cam_cc_cci_2_clk = { 1410*92aae35fSTaniya Das .halt_reg = 0x212a0, 1411*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1412*92aae35fSTaniya Das .clkr = { 1413*92aae35fSTaniya Das .enable_reg = 0x212a0, 1414*92aae35fSTaniya Das .enable_mask = BIT(0), 1415*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1416*92aae35fSTaniya Das .name = "cam_cc_cci_2_clk", 1417*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1418*92aae35fSTaniya Das &cam_cc_cci_2_clk_src.clkr.hw, 1419*92aae35fSTaniya Das }, 1420*92aae35fSTaniya Das .num_parents = 1, 1421*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1422*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1423*92aae35fSTaniya Das }, 1424*92aae35fSTaniya Das }, 1425*92aae35fSTaniya Das }; 1426*92aae35fSTaniya Das 1427*92aae35fSTaniya Das static struct clk_branch cam_cc_core_ahb_clk = { 1428*92aae35fSTaniya Das .halt_reg = 0x21348, 1429*92aae35fSTaniya Das .halt_check = BRANCH_HALT_DELAY, 1430*92aae35fSTaniya Das .clkr = { 1431*92aae35fSTaniya Das .enable_reg = 0x21348, 1432*92aae35fSTaniya Das .enable_mask = BIT(0), 1433*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1434*92aae35fSTaniya Das .name = "cam_cc_core_ahb_clk", 1435*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1436*92aae35fSTaniya Das &cam_cc_slow_ahb_clk_src.clkr.hw, 1437*92aae35fSTaniya Das }, 1438*92aae35fSTaniya Das .num_parents = 1, 1439*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1440*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1441*92aae35fSTaniya Das }, 1442*92aae35fSTaniya Das }, 1443*92aae35fSTaniya Das }; 1444*92aae35fSTaniya Das 1445*92aae35fSTaniya Das static struct clk_branch cam_cc_cre_ahb_clk = { 1446*92aae35fSTaniya Das .halt_reg = 0x211c0, 1447*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1448*92aae35fSTaniya Das .clkr = { 1449*92aae35fSTaniya Das .enable_reg = 0x211c0, 1450*92aae35fSTaniya Das .enable_mask = BIT(0), 1451*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1452*92aae35fSTaniya Das .name = "cam_cc_cre_ahb_clk", 1453*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1454*92aae35fSTaniya Das &cam_cc_slow_ahb_clk_src.clkr.hw, 1455*92aae35fSTaniya Das }, 1456*92aae35fSTaniya Das .num_parents = 1, 1457*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1458*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1459*92aae35fSTaniya Das }, 1460*92aae35fSTaniya Das }, 1461*92aae35fSTaniya Das }; 1462*92aae35fSTaniya Das 1463*92aae35fSTaniya Das static struct clk_branch cam_cc_cre_clk = { 1464*92aae35fSTaniya Das .halt_reg = 0x211b8, 1465*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1466*92aae35fSTaniya Das .clkr = { 1467*92aae35fSTaniya Das .enable_reg = 0x211b8, 1468*92aae35fSTaniya Das .enable_mask = BIT(0), 1469*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1470*92aae35fSTaniya Das .name = "cam_cc_cre_clk", 1471*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1472*92aae35fSTaniya Das &cam_cc_cre_clk_src.clkr.hw, 1473*92aae35fSTaniya Das }, 1474*92aae35fSTaniya Das .num_parents = 1, 1475*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1476*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1477*92aae35fSTaniya Das }, 1478*92aae35fSTaniya Das }, 1479*92aae35fSTaniya Das }; 1480*92aae35fSTaniya Das 1481*92aae35fSTaniya Das static struct clk_branch cam_cc_csi0phytimer_clk = { 1482*92aae35fSTaniya Das .halt_reg = 0x20018, 1483*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1484*92aae35fSTaniya Das .clkr = { 1485*92aae35fSTaniya Das .enable_reg = 0x20018, 1486*92aae35fSTaniya Das .enable_mask = BIT(0), 1487*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1488*92aae35fSTaniya Das .name = "cam_cc_csi0phytimer_clk", 1489*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1490*92aae35fSTaniya Das &cam_cc_csi0phytimer_clk_src.clkr.hw, 1491*92aae35fSTaniya Das }, 1492*92aae35fSTaniya Das .num_parents = 1, 1493*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1494*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1495*92aae35fSTaniya Das }, 1496*92aae35fSTaniya Das }, 1497*92aae35fSTaniya Das }; 1498*92aae35fSTaniya Das 1499*92aae35fSTaniya Das static struct clk_branch cam_cc_csi1phytimer_clk = { 1500*92aae35fSTaniya Das .halt_reg = 0x2003c, 1501*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1502*92aae35fSTaniya Das .clkr = { 1503*92aae35fSTaniya Das .enable_reg = 0x2003c, 1504*92aae35fSTaniya Das .enable_mask = BIT(0), 1505*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1506*92aae35fSTaniya Das .name = "cam_cc_csi1phytimer_clk", 1507*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1508*92aae35fSTaniya Das &cam_cc_csi1phytimer_clk_src.clkr.hw, 1509*92aae35fSTaniya Das }, 1510*92aae35fSTaniya Das .num_parents = 1, 1511*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1512*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1513*92aae35fSTaniya Das }, 1514*92aae35fSTaniya Das }, 1515*92aae35fSTaniya Das }; 1516*92aae35fSTaniya Das 1517*92aae35fSTaniya Das static struct clk_branch cam_cc_csi2phytimer_clk = { 1518*92aae35fSTaniya Das .halt_reg = 0x2005c, 1519*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1520*92aae35fSTaniya Das .clkr = { 1521*92aae35fSTaniya Das .enable_reg = 0x2005c, 1522*92aae35fSTaniya Das .enable_mask = BIT(0), 1523*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1524*92aae35fSTaniya Das .name = "cam_cc_csi2phytimer_clk", 1525*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1526*92aae35fSTaniya Das &cam_cc_csi2phytimer_clk_src.clkr.hw, 1527*92aae35fSTaniya Das }, 1528*92aae35fSTaniya Das .num_parents = 1, 1529*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1530*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1531*92aae35fSTaniya Das }, 1532*92aae35fSTaniya Das }, 1533*92aae35fSTaniya Das }; 1534*92aae35fSTaniya Das 1535*92aae35fSTaniya Das static struct clk_branch cam_cc_csi3phytimer_clk = { 1536*92aae35fSTaniya Das .halt_reg = 0x2007c, 1537*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1538*92aae35fSTaniya Das .clkr = { 1539*92aae35fSTaniya Das .enable_reg = 0x2007c, 1540*92aae35fSTaniya Das .enable_mask = BIT(0), 1541*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1542*92aae35fSTaniya Das .name = "cam_cc_csi3phytimer_clk", 1543*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1544*92aae35fSTaniya Das &cam_cc_csi3phytimer_clk_src.clkr.hw, 1545*92aae35fSTaniya Das }, 1546*92aae35fSTaniya Das .num_parents = 1, 1547*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1548*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1549*92aae35fSTaniya Das }, 1550*92aae35fSTaniya Das }, 1551*92aae35fSTaniya Das }; 1552*92aae35fSTaniya Das 1553*92aae35fSTaniya Das static struct clk_branch cam_cc_csi4phytimer_clk = { 1554*92aae35fSTaniya Das .halt_reg = 0x2009c, 1555*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1556*92aae35fSTaniya Das .clkr = { 1557*92aae35fSTaniya Das .enable_reg = 0x2009c, 1558*92aae35fSTaniya Das .enable_mask = BIT(0), 1559*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1560*92aae35fSTaniya Das .name = "cam_cc_csi4phytimer_clk", 1561*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1562*92aae35fSTaniya Das &cam_cc_csi4phytimer_clk_src.clkr.hw, 1563*92aae35fSTaniya Das }, 1564*92aae35fSTaniya Das .num_parents = 1, 1565*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1566*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1567*92aae35fSTaniya Das }, 1568*92aae35fSTaniya Das }, 1569*92aae35fSTaniya Das }; 1570*92aae35fSTaniya Das 1571*92aae35fSTaniya Das static struct clk_branch cam_cc_csi5phytimer_clk = { 1572*92aae35fSTaniya Das .halt_reg = 0x200bc, 1573*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1574*92aae35fSTaniya Das .clkr = { 1575*92aae35fSTaniya Das .enable_reg = 0x200bc, 1576*92aae35fSTaniya Das .enable_mask = BIT(0), 1577*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1578*92aae35fSTaniya Das .name = "cam_cc_csi5phytimer_clk", 1579*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1580*92aae35fSTaniya Das &cam_cc_csi5phytimer_clk_src.clkr.hw, 1581*92aae35fSTaniya Das }, 1582*92aae35fSTaniya Das .num_parents = 1, 1583*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1584*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1585*92aae35fSTaniya Das }, 1586*92aae35fSTaniya Das }, 1587*92aae35fSTaniya Das }; 1588*92aae35fSTaniya Das 1589*92aae35fSTaniya Das static struct clk_branch cam_cc_csid_clk = { 1590*92aae35fSTaniya Das .halt_reg = 0x212bc, 1591*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1592*92aae35fSTaniya Das .clkr = { 1593*92aae35fSTaniya Das .enable_reg = 0x212bc, 1594*92aae35fSTaniya Das .enable_mask = BIT(0), 1595*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1596*92aae35fSTaniya Das .name = "cam_cc_csid_clk", 1597*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1598*92aae35fSTaniya Das &cam_cc_csid_clk_src.clkr.hw, 1599*92aae35fSTaniya Das }, 1600*92aae35fSTaniya Das .num_parents = 1, 1601*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1602*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1603*92aae35fSTaniya Das }, 1604*92aae35fSTaniya Das }, 1605*92aae35fSTaniya Das }; 1606*92aae35fSTaniya Das 1607*92aae35fSTaniya Das static struct clk_branch cam_cc_csid_csiphy_rx_clk = { 1608*92aae35fSTaniya Das .halt_reg = 0x20020, 1609*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1610*92aae35fSTaniya Das .clkr = { 1611*92aae35fSTaniya Das .enable_reg = 0x20020, 1612*92aae35fSTaniya Das .enable_mask = BIT(0), 1613*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1614*92aae35fSTaniya Das .name = "cam_cc_csid_csiphy_rx_clk", 1615*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1616*92aae35fSTaniya Das &cam_cc_cphy_rx_clk_src.clkr.hw, 1617*92aae35fSTaniya Das }, 1618*92aae35fSTaniya Das .num_parents = 1, 1619*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1620*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1621*92aae35fSTaniya Das }, 1622*92aae35fSTaniya Das }, 1623*92aae35fSTaniya Das }; 1624*92aae35fSTaniya Das 1625*92aae35fSTaniya Das static struct clk_branch cam_cc_csiphy0_clk = { 1626*92aae35fSTaniya Das .halt_reg = 0x2001c, 1627*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1628*92aae35fSTaniya Das .clkr = { 1629*92aae35fSTaniya Das .enable_reg = 0x2001c, 1630*92aae35fSTaniya Das .enable_mask = BIT(0), 1631*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1632*92aae35fSTaniya Das .name = "cam_cc_csiphy0_clk", 1633*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1634*92aae35fSTaniya Das &cam_cc_cphy_rx_clk_src.clkr.hw, 1635*92aae35fSTaniya Das }, 1636*92aae35fSTaniya Das .num_parents = 1, 1637*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1638*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1639*92aae35fSTaniya Das }, 1640*92aae35fSTaniya Das }, 1641*92aae35fSTaniya Das }; 1642*92aae35fSTaniya Das 1643*92aae35fSTaniya Das static struct clk_branch cam_cc_csiphy1_clk = { 1644*92aae35fSTaniya Das .halt_reg = 0x20040, 1645*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1646*92aae35fSTaniya Das .clkr = { 1647*92aae35fSTaniya Das .enable_reg = 0x20040, 1648*92aae35fSTaniya Das .enable_mask = BIT(0), 1649*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1650*92aae35fSTaniya Das .name = "cam_cc_csiphy1_clk", 1651*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1652*92aae35fSTaniya Das &cam_cc_cphy_rx_clk_src.clkr.hw, 1653*92aae35fSTaniya Das }, 1654*92aae35fSTaniya Das .num_parents = 1, 1655*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1656*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1657*92aae35fSTaniya Das }, 1658*92aae35fSTaniya Das }, 1659*92aae35fSTaniya Das }; 1660*92aae35fSTaniya Das 1661*92aae35fSTaniya Das static struct clk_branch cam_cc_csiphy2_clk = { 1662*92aae35fSTaniya Das .halt_reg = 0x20060, 1663*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1664*92aae35fSTaniya Das .clkr = { 1665*92aae35fSTaniya Das .enable_reg = 0x20060, 1666*92aae35fSTaniya Das .enable_mask = BIT(0), 1667*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1668*92aae35fSTaniya Das .name = "cam_cc_csiphy2_clk", 1669*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1670*92aae35fSTaniya Das &cam_cc_cphy_rx_clk_src.clkr.hw, 1671*92aae35fSTaniya Das }, 1672*92aae35fSTaniya Das .num_parents = 1, 1673*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1674*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1675*92aae35fSTaniya Das }, 1676*92aae35fSTaniya Das }, 1677*92aae35fSTaniya Das }; 1678*92aae35fSTaniya Das 1679*92aae35fSTaniya Das static struct clk_branch cam_cc_csiphy3_clk = { 1680*92aae35fSTaniya Das .halt_reg = 0x20080, 1681*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1682*92aae35fSTaniya Das .clkr = { 1683*92aae35fSTaniya Das .enable_reg = 0x20080, 1684*92aae35fSTaniya Das .enable_mask = BIT(0), 1685*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1686*92aae35fSTaniya Das .name = "cam_cc_csiphy3_clk", 1687*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1688*92aae35fSTaniya Das &cam_cc_cphy_rx_clk_src.clkr.hw, 1689*92aae35fSTaniya Das }, 1690*92aae35fSTaniya Das .num_parents = 1, 1691*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1692*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1693*92aae35fSTaniya Das }, 1694*92aae35fSTaniya Das }, 1695*92aae35fSTaniya Das }; 1696*92aae35fSTaniya Das 1697*92aae35fSTaniya Das static struct clk_branch cam_cc_csiphy4_clk = { 1698*92aae35fSTaniya Das .halt_reg = 0x200a0, 1699*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1700*92aae35fSTaniya Das .clkr = { 1701*92aae35fSTaniya Das .enable_reg = 0x200a0, 1702*92aae35fSTaniya Das .enable_mask = BIT(0), 1703*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1704*92aae35fSTaniya Das .name = "cam_cc_csiphy4_clk", 1705*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1706*92aae35fSTaniya Das &cam_cc_cphy_rx_clk_src.clkr.hw, 1707*92aae35fSTaniya Das }, 1708*92aae35fSTaniya Das .num_parents = 1, 1709*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1710*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1711*92aae35fSTaniya Das }, 1712*92aae35fSTaniya Das }, 1713*92aae35fSTaniya Das }; 1714*92aae35fSTaniya Das 1715*92aae35fSTaniya Das static struct clk_branch cam_cc_csiphy5_clk = { 1716*92aae35fSTaniya Das .halt_reg = 0x200c0, 1717*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1718*92aae35fSTaniya Das .clkr = { 1719*92aae35fSTaniya Das .enable_reg = 0x200c0, 1720*92aae35fSTaniya Das .enable_mask = BIT(0), 1721*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1722*92aae35fSTaniya Das .name = "cam_cc_csiphy5_clk", 1723*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1724*92aae35fSTaniya Das &cam_cc_cphy_rx_clk_src.clkr.hw, 1725*92aae35fSTaniya Das }, 1726*92aae35fSTaniya Das .num_parents = 1, 1727*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1728*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1729*92aae35fSTaniya Das }, 1730*92aae35fSTaniya Das }, 1731*92aae35fSTaniya Das }; 1732*92aae35fSTaniya Das 1733*92aae35fSTaniya Das static struct clk_branch cam_cc_icp_0_ahb_clk = { 1734*92aae35fSTaniya Das .halt_reg = 0x21248, 1735*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1736*92aae35fSTaniya Das .clkr = { 1737*92aae35fSTaniya Das .enable_reg = 0x21248, 1738*92aae35fSTaniya Das .enable_mask = BIT(0), 1739*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1740*92aae35fSTaniya Das .name = "cam_cc_icp_0_ahb_clk", 1741*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1742*92aae35fSTaniya Das &cam_cc_slow_ahb_clk_src.clkr.hw, 1743*92aae35fSTaniya Das }, 1744*92aae35fSTaniya Das .num_parents = 1, 1745*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1746*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1747*92aae35fSTaniya Das }, 1748*92aae35fSTaniya Das }, 1749*92aae35fSTaniya Das }; 1750*92aae35fSTaniya Das 1751*92aae35fSTaniya Das static struct clk_branch cam_cc_icp_0_clk = { 1752*92aae35fSTaniya Das .halt_reg = 0x21210, 1753*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1754*92aae35fSTaniya Das .clkr = { 1755*92aae35fSTaniya Das .enable_reg = 0x21210, 1756*92aae35fSTaniya Das .enable_mask = BIT(0), 1757*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1758*92aae35fSTaniya Das .name = "cam_cc_icp_0_clk", 1759*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1760*92aae35fSTaniya Das &cam_cc_icp_0_clk_src.clkr.hw, 1761*92aae35fSTaniya Das }, 1762*92aae35fSTaniya Das .num_parents = 1, 1763*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1764*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1765*92aae35fSTaniya Das }, 1766*92aae35fSTaniya Das }, 1767*92aae35fSTaniya Das }; 1768*92aae35fSTaniya Das 1769*92aae35fSTaniya Das static struct clk_branch cam_cc_icp_1_ahb_clk = { 1770*92aae35fSTaniya Das .halt_reg = 0x2124c, 1771*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1772*92aae35fSTaniya Das .clkr = { 1773*92aae35fSTaniya Das .enable_reg = 0x2124c, 1774*92aae35fSTaniya Das .enable_mask = BIT(0), 1775*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1776*92aae35fSTaniya Das .name = "cam_cc_icp_1_ahb_clk", 1777*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1778*92aae35fSTaniya Das &cam_cc_slow_ahb_clk_src.clkr.hw, 1779*92aae35fSTaniya Das }, 1780*92aae35fSTaniya Das .num_parents = 1, 1781*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1782*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1783*92aae35fSTaniya Das }, 1784*92aae35fSTaniya Das }, 1785*92aae35fSTaniya Das }; 1786*92aae35fSTaniya Das 1787*92aae35fSTaniya Das static struct clk_branch cam_cc_icp_1_clk = { 1788*92aae35fSTaniya Das .halt_reg = 0x21238, 1789*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1790*92aae35fSTaniya Das .clkr = { 1791*92aae35fSTaniya Das .enable_reg = 0x21238, 1792*92aae35fSTaniya Das .enable_mask = BIT(0), 1793*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1794*92aae35fSTaniya Das .name = "cam_cc_icp_1_clk", 1795*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1796*92aae35fSTaniya Das &cam_cc_icp_1_clk_src.clkr.hw, 1797*92aae35fSTaniya Das }, 1798*92aae35fSTaniya Das .num_parents = 1, 1799*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1800*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1801*92aae35fSTaniya Das }, 1802*92aae35fSTaniya Das }, 1803*92aae35fSTaniya Das }; 1804*92aae35fSTaniya Das 1805*92aae35fSTaniya Das static struct clk_branch cam_cc_ife_lite_ahb_clk = { 1806*92aae35fSTaniya Das .halt_reg = 0x2119c, 1807*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1808*92aae35fSTaniya Das .clkr = { 1809*92aae35fSTaniya Das .enable_reg = 0x2119c, 1810*92aae35fSTaniya Das .enable_mask = BIT(0), 1811*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1812*92aae35fSTaniya Das .name = "cam_cc_ife_lite_ahb_clk", 1813*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1814*92aae35fSTaniya Das &cam_cc_slow_ahb_clk_src.clkr.hw, 1815*92aae35fSTaniya Das }, 1816*92aae35fSTaniya Das .num_parents = 1, 1817*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1818*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1819*92aae35fSTaniya Das }, 1820*92aae35fSTaniya Das }, 1821*92aae35fSTaniya Das }; 1822*92aae35fSTaniya Das 1823*92aae35fSTaniya Das static struct clk_branch cam_cc_ife_lite_clk = { 1824*92aae35fSTaniya Das .halt_reg = 0x2115c, 1825*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1826*92aae35fSTaniya Das .clkr = { 1827*92aae35fSTaniya Das .enable_reg = 0x2115c, 1828*92aae35fSTaniya Das .enable_mask = BIT(0), 1829*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1830*92aae35fSTaniya Das .name = "cam_cc_ife_lite_clk", 1831*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1832*92aae35fSTaniya Das &cam_cc_ife_lite_clk_src.clkr.hw, 1833*92aae35fSTaniya Das }, 1834*92aae35fSTaniya Das .num_parents = 1, 1835*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1836*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1837*92aae35fSTaniya Das }, 1838*92aae35fSTaniya Das }, 1839*92aae35fSTaniya Das }; 1840*92aae35fSTaniya Das 1841*92aae35fSTaniya Das static struct clk_branch cam_cc_ife_lite_cphy_rx_clk = { 1842*92aae35fSTaniya Das .halt_reg = 0x21198, 1843*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1844*92aae35fSTaniya Das .clkr = { 1845*92aae35fSTaniya Das .enable_reg = 0x21198, 1846*92aae35fSTaniya Das .enable_mask = BIT(0), 1847*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1848*92aae35fSTaniya Das .name = "cam_cc_ife_lite_cphy_rx_clk", 1849*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1850*92aae35fSTaniya Das &cam_cc_cphy_rx_clk_src.clkr.hw, 1851*92aae35fSTaniya Das }, 1852*92aae35fSTaniya Das .num_parents = 1, 1853*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1854*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1855*92aae35fSTaniya Das }, 1856*92aae35fSTaniya Das }, 1857*92aae35fSTaniya Das }; 1858*92aae35fSTaniya Das 1859*92aae35fSTaniya Das static struct clk_branch cam_cc_ife_lite_csid_clk = { 1860*92aae35fSTaniya Das .halt_reg = 0x21188, 1861*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1862*92aae35fSTaniya Das .clkr = { 1863*92aae35fSTaniya Das .enable_reg = 0x21188, 1864*92aae35fSTaniya Das .enable_mask = BIT(0), 1865*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1866*92aae35fSTaniya Das .name = "cam_cc_ife_lite_csid_clk", 1867*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1868*92aae35fSTaniya Das &cam_cc_ife_lite_csid_clk_src.clkr.hw, 1869*92aae35fSTaniya Das }, 1870*92aae35fSTaniya Das .num_parents = 1, 1871*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1872*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1873*92aae35fSTaniya Das }, 1874*92aae35fSTaniya Das }, 1875*92aae35fSTaniya Das }; 1876*92aae35fSTaniya Das 1877*92aae35fSTaniya Das static struct clk_branch cam_cc_ipe_nps_ahb_clk = { 1878*92aae35fSTaniya Das .halt_reg = 0x201cc, 1879*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1880*92aae35fSTaniya Das .clkr = { 1881*92aae35fSTaniya Das .enable_reg = 0x201cc, 1882*92aae35fSTaniya Das .enable_mask = BIT(0), 1883*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1884*92aae35fSTaniya Das .name = "cam_cc_ipe_nps_ahb_clk", 1885*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1886*92aae35fSTaniya Das &cam_cc_slow_ahb_clk_src.clkr.hw, 1887*92aae35fSTaniya Das }, 1888*92aae35fSTaniya Das .num_parents = 1, 1889*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1890*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1891*92aae35fSTaniya Das }, 1892*92aae35fSTaniya Das }, 1893*92aae35fSTaniya Das }; 1894*92aae35fSTaniya Das 1895*92aae35fSTaniya Das static struct clk_branch cam_cc_ipe_nps_clk = { 1896*92aae35fSTaniya Das .halt_reg = 0x201a0, 1897*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1898*92aae35fSTaniya Das .clkr = { 1899*92aae35fSTaniya Das .enable_reg = 0x201a0, 1900*92aae35fSTaniya Das .enable_mask = BIT(0), 1901*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1902*92aae35fSTaniya Das .name = "cam_cc_ipe_nps_clk", 1903*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1904*92aae35fSTaniya Das &cam_cc_ipe_nps_clk_src.clkr.hw, 1905*92aae35fSTaniya Das }, 1906*92aae35fSTaniya Das .num_parents = 1, 1907*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1908*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1909*92aae35fSTaniya Das }, 1910*92aae35fSTaniya Das }, 1911*92aae35fSTaniya Das }; 1912*92aae35fSTaniya Das 1913*92aae35fSTaniya Das static struct clk_branch cam_cc_ipe_nps_fast_ahb_clk = { 1914*92aae35fSTaniya Das .halt_reg = 0x201d0, 1915*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1916*92aae35fSTaniya Das .clkr = { 1917*92aae35fSTaniya Das .enable_reg = 0x201d0, 1918*92aae35fSTaniya Das .enable_mask = BIT(0), 1919*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1920*92aae35fSTaniya Das .name = "cam_cc_ipe_nps_fast_ahb_clk", 1921*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1922*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 1923*92aae35fSTaniya Das }, 1924*92aae35fSTaniya Das .num_parents = 1, 1925*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1926*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1927*92aae35fSTaniya Das }, 1928*92aae35fSTaniya Das }, 1929*92aae35fSTaniya Das }; 1930*92aae35fSTaniya Das 1931*92aae35fSTaniya Das static struct clk_branch cam_cc_ipe_pps_clk = { 1932*92aae35fSTaniya Das .halt_reg = 0x201b4, 1933*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1934*92aae35fSTaniya Das .clkr = { 1935*92aae35fSTaniya Das .enable_reg = 0x201b4, 1936*92aae35fSTaniya Das .enable_mask = BIT(0), 1937*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1938*92aae35fSTaniya Das .name = "cam_cc_ipe_pps_clk", 1939*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1940*92aae35fSTaniya Das &cam_cc_ipe_nps_clk_src.clkr.hw, 1941*92aae35fSTaniya Das }, 1942*92aae35fSTaniya Das .num_parents = 1, 1943*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1944*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1945*92aae35fSTaniya Das }, 1946*92aae35fSTaniya Das }, 1947*92aae35fSTaniya Das }; 1948*92aae35fSTaniya Das 1949*92aae35fSTaniya Das static struct clk_branch cam_cc_ipe_pps_fast_ahb_clk = { 1950*92aae35fSTaniya Das .halt_reg = 0x201d4, 1951*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1952*92aae35fSTaniya Das .clkr = { 1953*92aae35fSTaniya Das .enable_reg = 0x201d4, 1954*92aae35fSTaniya Das .enable_mask = BIT(0), 1955*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1956*92aae35fSTaniya Das .name = "cam_cc_ipe_pps_fast_ahb_clk", 1957*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1958*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 1959*92aae35fSTaniya Das }, 1960*92aae35fSTaniya Das .num_parents = 1, 1961*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1962*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1963*92aae35fSTaniya Das }, 1964*92aae35fSTaniya Das }, 1965*92aae35fSTaniya Das }; 1966*92aae35fSTaniya Das 1967*92aae35fSTaniya Das static struct clk_branch cam_cc_jpeg_clk = { 1968*92aae35fSTaniya Das .halt_reg = 0x211dc, 1969*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1970*92aae35fSTaniya Das .clkr = { 1971*92aae35fSTaniya Das .enable_reg = 0x211dc, 1972*92aae35fSTaniya Das .enable_mask = BIT(0), 1973*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1974*92aae35fSTaniya Das .name = "cam_cc_jpeg_clk", 1975*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1976*92aae35fSTaniya Das &cam_cc_jpeg_clk_src.clkr.hw, 1977*92aae35fSTaniya Das }, 1978*92aae35fSTaniya Das .num_parents = 1, 1979*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1980*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1981*92aae35fSTaniya Das }, 1982*92aae35fSTaniya Das }, 1983*92aae35fSTaniya Das }; 1984*92aae35fSTaniya Das 1985*92aae35fSTaniya Das static struct clk_branch cam_cc_ofe_ahb_clk = { 1986*92aae35fSTaniya Das .halt_reg = 0x20118, 1987*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 1988*92aae35fSTaniya Das .clkr = { 1989*92aae35fSTaniya Das .enable_reg = 0x20118, 1990*92aae35fSTaniya Das .enable_mask = BIT(0), 1991*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 1992*92aae35fSTaniya Das .name = "cam_cc_ofe_ahb_clk", 1993*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 1994*92aae35fSTaniya Das &cam_cc_slow_ahb_clk_src.clkr.hw, 1995*92aae35fSTaniya Das }, 1996*92aae35fSTaniya Das .num_parents = 1, 1997*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 1998*92aae35fSTaniya Das .ops = &clk_branch2_ops, 1999*92aae35fSTaniya Das }, 2000*92aae35fSTaniya Das }, 2001*92aae35fSTaniya Das }; 2002*92aae35fSTaniya Das 2003*92aae35fSTaniya Das static struct clk_branch cam_cc_ofe_anchor_clk = { 2004*92aae35fSTaniya Das .halt_reg = 0x20148, 2005*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2006*92aae35fSTaniya Das .clkr = { 2007*92aae35fSTaniya Das .enable_reg = 0x20148, 2008*92aae35fSTaniya Das .enable_mask = BIT(0), 2009*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2010*92aae35fSTaniya Das .name = "cam_cc_ofe_anchor_clk", 2011*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2012*92aae35fSTaniya Das &cam_cc_ofe_clk_src.clkr.hw, 2013*92aae35fSTaniya Das }, 2014*92aae35fSTaniya Das .num_parents = 1, 2015*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2016*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2017*92aae35fSTaniya Das }, 2018*92aae35fSTaniya Das }, 2019*92aae35fSTaniya Das }; 2020*92aae35fSTaniya Das 2021*92aae35fSTaniya Das static struct clk_branch cam_cc_ofe_anchor_fast_ahb_clk = { 2022*92aae35fSTaniya Das .halt_reg = 0x200f8, 2023*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2024*92aae35fSTaniya Das .clkr = { 2025*92aae35fSTaniya Das .enable_reg = 0x200f8, 2026*92aae35fSTaniya Das .enable_mask = BIT(0), 2027*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2028*92aae35fSTaniya Das .name = "cam_cc_ofe_anchor_fast_ahb_clk", 2029*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2030*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 2031*92aae35fSTaniya Das }, 2032*92aae35fSTaniya Das .num_parents = 1, 2033*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2034*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2035*92aae35fSTaniya Das }, 2036*92aae35fSTaniya Das }, 2037*92aae35fSTaniya Das }; 2038*92aae35fSTaniya Das 2039*92aae35fSTaniya Das static struct clk_branch cam_cc_ofe_hdr_clk = { 2040*92aae35fSTaniya Das .halt_reg = 0x20158, 2041*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2042*92aae35fSTaniya Das .clkr = { 2043*92aae35fSTaniya Das .enable_reg = 0x20158, 2044*92aae35fSTaniya Das .enable_mask = BIT(0), 2045*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2046*92aae35fSTaniya Das .name = "cam_cc_ofe_hdr_clk", 2047*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2048*92aae35fSTaniya Das &cam_cc_ofe_clk_src.clkr.hw, 2049*92aae35fSTaniya Das }, 2050*92aae35fSTaniya Das .num_parents = 1, 2051*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2052*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2053*92aae35fSTaniya Das }, 2054*92aae35fSTaniya Das }, 2055*92aae35fSTaniya Das }; 2056*92aae35fSTaniya Das 2057*92aae35fSTaniya Das static struct clk_branch cam_cc_ofe_hdr_fast_ahb_clk = { 2058*92aae35fSTaniya Das .halt_reg = 0x200fc, 2059*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2060*92aae35fSTaniya Das .clkr = { 2061*92aae35fSTaniya Das .enable_reg = 0x200fc, 2062*92aae35fSTaniya Das .enable_mask = BIT(0), 2063*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2064*92aae35fSTaniya Das .name = "cam_cc_ofe_hdr_fast_ahb_clk", 2065*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2066*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 2067*92aae35fSTaniya Das }, 2068*92aae35fSTaniya Das .num_parents = 1, 2069*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2070*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2071*92aae35fSTaniya Das }, 2072*92aae35fSTaniya Das }, 2073*92aae35fSTaniya Das }; 2074*92aae35fSTaniya Das 2075*92aae35fSTaniya Das static struct clk_branch cam_cc_ofe_main_clk = { 2076*92aae35fSTaniya Das .halt_reg = 0x20134, 2077*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2078*92aae35fSTaniya Das .clkr = { 2079*92aae35fSTaniya Das .enable_reg = 0x20134, 2080*92aae35fSTaniya Das .enable_mask = BIT(0), 2081*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2082*92aae35fSTaniya Das .name = "cam_cc_ofe_main_clk", 2083*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2084*92aae35fSTaniya Das &cam_cc_ofe_clk_src.clkr.hw, 2085*92aae35fSTaniya Das }, 2086*92aae35fSTaniya Das .num_parents = 1, 2087*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2088*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2089*92aae35fSTaniya Das }, 2090*92aae35fSTaniya Das }, 2091*92aae35fSTaniya Das }; 2092*92aae35fSTaniya Das 2093*92aae35fSTaniya Das static struct clk_branch cam_cc_ofe_main_fast_ahb_clk = { 2094*92aae35fSTaniya Das .halt_reg = 0x200f4, 2095*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2096*92aae35fSTaniya Das .clkr = { 2097*92aae35fSTaniya Das .enable_reg = 0x200f4, 2098*92aae35fSTaniya Das .enable_mask = BIT(0), 2099*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2100*92aae35fSTaniya Das .name = "cam_cc_ofe_main_fast_ahb_clk", 2101*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2102*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 2103*92aae35fSTaniya Das }, 2104*92aae35fSTaniya Das .num_parents = 1, 2105*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2106*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2107*92aae35fSTaniya Das }, 2108*92aae35fSTaniya Das }, 2109*92aae35fSTaniya Das }; 2110*92aae35fSTaniya Das 2111*92aae35fSTaniya Das static struct clk_branch cam_cc_qdss_debug_clk = { 2112*92aae35fSTaniya Das .halt_reg = 0x2132c, 2113*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2114*92aae35fSTaniya Das .clkr = { 2115*92aae35fSTaniya Das .enable_reg = 0x2132c, 2116*92aae35fSTaniya Das .enable_mask = BIT(0), 2117*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2118*92aae35fSTaniya Das .name = "cam_cc_qdss_debug_clk", 2119*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2120*92aae35fSTaniya Das &cam_cc_qdss_debug_clk_src.clkr.hw, 2121*92aae35fSTaniya Das }, 2122*92aae35fSTaniya Das .num_parents = 1, 2123*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2124*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2125*92aae35fSTaniya Das }, 2126*92aae35fSTaniya Das }, 2127*92aae35fSTaniya Das }; 2128*92aae35fSTaniya Das 2129*92aae35fSTaniya Das static struct clk_branch cam_cc_qdss_debug_xo_clk = { 2130*92aae35fSTaniya Das .halt_reg = 0x21330, 2131*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2132*92aae35fSTaniya Das .clkr = { 2133*92aae35fSTaniya Das .enable_reg = 0x21330, 2134*92aae35fSTaniya Das .enable_mask = BIT(0), 2135*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2136*92aae35fSTaniya Das .name = "cam_cc_qdss_debug_xo_clk", 2137*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2138*92aae35fSTaniya Das &cam_cc_xo_clk_src.clkr.hw, 2139*92aae35fSTaniya Das }, 2140*92aae35fSTaniya Das .num_parents = 1, 2141*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2142*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2143*92aae35fSTaniya Das }, 2144*92aae35fSTaniya Das }, 2145*92aae35fSTaniya Das }; 2146*92aae35fSTaniya Das 2147*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_0_bayer_clk = { 2148*92aae35fSTaniya Das .halt_reg = 0x21044, 2149*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2150*92aae35fSTaniya Das .clkr = { 2151*92aae35fSTaniya Das .enable_reg = 0x21044, 2152*92aae35fSTaniya Das .enable_mask = BIT(0), 2153*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2154*92aae35fSTaniya Das .name = "cam_cc_tfe_0_bayer_clk", 2155*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2156*92aae35fSTaniya Das &cam_cc_tfe_0_clk_src.clkr.hw, 2157*92aae35fSTaniya Das }, 2158*92aae35fSTaniya Das .num_parents = 1, 2159*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2160*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2161*92aae35fSTaniya Das }, 2162*92aae35fSTaniya Das }, 2163*92aae35fSTaniya Das }; 2164*92aae35fSTaniya Das 2165*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_0_bayer_fast_ahb_clk = { 2166*92aae35fSTaniya Das .halt_reg = 0x21060, 2167*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2168*92aae35fSTaniya Das .clkr = { 2169*92aae35fSTaniya Das .enable_reg = 0x21060, 2170*92aae35fSTaniya Das .enable_mask = BIT(0), 2171*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2172*92aae35fSTaniya Das .name = "cam_cc_tfe_0_bayer_fast_ahb_clk", 2173*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2174*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 2175*92aae35fSTaniya Das }, 2176*92aae35fSTaniya Das .num_parents = 1, 2177*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2178*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2179*92aae35fSTaniya Das }, 2180*92aae35fSTaniya Das }, 2181*92aae35fSTaniya Das }; 2182*92aae35fSTaniya Das 2183*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_0_main_clk = { 2184*92aae35fSTaniya Das .halt_reg = 0x21030, 2185*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2186*92aae35fSTaniya Das .clkr = { 2187*92aae35fSTaniya Das .enable_reg = 0x21030, 2188*92aae35fSTaniya Das .enable_mask = BIT(0), 2189*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2190*92aae35fSTaniya Das .name = "cam_cc_tfe_0_main_clk", 2191*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2192*92aae35fSTaniya Das &cam_cc_tfe_0_clk_src.clkr.hw, 2193*92aae35fSTaniya Das }, 2194*92aae35fSTaniya Das .num_parents = 1, 2195*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2196*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2197*92aae35fSTaniya Das }, 2198*92aae35fSTaniya Das }, 2199*92aae35fSTaniya Das }; 2200*92aae35fSTaniya Das 2201*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_0_main_fast_ahb_clk = { 2202*92aae35fSTaniya Das .halt_reg = 0x2105c, 2203*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2204*92aae35fSTaniya Das .clkr = { 2205*92aae35fSTaniya Das .enable_reg = 0x2105c, 2206*92aae35fSTaniya Das .enable_mask = BIT(0), 2207*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2208*92aae35fSTaniya Das .name = "cam_cc_tfe_0_main_fast_ahb_clk", 2209*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2210*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 2211*92aae35fSTaniya Das }, 2212*92aae35fSTaniya Das .num_parents = 1, 2213*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2214*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2215*92aae35fSTaniya Das }, 2216*92aae35fSTaniya Das }, 2217*92aae35fSTaniya Das }; 2218*92aae35fSTaniya Das 2219*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_1_bayer_clk = { 2220*92aae35fSTaniya Das .halt_reg = 0x210c0, 2221*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2222*92aae35fSTaniya Das .clkr = { 2223*92aae35fSTaniya Das .enable_reg = 0x210c0, 2224*92aae35fSTaniya Das .enable_mask = BIT(0), 2225*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2226*92aae35fSTaniya Das .name = "cam_cc_tfe_1_bayer_clk", 2227*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2228*92aae35fSTaniya Das &cam_cc_tfe_1_clk_src.clkr.hw, 2229*92aae35fSTaniya Das }, 2230*92aae35fSTaniya Das .num_parents = 1, 2231*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2232*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2233*92aae35fSTaniya Das }, 2234*92aae35fSTaniya Das }, 2235*92aae35fSTaniya Das }; 2236*92aae35fSTaniya Das 2237*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_1_bayer_fast_ahb_clk = { 2238*92aae35fSTaniya Das .halt_reg = 0x210dc, 2239*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2240*92aae35fSTaniya Das .clkr = { 2241*92aae35fSTaniya Das .enable_reg = 0x210dc, 2242*92aae35fSTaniya Das .enable_mask = BIT(0), 2243*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2244*92aae35fSTaniya Das .name = "cam_cc_tfe_1_bayer_fast_ahb_clk", 2245*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2246*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 2247*92aae35fSTaniya Das }, 2248*92aae35fSTaniya Das .num_parents = 1, 2249*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2250*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2251*92aae35fSTaniya Das }, 2252*92aae35fSTaniya Das }, 2253*92aae35fSTaniya Das }; 2254*92aae35fSTaniya Das 2255*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_1_main_clk = { 2256*92aae35fSTaniya Das .halt_reg = 0x210ac, 2257*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2258*92aae35fSTaniya Das .clkr = { 2259*92aae35fSTaniya Das .enable_reg = 0x210ac, 2260*92aae35fSTaniya Das .enable_mask = BIT(0), 2261*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2262*92aae35fSTaniya Das .name = "cam_cc_tfe_1_main_clk", 2263*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2264*92aae35fSTaniya Das &cam_cc_tfe_1_clk_src.clkr.hw, 2265*92aae35fSTaniya Das }, 2266*92aae35fSTaniya Das .num_parents = 1, 2267*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2268*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2269*92aae35fSTaniya Das }, 2270*92aae35fSTaniya Das }, 2271*92aae35fSTaniya Das }; 2272*92aae35fSTaniya Das 2273*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_1_main_fast_ahb_clk = { 2274*92aae35fSTaniya Das .halt_reg = 0x210d8, 2275*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2276*92aae35fSTaniya Das .clkr = { 2277*92aae35fSTaniya Das .enable_reg = 0x210d8, 2278*92aae35fSTaniya Das .enable_mask = BIT(0), 2279*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2280*92aae35fSTaniya Das .name = "cam_cc_tfe_1_main_fast_ahb_clk", 2281*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2282*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 2283*92aae35fSTaniya Das }, 2284*92aae35fSTaniya Das .num_parents = 1, 2285*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2286*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2287*92aae35fSTaniya Das }, 2288*92aae35fSTaniya Das }, 2289*92aae35fSTaniya Das }; 2290*92aae35fSTaniya Das 2291*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_2_bayer_clk = { 2292*92aae35fSTaniya Das .halt_reg = 0x21124, 2293*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2294*92aae35fSTaniya Das .clkr = { 2295*92aae35fSTaniya Das .enable_reg = 0x21124, 2296*92aae35fSTaniya Das .enable_mask = BIT(0), 2297*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2298*92aae35fSTaniya Das .name = "cam_cc_tfe_2_bayer_clk", 2299*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2300*92aae35fSTaniya Das &cam_cc_tfe_2_clk_src.clkr.hw, 2301*92aae35fSTaniya Das }, 2302*92aae35fSTaniya Das .num_parents = 1, 2303*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2304*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2305*92aae35fSTaniya Das }, 2306*92aae35fSTaniya Das }, 2307*92aae35fSTaniya Das }; 2308*92aae35fSTaniya Das 2309*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_2_bayer_fast_ahb_clk = { 2310*92aae35fSTaniya Das .halt_reg = 0x21140, 2311*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2312*92aae35fSTaniya Das .clkr = { 2313*92aae35fSTaniya Das .enable_reg = 0x21140, 2314*92aae35fSTaniya Das .enable_mask = BIT(0), 2315*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2316*92aae35fSTaniya Das .name = "cam_cc_tfe_2_bayer_fast_ahb_clk", 2317*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2318*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 2319*92aae35fSTaniya Das }, 2320*92aae35fSTaniya Das .num_parents = 1, 2321*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2322*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2323*92aae35fSTaniya Das }, 2324*92aae35fSTaniya Das }, 2325*92aae35fSTaniya Das }; 2326*92aae35fSTaniya Das 2327*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_2_main_clk = { 2328*92aae35fSTaniya Das .halt_reg = 0x21110, 2329*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2330*92aae35fSTaniya Das .clkr = { 2331*92aae35fSTaniya Das .enable_reg = 0x21110, 2332*92aae35fSTaniya Das .enable_mask = BIT(0), 2333*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2334*92aae35fSTaniya Das .name = "cam_cc_tfe_2_main_clk", 2335*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2336*92aae35fSTaniya Das &cam_cc_tfe_2_clk_src.clkr.hw, 2337*92aae35fSTaniya Das }, 2338*92aae35fSTaniya Das .num_parents = 1, 2339*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2340*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2341*92aae35fSTaniya Das }, 2342*92aae35fSTaniya Das }, 2343*92aae35fSTaniya Das }; 2344*92aae35fSTaniya Das 2345*92aae35fSTaniya Das static struct clk_branch cam_cc_tfe_2_main_fast_ahb_clk = { 2346*92aae35fSTaniya Das .halt_reg = 0x2113c, 2347*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2348*92aae35fSTaniya Das .clkr = { 2349*92aae35fSTaniya Das .enable_reg = 0x2113c, 2350*92aae35fSTaniya Das .enable_mask = BIT(0), 2351*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2352*92aae35fSTaniya Das .name = "cam_cc_tfe_2_main_fast_ahb_clk", 2353*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2354*92aae35fSTaniya Das &cam_cc_fast_ahb_clk_src.clkr.hw, 2355*92aae35fSTaniya Das }, 2356*92aae35fSTaniya Das .num_parents = 1, 2357*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2358*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2359*92aae35fSTaniya Das }, 2360*92aae35fSTaniya Das }, 2361*92aae35fSTaniya Das }; 2362*92aae35fSTaniya Das 2363*92aae35fSTaniya Das static struct clk_branch cam_cc_tracenoc_tpdm_1_cmb_clk = { 2364*92aae35fSTaniya Das .halt_reg = 0x21394, 2365*92aae35fSTaniya Das .halt_check = BRANCH_HALT, 2366*92aae35fSTaniya Das .clkr = { 2367*92aae35fSTaniya Das .enable_reg = 0x21394, 2368*92aae35fSTaniya Das .enable_mask = BIT(0), 2369*92aae35fSTaniya Das .hw.init = &(const struct clk_init_data) { 2370*92aae35fSTaniya Das .name = "cam_cc_tracenoc_tpdm_1_cmb_clk", 2371*92aae35fSTaniya Das .parent_hws = (const struct clk_hw*[]) { 2372*92aae35fSTaniya Das &cam_cc_xo_clk_src.clkr.hw, 2373*92aae35fSTaniya Das }, 2374*92aae35fSTaniya Das .num_parents = 1, 2375*92aae35fSTaniya Das .flags = CLK_SET_RATE_PARENT, 2376*92aae35fSTaniya Das .ops = &clk_branch2_ops, 2377*92aae35fSTaniya Das }, 2378*92aae35fSTaniya Das }, 2379*92aae35fSTaniya Das }; 2380*92aae35fSTaniya Das 2381*92aae35fSTaniya Das static struct gdsc cam_cc_titan_top_gdsc = { 2382*92aae35fSTaniya Das .gdscr = 0x21334, 2383*92aae35fSTaniya Das .en_rest_wait_val = 0x2, 2384*92aae35fSTaniya Das .en_few_wait_val = 0x2, 2385*92aae35fSTaniya Das .clk_dis_wait_val = 0xf, 2386*92aae35fSTaniya Das .pd = { 2387*92aae35fSTaniya Das .name = "cam_cc_titan_top_gdsc", 2388*92aae35fSTaniya Das }, 2389*92aae35fSTaniya Das .pwrsts = PWRSTS_OFF_ON, 2390*92aae35fSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2391*92aae35fSTaniya Das }; 2392*92aae35fSTaniya Das 2393*92aae35fSTaniya Das static struct gdsc cam_cc_ipe_0_gdsc = { 2394*92aae35fSTaniya Das .gdscr = 0x20174, 2395*92aae35fSTaniya Das .en_rest_wait_val = 0x2, 2396*92aae35fSTaniya Das .en_few_wait_val = 0x2, 2397*92aae35fSTaniya Das .clk_dis_wait_val = 0xf, 2398*92aae35fSTaniya Das .pd = { 2399*92aae35fSTaniya Das .name = "cam_cc_ipe_0_gdsc", 2400*92aae35fSTaniya Das }, 2401*92aae35fSTaniya Das .parent = &cam_cc_titan_top_gdsc.pd, 2402*92aae35fSTaniya Das .pwrsts = PWRSTS_OFF_ON, 2403*92aae35fSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL_TRIGGER, 2404*92aae35fSTaniya Das }; 2405*92aae35fSTaniya Das 2406*92aae35fSTaniya Das static struct gdsc cam_cc_ofe_gdsc = { 2407*92aae35fSTaniya Das .gdscr = 0x200c8, 2408*92aae35fSTaniya Das .en_rest_wait_val = 0x2, 2409*92aae35fSTaniya Das .en_few_wait_val = 0x2, 2410*92aae35fSTaniya Das .clk_dis_wait_val = 0xf, 2411*92aae35fSTaniya Das .pd = { 2412*92aae35fSTaniya Das .name = "cam_cc_ofe_gdsc", 2413*92aae35fSTaniya Das }, 2414*92aae35fSTaniya Das .pwrsts = PWRSTS_OFF_ON, 2415*92aae35fSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | HW_CTRL_TRIGGER, 2416*92aae35fSTaniya Das .parent = &cam_cc_titan_top_gdsc.pd, 2417*92aae35fSTaniya Das }; 2418*92aae35fSTaniya Das 2419*92aae35fSTaniya Das static struct gdsc cam_cc_tfe_0_gdsc = { 2420*92aae35fSTaniya Das .gdscr = 0x21004, 2421*92aae35fSTaniya Das .en_rest_wait_val = 0x2, 2422*92aae35fSTaniya Das .en_few_wait_val = 0x2, 2423*92aae35fSTaniya Das .clk_dis_wait_val = 0xf, 2424*92aae35fSTaniya Das .pd = { 2425*92aae35fSTaniya Das .name = "cam_cc_tfe_0_gdsc", 2426*92aae35fSTaniya Das }, 2427*92aae35fSTaniya Das .pwrsts = PWRSTS_OFF_ON, 2428*92aae35fSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2429*92aae35fSTaniya Das .parent = &cam_cc_titan_top_gdsc.pd, 2430*92aae35fSTaniya Das }; 2431*92aae35fSTaniya Das 2432*92aae35fSTaniya Das static struct gdsc cam_cc_tfe_1_gdsc = { 2433*92aae35fSTaniya Das .gdscr = 0x21080, 2434*92aae35fSTaniya Das .en_rest_wait_val = 0x2, 2435*92aae35fSTaniya Das .en_few_wait_val = 0x2, 2436*92aae35fSTaniya Das .clk_dis_wait_val = 0xf, 2437*92aae35fSTaniya Das .pd = { 2438*92aae35fSTaniya Das .name = "cam_cc_tfe_1_gdsc", 2439*92aae35fSTaniya Das }, 2440*92aae35fSTaniya Das .pwrsts = PWRSTS_OFF_ON, 2441*92aae35fSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2442*92aae35fSTaniya Das .parent = &cam_cc_titan_top_gdsc.pd, 2443*92aae35fSTaniya Das }; 2444*92aae35fSTaniya Das 2445*92aae35fSTaniya Das static struct gdsc cam_cc_tfe_2_gdsc = { 2446*92aae35fSTaniya Das .gdscr = 0x210e4, 2447*92aae35fSTaniya Das .en_rest_wait_val = 0x2, 2448*92aae35fSTaniya Das .en_few_wait_val = 0x2, 2449*92aae35fSTaniya Das .clk_dis_wait_val = 0xf, 2450*92aae35fSTaniya Das .pd = { 2451*92aae35fSTaniya Das .name = "cam_cc_tfe_2_gdsc", 2452*92aae35fSTaniya Das }, 2453*92aae35fSTaniya Das .pwrsts = PWRSTS_OFF_ON, 2454*92aae35fSTaniya Das .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, 2455*92aae35fSTaniya Das .parent = &cam_cc_titan_top_gdsc.pd, 2456*92aae35fSTaniya Das }; 2457*92aae35fSTaniya Das 2458*92aae35fSTaniya Das static struct clk_regmap *cam_cc_kaanapali_clocks[] = { 2459*92aae35fSTaniya Das [CAM_CC_CAM_TOP_AHB_CLK] = &cam_cc_cam_top_ahb_clk.clkr, 2460*92aae35fSTaniya Das [CAM_CC_CAM_TOP_FAST_AHB_CLK] = &cam_cc_cam_top_fast_ahb_clk.clkr, 2461*92aae35fSTaniya Das [CAM_CC_CAMNOC_NRT_AXI_CLK] = &cam_cc_camnoc_nrt_axi_clk.clkr, 2462*92aae35fSTaniya Das [CAM_CC_CAMNOC_NRT_CRE_CLK] = &cam_cc_camnoc_nrt_cre_clk.clkr, 2463*92aae35fSTaniya Das [CAM_CC_CAMNOC_NRT_IPE_NPS_CLK] = &cam_cc_camnoc_nrt_ipe_nps_clk.clkr, 2464*92aae35fSTaniya Das [CAM_CC_CAMNOC_NRT_OFE_MAIN_CLK] = &cam_cc_camnoc_nrt_ofe_main_clk.clkr, 2465*92aae35fSTaniya Das [CAM_CC_CAMNOC_RT_AXI_CLK] = &cam_cc_camnoc_rt_axi_clk.clkr, 2466*92aae35fSTaniya Das [CAM_CC_CAMNOC_RT_AXI_CLK_SRC] = &cam_cc_camnoc_rt_axi_clk_src.clkr, 2467*92aae35fSTaniya Das [CAM_CC_CAMNOC_RT_IFE_LITE_CLK] = &cam_cc_camnoc_rt_ife_lite_clk.clkr, 2468*92aae35fSTaniya Das [CAM_CC_CAMNOC_RT_TFE_0_MAIN_CLK] = &cam_cc_camnoc_rt_tfe_0_main_clk.clkr, 2469*92aae35fSTaniya Das [CAM_CC_CAMNOC_RT_TFE_1_MAIN_CLK] = &cam_cc_camnoc_rt_tfe_1_main_clk.clkr, 2470*92aae35fSTaniya Das [CAM_CC_CAMNOC_RT_TFE_2_MAIN_CLK] = &cam_cc_camnoc_rt_tfe_2_main_clk.clkr, 2471*92aae35fSTaniya Das [CAM_CC_CAMNOC_XO_CLK] = &cam_cc_camnoc_xo_clk.clkr, 2472*92aae35fSTaniya Das [CAM_CC_CCI_0_CLK] = &cam_cc_cci_0_clk.clkr, 2473*92aae35fSTaniya Das [CAM_CC_CCI_0_CLK_SRC] = &cam_cc_cci_0_clk_src.clkr, 2474*92aae35fSTaniya Das [CAM_CC_CCI_1_CLK] = &cam_cc_cci_1_clk.clkr, 2475*92aae35fSTaniya Das [CAM_CC_CCI_1_CLK_SRC] = &cam_cc_cci_1_clk_src.clkr, 2476*92aae35fSTaniya Das [CAM_CC_CCI_2_CLK] = &cam_cc_cci_2_clk.clkr, 2477*92aae35fSTaniya Das [CAM_CC_CCI_2_CLK_SRC] = &cam_cc_cci_2_clk_src.clkr, 2478*92aae35fSTaniya Das [CAM_CC_CORE_AHB_CLK] = &cam_cc_core_ahb_clk.clkr, 2479*92aae35fSTaniya Das [CAM_CC_CPHY_RX_CLK_SRC] = &cam_cc_cphy_rx_clk_src.clkr, 2480*92aae35fSTaniya Das [CAM_CC_CRE_AHB_CLK] = &cam_cc_cre_ahb_clk.clkr, 2481*92aae35fSTaniya Das [CAM_CC_CRE_CLK] = &cam_cc_cre_clk.clkr, 2482*92aae35fSTaniya Das [CAM_CC_CRE_CLK_SRC] = &cam_cc_cre_clk_src.clkr, 2483*92aae35fSTaniya Das [CAM_CC_CSI0PHYTIMER_CLK] = &cam_cc_csi0phytimer_clk.clkr, 2484*92aae35fSTaniya Das [CAM_CC_CSI0PHYTIMER_CLK_SRC] = &cam_cc_csi0phytimer_clk_src.clkr, 2485*92aae35fSTaniya Das [CAM_CC_CSI1PHYTIMER_CLK] = &cam_cc_csi1phytimer_clk.clkr, 2486*92aae35fSTaniya Das [CAM_CC_CSI1PHYTIMER_CLK_SRC] = &cam_cc_csi1phytimer_clk_src.clkr, 2487*92aae35fSTaniya Das [CAM_CC_CSI2PHYTIMER_CLK] = &cam_cc_csi2phytimer_clk.clkr, 2488*92aae35fSTaniya Das [CAM_CC_CSI2PHYTIMER_CLK_SRC] = &cam_cc_csi2phytimer_clk_src.clkr, 2489*92aae35fSTaniya Das [CAM_CC_CSI3PHYTIMER_CLK] = &cam_cc_csi3phytimer_clk.clkr, 2490*92aae35fSTaniya Das [CAM_CC_CSI3PHYTIMER_CLK_SRC] = &cam_cc_csi3phytimer_clk_src.clkr, 2491*92aae35fSTaniya Das [CAM_CC_CSI4PHYTIMER_CLK] = &cam_cc_csi4phytimer_clk.clkr, 2492*92aae35fSTaniya Das [CAM_CC_CSI4PHYTIMER_CLK_SRC] = &cam_cc_csi4phytimer_clk_src.clkr, 2493*92aae35fSTaniya Das [CAM_CC_CSI5PHYTIMER_CLK] = &cam_cc_csi5phytimer_clk.clkr, 2494*92aae35fSTaniya Das [CAM_CC_CSI5PHYTIMER_CLK_SRC] = &cam_cc_csi5phytimer_clk_src.clkr, 2495*92aae35fSTaniya Das [CAM_CC_CSID_CLK] = &cam_cc_csid_clk.clkr, 2496*92aae35fSTaniya Das [CAM_CC_CSID_CLK_SRC] = &cam_cc_csid_clk_src.clkr, 2497*92aae35fSTaniya Das [CAM_CC_CSID_CSIPHY_RX_CLK] = &cam_cc_csid_csiphy_rx_clk.clkr, 2498*92aae35fSTaniya Das [CAM_CC_CSIPHY0_CLK] = &cam_cc_csiphy0_clk.clkr, 2499*92aae35fSTaniya Das [CAM_CC_CSIPHY1_CLK] = &cam_cc_csiphy1_clk.clkr, 2500*92aae35fSTaniya Das [CAM_CC_CSIPHY2_CLK] = &cam_cc_csiphy2_clk.clkr, 2501*92aae35fSTaniya Das [CAM_CC_CSIPHY3_CLK] = &cam_cc_csiphy3_clk.clkr, 2502*92aae35fSTaniya Das [CAM_CC_CSIPHY4_CLK] = &cam_cc_csiphy4_clk.clkr, 2503*92aae35fSTaniya Das [CAM_CC_CSIPHY5_CLK] = &cam_cc_csiphy5_clk.clkr, 2504*92aae35fSTaniya Das [CAM_CC_FAST_AHB_CLK_SRC] = &cam_cc_fast_ahb_clk_src.clkr, 2505*92aae35fSTaniya Das [CAM_CC_ICP_0_AHB_CLK] = &cam_cc_icp_0_ahb_clk.clkr, 2506*92aae35fSTaniya Das [CAM_CC_ICP_0_CLK] = &cam_cc_icp_0_clk.clkr, 2507*92aae35fSTaniya Das [CAM_CC_ICP_0_CLK_SRC] = &cam_cc_icp_0_clk_src.clkr, 2508*92aae35fSTaniya Das [CAM_CC_ICP_1_AHB_CLK] = &cam_cc_icp_1_ahb_clk.clkr, 2509*92aae35fSTaniya Das [CAM_CC_ICP_1_CLK] = &cam_cc_icp_1_clk.clkr, 2510*92aae35fSTaniya Das [CAM_CC_ICP_1_CLK_SRC] = &cam_cc_icp_1_clk_src.clkr, 2511*92aae35fSTaniya Das [CAM_CC_IFE_LITE_AHB_CLK] = &cam_cc_ife_lite_ahb_clk.clkr, 2512*92aae35fSTaniya Das [CAM_CC_IFE_LITE_CLK] = &cam_cc_ife_lite_clk.clkr, 2513*92aae35fSTaniya Das [CAM_CC_IFE_LITE_CLK_SRC] = &cam_cc_ife_lite_clk_src.clkr, 2514*92aae35fSTaniya Das [CAM_CC_IFE_LITE_CPHY_RX_CLK] = &cam_cc_ife_lite_cphy_rx_clk.clkr, 2515*92aae35fSTaniya Das [CAM_CC_IFE_LITE_CSID_CLK] = &cam_cc_ife_lite_csid_clk.clkr, 2516*92aae35fSTaniya Das [CAM_CC_IFE_LITE_CSID_CLK_SRC] = &cam_cc_ife_lite_csid_clk_src.clkr, 2517*92aae35fSTaniya Das [CAM_CC_IPE_NPS_AHB_CLK] = &cam_cc_ipe_nps_ahb_clk.clkr, 2518*92aae35fSTaniya Das [CAM_CC_IPE_NPS_CLK] = &cam_cc_ipe_nps_clk.clkr, 2519*92aae35fSTaniya Das [CAM_CC_IPE_NPS_CLK_SRC] = &cam_cc_ipe_nps_clk_src.clkr, 2520*92aae35fSTaniya Das [CAM_CC_IPE_NPS_FAST_AHB_CLK] = &cam_cc_ipe_nps_fast_ahb_clk.clkr, 2521*92aae35fSTaniya Das [CAM_CC_IPE_PPS_CLK] = &cam_cc_ipe_pps_clk.clkr, 2522*92aae35fSTaniya Das [CAM_CC_IPE_PPS_FAST_AHB_CLK] = &cam_cc_ipe_pps_fast_ahb_clk.clkr, 2523*92aae35fSTaniya Das [CAM_CC_JPEG_CLK] = &cam_cc_jpeg_clk.clkr, 2524*92aae35fSTaniya Das [CAM_CC_JPEG_CLK_SRC] = &cam_cc_jpeg_clk_src.clkr, 2525*92aae35fSTaniya Das [CAM_CC_OFE_AHB_CLK] = &cam_cc_ofe_ahb_clk.clkr, 2526*92aae35fSTaniya Das [CAM_CC_OFE_ANCHOR_CLK] = &cam_cc_ofe_anchor_clk.clkr, 2527*92aae35fSTaniya Das [CAM_CC_OFE_ANCHOR_FAST_AHB_CLK] = &cam_cc_ofe_anchor_fast_ahb_clk.clkr, 2528*92aae35fSTaniya Das [CAM_CC_OFE_CLK_SRC] = &cam_cc_ofe_clk_src.clkr, 2529*92aae35fSTaniya Das [CAM_CC_OFE_HDR_CLK] = &cam_cc_ofe_hdr_clk.clkr, 2530*92aae35fSTaniya Das [CAM_CC_OFE_HDR_FAST_AHB_CLK] = &cam_cc_ofe_hdr_fast_ahb_clk.clkr, 2531*92aae35fSTaniya Das [CAM_CC_OFE_MAIN_CLK] = &cam_cc_ofe_main_clk.clkr, 2532*92aae35fSTaniya Das [CAM_CC_OFE_MAIN_FAST_AHB_CLK] = &cam_cc_ofe_main_fast_ahb_clk.clkr, 2533*92aae35fSTaniya Das [CAM_CC_PLL0] = &cam_cc_pll0.clkr, 2534*92aae35fSTaniya Das [CAM_CC_PLL0_OUT_EVEN] = &cam_cc_pll0_out_even.clkr, 2535*92aae35fSTaniya Das [CAM_CC_PLL0_OUT_ODD] = &cam_cc_pll0_out_odd.clkr, 2536*92aae35fSTaniya Das [CAM_CC_PLL1] = &cam_cc_pll1.clkr, 2537*92aae35fSTaniya Das [CAM_CC_PLL1_OUT_EVEN] = &cam_cc_pll1_out_even.clkr, 2538*92aae35fSTaniya Das [CAM_CC_PLL2] = &cam_cc_pll2.clkr, 2539*92aae35fSTaniya Das [CAM_CC_PLL2_OUT_EVEN] = &cam_cc_pll2_out_even.clkr, 2540*92aae35fSTaniya Das [CAM_CC_PLL3] = &cam_cc_pll3.clkr, 2541*92aae35fSTaniya Das [CAM_CC_PLL3_OUT_EVEN] = &cam_cc_pll3_out_even.clkr, 2542*92aae35fSTaniya Das [CAM_CC_PLL4] = &cam_cc_pll4.clkr, 2543*92aae35fSTaniya Das [CAM_CC_PLL4_OUT_EVEN] = &cam_cc_pll4_out_even.clkr, 2544*92aae35fSTaniya Das [CAM_CC_PLL5] = &cam_cc_pll5.clkr, 2545*92aae35fSTaniya Das [CAM_CC_PLL5_OUT_EVEN] = &cam_cc_pll5_out_even.clkr, 2546*92aae35fSTaniya Das [CAM_CC_PLL6] = &cam_cc_pll6.clkr, 2547*92aae35fSTaniya Das [CAM_CC_PLL6_OUT_EVEN] = &cam_cc_pll6_out_even.clkr, 2548*92aae35fSTaniya Das [CAM_CC_PLL6_OUT_ODD] = &cam_cc_pll6_out_odd.clkr, 2549*92aae35fSTaniya Das [CAM_CC_PLL7] = &cam_cc_pll7.clkr, 2550*92aae35fSTaniya Das [CAM_CC_PLL7_OUT_EVEN] = &cam_cc_pll7_out_even.clkr, 2551*92aae35fSTaniya Das [CAM_CC_QDSS_DEBUG_CLK] = &cam_cc_qdss_debug_clk.clkr, 2552*92aae35fSTaniya Das [CAM_CC_QDSS_DEBUG_CLK_SRC] = &cam_cc_qdss_debug_clk_src.clkr, 2553*92aae35fSTaniya Das [CAM_CC_QDSS_DEBUG_XO_CLK] = &cam_cc_qdss_debug_xo_clk.clkr, 2554*92aae35fSTaniya Das [CAM_CC_SLOW_AHB_CLK_SRC] = &cam_cc_slow_ahb_clk_src.clkr, 2555*92aae35fSTaniya Das [CAM_CC_TFE_0_BAYER_CLK] = &cam_cc_tfe_0_bayer_clk.clkr, 2556*92aae35fSTaniya Das [CAM_CC_TFE_0_BAYER_FAST_AHB_CLK] = &cam_cc_tfe_0_bayer_fast_ahb_clk.clkr, 2557*92aae35fSTaniya Das [CAM_CC_TFE_0_CLK_SRC] = &cam_cc_tfe_0_clk_src.clkr, 2558*92aae35fSTaniya Das [CAM_CC_TFE_0_MAIN_CLK] = &cam_cc_tfe_0_main_clk.clkr, 2559*92aae35fSTaniya Das [CAM_CC_TFE_0_MAIN_FAST_AHB_CLK] = &cam_cc_tfe_0_main_fast_ahb_clk.clkr, 2560*92aae35fSTaniya Das [CAM_CC_TFE_1_BAYER_CLK] = &cam_cc_tfe_1_bayer_clk.clkr, 2561*92aae35fSTaniya Das [CAM_CC_TFE_1_BAYER_FAST_AHB_CLK] = &cam_cc_tfe_1_bayer_fast_ahb_clk.clkr, 2562*92aae35fSTaniya Das [CAM_CC_TFE_1_CLK_SRC] = &cam_cc_tfe_1_clk_src.clkr, 2563*92aae35fSTaniya Das [CAM_CC_TFE_1_MAIN_CLK] = &cam_cc_tfe_1_main_clk.clkr, 2564*92aae35fSTaniya Das [CAM_CC_TFE_1_MAIN_FAST_AHB_CLK] = &cam_cc_tfe_1_main_fast_ahb_clk.clkr, 2565*92aae35fSTaniya Das [CAM_CC_TFE_2_BAYER_CLK] = &cam_cc_tfe_2_bayer_clk.clkr, 2566*92aae35fSTaniya Das [CAM_CC_TFE_2_BAYER_FAST_AHB_CLK] = &cam_cc_tfe_2_bayer_fast_ahb_clk.clkr, 2567*92aae35fSTaniya Das [CAM_CC_TFE_2_CLK_SRC] = &cam_cc_tfe_2_clk_src.clkr, 2568*92aae35fSTaniya Das [CAM_CC_TFE_2_MAIN_CLK] = &cam_cc_tfe_2_main_clk.clkr, 2569*92aae35fSTaniya Das [CAM_CC_TFE_2_MAIN_FAST_AHB_CLK] = &cam_cc_tfe_2_main_fast_ahb_clk.clkr, 2570*92aae35fSTaniya Das [CAM_CC_TRACENOC_TPDM_1_CMB_CLK] = &cam_cc_tracenoc_tpdm_1_cmb_clk.clkr, 2571*92aae35fSTaniya Das [CAM_CC_XO_CLK_SRC] = &cam_cc_xo_clk_src.clkr, 2572*92aae35fSTaniya Das }; 2573*92aae35fSTaniya Das 2574*92aae35fSTaniya Das static struct gdsc *cam_cc_kaanapali_gdscs[] = { 2575*92aae35fSTaniya Das [CAM_CC_IPE_0_GDSC] = &cam_cc_ipe_0_gdsc, 2576*92aae35fSTaniya Das [CAM_CC_OFE_GDSC] = &cam_cc_ofe_gdsc, 2577*92aae35fSTaniya Das [CAM_CC_TFE_0_GDSC] = &cam_cc_tfe_0_gdsc, 2578*92aae35fSTaniya Das [CAM_CC_TFE_1_GDSC] = &cam_cc_tfe_1_gdsc, 2579*92aae35fSTaniya Das [CAM_CC_TFE_2_GDSC] = &cam_cc_tfe_2_gdsc, 2580*92aae35fSTaniya Das [CAM_CC_TITAN_TOP_GDSC] = &cam_cc_titan_top_gdsc, 2581*92aae35fSTaniya Das }; 2582*92aae35fSTaniya Das 2583*92aae35fSTaniya Das static const struct qcom_reset_map cam_cc_kaanapali_resets[] = { 2584*92aae35fSTaniya Das [CAM_CC_DRV_BCR] = { 0x2138c }, 2585*92aae35fSTaniya Das [CAM_CC_ICP_BCR] = { 0x211f4 }, 2586*92aae35fSTaniya Das [CAM_CC_IPE_0_BCR] = { 0x20170 }, 2587*92aae35fSTaniya Das [CAM_CC_OFE_BCR] = { 0x200c4 }, 2588*92aae35fSTaniya Das [CAM_CC_QDSS_DEBUG_BCR] = { 0x21310 }, 2589*92aae35fSTaniya Das [CAM_CC_TFE_0_BCR] = { 0x21000 }, 2590*92aae35fSTaniya Das [CAM_CC_TFE_1_BCR] = { 0x2107c }, 2591*92aae35fSTaniya Das [CAM_CC_TFE_2_BCR] = { 0x210e0 }, 2592*92aae35fSTaniya Das }; 2593*92aae35fSTaniya Das 2594*92aae35fSTaniya Das static struct clk_alpha_pll *cam_cc_kaanapali_plls[] = { 2595*92aae35fSTaniya Das &cam_cc_pll0, 2596*92aae35fSTaniya Das &cam_cc_pll1, 2597*92aae35fSTaniya Das &cam_cc_pll2, 2598*92aae35fSTaniya Das &cam_cc_pll3, 2599*92aae35fSTaniya Das &cam_cc_pll4, 2600*92aae35fSTaniya Das &cam_cc_pll5, 2601*92aae35fSTaniya Das &cam_cc_pll6, 2602*92aae35fSTaniya Das &cam_cc_pll7, 2603*92aae35fSTaniya Das }; 2604*92aae35fSTaniya Das 2605*92aae35fSTaniya Das static u32 cam_cc_kaanapali_critical_cbcrs[] = { 2606*92aae35fSTaniya Das 0x21398, /* CAM_CC_DRV_AHB_CLK */ 2607*92aae35fSTaniya Das 0x21390, /* CAM_CC_DRV_XO_CLK */ 2608*92aae35fSTaniya Das 0x21364, /* CAM_CC_GDSC_CLK */ 2609*92aae35fSTaniya Das 0x21368, /* CAM_CC_SLEEP_CLK */ 2610*92aae35fSTaniya Das }; 2611*92aae35fSTaniya Das 2612*92aae35fSTaniya Das static const struct regmap_config cam_cc_kaanapali_regmap_config = { 2613*92aae35fSTaniya Das .reg_bits = 32, 2614*92aae35fSTaniya Das .reg_stride = 4, 2615*92aae35fSTaniya Das .val_bits = 32, 2616*92aae35fSTaniya Das .max_register = 0x2601c, 2617*92aae35fSTaniya Das .fast_io = true, 2618*92aae35fSTaniya Das }; 2619*92aae35fSTaniya Das 2620*92aae35fSTaniya Das static struct qcom_cc_driver_data cam_cc_kaanapali_driver_data = { 2621*92aae35fSTaniya Das .alpha_plls = cam_cc_kaanapali_plls, 2622*92aae35fSTaniya Das .num_alpha_plls = ARRAY_SIZE(cam_cc_kaanapali_plls), 2623*92aae35fSTaniya Das .clk_cbcrs = cam_cc_kaanapali_critical_cbcrs, 2624*92aae35fSTaniya Das .num_clk_cbcrs = ARRAY_SIZE(cam_cc_kaanapali_critical_cbcrs), 2625*92aae35fSTaniya Das }; 2626*92aae35fSTaniya Das 2627*92aae35fSTaniya Das static const struct qcom_cc_desc cam_cc_kaanapali_desc = { 2628*92aae35fSTaniya Das .config = &cam_cc_kaanapali_regmap_config, 2629*92aae35fSTaniya Das .clks = cam_cc_kaanapali_clocks, 2630*92aae35fSTaniya Das .num_clks = ARRAY_SIZE(cam_cc_kaanapali_clocks), 2631*92aae35fSTaniya Das .resets = cam_cc_kaanapali_resets, 2632*92aae35fSTaniya Das .num_resets = ARRAY_SIZE(cam_cc_kaanapali_resets), 2633*92aae35fSTaniya Das .gdscs = cam_cc_kaanapali_gdscs, 2634*92aae35fSTaniya Das .num_gdscs = ARRAY_SIZE(cam_cc_kaanapali_gdscs), 2635*92aae35fSTaniya Das .use_rpm = true, 2636*92aae35fSTaniya Das .driver_data = &cam_cc_kaanapali_driver_data, 2637*92aae35fSTaniya Das }; 2638*92aae35fSTaniya Das 2639*92aae35fSTaniya Das static const struct of_device_id cam_cc_kaanapali_match_table[] = { 2640*92aae35fSTaniya Das { .compatible = "qcom,kaanapali-camcc" }, 2641*92aae35fSTaniya Das { } 2642*92aae35fSTaniya Das }; 2643*92aae35fSTaniya Das MODULE_DEVICE_TABLE(of, cam_cc_kaanapali_match_table); 2644*92aae35fSTaniya Das 2645*92aae35fSTaniya Das static int cam_cc_kaanapali_probe(struct platform_device *pdev) 2646*92aae35fSTaniya Das { 2647*92aae35fSTaniya Das return qcom_cc_probe(pdev, &cam_cc_kaanapali_desc); 2648*92aae35fSTaniya Das } 2649*92aae35fSTaniya Das 2650*92aae35fSTaniya Das static struct platform_driver cam_cc_kaanapali_driver = { 2651*92aae35fSTaniya Das .probe = cam_cc_kaanapali_probe, 2652*92aae35fSTaniya Das .driver = { 2653*92aae35fSTaniya Das .name = "camcc-kaanapali", 2654*92aae35fSTaniya Das .of_match_table = cam_cc_kaanapali_match_table, 2655*92aae35fSTaniya Das }, 2656*92aae35fSTaniya Das }; 2657*92aae35fSTaniya Das 2658*92aae35fSTaniya Das module_platform_driver(cam_cc_kaanapali_driver); 2659*92aae35fSTaniya Das 2660*92aae35fSTaniya Das MODULE_DESCRIPTION("QTI CAMCC Kaanapali Driver"); 2661*92aae35fSTaniya Das MODULE_LICENSE("GPL"); 2662