1*691f3413SSatya Priya Kakitapalli // SPDX-License-Identifier: GPL-2.0-only 2*691f3413SSatya Priya Kakitapalli /* 3*691f3413SSatya Priya Kakitapalli * Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved. 4*691f3413SSatya Priya Kakitapalli */ 5*691f3413SSatya Priya Kakitapalli 6*691f3413SSatya Priya Kakitapalli #include <linux/clk-provider.h> 7*691f3413SSatya Priya Kakitapalli #include <linux/mod_devicetable.h> 8*691f3413SSatya Priya Kakitapalli #include <linux/module.h> 9*691f3413SSatya Priya Kakitapalli #include <linux/platform_device.h> 10*691f3413SSatya Priya Kakitapalli #include <linux/pm_runtime.h> 11*691f3413SSatya Priya Kakitapalli #include <linux/regmap.h> 12*691f3413SSatya Priya Kakitapalli 13*691f3413SSatya Priya Kakitapalli #include <dt-bindings/clock/qcom,sc8180x-camcc.h> 14*691f3413SSatya Priya Kakitapalli 15*691f3413SSatya Priya Kakitapalli #include "clk-alpha-pll.h" 16*691f3413SSatya Priya Kakitapalli #include "clk-branch.h" 17*691f3413SSatya Priya Kakitapalli #include "clk-rcg.h" 18*691f3413SSatya Priya Kakitapalli #include "clk-regmap.h" 19*691f3413SSatya Priya Kakitapalli #include "common.h" 20*691f3413SSatya Priya Kakitapalli #include "gdsc.h" 21*691f3413SSatya Priya Kakitapalli #include "reset.h" 22*691f3413SSatya Priya Kakitapalli 23*691f3413SSatya Priya Kakitapalli enum { 24*691f3413SSatya Priya Kakitapalli DT_IFACE, 25*691f3413SSatya Priya Kakitapalli DT_BI_TCXO, 26*691f3413SSatya Priya Kakitapalli DT_SLEEP_CLK, 27*691f3413SSatya Priya Kakitapalli }; 28*691f3413SSatya Priya Kakitapalli 29*691f3413SSatya Priya Kakitapalli enum { 30*691f3413SSatya Priya Kakitapalli P_BI_TCXO, 31*691f3413SSatya Priya Kakitapalli P_CAM_CC_PLL0_OUT_EVEN, 32*691f3413SSatya Priya Kakitapalli P_CAM_CC_PLL0_OUT_MAIN, 33*691f3413SSatya Priya Kakitapalli P_CAM_CC_PLL0_OUT_ODD, 34*691f3413SSatya Priya Kakitapalli P_CAM_CC_PLL1_OUT_EVEN, 35*691f3413SSatya Priya Kakitapalli P_CAM_CC_PLL2_OUT_EARLY, 36*691f3413SSatya Priya Kakitapalli P_CAM_CC_PLL2_OUT_MAIN, 37*691f3413SSatya Priya Kakitapalli P_CAM_CC_PLL3_OUT_EVEN, 38*691f3413SSatya Priya Kakitapalli P_CAM_CC_PLL4_OUT_EVEN, 39*691f3413SSatya Priya Kakitapalli P_CAM_CC_PLL5_OUT_EVEN, 40*691f3413SSatya Priya Kakitapalli P_CAM_CC_PLL6_OUT_EVEN, 41*691f3413SSatya Priya Kakitapalli P_SLEEP_CLK, 42*691f3413SSatya Priya Kakitapalli }; 43*691f3413SSatya Priya Kakitapalli 44*691f3413SSatya Priya Kakitapalli static const struct pll_vco regera_vco[] = { 45*691f3413SSatya Priya Kakitapalli { 600000000, 3300000000, 0 }, 46*691f3413SSatya Priya Kakitapalli }; 47*691f3413SSatya Priya Kakitapalli 48*691f3413SSatya Priya Kakitapalli static const struct pll_vco trion_vco[] = { 49*691f3413SSatya Priya Kakitapalli { 249600000, 2000000000, 0 }, 50*691f3413SSatya Priya Kakitapalli }; 51*691f3413SSatya Priya Kakitapalli 52*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll0_config = { 53*691f3413SSatya Priya Kakitapalli .l = 0x3e, 54*691f3413SSatya Priya Kakitapalli .alpha = 0x8000, 55*691f3413SSatya Priya Kakitapalli .config_ctl_val = 0x20485699, 56*691f3413SSatya Priya Kakitapalli .config_ctl_hi_val = 0x00002267, 57*691f3413SSatya Priya Kakitapalli .config_ctl_hi1_val = 0x00000024, 58*691f3413SSatya Priya Kakitapalli .test_ctl_hi1_val = 0x00000020, 59*691f3413SSatya Priya Kakitapalli .user_ctl_val = 0x00003100, 60*691f3413SSatya Priya Kakitapalli .user_ctl_hi_val = 0x00000805, 61*691f3413SSatya Priya Kakitapalli .user_ctl_hi1_val = 0x000000d0, 62*691f3413SSatya Priya Kakitapalli }; 63*691f3413SSatya Priya Kakitapalli 64*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll0 = { 65*691f3413SSatya Priya Kakitapalli .offset = 0x0, 66*691f3413SSatya Priya Kakitapalli .vco_table = trion_vco, 67*691f3413SSatya Priya Kakitapalli .num_vco = ARRAY_SIZE(trion_vco), 68*691f3413SSatya Priya Kakitapalli .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION], 69*691f3413SSatya Priya Kakitapalli .clkr = { 70*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 71*691f3413SSatya Priya Kakitapalli .name = "cam_cc_pll0", 72*691f3413SSatya Priya Kakitapalli .parent_data = &(const struct clk_parent_data) { 73*691f3413SSatya Priya Kakitapalli .index = DT_BI_TCXO, 74*691f3413SSatya Priya Kakitapalli }, 75*691f3413SSatya Priya Kakitapalli .num_parents = 1, 76*691f3413SSatya Priya Kakitapalli .ops = &clk_alpha_pll_trion_ops, 77*691f3413SSatya Priya Kakitapalli }, 78*691f3413SSatya Priya Kakitapalli }, 79*691f3413SSatya Priya Kakitapalli }; 80*691f3413SSatya Priya Kakitapalli 81*691f3413SSatya Priya Kakitapalli static const struct clk_div_table post_div_table_cam_cc_pll0_out_even[] = { 82*691f3413SSatya Priya Kakitapalli { 0x1, 2 }, 83*691f3413SSatya Priya Kakitapalli { } 84*691f3413SSatya Priya Kakitapalli }; 85*691f3413SSatya Priya Kakitapalli 86*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll_postdiv cam_cc_pll0_out_even = { 87*691f3413SSatya Priya Kakitapalli .offset = 0x0, 88*691f3413SSatya Priya Kakitapalli .post_div_shift = 8, 89*691f3413SSatya Priya Kakitapalli .post_div_table = post_div_table_cam_cc_pll0_out_even, 90*691f3413SSatya Priya Kakitapalli .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_even), 91*691f3413SSatya Priya Kakitapalli .width = 4, 92*691f3413SSatya Priya Kakitapalli .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION], 93*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 94*691f3413SSatya Priya Kakitapalli .name = "cam_cc_pll0_out_even", 95*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 96*691f3413SSatya Priya Kakitapalli &cam_cc_pll0.clkr.hw, 97*691f3413SSatya Priya Kakitapalli }, 98*691f3413SSatya Priya Kakitapalli .num_parents = 1, 99*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 100*691f3413SSatya Priya Kakitapalli .ops = &clk_alpha_pll_postdiv_trion_ops, 101*691f3413SSatya Priya Kakitapalli }, 102*691f3413SSatya Priya Kakitapalli }; 103*691f3413SSatya Priya Kakitapalli 104*691f3413SSatya Priya Kakitapalli static const struct clk_div_table post_div_table_cam_cc_pll0_out_odd[] = { 105*691f3413SSatya Priya Kakitapalli { 0x3, 3 }, 106*691f3413SSatya Priya Kakitapalli { } 107*691f3413SSatya Priya Kakitapalli }; 108*691f3413SSatya Priya Kakitapalli 109*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll_postdiv cam_cc_pll0_out_odd = { 110*691f3413SSatya Priya Kakitapalli .offset = 0x0, 111*691f3413SSatya Priya Kakitapalli .post_div_shift = 12, 112*691f3413SSatya Priya Kakitapalli .post_div_table = post_div_table_cam_cc_pll0_out_odd, 113*691f3413SSatya Priya Kakitapalli .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_odd), 114*691f3413SSatya Priya Kakitapalli .width = 4, 115*691f3413SSatya Priya Kakitapalli .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION], 116*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 117*691f3413SSatya Priya Kakitapalli .name = "cam_cc_pll0_out_odd", 118*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 119*691f3413SSatya Priya Kakitapalli &cam_cc_pll0.clkr.hw, 120*691f3413SSatya Priya Kakitapalli }, 121*691f3413SSatya Priya Kakitapalli .num_parents = 1, 122*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 123*691f3413SSatya Priya Kakitapalli .ops = &clk_alpha_pll_postdiv_trion_ops, 124*691f3413SSatya Priya Kakitapalli }, 125*691f3413SSatya Priya Kakitapalli }; 126*691f3413SSatya Priya Kakitapalli 127*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll1_config = { 128*691f3413SSatya Priya Kakitapalli .l = 0x13, 129*691f3413SSatya Priya Kakitapalli .alpha = 0x8800, 130*691f3413SSatya Priya Kakitapalli .config_ctl_val = 0x20485699, 131*691f3413SSatya Priya Kakitapalli .config_ctl_hi_val = 0x00002267, 132*691f3413SSatya Priya Kakitapalli .config_ctl_hi1_val = 0x00000024, 133*691f3413SSatya Priya Kakitapalli .test_ctl_hi1_val = 0x00000020, 134*691f3413SSatya Priya Kakitapalli .user_ctl_val = 0x00000000, 135*691f3413SSatya Priya Kakitapalli .user_ctl_hi_val = 0x00000805, 136*691f3413SSatya Priya Kakitapalli .user_ctl_hi1_val = 0x000000d0, 137*691f3413SSatya Priya Kakitapalli }; 138*691f3413SSatya Priya Kakitapalli 139*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll1 = { 140*691f3413SSatya Priya Kakitapalli .offset = 0x1000, 141*691f3413SSatya Priya Kakitapalli .vco_table = trion_vco, 142*691f3413SSatya Priya Kakitapalli .num_vco = ARRAY_SIZE(trion_vco), 143*691f3413SSatya Priya Kakitapalli .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION], 144*691f3413SSatya Priya Kakitapalli .clkr = { 145*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 146*691f3413SSatya Priya Kakitapalli .name = "cam_cc_pll1", 147*691f3413SSatya Priya Kakitapalli .parent_data = &(const struct clk_parent_data) { 148*691f3413SSatya Priya Kakitapalli .index = DT_BI_TCXO, 149*691f3413SSatya Priya Kakitapalli }, 150*691f3413SSatya Priya Kakitapalli .num_parents = 1, 151*691f3413SSatya Priya Kakitapalli .ops = &clk_alpha_pll_trion_ops, 152*691f3413SSatya Priya Kakitapalli }, 153*691f3413SSatya Priya Kakitapalli }, 154*691f3413SSatya Priya Kakitapalli }; 155*691f3413SSatya Priya Kakitapalli 156*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll2_config = { 157*691f3413SSatya Priya Kakitapalli .l = 0x32, 158*691f3413SSatya Priya Kakitapalli .alpha = 0x0, 159*691f3413SSatya Priya Kakitapalli .config_ctl_val = 0x10000807, 160*691f3413SSatya Priya Kakitapalli .config_ctl_hi_val = 0x00000011, 161*691f3413SSatya Priya Kakitapalli .config_ctl_hi1_val = 0x04300142, 162*691f3413SSatya Priya Kakitapalli .test_ctl_val = 0x04000400, 163*691f3413SSatya Priya Kakitapalli .test_ctl_hi_val = 0x00004000, 164*691f3413SSatya Priya Kakitapalli .test_ctl_hi1_val = 0x00000000, 165*691f3413SSatya Priya Kakitapalli .user_ctl_val = 0x00000100, 166*691f3413SSatya Priya Kakitapalli }; 167*691f3413SSatya Priya Kakitapalli 168*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll2 = { 169*691f3413SSatya Priya Kakitapalli .offset = 0x2000, 170*691f3413SSatya Priya Kakitapalli .vco_table = regera_vco, 171*691f3413SSatya Priya Kakitapalli .num_vco = ARRAY_SIZE(regera_vco), 172*691f3413SSatya Priya Kakitapalli .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_REGERA], 173*691f3413SSatya Priya Kakitapalli .clkr = { 174*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 175*691f3413SSatya Priya Kakitapalli .name = "cam_cc_pll2", 176*691f3413SSatya Priya Kakitapalli .parent_data = &(const struct clk_parent_data) { 177*691f3413SSatya Priya Kakitapalli .index = DT_BI_TCXO, 178*691f3413SSatya Priya Kakitapalli }, 179*691f3413SSatya Priya Kakitapalli .num_parents = 1, 180*691f3413SSatya Priya Kakitapalli .ops = &clk_alpha_pll_regera_ops, 181*691f3413SSatya Priya Kakitapalli }, 182*691f3413SSatya Priya Kakitapalli }, 183*691f3413SSatya Priya Kakitapalli }; 184*691f3413SSatya Priya Kakitapalli 185*691f3413SSatya Priya Kakitapalli static const struct clk_div_table post_div_table_cam_cc_pll2_out_main[] = { 186*691f3413SSatya Priya Kakitapalli { 0x1, 2 }, 187*691f3413SSatya Priya Kakitapalli { } 188*691f3413SSatya Priya Kakitapalli }; 189*691f3413SSatya Priya Kakitapalli 190*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll_postdiv cam_cc_pll2_out_main = { 191*691f3413SSatya Priya Kakitapalli .offset = 0x2000, 192*691f3413SSatya Priya Kakitapalli .post_div_shift = 8, 193*691f3413SSatya Priya Kakitapalli .post_div_table = post_div_table_cam_cc_pll2_out_main, 194*691f3413SSatya Priya Kakitapalli .num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll2_out_main), 195*691f3413SSatya Priya Kakitapalli .width = 2, 196*691f3413SSatya Priya Kakitapalli .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_REGERA], 197*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 198*691f3413SSatya Priya Kakitapalli .name = "cam_cc_pll2_out_main", 199*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 200*691f3413SSatya Priya Kakitapalli &cam_cc_pll2.clkr.hw, 201*691f3413SSatya Priya Kakitapalli }, 202*691f3413SSatya Priya Kakitapalli .num_parents = 1, 203*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 204*691f3413SSatya Priya Kakitapalli .ops = &clk_alpha_pll_postdiv_trion_ops, 205*691f3413SSatya Priya Kakitapalli }, 206*691f3413SSatya Priya Kakitapalli }; 207*691f3413SSatya Priya Kakitapalli 208*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll3_config = { 209*691f3413SSatya Priya Kakitapalli .l = 0x14, 210*691f3413SSatya Priya Kakitapalli .alpha = 0xd555, 211*691f3413SSatya Priya Kakitapalli .config_ctl_val = 0x20485699, 212*691f3413SSatya Priya Kakitapalli .config_ctl_hi_val = 0x00002267, 213*691f3413SSatya Priya Kakitapalli .config_ctl_hi1_val = 0x00000024, 214*691f3413SSatya Priya Kakitapalli .test_ctl_hi1_val = 0x00000020, 215*691f3413SSatya Priya Kakitapalli .user_ctl_val = 0x00000000, 216*691f3413SSatya Priya Kakitapalli .user_ctl_hi_val = 0x00000805, 217*691f3413SSatya Priya Kakitapalli .user_ctl_hi1_val = 0x000000d0, 218*691f3413SSatya Priya Kakitapalli }; 219*691f3413SSatya Priya Kakitapalli 220*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll3 = { 221*691f3413SSatya Priya Kakitapalli .offset = 0x3000, 222*691f3413SSatya Priya Kakitapalli .vco_table = trion_vco, 223*691f3413SSatya Priya Kakitapalli .num_vco = ARRAY_SIZE(trion_vco), 224*691f3413SSatya Priya Kakitapalli .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION], 225*691f3413SSatya Priya Kakitapalli .clkr = { 226*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 227*691f3413SSatya Priya Kakitapalli .name = "cam_cc_pll3", 228*691f3413SSatya Priya Kakitapalli .parent_data = &(const struct clk_parent_data) { 229*691f3413SSatya Priya Kakitapalli .index = DT_BI_TCXO, 230*691f3413SSatya Priya Kakitapalli }, 231*691f3413SSatya Priya Kakitapalli .num_parents = 1, 232*691f3413SSatya Priya Kakitapalli .ops = &clk_alpha_pll_trion_ops, 233*691f3413SSatya Priya Kakitapalli }, 234*691f3413SSatya Priya Kakitapalli }, 235*691f3413SSatya Priya Kakitapalli }; 236*691f3413SSatya Priya Kakitapalli 237*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll4_config = { 238*691f3413SSatya Priya Kakitapalli .l = 0x14, 239*691f3413SSatya Priya Kakitapalli .alpha = 0xd555, 240*691f3413SSatya Priya Kakitapalli .config_ctl_val = 0x20485699, 241*691f3413SSatya Priya Kakitapalli .config_ctl_hi_val = 0x00002267, 242*691f3413SSatya Priya Kakitapalli .config_ctl_hi1_val = 0x00000024, 243*691f3413SSatya Priya Kakitapalli .test_ctl_hi1_val = 0x00000020, 244*691f3413SSatya Priya Kakitapalli .user_ctl_val = 0x00000000, 245*691f3413SSatya Priya Kakitapalli .user_ctl_hi_val = 0x00000805, 246*691f3413SSatya Priya Kakitapalli .user_ctl_hi1_val = 0x000000d0, 247*691f3413SSatya Priya Kakitapalli }; 248*691f3413SSatya Priya Kakitapalli 249*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll4 = { 250*691f3413SSatya Priya Kakitapalli .offset = 0x4000, 251*691f3413SSatya Priya Kakitapalli .vco_table = trion_vco, 252*691f3413SSatya Priya Kakitapalli .num_vco = ARRAY_SIZE(trion_vco), 253*691f3413SSatya Priya Kakitapalli .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION], 254*691f3413SSatya Priya Kakitapalli .clkr = { 255*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 256*691f3413SSatya Priya Kakitapalli .name = "cam_cc_pll4", 257*691f3413SSatya Priya Kakitapalli .parent_data = &(const struct clk_parent_data) { 258*691f3413SSatya Priya Kakitapalli .index = DT_BI_TCXO, 259*691f3413SSatya Priya Kakitapalli }, 260*691f3413SSatya Priya Kakitapalli .num_parents = 1, 261*691f3413SSatya Priya Kakitapalli .ops = &clk_alpha_pll_trion_ops, 262*691f3413SSatya Priya Kakitapalli }, 263*691f3413SSatya Priya Kakitapalli }, 264*691f3413SSatya Priya Kakitapalli }; 265*691f3413SSatya Priya Kakitapalli 266*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll5_config = { 267*691f3413SSatya Priya Kakitapalli .l = 0x14, 268*691f3413SSatya Priya Kakitapalli .alpha = 0xd555, 269*691f3413SSatya Priya Kakitapalli .config_ctl_val = 0x20485699, 270*691f3413SSatya Priya Kakitapalli .config_ctl_hi_val = 0x00002267, 271*691f3413SSatya Priya Kakitapalli .config_ctl_hi1_val = 0x00000024, 272*691f3413SSatya Priya Kakitapalli .test_ctl_hi1_val = 0x00000020, 273*691f3413SSatya Priya Kakitapalli .user_ctl_val = 0x00000000, 274*691f3413SSatya Priya Kakitapalli .user_ctl_hi_val = 0x00000805, 275*691f3413SSatya Priya Kakitapalli .user_ctl_hi1_val = 0x000000d0, 276*691f3413SSatya Priya Kakitapalli }; 277*691f3413SSatya Priya Kakitapalli 278*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll5 = { 279*691f3413SSatya Priya Kakitapalli .offset = 0x4078, 280*691f3413SSatya Priya Kakitapalli .vco_table = trion_vco, 281*691f3413SSatya Priya Kakitapalli .num_vco = ARRAY_SIZE(trion_vco), 282*691f3413SSatya Priya Kakitapalli .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION], 283*691f3413SSatya Priya Kakitapalli .clkr = { 284*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 285*691f3413SSatya Priya Kakitapalli .name = "cam_cc_pll5", 286*691f3413SSatya Priya Kakitapalli .parent_data = &(const struct clk_parent_data) { 287*691f3413SSatya Priya Kakitapalli .index = DT_BI_TCXO, 288*691f3413SSatya Priya Kakitapalli }, 289*691f3413SSatya Priya Kakitapalli .num_parents = 1, 290*691f3413SSatya Priya Kakitapalli .ops = &clk_alpha_pll_trion_ops, 291*691f3413SSatya Priya Kakitapalli }, 292*691f3413SSatya Priya Kakitapalli }, 293*691f3413SSatya Priya Kakitapalli }; 294*691f3413SSatya Priya Kakitapalli 295*691f3413SSatya Priya Kakitapalli static const struct alpha_pll_config cam_cc_pll6_config = { 296*691f3413SSatya Priya Kakitapalli .l = 0x14, 297*691f3413SSatya Priya Kakitapalli .alpha = 0xd555, 298*691f3413SSatya Priya Kakitapalli .config_ctl_val = 0x20485699, 299*691f3413SSatya Priya Kakitapalli .config_ctl_hi_val = 0x00002267, 300*691f3413SSatya Priya Kakitapalli .config_ctl_hi1_val = 0x00000024, 301*691f3413SSatya Priya Kakitapalli .test_ctl_hi1_val = 0x00000020, 302*691f3413SSatya Priya Kakitapalli .user_ctl_val = 0x00000000, 303*691f3413SSatya Priya Kakitapalli .user_ctl_hi_val = 0x00000805, 304*691f3413SSatya Priya Kakitapalli .user_ctl_hi1_val = 0x000000d0, 305*691f3413SSatya Priya Kakitapalli }; 306*691f3413SSatya Priya Kakitapalli 307*691f3413SSatya Priya Kakitapalli static struct clk_alpha_pll cam_cc_pll6 = { 308*691f3413SSatya Priya Kakitapalli .offset = 0x40f0, 309*691f3413SSatya Priya Kakitapalli .vco_table = trion_vco, 310*691f3413SSatya Priya Kakitapalli .num_vco = ARRAY_SIZE(trion_vco), 311*691f3413SSatya Priya Kakitapalli .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TRION], 312*691f3413SSatya Priya Kakitapalli .clkr = { 313*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 314*691f3413SSatya Priya Kakitapalli .name = "cam_cc_pll6", 315*691f3413SSatya Priya Kakitapalli .parent_data = &(const struct clk_parent_data) { 316*691f3413SSatya Priya Kakitapalli .index = DT_BI_TCXO, 317*691f3413SSatya Priya Kakitapalli }, 318*691f3413SSatya Priya Kakitapalli .num_parents = 1, 319*691f3413SSatya Priya Kakitapalli .ops = &clk_alpha_pll_trion_ops, 320*691f3413SSatya Priya Kakitapalli }, 321*691f3413SSatya Priya Kakitapalli }, 322*691f3413SSatya Priya Kakitapalli }; 323*691f3413SSatya Priya Kakitapalli 324*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_0[] = { 325*691f3413SSatya Priya Kakitapalli { P_BI_TCXO, 0 }, 326*691f3413SSatya Priya Kakitapalli { P_CAM_CC_PLL0_OUT_MAIN, 1 }, 327*691f3413SSatya Priya Kakitapalli { P_CAM_CC_PLL0_OUT_EVEN, 2 }, 328*691f3413SSatya Priya Kakitapalli { P_CAM_CC_PLL0_OUT_ODD, 3 }, 329*691f3413SSatya Priya Kakitapalli { P_CAM_CC_PLL2_OUT_MAIN, 5 }, 330*691f3413SSatya Priya Kakitapalli }; 331*691f3413SSatya Priya Kakitapalli 332*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_0[] = { 333*691f3413SSatya Priya Kakitapalli { .index = DT_BI_TCXO }, 334*691f3413SSatya Priya Kakitapalli { .hw = &cam_cc_pll0.clkr.hw }, 335*691f3413SSatya Priya Kakitapalli { .hw = &cam_cc_pll0_out_even.clkr.hw }, 336*691f3413SSatya Priya Kakitapalli { .hw = &cam_cc_pll0_out_odd.clkr.hw }, 337*691f3413SSatya Priya Kakitapalli { .hw = &cam_cc_pll2_out_main.clkr.hw }, 338*691f3413SSatya Priya Kakitapalli }; 339*691f3413SSatya Priya Kakitapalli 340*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_1[] = { 341*691f3413SSatya Priya Kakitapalli { P_BI_TCXO, 0 }, 342*691f3413SSatya Priya Kakitapalli { P_CAM_CC_PLL2_OUT_EARLY, 5 }, 343*691f3413SSatya Priya Kakitapalli }; 344*691f3413SSatya Priya Kakitapalli 345*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_1[] = { 346*691f3413SSatya Priya Kakitapalli { .index = DT_BI_TCXO }, 347*691f3413SSatya Priya Kakitapalli { .hw = &cam_cc_pll2.clkr.hw }, 348*691f3413SSatya Priya Kakitapalli }; 349*691f3413SSatya Priya Kakitapalli 350*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_2[] = { 351*691f3413SSatya Priya Kakitapalli { P_BI_TCXO, 0 }, 352*691f3413SSatya Priya Kakitapalli { P_CAM_CC_PLL3_OUT_EVEN, 6 }, 353*691f3413SSatya Priya Kakitapalli }; 354*691f3413SSatya Priya Kakitapalli 355*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_2[] = { 356*691f3413SSatya Priya Kakitapalli { .index = DT_BI_TCXO }, 357*691f3413SSatya Priya Kakitapalli { .hw = &cam_cc_pll3.clkr.hw }, 358*691f3413SSatya Priya Kakitapalli }; 359*691f3413SSatya Priya Kakitapalli 360*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_3[] = { 361*691f3413SSatya Priya Kakitapalli { P_BI_TCXO, 0 }, 362*691f3413SSatya Priya Kakitapalli { P_CAM_CC_PLL4_OUT_EVEN, 6 }, 363*691f3413SSatya Priya Kakitapalli }; 364*691f3413SSatya Priya Kakitapalli 365*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_3[] = { 366*691f3413SSatya Priya Kakitapalli { .index = DT_BI_TCXO }, 367*691f3413SSatya Priya Kakitapalli { .hw = &cam_cc_pll4.clkr.hw }, 368*691f3413SSatya Priya Kakitapalli }; 369*691f3413SSatya Priya Kakitapalli 370*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_4[] = { 371*691f3413SSatya Priya Kakitapalli { P_BI_TCXO, 0 }, 372*691f3413SSatya Priya Kakitapalli { P_CAM_CC_PLL5_OUT_EVEN, 6 }, 373*691f3413SSatya Priya Kakitapalli }; 374*691f3413SSatya Priya Kakitapalli 375*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_4[] = { 376*691f3413SSatya Priya Kakitapalli { .index = DT_BI_TCXO }, 377*691f3413SSatya Priya Kakitapalli { .hw = &cam_cc_pll5.clkr.hw }, 378*691f3413SSatya Priya Kakitapalli }; 379*691f3413SSatya Priya Kakitapalli 380*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_5[] = { 381*691f3413SSatya Priya Kakitapalli { P_BI_TCXO, 0 }, 382*691f3413SSatya Priya Kakitapalli { P_CAM_CC_PLL6_OUT_EVEN, 6 }, 383*691f3413SSatya Priya Kakitapalli }; 384*691f3413SSatya Priya Kakitapalli 385*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_5[] = { 386*691f3413SSatya Priya Kakitapalli { .index = DT_BI_TCXO }, 387*691f3413SSatya Priya Kakitapalli { .hw = &cam_cc_pll6.clkr.hw }, 388*691f3413SSatya Priya Kakitapalli }; 389*691f3413SSatya Priya Kakitapalli 390*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_6[] = { 391*691f3413SSatya Priya Kakitapalli { P_BI_TCXO, 0 }, 392*691f3413SSatya Priya Kakitapalli { P_CAM_CC_PLL1_OUT_EVEN, 4 }, 393*691f3413SSatya Priya Kakitapalli }; 394*691f3413SSatya Priya Kakitapalli 395*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_6[] = { 396*691f3413SSatya Priya Kakitapalli { .index = DT_BI_TCXO }, 397*691f3413SSatya Priya Kakitapalli { .hw = &cam_cc_pll1.clkr.hw }, 398*691f3413SSatya Priya Kakitapalli }; 399*691f3413SSatya Priya Kakitapalli 400*691f3413SSatya Priya Kakitapalli static const struct parent_map cam_cc_parent_map_7[] = { 401*691f3413SSatya Priya Kakitapalli { P_BI_TCXO, 0 }, 402*691f3413SSatya Priya Kakitapalli }; 403*691f3413SSatya Priya Kakitapalli 404*691f3413SSatya Priya Kakitapalli static const struct clk_parent_data cam_cc_parent_data_7[] = { 405*691f3413SSatya Priya Kakitapalli { .index = DT_BI_TCXO }, 406*691f3413SSatya Priya Kakitapalli }; 407*691f3413SSatya Priya Kakitapalli 408*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_bps_clk_src[] = { 409*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 410*691f3413SSatya Priya Kakitapalli F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0), 411*691f3413SSatya Priya Kakitapalli F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0), 412*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 413*691f3413SSatya Priya Kakitapalli F(480000000, P_CAM_CC_PLL2_OUT_MAIN, 1, 0, 0), 414*691f3413SSatya Priya Kakitapalli F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0), 415*691f3413SSatya Priya Kakitapalli { } 416*691f3413SSatya Priya Kakitapalli }; 417*691f3413SSatya Priya Kakitapalli 418*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_bps_clk_src = { 419*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x7010, 420*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 421*691f3413SSatya Priya Kakitapalli .hid_width = 5, 422*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 423*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_bps_clk_src, 424*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 425*691f3413SSatya Priya Kakitapalli .name = "cam_cc_bps_clk_src", 426*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 427*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 428*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 429*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 430*691f3413SSatya Priya Kakitapalli }, 431*691f3413SSatya Priya Kakitapalli }; 432*691f3413SSatya Priya Kakitapalli 433*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_camnoc_axi_clk_src[] = { 434*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 435*691f3413SSatya Priya Kakitapalli F(150000000, P_CAM_CC_PLL0_OUT_EVEN, 4, 0, 0), 436*691f3413SSatya Priya Kakitapalli F(266666667, P_CAM_CC_PLL0_OUT_ODD, 1.5, 0, 0), 437*691f3413SSatya Priya Kakitapalli F(320000000, P_CAM_CC_PLL2_OUT_MAIN, 1.5, 0, 0), 438*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0), 439*691f3413SSatya Priya Kakitapalli F(480000000, P_CAM_CC_PLL2_OUT_MAIN, 1, 0, 0), 440*691f3413SSatya Priya Kakitapalli { } 441*691f3413SSatya Priya Kakitapalli }; 442*691f3413SSatya Priya Kakitapalli 443*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_camnoc_axi_clk_src = { 444*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc170, 445*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 446*691f3413SSatya Priya Kakitapalli .hid_width = 5, 447*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 448*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_camnoc_axi_clk_src, 449*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 450*691f3413SSatya Priya Kakitapalli .name = "cam_cc_camnoc_axi_clk_src", 451*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 452*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 453*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 454*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 455*691f3413SSatya Priya Kakitapalli }, 456*691f3413SSatya Priya Kakitapalli }; 457*691f3413SSatya Priya Kakitapalli 458*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_cci_0_clk_src[] = { 459*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 460*691f3413SSatya Priya Kakitapalli F(37500000, P_CAM_CC_PLL0_OUT_EVEN, 16, 0, 0), 461*691f3413SSatya Priya Kakitapalli { } 462*691f3413SSatya Priya Kakitapalli }; 463*691f3413SSatya Priya Kakitapalli 464*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_cci_0_clk_src = { 465*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc108, 466*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 467*691f3413SSatya Priya Kakitapalli .hid_width = 5, 468*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 469*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_cci_0_clk_src, 470*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 471*691f3413SSatya Priya Kakitapalli .name = "cam_cc_cci_0_clk_src", 472*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 473*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 474*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 475*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 476*691f3413SSatya Priya Kakitapalli }, 477*691f3413SSatya Priya Kakitapalli }; 478*691f3413SSatya Priya Kakitapalli 479*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_cci_1_clk_src = { 480*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc124, 481*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 482*691f3413SSatya Priya Kakitapalli .hid_width = 5, 483*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 484*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_cci_0_clk_src, 485*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 486*691f3413SSatya Priya Kakitapalli .name = "cam_cc_cci_1_clk_src", 487*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 488*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 489*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 490*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 491*691f3413SSatya Priya Kakitapalli }, 492*691f3413SSatya Priya Kakitapalli }; 493*691f3413SSatya Priya Kakitapalli 494*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_cci_2_clk_src = { 495*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc204, 496*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 497*691f3413SSatya Priya Kakitapalli .hid_width = 5, 498*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 499*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_cci_0_clk_src, 500*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 501*691f3413SSatya Priya Kakitapalli .name = "cam_cc_cci_2_clk_src", 502*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 503*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 504*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 505*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 506*691f3413SSatya Priya Kakitapalli }, 507*691f3413SSatya Priya Kakitapalli }; 508*691f3413SSatya Priya Kakitapalli 509*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_cci_3_clk_src = { 510*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc220, 511*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 512*691f3413SSatya Priya Kakitapalli .hid_width = 5, 513*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 514*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_cci_0_clk_src, 515*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 516*691f3413SSatya Priya Kakitapalli .name = "cam_cc_cci_3_clk_src", 517*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 518*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 519*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 520*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 521*691f3413SSatya Priya Kakitapalli }, 522*691f3413SSatya Priya Kakitapalli }; 523*691f3413SSatya Priya Kakitapalli 524*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_cphy_rx_clk_src[] = { 525*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 526*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 527*691f3413SSatya Priya Kakitapalli { } 528*691f3413SSatya Priya Kakitapalli }; 529*691f3413SSatya Priya Kakitapalli 530*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_cphy_rx_clk_src = { 531*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xa064, 532*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 533*691f3413SSatya Priya Kakitapalli .hid_width = 5, 534*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 535*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_cphy_rx_clk_src, 536*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 537*691f3413SSatya Priya Kakitapalli .name = "cam_cc_cphy_rx_clk_src", 538*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 539*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 540*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 541*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 542*691f3413SSatya Priya Kakitapalli }, 543*691f3413SSatya Priya Kakitapalli }; 544*691f3413SSatya Priya Kakitapalli 545*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_csi0phytimer_clk_src[] = { 546*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 547*691f3413SSatya Priya Kakitapalli F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0), 548*691f3413SSatya Priya Kakitapalli { } 549*691f3413SSatya Priya Kakitapalli }; 550*691f3413SSatya Priya Kakitapalli 551*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_csi0phytimer_clk_src = { 552*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x6004, 553*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 554*691f3413SSatya Priya Kakitapalli .hid_width = 5, 555*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 556*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 557*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 558*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csi0phytimer_clk_src", 559*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 560*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 561*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 562*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 563*691f3413SSatya Priya Kakitapalli }, 564*691f3413SSatya Priya Kakitapalli }; 565*691f3413SSatya Priya Kakitapalli 566*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_csi1phytimer_clk_src = { 567*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x6028, 568*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 569*691f3413SSatya Priya Kakitapalli .hid_width = 5, 570*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 571*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 572*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 573*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csi1phytimer_clk_src", 574*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 575*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 576*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 577*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 578*691f3413SSatya Priya Kakitapalli }, 579*691f3413SSatya Priya Kakitapalli }; 580*691f3413SSatya Priya Kakitapalli 581*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_csi2phytimer_clk_src = { 582*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x604c, 583*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 584*691f3413SSatya Priya Kakitapalli .hid_width = 5, 585*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 586*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 587*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 588*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csi2phytimer_clk_src", 589*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 590*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 591*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 592*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 593*691f3413SSatya Priya Kakitapalli }, 594*691f3413SSatya Priya Kakitapalli }; 595*691f3413SSatya Priya Kakitapalli 596*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_csi3phytimer_clk_src = { 597*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x6070, 598*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 599*691f3413SSatya Priya Kakitapalli .hid_width = 5, 600*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 601*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src, 602*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 603*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csi3phytimer_clk_src", 604*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 605*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 606*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 607*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 608*691f3413SSatya Priya Kakitapalli }, 609*691f3413SSatya Priya Kakitapalli }; 610*691f3413SSatya Priya Kakitapalli 611*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_fast_ahb_clk_src[] = { 612*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 613*691f3413SSatya Priya Kakitapalli F(50000000, P_CAM_CC_PLL0_OUT_EVEN, 12, 0, 0), 614*691f3413SSatya Priya Kakitapalli F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0), 615*691f3413SSatya Priya Kakitapalli F(200000000, P_CAM_CC_PLL0_OUT_EVEN, 3, 0, 0), 616*691f3413SSatya Priya Kakitapalli F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0), 617*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0), 618*691f3413SSatya Priya Kakitapalli { } 619*691f3413SSatya Priya Kakitapalli }; 620*691f3413SSatya Priya Kakitapalli 621*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_fast_ahb_clk_src = { 622*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x703c, 623*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 624*691f3413SSatya Priya Kakitapalli .hid_width = 5, 625*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 626*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_fast_ahb_clk_src, 627*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 628*691f3413SSatya Priya Kakitapalli .name = "cam_cc_fast_ahb_clk_src", 629*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 630*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 631*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 632*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 633*691f3413SSatya Priya Kakitapalli }, 634*691f3413SSatya Priya Kakitapalli }; 635*691f3413SSatya Priya Kakitapalli 636*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_fd_core_clk_src[] = { 637*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 638*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 639*691f3413SSatya Priya Kakitapalli F(480000000, P_CAM_CC_PLL2_OUT_MAIN, 1, 0, 0), 640*691f3413SSatya Priya Kakitapalli F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0), 641*691f3413SSatya Priya Kakitapalli { } 642*691f3413SSatya Priya Kakitapalli }; 643*691f3413SSatya Priya Kakitapalli 644*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_fd_core_clk_src = { 645*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc0e0, 646*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 647*691f3413SSatya Priya Kakitapalli .hid_width = 5, 648*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 649*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_fd_core_clk_src, 650*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 651*691f3413SSatya Priya Kakitapalli .name = "cam_cc_fd_core_clk_src", 652*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 653*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 654*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 655*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 656*691f3413SSatya Priya Kakitapalli }, 657*691f3413SSatya Priya Kakitapalli }; 658*691f3413SSatya Priya Kakitapalli 659*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_icp_clk_src[] = { 660*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 661*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 662*691f3413SSatya Priya Kakitapalli F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0), 663*691f3413SSatya Priya Kakitapalli { } 664*691f3413SSatya Priya Kakitapalli }; 665*691f3413SSatya Priya Kakitapalli 666*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_icp_clk_src = { 667*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc0b8, 668*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 669*691f3413SSatya Priya Kakitapalli .hid_width = 5, 670*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 671*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_icp_clk_src, 672*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 673*691f3413SSatya Priya Kakitapalli .name = "cam_cc_icp_clk_src", 674*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 675*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 676*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 677*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 678*691f3413SSatya Priya Kakitapalli }, 679*691f3413SSatya Priya Kakitapalli }; 680*691f3413SSatya Priya Kakitapalli 681*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_0_clk_src[] = { 682*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 683*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 684*691f3413SSatya Priya Kakitapalli F(558000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 685*691f3413SSatya Priya Kakitapalli F(637000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 686*691f3413SSatya Priya Kakitapalli F(760000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0), 687*691f3413SSatya Priya Kakitapalli { } 688*691f3413SSatya Priya Kakitapalli }; 689*691f3413SSatya Priya Kakitapalli 690*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_0_clk_src = { 691*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xa010, 692*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 693*691f3413SSatya Priya Kakitapalli .hid_width = 5, 694*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_2, 695*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_ife_0_clk_src, 696*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 697*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_0_clk_src", 698*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_2, 699*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_2), 700*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 701*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 702*691f3413SSatya Priya Kakitapalli }, 703*691f3413SSatya Priya Kakitapalli }; 704*691f3413SSatya Priya Kakitapalli 705*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_0_csid_clk_src[] = { 706*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 707*691f3413SSatya Priya Kakitapalli F(75000000, P_CAM_CC_PLL0_OUT_EVEN, 8, 0, 0), 708*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 709*691f3413SSatya Priya Kakitapalli F(480000000, P_CAM_CC_PLL2_OUT_MAIN, 1, 0, 0), 710*691f3413SSatya Priya Kakitapalli F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0), 711*691f3413SSatya Priya Kakitapalli { } 712*691f3413SSatya Priya Kakitapalli }; 713*691f3413SSatya Priya Kakitapalli 714*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_0_csid_clk_src = { 715*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xa03c, 716*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 717*691f3413SSatya Priya Kakitapalli .hid_width = 5, 718*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 719*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_ife_0_csid_clk_src, 720*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 721*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_0_csid_clk_src", 722*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 723*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 724*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 725*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 726*691f3413SSatya Priya Kakitapalli }, 727*691f3413SSatya Priya Kakitapalli }; 728*691f3413SSatya Priya Kakitapalli 729*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_1_clk_src[] = { 730*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 731*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 732*691f3413SSatya Priya Kakitapalli F(558000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 733*691f3413SSatya Priya Kakitapalli F(637000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 734*691f3413SSatya Priya Kakitapalli F(760000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0), 735*691f3413SSatya Priya Kakitapalli { } 736*691f3413SSatya Priya Kakitapalli }; 737*691f3413SSatya Priya Kakitapalli 738*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_1_clk_src = { 739*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xb010, 740*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 741*691f3413SSatya Priya Kakitapalli .hid_width = 5, 742*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_3, 743*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_ife_1_clk_src, 744*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 745*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_1_clk_src", 746*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_3, 747*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_3), 748*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 749*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 750*691f3413SSatya Priya Kakitapalli }, 751*691f3413SSatya Priya Kakitapalli }; 752*691f3413SSatya Priya Kakitapalli 753*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_1_csid_clk_src = { 754*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xb034, 755*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 756*691f3413SSatya Priya Kakitapalli .hid_width = 5, 757*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 758*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_ife_0_csid_clk_src, 759*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 760*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_1_csid_clk_src", 761*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 762*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 763*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 764*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 765*691f3413SSatya Priya Kakitapalli }, 766*691f3413SSatya Priya Kakitapalli }; 767*691f3413SSatya Priya Kakitapalli 768*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_2_clk_src[] = { 769*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 770*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 771*691f3413SSatya Priya Kakitapalli F(558000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 772*691f3413SSatya Priya Kakitapalli F(637000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 773*691f3413SSatya Priya Kakitapalli F(760000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0), 774*691f3413SSatya Priya Kakitapalli { } 775*691f3413SSatya Priya Kakitapalli }; 776*691f3413SSatya Priya Kakitapalli 777*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_2_clk_src = { 778*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xf010, 779*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 780*691f3413SSatya Priya Kakitapalli .hid_width = 5, 781*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_4, 782*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_ife_2_clk_src, 783*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 784*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_2_clk_src", 785*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_4, 786*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_4), 787*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 788*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 789*691f3413SSatya Priya Kakitapalli }, 790*691f3413SSatya Priya Kakitapalli }; 791*691f3413SSatya Priya Kakitapalli 792*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_2_csid_clk_src = { 793*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xf03c, 794*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 795*691f3413SSatya Priya Kakitapalli .hid_width = 5, 796*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 797*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_fd_core_clk_src, 798*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 799*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_2_csid_clk_src", 800*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 801*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 802*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 803*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 804*691f3413SSatya Priya Kakitapalli }, 805*691f3413SSatya Priya Kakitapalli }; 806*691f3413SSatya Priya Kakitapalli 807*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_3_clk_src[] = { 808*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 809*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 810*691f3413SSatya Priya Kakitapalli F(558000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 811*691f3413SSatya Priya Kakitapalli F(637000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 812*691f3413SSatya Priya Kakitapalli F(760000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0), 813*691f3413SSatya Priya Kakitapalli { } 814*691f3413SSatya Priya Kakitapalli }; 815*691f3413SSatya Priya Kakitapalli 816*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_3_clk_src = { 817*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xf07c, 818*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 819*691f3413SSatya Priya Kakitapalli .hid_width = 5, 820*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_5, 821*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_ife_3_clk_src, 822*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 823*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_3_clk_src", 824*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_5, 825*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_5), 826*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 827*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 828*691f3413SSatya Priya Kakitapalli }, 829*691f3413SSatya Priya Kakitapalli }; 830*691f3413SSatya Priya Kakitapalli 831*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_3_csid_clk_src = { 832*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xf0a8, 833*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 834*691f3413SSatya Priya Kakitapalli .hid_width = 5, 835*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 836*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_fd_core_clk_src, 837*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 838*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_3_csid_clk_src", 839*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 840*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 841*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 842*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 843*691f3413SSatya Priya Kakitapalli }, 844*691f3413SSatya Priya Kakitapalli }; 845*691f3413SSatya Priya Kakitapalli 846*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ife_lite_0_clk_src[] = { 847*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 848*691f3413SSatya Priya Kakitapalli F(320000000, P_CAM_CC_PLL2_OUT_MAIN, 1.5, 0, 0), 849*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0), 850*691f3413SSatya Priya Kakitapalli F(480000000, P_CAM_CC_PLL2_OUT_MAIN, 1, 0, 0), 851*691f3413SSatya Priya Kakitapalli F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0), 852*691f3413SSatya Priya Kakitapalli { } 853*691f3413SSatya Priya Kakitapalli }; 854*691f3413SSatya Priya Kakitapalli 855*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_0_clk_src = { 856*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc004, 857*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 858*691f3413SSatya Priya Kakitapalli .hid_width = 5, 859*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 860*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_ife_lite_0_clk_src, 861*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 862*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_0_clk_src", 863*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 864*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 865*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 866*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 867*691f3413SSatya Priya Kakitapalli }, 868*691f3413SSatya Priya Kakitapalli }; 869*691f3413SSatya Priya Kakitapalli 870*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_0_csid_clk_src = { 871*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc020, 872*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 873*691f3413SSatya Priya Kakitapalli .hid_width = 5, 874*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 875*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_fd_core_clk_src, 876*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 877*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_0_csid_clk_src", 878*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 879*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 880*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 881*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 882*691f3413SSatya Priya Kakitapalli }, 883*691f3413SSatya Priya Kakitapalli }; 884*691f3413SSatya Priya Kakitapalli 885*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_1_clk_src = { 886*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc048, 887*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 888*691f3413SSatya Priya Kakitapalli .hid_width = 5, 889*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 890*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_ife_lite_0_clk_src, 891*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 892*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_1_clk_src", 893*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 894*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 895*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 896*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 897*691f3413SSatya Priya Kakitapalli }, 898*691f3413SSatya Priya Kakitapalli }; 899*691f3413SSatya Priya Kakitapalli 900*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_1_csid_clk_src = { 901*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc064, 902*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 903*691f3413SSatya Priya Kakitapalli .hid_width = 5, 904*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 905*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_fd_core_clk_src, 906*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 907*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_1_csid_clk_src", 908*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 909*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 910*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 911*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 912*691f3413SSatya Priya Kakitapalli }, 913*691f3413SSatya Priya Kakitapalli }; 914*691f3413SSatya Priya Kakitapalli 915*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_2_clk_src = { 916*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc240, 917*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 918*691f3413SSatya Priya Kakitapalli .hid_width = 5, 919*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 920*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_ife_lite_0_clk_src, 921*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 922*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_2_clk_src", 923*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 924*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 925*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 926*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 927*691f3413SSatya Priya Kakitapalli }, 928*691f3413SSatya Priya Kakitapalli }; 929*691f3413SSatya Priya Kakitapalli 930*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_2_csid_clk_src = { 931*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc25c, 932*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 933*691f3413SSatya Priya Kakitapalli .hid_width = 5, 934*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 935*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_fd_core_clk_src, 936*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 937*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_2_csid_clk_src", 938*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 939*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 940*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 941*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 942*691f3413SSatya Priya Kakitapalli }, 943*691f3413SSatya Priya Kakitapalli }; 944*691f3413SSatya Priya Kakitapalli 945*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_3_clk_src = { 946*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc284, 947*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 948*691f3413SSatya Priya Kakitapalli .hid_width = 5, 949*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 950*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_ife_lite_0_clk_src, 951*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 952*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_3_clk_src", 953*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 954*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 955*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 956*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 957*691f3413SSatya Priya Kakitapalli }, 958*691f3413SSatya Priya Kakitapalli }; 959*691f3413SSatya Priya Kakitapalli 960*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ife_lite_3_csid_clk_src = { 961*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc2a0, 962*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 963*691f3413SSatya Priya Kakitapalli .hid_width = 5, 964*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 965*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_fd_core_clk_src, 966*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 967*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_3_csid_clk_src", 968*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 969*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 970*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 971*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 972*691f3413SSatya Priya Kakitapalli }, 973*691f3413SSatya Priya Kakitapalli }; 974*691f3413SSatya Priya Kakitapalli 975*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_ipe_0_clk_src[] = { 976*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 977*691f3413SSatya Priya Kakitapalli F(375000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 978*691f3413SSatya Priya Kakitapalli F(475000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 979*691f3413SSatya Priya Kakitapalli F(520000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 980*691f3413SSatya Priya Kakitapalli F(600000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0), 981*691f3413SSatya Priya Kakitapalli { } 982*691f3413SSatya Priya Kakitapalli }; 983*691f3413SSatya Priya Kakitapalli 984*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_ipe_0_clk_src = { 985*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x8010, 986*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 987*691f3413SSatya Priya Kakitapalli .hid_width = 5, 988*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_6, 989*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_ipe_0_clk_src, 990*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 991*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ipe_0_clk_src", 992*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_6, 993*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_6), 994*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 995*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 996*691f3413SSatya Priya Kakitapalli }, 997*691f3413SSatya Priya Kakitapalli }; 998*691f3413SSatya Priya Kakitapalli 999*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_jpeg_clk_src = { 1000*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc08c, 1001*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 1002*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1003*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 1004*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_bps_clk_src, 1005*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1006*691f3413SSatya Priya Kakitapalli .name = "cam_cc_jpeg_clk_src", 1007*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 1008*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 1009*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1010*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1011*691f3413SSatya Priya Kakitapalli }, 1012*691f3413SSatya Priya Kakitapalli }; 1013*691f3413SSatya Priya Kakitapalli 1014*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_lrme_clk_src[] = { 1015*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 1016*691f3413SSatya Priya Kakitapalli F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0), 1017*691f3413SSatya Priya Kakitapalli F(240000000, P_CAM_CC_PLL2_OUT_MAIN, 2, 0, 0), 1018*691f3413SSatya Priya Kakitapalli F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0), 1019*691f3413SSatya Priya Kakitapalli F(320000000, P_CAM_CC_PLL2_OUT_MAIN, 1.5, 0, 0), 1020*691f3413SSatya Priya Kakitapalli F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0), 1021*691f3413SSatya Priya Kakitapalli { } 1022*691f3413SSatya Priya Kakitapalli }; 1023*691f3413SSatya Priya Kakitapalli 1024*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_lrme_clk_src = { 1025*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc144, 1026*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 1027*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1028*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 1029*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_lrme_clk_src, 1030*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1031*691f3413SSatya Priya Kakitapalli .name = "cam_cc_lrme_clk_src", 1032*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 1033*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 1034*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1035*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1036*691f3413SSatya Priya Kakitapalli }, 1037*691f3413SSatya Priya Kakitapalli }; 1038*691f3413SSatya Priya Kakitapalli 1039*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_mclk0_clk_src[] = { 1040*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 1041*691f3413SSatya Priya Kakitapalli F(24000000, P_CAM_CC_PLL2_OUT_EARLY, 10, 1, 4), 1042*691f3413SSatya Priya Kakitapalli F(68571429, P_CAM_CC_PLL2_OUT_EARLY, 14, 0, 0), 1043*691f3413SSatya Priya Kakitapalli { } 1044*691f3413SSatya Priya Kakitapalli }; 1045*691f3413SSatya Priya Kakitapalli 1046*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk0_clk_src = { 1047*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x5004, 1048*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 1049*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1050*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_1, 1051*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 1052*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1053*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk0_clk_src", 1054*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_1, 1055*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 1056*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1057*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1058*691f3413SSatya Priya Kakitapalli }, 1059*691f3413SSatya Priya Kakitapalli }; 1060*691f3413SSatya Priya Kakitapalli 1061*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk1_clk_src = { 1062*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x5024, 1063*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 1064*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1065*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_1, 1066*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 1067*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1068*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk1_clk_src", 1069*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_1, 1070*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 1071*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1072*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1073*691f3413SSatya Priya Kakitapalli }, 1074*691f3413SSatya Priya Kakitapalli }; 1075*691f3413SSatya Priya Kakitapalli 1076*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk2_clk_src = { 1077*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x5044, 1078*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 1079*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1080*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_1, 1081*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 1082*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1083*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk2_clk_src", 1084*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_1, 1085*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 1086*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1087*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1088*691f3413SSatya Priya Kakitapalli }, 1089*691f3413SSatya Priya Kakitapalli }; 1090*691f3413SSatya Priya Kakitapalli 1091*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk3_clk_src = { 1092*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x5064, 1093*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 1094*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1095*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_1, 1096*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 1097*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1098*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk3_clk_src", 1099*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_1, 1100*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 1101*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1102*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1103*691f3413SSatya Priya Kakitapalli }, 1104*691f3413SSatya Priya Kakitapalli }; 1105*691f3413SSatya Priya Kakitapalli 1106*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk4_clk_src = { 1107*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x5084, 1108*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 1109*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1110*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_1, 1111*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 1112*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1113*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk4_clk_src", 1114*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_1, 1115*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 1116*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1117*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1118*691f3413SSatya Priya Kakitapalli }, 1119*691f3413SSatya Priya Kakitapalli }; 1120*691f3413SSatya Priya Kakitapalli 1121*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk5_clk_src = { 1122*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x50a4, 1123*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 1124*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1125*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_1, 1126*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 1127*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1128*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk5_clk_src", 1129*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_1, 1130*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 1131*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1132*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1133*691f3413SSatya Priya Kakitapalli }, 1134*691f3413SSatya Priya Kakitapalli }; 1135*691f3413SSatya Priya Kakitapalli 1136*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk6_clk_src = { 1137*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x50c4, 1138*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 1139*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1140*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_1, 1141*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 1142*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1143*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk6_clk_src", 1144*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_1, 1145*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 1146*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1147*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1148*691f3413SSatya Priya Kakitapalli }, 1149*691f3413SSatya Priya Kakitapalli }; 1150*691f3413SSatya Priya Kakitapalli 1151*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_mclk7_clk_src = { 1152*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x50e4, 1153*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 1154*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1155*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_1, 1156*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_mclk0_clk_src, 1157*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1158*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk7_clk_src", 1159*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_1, 1160*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_1), 1161*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1162*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1163*691f3413SSatya Priya Kakitapalli }, 1164*691f3413SSatya Priya Kakitapalli }; 1165*691f3413SSatya Priya Kakitapalli 1166*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src[] = { 1167*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 1168*691f3413SSatya Priya Kakitapalli F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 7.5, 0, 0), 1169*691f3413SSatya Priya Kakitapalli { } 1170*691f3413SSatya Priya Kakitapalli }; 1171*691f3413SSatya Priya Kakitapalli 1172*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_slow_ahb_clk_src = { 1173*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0x7058, 1174*691f3413SSatya Priya Kakitapalli .mnd_width = 8, 1175*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1176*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_0, 1177*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_slow_ahb_clk_src, 1178*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1179*691f3413SSatya Priya Kakitapalli .name = "cam_cc_slow_ahb_clk_src", 1180*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_0, 1181*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_0), 1182*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1183*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1184*691f3413SSatya Priya Kakitapalli }, 1185*691f3413SSatya Priya Kakitapalli }; 1186*691f3413SSatya Priya Kakitapalli 1187*691f3413SSatya Priya Kakitapalli static const struct freq_tbl ftbl_cam_cc_xo_clk_src[] = { 1188*691f3413SSatya Priya Kakitapalli F(19200000, P_BI_TCXO, 1, 0, 0), 1189*691f3413SSatya Priya Kakitapalli { } 1190*691f3413SSatya Priya Kakitapalli }; 1191*691f3413SSatya Priya Kakitapalli 1192*691f3413SSatya Priya Kakitapalli static struct clk_rcg2 cam_cc_xo_clk_src = { 1193*691f3413SSatya Priya Kakitapalli .cmd_rcgr = 0xc1cc, 1194*691f3413SSatya Priya Kakitapalli .mnd_width = 0, 1195*691f3413SSatya Priya Kakitapalli .hid_width = 5, 1196*691f3413SSatya Priya Kakitapalli .parent_map = cam_cc_parent_map_7, 1197*691f3413SSatya Priya Kakitapalli .freq_tbl = ftbl_cam_cc_xo_clk_src, 1198*691f3413SSatya Priya Kakitapalli .clkr.hw.init = &(const struct clk_init_data) { 1199*691f3413SSatya Priya Kakitapalli .name = "cam_cc_xo_clk_src", 1200*691f3413SSatya Priya Kakitapalli .parent_data = cam_cc_parent_data_7, 1201*691f3413SSatya Priya Kakitapalli .num_parents = ARRAY_SIZE(cam_cc_parent_data_7), 1202*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1203*691f3413SSatya Priya Kakitapalli .ops = &clk_rcg2_shared_ops, 1204*691f3413SSatya Priya Kakitapalli }, 1205*691f3413SSatya Priya Kakitapalli }; 1206*691f3413SSatya Priya Kakitapalli 1207*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_bps_ahb_clk = { 1208*691f3413SSatya Priya Kakitapalli .halt_reg = 0x7070, 1209*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1210*691f3413SSatya Priya Kakitapalli .clkr = { 1211*691f3413SSatya Priya Kakitapalli .enable_reg = 0x7070, 1212*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1213*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1214*691f3413SSatya Priya Kakitapalli .name = "cam_cc_bps_ahb_clk", 1215*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1216*691f3413SSatya Priya Kakitapalli &cam_cc_slow_ahb_clk_src.clkr.hw, 1217*691f3413SSatya Priya Kakitapalli }, 1218*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1219*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1220*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1221*691f3413SSatya Priya Kakitapalli }, 1222*691f3413SSatya Priya Kakitapalli }, 1223*691f3413SSatya Priya Kakitapalli }; 1224*691f3413SSatya Priya Kakitapalli 1225*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_bps_areg_clk = { 1226*691f3413SSatya Priya Kakitapalli .halt_reg = 0x7054, 1227*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1228*691f3413SSatya Priya Kakitapalli .clkr = { 1229*691f3413SSatya Priya Kakitapalli .enable_reg = 0x7054, 1230*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1231*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1232*691f3413SSatya Priya Kakitapalli .name = "cam_cc_bps_areg_clk", 1233*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1234*691f3413SSatya Priya Kakitapalli &cam_cc_fast_ahb_clk_src.clkr.hw, 1235*691f3413SSatya Priya Kakitapalli }, 1236*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1237*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1238*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1239*691f3413SSatya Priya Kakitapalli }, 1240*691f3413SSatya Priya Kakitapalli }, 1241*691f3413SSatya Priya Kakitapalli }; 1242*691f3413SSatya Priya Kakitapalli 1243*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_bps_axi_clk = { 1244*691f3413SSatya Priya Kakitapalli .halt_reg = 0x7038, 1245*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1246*691f3413SSatya Priya Kakitapalli .clkr = { 1247*691f3413SSatya Priya Kakitapalli .enable_reg = 0x7038, 1248*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1249*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1250*691f3413SSatya Priya Kakitapalli .name = "cam_cc_bps_axi_clk", 1251*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1252*691f3413SSatya Priya Kakitapalli &cam_cc_camnoc_axi_clk_src.clkr.hw, 1253*691f3413SSatya Priya Kakitapalli }, 1254*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1255*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1256*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1257*691f3413SSatya Priya Kakitapalli }, 1258*691f3413SSatya Priya Kakitapalli }, 1259*691f3413SSatya Priya Kakitapalli }; 1260*691f3413SSatya Priya Kakitapalli 1261*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_bps_clk = { 1262*691f3413SSatya Priya Kakitapalli .halt_reg = 0x7028, 1263*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1264*691f3413SSatya Priya Kakitapalli .clkr = { 1265*691f3413SSatya Priya Kakitapalli .enable_reg = 0x7028, 1266*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1267*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1268*691f3413SSatya Priya Kakitapalli .name = "cam_cc_bps_clk", 1269*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1270*691f3413SSatya Priya Kakitapalli &cam_cc_bps_clk_src.clkr.hw, 1271*691f3413SSatya Priya Kakitapalli }, 1272*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1273*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1274*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1275*691f3413SSatya Priya Kakitapalli }, 1276*691f3413SSatya Priya Kakitapalli }, 1277*691f3413SSatya Priya Kakitapalli }; 1278*691f3413SSatya Priya Kakitapalli 1279*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_camnoc_axi_clk = { 1280*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc18c, 1281*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1282*691f3413SSatya Priya Kakitapalli .clkr = { 1283*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc18c, 1284*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1285*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1286*691f3413SSatya Priya Kakitapalli .name = "cam_cc_camnoc_axi_clk", 1287*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1288*691f3413SSatya Priya Kakitapalli &cam_cc_camnoc_axi_clk_src.clkr.hw, 1289*691f3413SSatya Priya Kakitapalli }, 1290*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1291*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1292*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1293*691f3413SSatya Priya Kakitapalli }, 1294*691f3413SSatya Priya Kakitapalli }, 1295*691f3413SSatya Priya Kakitapalli }; 1296*691f3413SSatya Priya Kakitapalli 1297*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_camnoc_dcd_xo_clk = { 1298*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc194, 1299*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1300*691f3413SSatya Priya Kakitapalli .clkr = { 1301*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc194, 1302*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1303*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1304*691f3413SSatya Priya Kakitapalli .name = "cam_cc_camnoc_dcd_xo_clk", 1305*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1306*691f3413SSatya Priya Kakitapalli &cam_cc_xo_clk_src.clkr.hw, 1307*691f3413SSatya Priya Kakitapalli }, 1308*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1309*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1310*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1311*691f3413SSatya Priya Kakitapalli }, 1312*691f3413SSatya Priya Kakitapalli }, 1313*691f3413SSatya Priya Kakitapalli }; 1314*691f3413SSatya Priya Kakitapalli 1315*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_cci_0_clk = { 1316*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc120, 1317*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1318*691f3413SSatya Priya Kakitapalli .clkr = { 1319*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc120, 1320*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1321*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1322*691f3413SSatya Priya Kakitapalli .name = "cam_cc_cci_0_clk", 1323*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1324*691f3413SSatya Priya Kakitapalli &cam_cc_cci_0_clk_src.clkr.hw, 1325*691f3413SSatya Priya Kakitapalli }, 1326*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1327*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1328*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1329*691f3413SSatya Priya Kakitapalli }, 1330*691f3413SSatya Priya Kakitapalli }, 1331*691f3413SSatya Priya Kakitapalli }; 1332*691f3413SSatya Priya Kakitapalli 1333*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_cci_1_clk = { 1334*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc13c, 1335*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1336*691f3413SSatya Priya Kakitapalli .clkr = { 1337*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc13c, 1338*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1339*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1340*691f3413SSatya Priya Kakitapalli .name = "cam_cc_cci_1_clk", 1341*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1342*691f3413SSatya Priya Kakitapalli &cam_cc_cci_1_clk_src.clkr.hw, 1343*691f3413SSatya Priya Kakitapalli }, 1344*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1345*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1346*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1347*691f3413SSatya Priya Kakitapalli }, 1348*691f3413SSatya Priya Kakitapalli }, 1349*691f3413SSatya Priya Kakitapalli }; 1350*691f3413SSatya Priya Kakitapalli 1351*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_cci_2_clk = { 1352*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc21c, 1353*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1354*691f3413SSatya Priya Kakitapalli .clkr = { 1355*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc21c, 1356*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1357*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1358*691f3413SSatya Priya Kakitapalli .name = "cam_cc_cci_2_clk", 1359*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1360*691f3413SSatya Priya Kakitapalli &cam_cc_cci_2_clk_src.clkr.hw, 1361*691f3413SSatya Priya Kakitapalli }, 1362*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1363*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1364*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1365*691f3413SSatya Priya Kakitapalli }, 1366*691f3413SSatya Priya Kakitapalli }, 1367*691f3413SSatya Priya Kakitapalli }; 1368*691f3413SSatya Priya Kakitapalli 1369*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_cci_3_clk = { 1370*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc238, 1371*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1372*691f3413SSatya Priya Kakitapalli .clkr = { 1373*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc238, 1374*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1375*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1376*691f3413SSatya Priya Kakitapalli .name = "cam_cc_cci_3_clk", 1377*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1378*691f3413SSatya Priya Kakitapalli &cam_cc_cci_3_clk_src.clkr.hw, 1379*691f3413SSatya Priya Kakitapalli }, 1380*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1381*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1382*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1383*691f3413SSatya Priya Kakitapalli }, 1384*691f3413SSatya Priya Kakitapalli }, 1385*691f3413SSatya Priya Kakitapalli }; 1386*691f3413SSatya Priya Kakitapalli 1387*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_core_ahb_clk = { 1388*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc1c8, 1389*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT_VOTED, 1390*691f3413SSatya Priya Kakitapalli .clkr = { 1391*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc1c8, 1392*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1393*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1394*691f3413SSatya Priya Kakitapalli .name = "cam_cc_core_ahb_clk", 1395*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1396*691f3413SSatya Priya Kakitapalli &cam_cc_slow_ahb_clk_src.clkr.hw, 1397*691f3413SSatya Priya Kakitapalli }, 1398*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1399*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1400*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1401*691f3413SSatya Priya Kakitapalli }, 1402*691f3413SSatya Priya Kakitapalli }, 1403*691f3413SSatya Priya Kakitapalli }; 1404*691f3413SSatya Priya Kakitapalli 1405*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_cpas_ahb_clk = { 1406*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc168, 1407*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1408*691f3413SSatya Priya Kakitapalli .clkr = { 1409*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc168, 1410*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1411*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1412*691f3413SSatya Priya Kakitapalli .name = "cam_cc_cpas_ahb_clk", 1413*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1414*691f3413SSatya Priya Kakitapalli &cam_cc_slow_ahb_clk_src.clkr.hw, 1415*691f3413SSatya Priya Kakitapalli }, 1416*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1417*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1418*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1419*691f3413SSatya Priya Kakitapalli }, 1420*691f3413SSatya Priya Kakitapalli }, 1421*691f3413SSatya Priya Kakitapalli }; 1422*691f3413SSatya Priya Kakitapalli 1423*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csi0phytimer_clk = { 1424*691f3413SSatya Priya Kakitapalli .halt_reg = 0x601c, 1425*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1426*691f3413SSatya Priya Kakitapalli .clkr = { 1427*691f3413SSatya Priya Kakitapalli .enable_reg = 0x601c, 1428*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1429*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1430*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csi0phytimer_clk", 1431*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1432*691f3413SSatya Priya Kakitapalli &cam_cc_csi0phytimer_clk_src.clkr.hw, 1433*691f3413SSatya Priya Kakitapalli }, 1434*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1435*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1436*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1437*691f3413SSatya Priya Kakitapalli }, 1438*691f3413SSatya Priya Kakitapalli }, 1439*691f3413SSatya Priya Kakitapalli }; 1440*691f3413SSatya Priya Kakitapalli 1441*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csi1phytimer_clk = { 1442*691f3413SSatya Priya Kakitapalli .halt_reg = 0x6040, 1443*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1444*691f3413SSatya Priya Kakitapalli .clkr = { 1445*691f3413SSatya Priya Kakitapalli .enable_reg = 0x6040, 1446*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1447*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1448*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csi1phytimer_clk", 1449*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1450*691f3413SSatya Priya Kakitapalli &cam_cc_csi1phytimer_clk_src.clkr.hw, 1451*691f3413SSatya Priya Kakitapalli }, 1452*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1453*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1454*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1455*691f3413SSatya Priya Kakitapalli }, 1456*691f3413SSatya Priya Kakitapalli }, 1457*691f3413SSatya Priya Kakitapalli }; 1458*691f3413SSatya Priya Kakitapalli 1459*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csi2phytimer_clk = { 1460*691f3413SSatya Priya Kakitapalli .halt_reg = 0x6064, 1461*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1462*691f3413SSatya Priya Kakitapalli .clkr = { 1463*691f3413SSatya Priya Kakitapalli .enable_reg = 0x6064, 1464*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1465*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1466*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csi2phytimer_clk", 1467*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1468*691f3413SSatya Priya Kakitapalli &cam_cc_csi2phytimer_clk_src.clkr.hw, 1469*691f3413SSatya Priya Kakitapalli }, 1470*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1471*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1472*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1473*691f3413SSatya Priya Kakitapalli }, 1474*691f3413SSatya Priya Kakitapalli }, 1475*691f3413SSatya Priya Kakitapalli }; 1476*691f3413SSatya Priya Kakitapalli 1477*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csi3phytimer_clk = { 1478*691f3413SSatya Priya Kakitapalli .halt_reg = 0x6088, 1479*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1480*691f3413SSatya Priya Kakitapalli .clkr = { 1481*691f3413SSatya Priya Kakitapalli .enable_reg = 0x6088, 1482*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1483*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1484*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csi3phytimer_clk", 1485*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1486*691f3413SSatya Priya Kakitapalli &cam_cc_csi3phytimer_clk_src.clkr.hw, 1487*691f3413SSatya Priya Kakitapalli }, 1488*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1489*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1490*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1491*691f3413SSatya Priya Kakitapalli }, 1492*691f3413SSatya Priya Kakitapalli }, 1493*691f3413SSatya Priya Kakitapalli }; 1494*691f3413SSatya Priya Kakitapalli 1495*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csiphy0_clk = { 1496*691f3413SSatya Priya Kakitapalli .halt_reg = 0x6020, 1497*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1498*691f3413SSatya Priya Kakitapalli .clkr = { 1499*691f3413SSatya Priya Kakitapalli .enable_reg = 0x6020, 1500*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1501*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1502*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csiphy0_clk", 1503*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1504*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 1505*691f3413SSatya Priya Kakitapalli }, 1506*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1507*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1508*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1509*691f3413SSatya Priya Kakitapalli }, 1510*691f3413SSatya Priya Kakitapalli }, 1511*691f3413SSatya Priya Kakitapalli }; 1512*691f3413SSatya Priya Kakitapalli 1513*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csiphy1_clk = { 1514*691f3413SSatya Priya Kakitapalli .halt_reg = 0x6044, 1515*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1516*691f3413SSatya Priya Kakitapalli .clkr = { 1517*691f3413SSatya Priya Kakitapalli .enable_reg = 0x6044, 1518*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1519*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1520*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csiphy1_clk", 1521*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1522*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 1523*691f3413SSatya Priya Kakitapalli }, 1524*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1525*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1526*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1527*691f3413SSatya Priya Kakitapalli }, 1528*691f3413SSatya Priya Kakitapalli }, 1529*691f3413SSatya Priya Kakitapalli }; 1530*691f3413SSatya Priya Kakitapalli 1531*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csiphy2_clk = { 1532*691f3413SSatya Priya Kakitapalli .halt_reg = 0x6068, 1533*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1534*691f3413SSatya Priya Kakitapalli .clkr = { 1535*691f3413SSatya Priya Kakitapalli .enable_reg = 0x6068, 1536*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1537*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1538*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csiphy2_clk", 1539*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1540*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 1541*691f3413SSatya Priya Kakitapalli }, 1542*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1543*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1544*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1545*691f3413SSatya Priya Kakitapalli }, 1546*691f3413SSatya Priya Kakitapalli }, 1547*691f3413SSatya Priya Kakitapalli }; 1548*691f3413SSatya Priya Kakitapalli 1549*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_csiphy3_clk = { 1550*691f3413SSatya Priya Kakitapalli .halt_reg = 0x608c, 1551*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1552*691f3413SSatya Priya Kakitapalli .clkr = { 1553*691f3413SSatya Priya Kakitapalli .enable_reg = 0x608c, 1554*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1555*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1556*691f3413SSatya Priya Kakitapalli .name = "cam_cc_csiphy3_clk", 1557*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1558*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 1559*691f3413SSatya Priya Kakitapalli }, 1560*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1561*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1562*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1563*691f3413SSatya Priya Kakitapalli }, 1564*691f3413SSatya Priya Kakitapalli }, 1565*691f3413SSatya Priya Kakitapalli }; 1566*691f3413SSatya Priya Kakitapalli 1567*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_fd_core_clk = { 1568*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc0f8, 1569*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1570*691f3413SSatya Priya Kakitapalli .clkr = { 1571*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc0f8, 1572*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1573*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1574*691f3413SSatya Priya Kakitapalli .name = "cam_cc_fd_core_clk", 1575*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1576*691f3413SSatya Priya Kakitapalli &cam_cc_fd_core_clk_src.clkr.hw, 1577*691f3413SSatya Priya Kakitapalli }, 1578*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1579*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1580*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1581*691f3413SSatya Priya Kakitapalli }, 1582*691f3413SSatya Priya Kakitapalli }, 1583*691f3413SSatya Priya Kakitapalli }; 1584*691f3413SSatya Priya Kakitapalli 1585*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_fd_core_uar_clk = { 1586*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc100, 1587*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1588*691f3413SSatya Priya Kakitapalli .clkr = { 1589*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc100, 1590*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1591*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1592*691f3413SSatya Priya Kakitapalli .name = "cam_cc_fd_core_uar_clk", 1593*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1594*691f3413SSatya Priya Kakitapalli &cam_cc_fd_core_clk_src.clkr.hw, 1595*691f3413SSatya Priya Kakitapalli }, 1596*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1597*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1598*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1599*691f3413SSatya Priya Kakitapalli }, 1600*691f3413SSatya Priya Kakitapalli }, 1601*691f3413SSatya Priya Kakitapalli }; 1602*691f3413SSatya Priya Kakitapalli 1603*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_icp_ahb_clk = { 1604*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc0d8, 1605*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1606*691f3413SSatya Priya Kakitapalli .clkr = { 1607*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc0d8, 1608*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1609*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1610*691f3413SSatya Priya Kakitapalli .name = "cam_cc_icp_ahb_clk", 1611*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1612*691f3413SSatya Priya Kakitapalli &cam_cc_slow_ahb_clk_src.clkr.hw, 1613*691f3413SSatya Priya Kakitapalli }, 1614*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1615*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1616*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1617*691f3413SSatya Priya Kakitapalli }, 1618*691f3413SSatya Priya Kakitapalli }, 1619*691f3413SSatya Priya Kakitapalli }; 1620*691f3413SSatya Priya Kakitapalli 1621*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_icp_clk = { 1622*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc0d0, 1623*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1624*691f3413SSatya Priya Kakitapalli .clkr = { 1625*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc0d0, 1626*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1627*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1628*691f3413SSatya Priya Kakitapalli .name = "cam_cc_icp_clk", 1629*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1630*691f3413SSatya Priya Kakitapalli &cam_cc_icp_clk_src.clkr.hw, 1631*691f3413SSatya Priya Kakitapalli }, 1632*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1633*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1634*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1635*691f3413SSatya Priya Kakitapalli }, 1636*691f3413SSatya Priya Kakitapalli }, 1637*691f3413SSatya Priya Kakitapalli }; 1638*691f3413SSatya Priya Kakitapalli 1639*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_0_axi_clk = { 1640*691f3413SSatya Priya Kakitapalli .halt_reg = 0xa080, 1641*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1642*691f3413SSatya Priya Kakitapalli .clkr = { 1643*691f3413SSatya Priya Kakitapalli .enable_reg = 0xa080, 1644*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1645*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1646*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_0_axi_clk", 1647*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1648*691f3413SSatya Priya Kakitapalli &cam_cc_camnoc_axi_clk_src.clkr.hw, 1649*691f3413SSatya Priya Kakitapalli }, 1650*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1651*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1652*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1653*691f3413SSatya Priya Kakitapalli }, 1654*691f3413SSatya Priya Kakitapalli }, 1655*691f3413SSatya Priya Kakitapalli }; 1656*691f3413SSatya Priya Kakitapalli 1657*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_0_clk = { 1658*691f3413SSatya Priya Kakitapalli .halt_reg = 0xa028, 1659*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1660*691f3413SSatya Priya Kakitapalli .clkr = { 1661*691f3413SSatya Priya Kakitapalli .enable_reg = 0xa028, 1662*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1663*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1664*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_0_clk", 1665*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1666*691f3413SSatya Priya Kakitapalli &cam_cc_ife_0_clk_src.clkr.hw, 1667*691f3413SSatya Priya Kakitapalli }, 1668*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1669*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1670*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1671*691f3413SSatya Priya Kakitapalli }, 1672*691f3413SSatya Priya Kakitapalli }, 1673*691f3413SSatya Priya Kakitapalli }; 1674*691f3413SSatya Priya Kakitapalli 1675*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_0_cphy_rx_clk = { 1676*691f3413SSatya Priya Kakitapalli .halt_reg = 0xa07c, 1677*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1678*691f3413SSatya Priya Kakitapalli .clkr = { 1679*691f3413SSatya Priya Kakitapalli .enable_reg = 0xa07c, 1680*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1681*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1682*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_0_cphy_rx_clk", 1683*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1684*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 1685*691f3413SSatya Priya Kakitapalli }, 1686*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1687*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1688*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1689*691f3413SSatya Priya Kakitapalli }, 1690*691f3413SSatya Priya Kakitapalli }, 1691*691f3413SSatya Priya Kakitapalli }; 1692*691f3413SSatya Priya Kakitapalli 1693*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_0_csid_clk = { 1694*691f3413SSatya Priya Kakitapalli .halt_reg = 0xa054, 1695*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1696*691f3413SSatya Priya Kakitapalli .clkr = { 1697*691f3413SSatya Priya Kakitapalli .enable_reg = 0xa054, 1698*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1699*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1700*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_0_csid_clk", 1701*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1702*691f3413SSatya Priya Kakitapalli &cam_cc_ife_0_csid_clk_src.clkr.hw, 1703*691f3413SSatya Priya Kakitapalli }, 1704*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1705*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1706*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1707*691f3413SSatya Priya Kakitapalli }, 1708*691f3413SSatya Priya Kakitapalli }, 1709*691f3413SSatya Priya Kakitapalli }; 1710*691f3413SSatya Priya Kakitapalli 1711*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_0_dsp_clk = { 1712*691f3413SSatya Priya Kakitapalli .halt_reg = 0xa038, 1713*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1714*691f3413SSatya Priya Kakitapalli .clkr = { 1715*691f3413SSatya Priya Kakitapalli .enable_reg = 0xa038, 1716*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1717*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1718*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_0_dsp_clk", 1719*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1720*691f3413SSatya Priya Kakitapalli &cam_cc_ife_0_clk_src.clkr.hw, 1721*691f3413SSatya Priya Kakitapalli }, 1722*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1723*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1724*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1725*691f3413SSatya Priya Kakitapalli }, 1726*691f3413SSatya Priya Kakitapalli }, 1727*691f3413SSatya Priya Kakitapalli }; 1728*691f3413SSatya Priya Kakitapalli 1729*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_1_axi_clk = { 1730*691f3413SSatya Priya Kakitapalli .halt_reg = 0xb058, 1731*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1732*691f3413SSatya Priya Kakitapalli .clkr = { 1733*691f3413SSatya Priya Kakitapalli .enable_reg = 0xb058, 1734*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1735*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1736*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_1_axi_clk", 1737*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1738*691f3413SSatya Priya Kakitapalli &cam_cc_camnoc_axi_clk_src.clkr.hw, 1739*691f3413SSatya Priya Kakitapalli }, 1740*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1741*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1742*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1743*691f3413SSatya Priya Kakitapalli }, 1744*691f3413SSatya Priya Kakitapalli }, 1745*691f3413SSatya Priya Kakitapalli }; 1746*691f3413SSatya Priya Kakitapalli 1747*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_1_clk = { 1748*691f3413SSatya Priya Kakitapalli .halt_reg = 0xb028, 1749*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1750*691f3413SSatya Priya Kakitapalli .clkr = { 1751*691f3413SSatya Priya Kakitapalli .enable_reg = 0xb028, 1752*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1753*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1754*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_1_clk", 1755*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1756*691f3413SSatya Priya Kakitapalli &cam_cc_ife_1_clk_src.clkr.hw, 1757*691f3413SSatya Priya Kakitapalli }, 1758*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1759*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1760*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1761*691f3413SSatya Priya Kakitapalli }, 1762*691f3413SSatya Priya Kakitapalli }, 1763*691f3413SSatya Priya Kakitapalli }; 1764*691f3413SSatya Priya Kakitapalli 1765*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_1_cphy_rx_clk = { 1766*691f3413SSatya Priya Kakitapalli .halt_reg = 0xb054, 1767*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1768*691f3413SSatya Priya Kakitapalli .clkr = { 1769*691f3413SSatya Priya Kakitapalli .enable_reg = 0xb054, 1770*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1771*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1772*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_1_cphy_rx_clk", 1773*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1774*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 1775*691f3413SSatya Priya Kakitapalli }, 1776*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1777*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1778*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1779*691f3413SSatya Priya Kakitapalli }, 1780*691f3413SSatya Priya Kakitapalli }, 1781*691f3413SSatya Priya Kakitapalli }; 1782*691f3413SSatya Priya Kakitapalli 1783*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_1_csid_clk = { 1784*691f3413SSatya Priya Kakitapalli .halt_reg = 0xb04c, 1785*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1786*691f3413SSatya Priya Kakitapalli .clkr = { 1787*691f3413SSatya Priya Kakitapalli .enable_reg = 0xb04c, 1788*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1789*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1790*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_1_csid_clk", 1791*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1792*691f3413SSatya Priya Kakitapalli &cam_cc_ife_1_csid_clk_src.clkr.hw, 1793*691f3413SSatya Priya Kakitapalli }, 1794*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1795*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1796*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1797*691f3413SSatya Priya Kakitapalli }, 1798*691f3413SSatya Priya Kakitapalli }, 1799*691f3413SSatya Priya Kakitapalli }; 1800*691f3413SSatya Priya Kakitapalli 1801*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_1_dsp_clk = { 1802*691f3413SSatya Priya Kakitapalli .halt_reg = 0xb030, 1803*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1804*691f3413SSatya Priya Kakitapalli .clkr = { 1805*691f3413SSatya Priya Kakitapalli .enable_reg = 0xb030, 1806*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1807*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1808*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_1_dsp_clk", 1809*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1810*691f3413SSatya Priya Kakitapalli &cam_cc_ife_1_clk_src.clkr.hw, 1811*691f3413SSatya Priya Kakitapalli }, 1812*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1813*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1814*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1815*691f3413SSatya Priya Kakitapalli }, 1816*691f3413SSatya Priya Kakitapalli }, 1817*691f3413SSatya Priya Kakitapalli }; 1818*691f3413SSatya Priya Kakitapalli 1819*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_2_axi_clk = { 1820*691f3413SSatya Priya Kakitapalli .halt_reg = 0xf068, 1821*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1822*691f3413SSatya Priya Kakitapalli .clkr = { 1823*691f3413SSatya Priya Kakitapalli .enable_reg = 0xf068, 1824*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1825*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1826*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_2_axi_clk", 1827*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1828*691f3413SSatya Priya Kakitapalli &cam_cc_camnoc_axi_clk_src.clkr.hw, 1829*691f3413SSatya Priya Kakitapalli }, 1830*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1831*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1832*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1833*691f3413SSatya Priya Kakitapalli }, 1834*691f3413SSatya Priya Kakitapalli }, 1835*691f3413SSatya Priya Kakitapalli }; 1836*691f3413SSatya Priya Kakitapalli 1837*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_2_clk = { 1838*691f3413SSatya Priya Kakitapalli .halt_reg = 0xf028, 1839*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1840*691f3413SSatya Priya Kakitapalli .clkr = { 1841*691f3413SSatya Priya Kakitapalli .enable_reg = 0xf028, 1842*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1843*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1844*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_2_clk", 1845*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1846*691f3413SSatya Priya Kakitapalli &cam_cc_ife_2_clk_src.clkr.hw, 1847*691f3413SSatya Priya Kakitapalli }, 1848*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1849*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1850*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1851*691f3413SSatya Priya Kakitapalli }, 1852*691f3413SSatya Priya Kakitapalli }, 1853*691f3413SSatya Priya Kakitapalli }; 1854*691f3413SSatya Priya Kakitapalli 1855*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_2_cphy_rx_clk = { 1856*691f3413SSatya Priya Kakitapalli .halt_reg = 0xf064, 1857*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1858*691f3413SSatya Priya Kakitapalli .clkr = { 1859*691f3413SSatya Priya Kakitapalli .enable_reg = 0xf064, 1860*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1861*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1862*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_2_cphy_rx_clk", 1863*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1864*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 1865*691f3413SSatya Priya Kakitapalli }, 1866*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1867*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1868*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1869*691f3413SSatya Priya Kakitapalli }, 1870*691f3413SSatya Priya Kakitapalli }, 1871*691f3413SSatya Priya Kakitapalli }; 1872*691f3413SSatya Priya Kakitapalli 1873*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_2_csid_clk = { 1874*691f3413SSatya Priya Kakitapalli .halt_reg = 0xf054, 1875*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1876*691f3413SSatya Priya Kakitapalli .clkr = { 1877*691f3413SSatya Priya Kakitapalli .enable_reg = 0xf054, 1878*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1879*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1880*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_2_csid_clk", 1881*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1882*691f3413SSatya Priya Kakitapalli &cam_cc_ife_2_csid_clk_src.clkr.hw, 1883*691f3413SSatya Priya Kakitapalli }, 1884*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1885*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1886*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1887*691f3413SSatya Priya Kakitapalli }, 1888*691f3413SSatya Priya Kakitapalli }, 1889*691f3413SSatya Priya Kakitapalli }; 1890*691f3413SSatya Priya Kakitapalli 1891*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_2_dsp_clk = { 1892*691f3413SSatya Priya Kakitapalli .halt_reg = 0xf038, 1893*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1894*691f3413SSatya Priya Kakitapalli .clkr = { 1895*691f3413SSatya Priya Kakitapalli .enable_reg = 0xf038, 1896*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1897*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1898*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_2_dsp_clk", 1899*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1900*691f3413SSatya Priya Kakitapalli &cam_cc_ife_2_clk_src.clkr.hw, 1901*691f3413SSatya Priya Kakitapalli }, 1902*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1903*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1904*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1905*691f3413SSatya Priya Kakitapalli }, 1906*691f3413SSatya Priya Kakitapalli }, 1907*691f3413SSatya Priya Kakitapalli }; 1908*691f3413SSatya Priya Kakitapalli 1909*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_3_axi_clk = { 1910*691f3413SSatya Priya Kakitapalli .halt_reg = 0xf0d4, 1911*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1912*691f3413SSatya Priya Kakitapalli .clkr = { 1913*691f3413SSatya Priya Kakitapalli .enable_reg = 0xf0d4, 1914*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1915*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1916*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_3_axi_clk", 1917*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1918*691f3413SSatya Priya Kakitapalli &cam_cc_camnoc_axi_clk_src.clkr.hw, 1919*691f3413SSatya Priya Kakitapalli }, 1920*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1921*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1922*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1923*691f3413SSatya Priya Kakitapalli }, 1924*691f3413SSatya Priya Kakitapalli }, 1925*691f3413SSatya Priya Kakitapalli }; 1926*691f3413SSatya Priya Kakitapalli 1927*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_3_clk = { 1928*691f3413SSatya Priya Kakitapalli .halt_reg = 0xf094, 1929*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1930*691f3413SSatya Priya Kakitapalli .clkr = { 1931*691f3413SSatya Priya Kakitapalli .enable_reg = 0xf094, 1932*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1933*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1934*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_3_clk", 1935*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1936*691f3413SSatya Priya Kakitapalli &cam_cc_ife_3_clk_src.clkr.hw, 1937*691f3413SSatya Priya Kakitapalli }, 1938*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1939*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1940*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1941*691f3413SSatya Priya Kakitapalli }, 1942*691f3413SSatya Priya Kakitapalli }, 1943*691f3413SSatya Priya Kakitapalli }; 1944*691f3413SSatya Priya Kakitapalli 1945*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_3_cphy_rx_clk = { 1946*691f3413SSatya Priya Kakitapalli .halt_reg = 0xf0d0, 1947*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1948*691f3413SSatya Priya Kakitapalli .clkr = { 1949*691f3413SSatya Priya Kakitapalli .enable_reg = 0xf0d0, 1950*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1951*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1952*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_3_cphy_rx_clk", 1953*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1954*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 1955*691f3413SSatya Priya Kakitapalli }, 1956*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1957*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1958*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1959*691f3413SSatya Priya Kakitapalli }, 1960*691f3413SSatya Priya Kakitapalli }, 1961*691f3413SSatya Priya Kakitapalli }; 1962*691f3413SSatya Priya Kakitapalli 1963*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_3_csid_clk = { 1964*691f3413SSatya Priya Kakitapalli .halt_reg = 0xf0c0, 1965*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1966*691f3413SSatya Priya Kakitapalli .clkr = { 1967*691f3413SSatya Priya Kakitapalli .enable_reg = 0xf0c0, 1968*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1969*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1970*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_3_csid_clk", 1971*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1972*691f3413SSatya Priya Kakitapalli &cam_cc_ife_3_csid_clk_src.clkr.hw, 1973*691f3413SSatya Priya Kakitapalli }, 1974*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1975*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1976*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1977*691f3413SSatya Priya Kakitapalli }, 1978*691f3413SSatya Priya Kakitapalli }, 1979*691f3413SSatya Priya Kakitapalli }; 1980*691f3413SSatya Priya Kakitapalli 1981*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_3_dsp_clk = { 1982*691f3413SSatya Priya Kakitapalli .halt_reg = 0xf0a4, 1983*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 1984*691f3413SSatya Priya Kakitapalli .clkr = { 1985*691f3413SSatya Priya Kakitapalli .enable_reg = 0xf0a4, 1986*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 1987*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 1988*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_3_dsp_clk", 1989*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 1990*691f3413SSatya Priya Kakitapalli &cam_cc_ife_3_clk_src.clkr.hw, 1991*691f3413SSatya Priya Kakitapalli }, 1992*691f3413SSatya Priya Kakitapalli .num_parents = 1, 1993*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 1994*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 1995*691f3413SSatya Priya Kakitapalli }, 1996*691f3413SSatya Priya Kakitapalli }, 1997*691f3413SSatya Priya Kakitapalli }; 1998*691f3413SSatya Priya Kakitapalli 1999*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_0_clk = { 2000*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc01c, 2001*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2002*691f3413SSatya Priya Kakitapalli .clkr = { 2003*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc01c, 2004*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2005*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2006*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_0_clk", 2007*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2008*691f3413SSatya Priya Kakitapalli &cam_cc_ife_lite_0_clk_src.clkr.hw, 2009*691f3413SSatya Priya Kakitapalli }, 2010*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2011*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2012*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2013*691f3413SSatya Priya Kakitapalli }, 2014*691f3413SSatya Priya Kakitapalli }, 2015*691f3413SSatya Priya Kakitapalli }; 2016*691f3413SSatya Priya Kakitapalli 2017*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_0_cphy_rx_clk = { 2018*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc040, 2019*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2020*691f3413SSatya Priya Kakitapalli .clkr = { 2021*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc040, 2022*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2023*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2024*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_0_cphy_rx_clk", 2025*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2026*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 2027*691f3413SSatya Priya Kakitapalli }, 2028*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2029*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2030*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2031*691f3413SSatya Priya Kakitapalli }, 2032*691f3413SSatya Priya Kakitapalli }, 2033*691f3413SSatya Priya Kakitapalli }; 2034*691f3413SSatya Priya Kakitapalli 2035*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_0_csid_clk = { 2036*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc038, 2037*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2038*691f3413SSatya Priya Kakitapalli .clkr = { 2039*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc038, 2040*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2041*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2042*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_0_csid_clk", 2043*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2044*691f3413SSatya Priya Kakitapalli &cam_cc_ife_lite_0_csid_clk_src.clkr.hw, 2045*691f3413SSatya Priya Kakitapalli }, 2046*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2047*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2048*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2049*691f3413SSatya Priya Kakitapalli }, 2050*691f3413SSatya Priya Kakitapalli }, 2051*691f3413SSatya Priya Kakitapalli }; 2052*691f3413SSatya Priya Kakitapalli 2053*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_1_clk = { 2054*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc060, 2055*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2056*691f3413SSatya Priya Kakitapalli .clkr = { 2057*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc060, 2058*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2059*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2060*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_1_clk", 2061*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2062*691f3413SSatya Priya Kakitapalli &cam_cc_ife_lite_1_clk_src.clkr.hw, 2063*691f3413SSatya Priya Kakitapalli }, 2064*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2065*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2066*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2067*691f3413SSatya Priya Kakitapalli }, 2068*691f3413SSatya Priya Kakitapalli }, 2069*691f3413SSatya Priya Kakitapalli }; 2070*691f3413SSatya Priya Kakitapalli 2071*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_1_cphy_rx_clk = { 2072*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc084, 2073*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2074*691f3413SSatya Priya Kakitapalli .clkr = { 2075*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc084, 2076*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2077*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2078*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_1_cphy_rx_clk", 2079*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2080*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 2081*691f3413SSatya Priya Kakitapalli }, 2082*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2083*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2084*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2085*691f3413SSatya Priya Kakitapalli }, 2086*691f3413SSatya Priya Kakitapalli }, 2087*691f3413SSatya Priya Kakitapalli }; 2088*691f3413SSatya Priya Kakitapalli 2089*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_1_csid_clk = { 2090*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc07c, 2091*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2092*691f3413SSatya Priya Kakitapalli .clkr = { 2093*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc07c, 2094*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2095*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2096*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_1_csid_clk", 2097*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2098*691f3413SSatya Priya Kakitapalli &cam_cc_ife_lite_1_csid_clk_src.clkr.hw, 2099*691f3413SSatya Priya Kakitapalli }, 2100*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2101*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2102*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2103*691f3413SSatya Priya Kakitapalli }, 2104*691f3413SSatya Priya Kakitapalli }, 2105*691f3413SSatya Priya Kakitapalli }; 2106*691f3413SSatya Priya Kakitapalli 2107*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_2_clk = { 2108*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc258, 2109*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2110*691f3413SSatya Priya Kakitapalli .clkr = { 2111*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc258, 2112*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2113*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2114*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_2_clk", 2115*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2116*691f3413SSatya Priya Kakitapalli &cam_cc_ife_lite_2_clk_src.clkr.hw, 2117*691f3413SSatya Priya Kakitapalli }, 2118*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2119*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2120*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2121*691f3413SSatya Priya Kakitapalli }, 2122*691f3413SSatya Priya Kakitapalli }, 2123*691f3413SSatya Priya Kakitapalli }; 2124*691f3413SSatya Priya Kakitapalli 2125*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_2_cphy_rx_clk = { 2126*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc27c, 2127*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2128*691f3413SSatya Priya Kakitapalli .clkr = { 2129*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc27c, 2130*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2131*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2132*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_2_cphy_rx_clk", 2133*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2134*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 2135*691f3413SSatya Priya Kakitapalli }, 2136*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2137*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2138*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2139*691f3413SSatya Priya Kakitapalli }, 2140*691f3413SSatya Priya Kakitapalli }, 2141*691f3413SSatya Priya Kakitapalli }; 2142*691f3413SSatya Priya Kakitapalli 2143*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_2_csid_clk = { 2144*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc274, 2145*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2146*691f3413SSatya Priya Kakitapalli .clkr = { 2147*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc274, 2148*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2149*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2150*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_2_csid_clk", 2151*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2152*691f3413SSatya Priya Kakitapalli &cam_cc_ife_lite_2_csid_clk_src.clkr.hw, 2153*691f3413SSatya Priya Kakitapalli }, 2154*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2155*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2156*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2157*691f3413SSatya Priya Kakitapalli }, 2158*691f3413SSatya Priya Kakitapalli }, 2159*691f3413SSatya Priya Kakitapalli }; 2160*691f3413SSatya Priya Kakitapalli 2161*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_3_clk = { 2162*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc29c, 2163*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2164*691f3413SSatya Priya Kakitapalli .clkr = { 2165*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc29c, 2166*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2167*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2168*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_3_clk", 2169*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2170*691f3413SSatya Priya Kakitapalli &cam_cc_ife_lite_3_clk_src.clkr.hw, 2171*691f3413SSatya Priya Kakitapalli }, 2172*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2173*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2174*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2175*691f3413SSatya Priya Kakitapalli }, 2176*691f3413SSatya Priya Kakitapalli }, 2177*691f3413SSatya Priya Kakitapalli }; 2178*691f3413SSatya Priya Kakitapalli 2179*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_3_cphy_rx_clk = { 2180*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc2c0, 2181*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2182*691f3413SSatya Priya Kakitapalli .clkr = { 2183*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc2c0, 2184*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2185*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2186*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_3_cphy_rx_clk", 2187*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2188*691f3413SSatya Priya Kakitapalli &cam_cc_cphy_rx_clk_src.clkr.hw, 2189*691f3413SSatya Priya Kakitapalli }, 2190*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2191*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2192*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2193*691f3413SSatya Priya Kakitapalli }, 2194*691f3413SSatya Priya Kakitapalli }, 2195*691f3413SSatya Priya Kakitapalli }; 2196*691f3413SSatya Priya Kakitapalli 2197*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ife_lite_3_csid_clk = { 2198*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc2b8, 2199*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2200*691f3413SSatya Priya Kakitapalli .clkr = { 2201*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc2b8, 2202*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2203*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2204*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ife_lite_3_csid_clk", 2205*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2206*691f3413SSatya Priya Kakitapalli &cam_cc_ife_lite_3_csid_clk_src.clkr.hw, 2207*691f3413SSatya Priya Kakitapalli }, 2208*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2209*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2210*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2211*691f3413SSatya Priya Kakitapalli }, 2212*691f3413SSatya Priya Kakitapalli }, 2213*691f3413SSatya Priya Kakitapalli }; 2214*691f3413SSatya Priya Kakitapalli 2215*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_0_ahb_clk = { 2216*691f3413SSatya Priya Kakitapalli .halt_reg = 0x8040, 2217*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2218*691f3413SSatya Priya Kakitapalli .clkr = { 2219*691f3413SSatya Priya Kakitapalli .enable_reg = 0x8040, 2220*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2221*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2222*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ipe_0_ahb_clk", 2223*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2224*691f3413SSatya Priya Kakitapalli &cam_cc_slow_ahb_clk_src.clkr.hw, 2225*691f3413SSatya Priya Kakitapalli }, 2226*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2227*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2228*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2229*691f3413SSatya Priya Kakitapalli }, 2230*691f3413SSatya Priya Kakitapalli }, 2231*691f3413SSatya Priya Kakitapalli }; 2232*691f3413SSatya Priya Kakitapalli 2233*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_0_areg_clk = { 2234*691f3413SSatya Priya Kakitapalli .halt_reg = 0x803c, 2235*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2236*691f3413SSatya Priya Kakitapalli .clkr = { 2237*691f3413SSatya Priya Kakitapalli .enable_reg = 0x803c, 2238*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2239*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2240*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ipe_0_areg_clk", 2241*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2242*691f3413SSatya Priya Kakitapalli &cam_cc_fast_ahb_clk_src.clkr.hw, 2243*691f3413SSatya Priya Kakitapalli }, 2244*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2245*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2246*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2247*691f3413SSatya Priya Kakitapalli }, 2248*691f3413SSatya Priya Kakitapalli }, 2249*691f3413SSatya Priya Kakitapalli }; 2250*691f3413SSatya Priya Kakitapalli 2251*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_0_axi_clk = { 2252*691f3413SSatya Priya Kakitapalli .halt_reg = 0x8038, 2253*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2254*691f3413SSatya Priya Kakitapalli .clkr = { 2255*691f3413SSatya Priya Kakitapalli .enable_reg = 0x8038, 2256*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2257*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2258*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ipe_0_axi_clk", 2259*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2260*691f3413SSatya Priya Kakitapalli &cam_cc_camnoc_axi_clk_src.clkr.hw, 2261*691f3413SSatya Priya Kakitapalli }, 2262*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2263*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2264*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2265*691f3413SSatya Priya Kakitapalli }, 2266*691f3413SSatya Priya Kakitapalli }, 2267*691f3413SSatya Priya Kakitapalli }; 2268*691f3413SSatya Priya Kakitapalli 2269*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_0_clk = { 2270*691f3413SSatya Priya Kakitapalli .halt_reg = 0x8028, 2271*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2272*691f3413SSatya Priya Kakitapalli .clkr = { 2273*691f3413SSatya Priya Kakitapalli .enable_reg = 0x8028, 2274*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2275*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2276*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ipe_0_clk", 2277*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2278*691f3413SSatya Priya Kakitapalli &cam_cc_ipe_0_clk_src.clkr.hw, 2279*691f3413SSatya Priya Kakitapalli }, 2280*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2281*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2282*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2283*691f3413SSatya Priya Kakitapalli }, 2284*691f3413SSatya Priya Kakitapalli }, 2285*691f3413SSatya Priya Kakitapalli }; 2286*691f3413SSatya Priya Kakitapalli 2287*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_1_ahb_clk = { 2288*691f3413SSatya Priya Kakitapalli .halt_reg = 0x9028, 2289*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2290*691f3413SSatya Priya Kakitapalli .clkr = { 2291*691f3413SSatya Priya Kakitapalli .enable_reg = 0x9028, 2292*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2293*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2294*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ipe_1_ahb_clk", 2295*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2296*691f3413SSatya Priya Kakitapalli &cam_cc_slow_ahb_clk_src.clkr.hw, 2297*691f3413SSatya Priya Kakitapalli }, 2298*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2299*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2300*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2301*691f3413SSatya Priya Kakitapalli }, 2302*691f3413SSatya Priya Kakitapalli }, 2303*691f3413SSatya Priya Kakitapalli }; 2304*691f3413SSatya Priya Kakitapalli 2305*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_1_areg_clk = { 2306*691f3413SSatya Priya Kakitapalli .halt_reg = 0x9024, 2307*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2308*691f3413SSatya Priya Kakitapalli .clkr = { 2309*691f3413SSatya Priya Kakitapalli .enable_reg = 0x9024, 2310*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2311*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2312*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ipe_1_areg_clk", 2313*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2314*691f3413SSatya Priya Kakitapalli &cam_cc_fast_ahb_clk_src.clkr.hw, 2315*691f3413SSatya Priya Kakitapalli }, 2316*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2317*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2318*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2319*691f3413SSatya Priya Kakitapalli }, 2320*691f3413SSatya Priya Kakitapalli }, 2321*691f3413SSatya Priya Kakitapalli }; 2322*691f3413SSatya Priya Kakitapalli 2323*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_1_axi_clk = { 2324*691f3413SSatya Priya Kakitapalli .halt_reg = 0x9020, 2325*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2326*691f3413SSatya Priya Kakitapalli .clkr = { 2327*691f3413SSatya Priya Kakitapalli .enable_reg = 0x9020, 2328*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2329*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2330*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ipe_1_axi_clk", 2331*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2332*691f3413SSatya Priya Kakitapalli &cam_cc_camnoc_axi_clk_src.clkr.hw, 2333*691f3413SSatya Priya Kakitapalli }, 2334*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2335*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2336*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2337*691f3413SSatya Priya Kakitapalli }, 2338*691f3413SSatya Priya Kakitapalli }, 2339*691f3413SSatya Priya Kakitapalli }; 2340*691f3413SSatya Priya Kakitapalli 2341*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_ipe_1_clk = { 2342*691f3413SSatya Priya Kakitapalli .halt_reg = 0x9010, 2343*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2344*691f3413SSatya Priya Kakitapalli .clkr = { 2345*691f3413SSatya Priya Kakitapalli .enable_reg = 0x9010, 2346*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2347*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2348*691f3413SSatya Priya Kakitapalli .name = "cam_cc_ipe_1_clk", 2349*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2350*691f3413SSatya Priya Kakitapalli &cam_cc_ipe_0_clk_src.clkr.hw, 2351*691f3413SSatya Priya Kakitapalli }, 2352*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2353*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2354*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2355*691f3413SSatya Priya Kakitapalli }, 2356*691f3413SSatya Priya Kakitapalli }, 2357*691f3413SSatya Priya Kakitapalli }; 2358*691f3413SSatya Priya Kakitapalli 2359*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_jpeg_clk = { 2360*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc0a4, 2361*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2362*691f3413SSatya Priya Kakitapalli .clkr = { 2363*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc0a4, 2364*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2365*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2366*691f3413SSatya Priya Kakitapalli .name = "cam_cc_jpeg_clk", 2367*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2368*691f3413SSatya Priya Kakitapalli &cam_cc_jpeg_clk_src.clkr.hw, 2369*691f3413SSatya Priya Kakitapalli }, 2370*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2371*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2372*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2373*691f3413SSatya Priya Kakitapalli }, 2374*691f3413SSatya Priya Kakitapalli }, 2375*691f3413SSatya Priya Kakitapalli }; 2376*691f3413SSatya Priya Kakitapalli 2377*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_lrme_clk = { 2378*691f3413SSatya Priya Kakitapalli .halt_reg = 0xc15c, 2379*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2380*691f3413SSatya Priya Kakitapalli .clkr = { 2381*691f3413SSatya Priya Kakitapalli .enable_reg = 0xc15c, 2382*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2383*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2384*691f3413SSatya Priya Kakitapalli .name = "cam_cc_lrme_clk", 2385*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2386*691f3413SSatya Priya Kakitapalli &cam_cc_lrme_clk_src.clkr.hw, 2387*691f3413SSatya Priya Kakitapalli }, 2388*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2389*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2390*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2391*691f3413SSatya Priya Kakitapalli }, 2392*691f3413SSatya Priya Kakitapalli }, 2393*691f3413SSatya Priya Kakitapalli }; 2394*691f3413SSatya Priya Kakitapalli 2395*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk0_clk = { 2396*691f3413SSatya Priya Kakitapalli .halt_reg = 0x501c, 2397*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2398*691f3413SSatya Priya Kakitapalli .clkr = { 2399*691f3413SSatya Priya Kakitapalli .enable_reg = 0x501c, 2400*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2401*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2402*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk0_clk", 2403*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2404*691f3413SSatya Priya Kakitapalli &cam_cc_mclk0_clk_src.clkr.hw, 2405*691f3413SSatya Priya Kakitapalli }, 2406*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2407*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2408*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2409*691f3413SSatya Priya Kakitapalli }, 2410*691f3413SSatya Priya Kakitapalli }, 2411*691f3413SSatya Priya Kakitapalli }; 2412*691f3413SSatya Priya Kakitapalli 2413*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk1_clk = { 2414*691f3413SSatya Priya Kakitapalli .halt_reg = 0x503c, 2415*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2416*691f3413SSatya Priya Kakitapalli .clkr = { 2417*691f3413SSatya Priya Kakitapalli .enable_reg = 0x503c, 2418*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2419*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2420*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk1_clk", 2421*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2422*691f3413SSatya Priya Kakitapalli &cam_cc_mclk1_clk_src.clkr.hw, 2423*691f3413SSatya Priya Kakitapalli }, 2424*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2425*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2426*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2427*691f3413SSatya Priya Kakitapalli }, 2428*691f3413SSatya Priya Kakitapalli }, 2429*691f3413SSatya Priya Kakitapalli }; 2430*691f3413SSatya Priya Kakitapalli 2431*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk2_clk = { 2432*691f3413SSatya Priya Kakitapalli .halt_reg = 0x505c, 2433*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2434*691f3413SSatya Priya Kakitapalli .clkr = { 2435*691f3413SSatya Priya Kakitapalli .enable_reg = 0x505c, 2436*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2437*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2438*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk2_clk", 2439*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2440*691f3413SSatya Priya Kakitapalli &cam_cc_mclk2_clk_src.clkr.hw, 2441*691f3413SSatya Priya Kakitapalli }, 2442*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2443*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2444*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2445*691f3413SSatya Priya Kakitapalli }, 2446*691f3413SSatya Priya Kakitapalli }, 2447*691f3413SSatya Priya Kakitapalli }; 2448*691f3413SSatya Priya Kakitapalli 2449*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk3_clk = { 2450*691f3413SSatya Priya Kakitapalli .halt_reg = 0x507c, 2451*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2452*691f3413SSatya Priya Kakitapalli .clkr = { 2453*691f3413SSatya Priya Kakitapalli .enable_reg = 0x507c, 2454*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2455*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2456*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk3_clk", 2457*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2458*691f3413SSatya Priya Kakitapalli &cam_cc_mclk3_clk_src.clkr.hw, 2459*691f3413SSatya Priya Kakitapalli }, 2460*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2461*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2462*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2463*691f3413SSatya Priya Kakitapalli }, 2464*691f3413SSatya Priya Kakitapalli }, 2465*691f3413SSatya Priya Kakitapalli }; 2466*691f3413SSatya Priya Kakitapalli 2467*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk4_clk = { 2468*691f3413SSatya Priya Kakitapalli .halt_reg = 0x509c, 2469*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2470*691f3413SSatya Priya Kakitapalli .clkr = { 2471*691f3413SSatya Priya Kakitapalli .enable_reg = 0x509c, 2472*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2473*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2474*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk4_clk", 2475*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2476*691f3413SSatya Priya Kakitapalli &cam_cc_mclk4_clk_src.clkr.hw, 2477*691f3413SSatya Priya Kakitapalli }, 2478*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2479*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2480*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2481*691f3413SSatya Priya Kakitapalli }, 2482*691f3413SSatya Priya Kakitapalli }, 2483*691f3413SSatya Priya Kakitapalli }; 2484*691f3413SSatya Priya Kakitapalli 2485*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk5_clk = { 2486*691f3413SSatya Priya Kakitapalli .halt_reg = 0x50bc, 2487*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2488*691f3413SSatya Priya Kakitapalli .clkr = { 2489*691f3413SSatya Priya Kakitapalli .enable_reg = 0x50bc, 2490*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2491*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2492*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk5_clk", 2493*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2494*691f3413SSatya Priya Kakitapalli &cam_cc_mclk5_clk_src.clkr.hw, 2495*691f3413SSatya Priya Kakitapalli }, 2496*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2497*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2498*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2499*691f3413SSatya Priya Kakitapalli }, 2500*691f3413SSatya Priya Kakitapalli }, 2501*691f3413SSatya Priya Kakitapalli }; 2502*691f3413SSatya Priya Kakitapalli 2503*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk6_clk = { 2504*691f3413SSatya Priya Kakitapalli .halt_reg = 0x50dc, 2505*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2506*691f3413SSatya Priya Kakitapalli .clkr = { 2507*691f3413SSatya Priya Kakitapalli .enable_reg = 0x50dc, 2508*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2509*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2510*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk6_clk", 2511*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2512*691f3413SSatya Priya Kakitapalli &cam_cc_mclk6_clk_src.clkr.hw, 2513*691f3413SSatya Priya Kakitapalli }, 2514*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2515*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2516*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2517*691f3413SSatya Priya Kakitapalli }, 2518*691f3413SSatya Priya Kakitapalli }, 2519*691f3413SSatya Priya Kakitapalli }; 2520*691f3413SSatya Priya Kakitapalli 2521*691f3413SSatya Priya Kakitapalli static struct clk_branch cam_cc_mclk7_clk = { 2522*691f3413SSatya Priya Kakitapalli .halt_reg = 0x50fc, 2523*691f3413SSatya Priya Kakitapalli .halt_check = BRANCH_HALT, 2524*691f3413SSatya Priya Kakitapalli .clkr = { 2525*691f3413SSatya Priya Kakitapalli .enable_reg = 0x50fc, 2526*691f3413SSatya Priya Kakitapalli .enable_mask = BIT(0), 2527*691f3413SSatya Priya Kakitapalli .hw.init = &(const struct clk_init_data) { 2528*691f3413SSatya Priya Kakitapalli .name = "cam_cc_mclk7_clk", 2529*691f3413SSatya Priya Kakitapalli .parent_hws = (const struct clk_hw*[]) { 2530*691f3413SSatya Priya Kakitapalli &cam_cc_mclk7_clk_src.clkr.hw, 2531*691f3413SSatya Priya Kakitapalli }, 2532*691f3413SSatya Priya Kakitapalli .num_parents = 1, 2533*691f3413SSatya Priya Kakitapalli .flags = CLK_SET_RATE_PARENT, 2534*691f3413SSatya Priya Kakitapalli .ops = &clk_branch2_ops, 2535*691f3413SSatya Priya Kakitapalli }, 2536*691f3413SSatya Priya Kakitapalli }, 2537*691f3413SSatya Priya Kakitapalli }; 2538*691f3413SSatya Priya Kakitapalli 2539*691f3413SSatya Priya Kakitapalli static struct gdsc titan_top_gdsc = { 2540*691f3413SSatya Priya Kakitapalli .gdscr = 0xc1bc, 2541*691f3413SSatya Priya Kakitapalli .en_rest_wait_val = 0x2, 2542*691f3413SSatya Priya Kakitapalli .en_few_wait_val = 0x2, 2543*691f3413SSatya Priya Kakitapalli .clk_dis_wait_val = 0xf, 2544*691f3413SSatya Priya Kakitapalli .pd = { 2545*691f3413SSatya Priya Kakitapalli .name = "titan_top_gdsc", 2546*691f3413SSatya Priya Kakitapalli }, 2547*691f3413SSatya Priya Kakitapalli .pwrsts = PWRSTS_OFF_ON, 2548*691f3413SSatya Priya Kakitapalli .flags = POLL_CFG_GDSCR, 2549*691f3413SSatya Priya Kakitapalli }; 2550*691f3413SSatya Priya Kakitapalli 2551*691f3413SSatya Priya Kakitapalli static struct gdsc bps_gdsc = { 2552*691f3413SSatya Priya Kakitapalli .gdscr = 0x7004, 2553*691f3413SSatya Priya Kakitapalli .en_rest_wait_val = 0x2, 2554*691f3413SSatya Priya Kakitapalli .en_few_wait_val = 0x2, 2555*691f3413SSatya Priya Kakitapalli .clk_dis_wait_val = 0xf, 2556*691f3413SSatya Priya Kakitapalli .pd = { 2557*691f3413SSatya Priya Kakitapalli .name = "bps_gdsc", 2558*691f3413SSatya Priya Kakitapalli }, 2559*691f3413SSatya Priya Kakitapalli .pwrsts = PWRSTS_OFF_ON, 2560*691f3413SSatya Priya Kakitapalli .parent = &titan_top_gdsc.pd, 2561*691f3413SSatya Priya Kakitapalli .flags = POLL_CFG_GDSCR, 2562*691f3413SSatya Priya Kakitapalli }; 2563*691f3413SSatya Priya Kakitapalli 2564*691f3413SSatya Priya Kakitapalli static struct gdsc ife_0_gdsc = { 2565*691f3413SSatya Priya Kakitapalli .gdscr = 0xa004, 2566*691f3413SSatya Priya Kakitapalli .en_rest_wait_val = 0x2, 2567*691f3413SSatya Priya Kakitapalli .en_few_wait_val = 0x2, 2568*691f3413SSatya Priya Kakitapalli .clk_dis_wait_val = 0xf, 2569*691f3413SSatya Priya Kakitapalli .pd = { 2570*691f3413SSatya Priya Kakitapalli .name = "ife_0_gdsc", 2571*691f3413SSatya Priya Kakitapalli }, 2572*691f3413SSatya Priya Kakitapalli .pwrsts = PWRSTS_OFF_ON, 2573*691f3413SSatya Priya Kakitapalli .parent = &titan_top_gdsc.pd, 2574*691f3413SSatya Priya Kakitapalli .flags = POLL_CFG_GDSCR, 2575*691f3413SSatya Priya Kakitapalli }; 2576*691f3413SSatya Priya Kakitapalli 2577*691f3413SSatya Priya Kakitapalli static struct gdsc ife_1_gdsc = { 2578*691f3413SSatya Priya Kakitapalli .gdscr = 0xb004, 2579*691f3413SSatya Priya Kakitapalli .en_rest_wait_val = 0x2, 2580*691f3413SSatya Priya Kakitapalli .en_few_wait_val = 0x2, 2581*691f3413SSatya Priya Kakitapalli .clk_dis_wait_val = 0xf, 2582*691f3413SSatya Priya Kakitapalli .pd = { 2583*691f3413SSatya Priya Kakitapalli .name = "ife_1_gdsc", 2584*691f3413SSatya Priya Kakitapalli }, 2585*691f3413SSatya Priya Kakitapalli .pwrsts = PWRSTS_OFF_ON, 2586*691f3413SSatya Priya Kakitapalli .parent = &titan_top_gdsc.pd, 2587*691f3413SSatya Priya Kakitapalli .flags = POLL_CFG_GDSCR, 2588*691f3413SSatya Priya Kakitapalli }; 2589*691f3413SSatya Priya Kakitapalli 2590*691f3413SSatya Priya Kakitapalli static struct gdsc ife_2_gdsc = { 2591*691f3413SSatya Priya Kakitapalli .gdscr = 0xf004, 2592*691f3413SSatya Priya Kakitapalli .en_rest_wait_val = 0x2, 2593*691f3413SSatya Priya Kakitapalli .en_few_wait_val = 0x2, 2594*691f3413SSatya Priya Kakitapalli .clk_dis_wait_val = 0xf, 2595*691f3413SSatya Priya Kakitapalli .pd = { 2596*691f3413SSatya Priya Kakitapalli .name = "ife_2_gdsc", 2597*691f3413SSatya Priya Kakitapalli }, 2598*691f3413SSatya Priya Kakitapalli .pwrsts = PWRSTS_OFF_ON, 2599*691f3413SSatya Priya Kakitapalli .parent = &titan_top_gdsc.pd, 2600*691f3413SSatya Priya Kakitapalli .flags = POLL_CFG_GDSCR, 2601*691f3413SSatya Priya Kakitapalli }; 2602*691f3413SSatya Priya Kakitapalli 2603*691f3413SSatya Priya Kakitapalli static struct gdsc ife_3_gdsc = { 2604*691f3413SSatya Priya Kakitapalli .gdscr = 0xf070, 2605*691f3413SSatya Priya Kakitapalli .en_rest_wait_val = 0x2, 2606*691f3413SSatya Priya Kakitapalli .en_few_wait_val = 0x2, 2607*691f3413SSatya Priya Kakitapalli .clk_dis_wait_val = 0xf, 2608*691f3413SSatya Priya Kakitapalli .pd = { 2609*691f3413SSatya Priya Kakitapalli .name = "ife_3_gdsc", 2610*691f3413SSatya Priya Kakitapalli }, 2611*691f3413SSatya Priya Kakitapalli .pwrsts = PWRSTS_OFF_ON, 2612*691f3413SSatya Priya Kakitapalli .parent = &titan_top_gdsc.pd, 2613*691f3413SSatya Priya Kakitapalli .flags = POLL_CFG_GDSCR, 2614*691f3413SSatya Priya Kakitapalli }; 2615*691f3413SSatya Priya Kakitapalli 2616*691f3413SSatya Priya Kakitapalli static struct gdsc ipe_0_gdsc = { 2617*691f3413SSatya Priya Kakitapalli .gdscr = 0x8004, 2618*691f3413SSatya Priya Kakitapalli .en_rest_wait_val = 0x2, 2619*691f3413SSatya Priya Kakitapalli .en_few_wait_val = 0x2, 2620*691f3413SSatya Priya Kakitapalli .clk_dis_wait_val = 0xf, 2621*691f3413SSatya Priya Kakitapalli .pd = { 2622*691f3413SSatya Priya Kakitapalli .name = "ipe_0_gdsc", 2623*691f3413SSatya Priya Kakitapalli }, 2624*691f3413SSatya Priya Kakitapalli .pwrsts = PWRSTS_OFF_ON, 2625*691f3413SSatya Priya Kakitapalli .parent = &titan_top_gdsc.pd, 2626*691f3413SSatya Priya Kakitapalli .flags = POLL_CFG_GDSCR, 2627*691f3413SSatya Priya Kakitapalli }; 2628*691f3413SSatya Priya Kakitapalli 2629*691f3413SSatya Priya Kakitapalli static struct gdsc ipe_1_gdsc = { 2630*691f3413SSatya Priya Kakitapalli .gdscr = 0x9004, 2631*691f3413SSatya Priya Kakitapalli .en_rest_wait_val = 0x2, 2632*691f3413SSatya Priya Kakitapalli .en_few_wait_val = 0x2, 2633*691f3413SSatya Priya Kakitapalli .clk_dis_wait_val = 0xf, 2634*691f3413SSatya Priya Kakitapalli .pd = { 2635*691f3413SSatya Priya Kakitapalli .name = "ipe_1_gdsc", 2636*691f3413SSatya Priya Kakitapalli }, 2637*691f3413SSatya Priya Kakitapalli .pwrsts = PWRSTS_OFF_ON, 2638*691f3413SSatya Priya Kakitapalli .parent = &titan_top_gdsc.pd, 2639*691f3413SSatya Priya Kakitapalli .flags = POLL_CFG_GDSCR, 2640*691f3413SSatya Priya Kakitapalli }; 2641*691f3413SSatya Priya Kakitapalli 2642*691f3413SSatya Priya Kakitapalli static struct clk_regmap *cam_cc_sc8180x_clocks[] = { 2643*691f3413SSatya Priya Kakitapalli [CAM_CC_BPS_AHB_CLK] = &cam_cc_bps_ahb_clk.clkr, 2644*691f3413SSatya Priya Kakitapalli [CAM_CC_BPS_AREG_CLK] = &cam_cc_bps_areg_clk.clkr, 2645*691f3413SSatya Priya Kakitapalli [CAM_CC_BPS_AXI_CLK] = &cam_cc_bps_axi_clk.clkr, 2646*691f3413SSatya Priya Kakitapalli [CAM_CC_BPS_CLK] = &cam_cc_bps_clk.clkr, 2647*691f3413SSatya Priya Kakitapalli [CAM_CC_BPS_CLK_SRC] = &cam_cc_bps_clk_src.clkr, 2648*691f3413SSatya Priya Kakitapalli [CAM_CC_CAMNOC_AXI_CLK] = &cam_cc_camnoc_axi_clk.clkr, 2649*691f3413SSatya Priya Kakitapalli [CAM_CC_CAMNOC_AXI_CLK_SRC] = &cam_cc_camnoc_axi_clk_src.clkr, 2650*691f3413SSatya Priya Kakitapalli [CAM_CC_CAMNOC_DCD_XO_CLK] = &cam_cc_camnoc_dcd_xo_clk.clkr, 2651*691f3413SSatya Priya Kakitapalli [CAM_CC_CCI_0_CLK] = &cam_cc_cci_0_clk.clkr, 2652*691f3413SSatya Priya Kakitapalli [CAM_CC_CCI_0_CLK_SRC] = &cam_cc_cci_0_clk_src.clkr, 2653*691f3413SSatya Priya Kakitapalli [CAM_CC_CCI_1_CLK] = &cam_cc_cci_1_clk.clkr, 2654*691f3413SSatya Priya Kakitapalli [CAM_CC_CCI_1_CLK_SRC] = &cam_cc_cci_1_clk_src.clkr, 2655*691f3413SSatya Priya Kakitapalli [CAM_CC_CCI_2_CLK] = &cam_cc_cci_2_clk.clkr, 2656*691f3413SSatya Priya Kakitapalli [CAM_CC_CCI_2_CLK_SRC] = &cam_cc_cci_2_clk_src.clkr, 2657*691f3413SSatya Priya Kakitapalli [CAM_CC_CCI_3_CLK] = &cam_cc_cci_3_clk.clkr, 2658*691f3413SSatya Priya Kakitapalli [CAM_CC_CCI_3_CLK_SRC] = &cam_cc_cci_3_clk_src.clkr, 2659*691f3413SSatya Priya Kakitapalli [CAM_CC_CORE_AHB_CLK] = &cam_cc_core_ahb_clk.clkr, 2660*691f3413SSatya Priya Kakitapalli [CAM_CC_CPAS_AHB_CLK] = &cam_cc_cpas_ahb_clk.clkr, 2661*691f3413SSatya Priya Kakitapalli [CAM_CC_CPHY_RX_CLK_SRC] = &cam_cc_cphy_rx_clk_src.clkr, 2662*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI0PHYTIMER_CLK] = &cam_cc_csi0phytimer_clk.clkr, 2663*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI0PHYTIMER_CLK_SRC] = &cam_cc_csi0phytimer_clk_src.clkr, 2664*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI1PHYTIMER_CLK] = &cam_cc_csi1phytimer_clk.clkr, 2665*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI1PHYTIMER_CLK_SRC] = &cam_cc_csi1phytimer_clk_src.clkr, 2666*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI2PHYTIMER_CLK] = &cam_cc_csi2phytimer_clk.clkr, 2667*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI2PHYTIMER_CLK_SRC] = &cam_cc_csi2phytimer_clk_src.clkr, 2668*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI3PHYTIMER_CLK] = &cam_cc_csi3phytimer_clk.clkr, 2669*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI3PHYTIMER_CLK_SRC] = &cam_cc_csi3phytimer_clk_src.clkr, 2670*691f3413SSatya Priya Kakitapalli [CAM_CC_CSIPHY0_CLK] = &cam_cc_csiphy0_clk.clkr, 2671*691f3413SSatya Priya Kakitapalli [CAM_CC_CSIPHY1_CLK] = &cam_cc_csiphy1_clk.clkr, 2672*691f3413SSatya Priya Kakitapalli [CAM_CC_CSIPHY2_CLK] = &cam_cc_csiphy2_clk.clkr, 2673*691f3413SSatya Priya Kakitapalli [CAM_CC_CSIPHY3_CLK] = &cam_cc_csiphy3_clk.clkr, 2674*691f3413SSatya Priya Kakitapalli [CAM_CC_FAST_AHB_CLK_SRC] = &cam_cc_fast_ahb_clk_src.clkr, 2675*691f3413SSatya Priya Kakitapalli [CAM_CC_FD_CORE_CLK] = &cam_cc_fd_core_clk.clkr, 2676*691f3413SSatya Priya Kakitapalli [CAM_CC_FD_CORE_CLK_SRC] = &cam_cc_fd_core_clk_src.clkr, 2677*691f3413SSatya Priya Kakitapalli [CAM_CC_FD_CORE_UAR_CLK] = &cam_cc_fd_core_uar_clk.clkr, 2678*691f3413SSatya Priya Kakitapalli [CAM_CC_ICP_AHB_CLK] = &cam_cc_icp_ahb_clk.clkr, 2679*691f3413SSatya Priya Kakitapalli [CAM_CC_ICP_CLK] = &cam_cc_icp_clk.clkr, 2680*691f3413SSatya Priya Kakitapalli [CAM_CC_ICP_CLK_SRC] = &cam_cc_icp_clk_src.clkr, 2681*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_0_AXI_CLK] = &cam_cc_ife_0_axi_clk.clkr, 2682*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_0_CLK] = &cam_cc_ife_0_clk.clkr, 2683*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_0_CLK_SRC] = &cam_cc_ife_0_clk_src.clkr, 2684*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_0_CPHY_RX_CLK] = &cam_cc_ife_0_cphy_rx_clk.clkr, 2685*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_0_CSID_CLK] = &cam_cc_ife_0_csid_clk.clkr, 2686*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_0_CSID_CLK_SRC] = &cam_cc_ife_0_csid_clk_src.clkr, 2687*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_0_DSP_CLK] = &cam_cc_ife_0_dsp_clk.clkr, 2688*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_1_AXI_CLK] = &cam_cc_ife_1_axi_clk.clkr, 2689*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_1_CLK] = &cam_cc_ife_1_clk.clkr, 2690*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_1_CLK_SRC] = &cam_cc_ife_1_clk_src.clkr, 2691*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_1_CPHY_RX_CLK] = &cam_cc_ife_1_cphy_rx_clk.clkr, 2692*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_1_CSID_CLK] = &cam_cc_ife_1_csid_clk.clkr, 2693*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_1_CSID_CLK_SRC] = &cam_cc_ife_1_csid_clk_src.clkr, 2694*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_1_DSP_CLK] = &cam_cc_ife_1_dsp_clk.clkr, 2695*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_2_AXI_CLK] = &cam_cc_ife_2_axi_clk.clkr, 2696*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_2_CLK] = &cam_cc_ife_2_clk.clkr, 2697*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_2_CLK_SRC] = &cam_cc_ife_2_clk_src.clkr, 2698*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_2_CPHY_RX_CLK] = &cam_cc_ife_2_cphy_rx_clk.clkr, 2699*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_2_CSID_CLK] = &cam_cc_ife_2_csid_clk.clkr, 2700*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_2_CSID_CLK_SRC] = &cam_cc_ife_2_csid_clk_src.clkr, 2701*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_2_DSP_CLK] = &cam_cc_ife_2_dsp_clk.clkr, 2702*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_3_AXI_CLK] = &cam_cc_ife_3_axi_clk.clkr, 2703*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_3_CLK] = &cam_cc_ife_3_clk.clkr, 2704*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_3_CLK_SRC] = &cam_cc_ife_3_clk_src.clkr, 2705*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_3_CPHY_RX_CLK] = &cam_cc_ife_3_cphy_rx_clk.clkr, 2706*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_3_CSID_CLK] = &cam_cc_ife_3_csid_clk.clkr, 2707*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_3_CSID_CLK_SRC] = &cam_cc_ife_3_csid_clk_src.clkr, 2708*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_3_DSP_CLK] = &cam_cc_ife_3_dsp_clk.clkr, 2709*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_0_CLK] = &cam_cc_ife_lite_0_clk.clkr, 2710*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_0_CLK_SRC] = &cam_cc_ife_lite_0_clk_src.clkr, 2711*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_0_CPHY_RX_CLK] = &cam_cc_ife_lite_0_cphy_rx_clk.clkr, 2712*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_0_CSID_CLK] = &cam_cc_ife_lite_0_csid_clk.clkr, 2713*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_0_CSID_CLK_SRC] = &cam_cc_ife_lite_0_csid_clk_src.clkr, 2714*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_1_CLK] = &cam_cc_ife_lite_1_clk.clkr, 2715*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_1_CLK_SRC] = &cam_cc_ife_lite_1_clk_src.clkr, 2716*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_1_CPHY_RX_CLK] = &cam_cc_ife_lite_1_cphy_rx_clk.clkr, 2717*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_1_CSID_CLK] = &cam_cc_ife_lite_1_csid_clk.clkr, 2718*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_1_CSID_CLK_SRC] = &cam_cc_ife_lite_1_csid_clk_src.clkr, 2719*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_2_CLK] = &cam_cc_ife_lite_2_clk.clkr, 2720*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_2_CLK_SRC] = &cam_cc_ife_lite_2_clk_src.clkr, 2721*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_2_CPHY_RX_CLK] = &cam_cc_ife_lite_2_cphy_rx_clk.clkr, 2722*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_2_CSID_CLK] = &cam_cc_ife_lite_2_csid_clk.clkr, 2723*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_2_CSID_CLK_SRC] = &cam_cc_ife_lite_2_csid_clk_src.clkr, 2724*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_3_CLK] = &cam_cc_ife_lite_3_clk.clkr, 2725*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_3_CLK_SRC] = &cam_cc_ife_lite_3_clk_src.clkr, 2726*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_3_CPHY_RX_CLK] = &cam_cc_ife_lite_3_cphy_rx_clk.clkr, 2727*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_3_CSID_CLK] = &cam_cc_ife_lite_3_csid_clk.clkr, 2728*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_3_CSID_CLK_SRC] = &cam_cc_ife_lite_3_csid_clk_src.clkr, 2729*691f3413SSatya Priya Kakitapalli [CAM_CC_IPE_0_AHB_CLK] = &cam_cc_ipe_0_ahb_clk.clkr, 2730*691f3413SSatya Priya Kakitapalli [CAM_CC_IPE_0_AREG_CLK] = &cam_cc_ipe_0_areg_clk.clkr, 2731*691f3413SSatya Priya Kakitapalli [CAM_CC_IPE_0_AXI_CLK] = &cam_cc_ipe_0_axi_clk.clkr, 2732*691f3413SSatya Priya Kakitapalli [CAM_CC_IPE_0_CLK] = &cam_cc_ipe_0_clk.clkr, 2733*691f3413SSatya Priya Kakitapalli [CAM_CC_IPE_0_CLK_SRC] = &cam_cc_ipe_0_clk_src.clkr, 2734*691f3413SSatya Priya Kakitapalli [CAM_CC_IPE_1_AHB_CLK] = &cam_cc_ipe_1_ahb_clk.clkr, 2735*691f3413SSatya Priya Kakitapalli [CAM_CC_IPE_1_AREG_CLK] = &cam_cc_ipe_1_areg_clk.clkr, 2736*691f3413SSatya Priya Kakitapalli [CAM_CC_IPE_1_AXI_CLK] = &cam_cc_ipe_1_axi_clk.clkr, 2737*691f3413SSatya Priya Kakitapalli [CAM_CC_IPE_1_CLK] = &cam_cc_ipe_1_clk.clkr, 2738*691f3413SSatya Priya Kakitapalli [CAM_CC_JPEG_CLK] = &cam_cc_jpeg_clk.clkr, 2739*691f3413SSatya Priya Kakitapalli [CAM_CC_JPEG_CLK_SRC] = &cam_cc_jpeg_clk_src.clkr, 2740*691f3413SSatya Priya Kakitapalli [CAM_CC_LRME_CLK] = &cam_cc_lrme_clk.clkr, 2741*691f3413SSatya Priya Kakitapalli [CAM_CC_LRME_CLK_SRC] = &cam_cc_lrme_clk_src.clkr, 2742*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK0_CLK] = &cam_cc_mclk0_clk.clkr, 2743*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK0_CLK_SRC] = &cam_cc_mclk0_clk_src.clkr, 2744*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK1_CLK] = &cam_cc_mclk1_clk.clkr, 2745*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK1_CLK_SRC] = &cam_cc_mclk1_clk_src.clkr, 2746*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK2_CLK] = &cam_cc_mclk2_clk.clkr, 2747*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK2_CLK_SRC] = &cam_cc_mclk2_clk_src.clkr, 2748*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK3_CLK] = &cam_cc_mclk3_clk.clkr, 2749*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK3_CLK_SRC] = &cam_cc_mclk3_clk_src.clkr, 2750*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK4_CLK] = &cam_cc_mclk4_clk.clkr, 2751*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK4_CLK_SRC] = &cam_cc_mclk4_clk_src.clkr, 2752*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK5_CLK] = &cam_cc_mclk5_clk.clkr, 2753*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK5_CLK_SRC] = &cam_cc_mclk5_clk_src.clkr, 2754*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK6_CLK] = &cam_cc_mclk6_clk.clkr, 2755*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK6_CLK_SRC] = &cam_cc_mclk6_clk_src.clkr, 2756*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK7_CLK] = &cam_cc_mclk7_clk.clkr, 2757*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK7_CLK_SRC] = &cam_cc_mclk7_clk_src.clkr, 2758*691f3413SSatya Priya Kakitapalli [CAM_CC_PLL0] = &cam_cc_pll0.clkr, 2759*691f3413SSatya Priya Kakitapalli [CAM_CC_PLL0_OUT_EVEN] = &cam_cc_pll0_out_even.clkr, 2760*691f3413SSatya Priya Kakitapalli [CAM_CC_PLL0_OUT_ODD] = &cam_cc_pll0_out_odd.clkr, 2761*691f3413SSatya Priya Kakitapalli [CAM_CC_PLL1] = &cam_cc_pll1.clkr, 2762*691f3413SSatya Priya Kakitapalli [CAM_CC_PLL2] = &cam_cc_pll2.clkr, 2763*691f3413SSatya Priya Kakitapalli [CAM_CC_PLL2_OUT_MAIN] = &cam_cc_pll2_out_main.clkr, 2764*691f3413SSatya Priya Kakitapalli [CAM_CC_PLL3] = &cam_cc_pll3.clkr, 2765*691f3413SSatya Priya Kakitapalli [CAM_CC_PLL4] = &cam_cc_pll4.clkr, 2766*691f3413SSatya Priya Kakitapalli [CAM_CC_PLL5] = &cam_cc_pll5.clkr, 2767*691f3413SSatya Priya Kakitapalli [CAM_CC_PLL6] = &cam_cc_pll6.clkr, 2768*691f3413SSatya Priya Kakitapalli [CAM_CC_SLOW_AHB_CLK_SRC] = &cam_cc_slow_ahb_clk_src.clkr, 2769*691f3413SSatya Priya Kakitapalli [CAM_CC_XO_CLK_SRC] = &cam_cc_xo_clk_src.clkr, 2770*691f3413SSatya Priya Kakitapalli }; 2771*691f3413SSatya Priya Kakitapalli 2772*691f3413SSatya Priya Kakitapalli static struct gdsc *cam_cc_sc8180x_gdscs[] = { 2773*691f3413SSatya Priya Kakitapalli [BPS_GDSC] = &bps_gdsc, 2774*691f3413SSatya Priya Kakitapalli [IFE_0_GDSC] = &ife_0_gdsc, 2775*691f3413SSatya Priya Kakitapalli [IFE_1_GDSC] = &ife_1_gdsc, 2776*691f3413SSatya Priya Kakitapalli [IFE_2_GDSC] = &ife_2_gdsc, 2777*691f3413SSatya Priya Kakitapalli [IFE_3_GDSC] = &ife_3_gdsc, 2778*691f3413SSatya Priya Kakitapalli [IPE_0_GDSC] = &ipe_0_gdsc, 2779*691f3413SSatya Priya Kakitapalli [IPE_1_GDSC] = &ipe_1_gdsc, 2780*691f3413SSatya Priya Kakitapalli [TITAN_TOP_GDSC] = &titan_top_gdsc, 2781*691f3413SSatya Priya Kakitapalli }; 2782*691f3413SSatya Priya Kakitapalli 2783*691f3413SSatya Priya Kakitapalli static const struct qcom_reset_map cam_cc_sc8180x_resets[] = { 2784*691f3413SSatya Priya Kakitapalli [CAM_CC_BPS_BCR] = { 0x7000 }, 2785*691f3413SSatya Priya Kakitapalli [CAM_CC_CAMNOC_BCR] = { 0xc16c }, 2786*691f3413SSatya Priya Kakitapalli [CAM_CC_CCI_BCR] = { 0xc104 }, 2787*691f3413SSatya Priya Kakitapalli [CAM_CC_CPAS_BCR] = { 0xc164 }, 2788*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI0PHY_BCR] = { 0x6000 }, 2789*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI1PHY_BCR] = { 0x6024 }, 2790*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI2PHY_BCR] = { 0x6048 }, 2791*691f3413SSatya Priya Kakitapalli [CAM_CC_CSI3PHY_BCR] = { 0x606c }, 2792*691f3413SSatya Priya Kakitapalli [CAM_CC_FD_BCR] = { 0xc0dc }, 2793*691f3413SSatya Priya Kakitapalli [CAM_CC_ICP_BCR] = { 0xc0b4 }, 2794*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_0_BCR] = { 0xa000 }, 2795*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_1_BCR] = { 0xb000 }, 2796*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_2_BCR] = { 0xf000 }, 2797*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_3_BCR] = { 0xf06c }, 2798*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_0_BCR] = { 0xc000 }, 2799*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_1_BCR] = { 0xc044 }, 2800*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_2_BCR] = { 0xc23c }, 2801*691f3413SSatya Priya Kakitapalli [CAM_CC_IFE_LITE_3_BCR] = { 0xc280 }, 2802*691f3413SSatya Priya Kakitapalli [CAM_CC_IPE_0_BCR] = { 0x8000 }, 2803*691f3413SSatya Priya Kakitapalli [CAM_CC_IPE_1_BCR] = { 0x9000 }, 2804*691f3413SSatya Priya Kakitapalli [CAM_CC_JPEG_BCR] = { 0xc088 }, 2805*691f3413SSatya Priya Kakitapalli [CAM_CC_LRME_BCR] = { 0xc140 }, 2806*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK0_BCR] = { 0x5000 }, 2807*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK1_BCR] = { 0x5020 }, 2808*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK2_BCR] = { 0x5040 }, 2809*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK3_BCR] = { 0x5060 }, 2810*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK4_BCR] = { 0x5080 }, 2811*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK5_BCR] = { 0x50a0 }, 2812*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK6_BCR] = { 0x50c0 }, 2813*691f3413SSatya Priya Kakitapalli [CAM_CC_MCLK7_BCR] = { 0x50e0 }, 2814*691f3413SSatya Priya Kakitapalli }; 2815*691f3413SSatya Priya Kakitapalli 2816*691f3413SSatya Priya Kakitapalli static const struct regmap_config cam_cc_sc8180x_regmap_config = { 2817*691f3413SSatya Priya Kakitapalli .reg_bits = 32, 2818*691f3413SSatya Priya Kakitapalli .reg_stride = 4, 2819*691f3413SSatya Priya Kakitapalli .val_bits = 32, 2820*691f3413SSatya Priya Kakitapalli .max_register = 0xf0d4, 2821*691f3413SSatya Priya Kakitapalli .fast_io = true, 2822*691f3413SSatya Priya Kakitapalli }; 2823*691f3413SSatya Priya Kakitapalli 2824*691f3413SSatya Priya Kakitapalli static const struct qcom_cc_desc cam_cc_sc8180x_desc = { 2825*691f3413SSatya Priya Kakitapalli .config = &cam_cc_sc8180x_regmap_config, 2826*691f3413SSatya Priya Kakitapalli .clks = cam_cc_sc8180x_clocks, 2827*691f3413SSatya Priya Kakitapalli .num_clks = ARRAY_SIZE(cam_cc_sc8180x_clocks), 2828*691f3413SSatya Priya Kakitapalli .resets = cam_cc_sc8180x_resets, 2829*691f3413SSatya Priya Kakitapalli .num_resets = ARRAY_SIZE(cam_cc_sc8180x_resets), 2830*691f3413SSatya Priya Kakitapalli .gdscs = cam_cc_sc8180x_gdscs, 2831*691f3413SSatya Priya Kakitapalli .num_gdscs = ARRAY_SIZE(cam_cc_sc8180x_gdscs), 2832*691f3413SSatya Priya Kakitapalli }; 2833*691f3413SSatya Priya Kakitapalli 2834*691f3413SSatya Priya Kakitapalli static const struct of_device_id cam_cc_sc8180x_match_table[] = { 2835*691f3413SSatya Priya Kakitapalli { .compatible = "qcom,sc8180x-camcc" }, 2836*691f3413SSatya Priya Kakitapalli { } 2837*691f3413SSatya Priya Kakitapalli }; 2838*691f3413SSatya Priya Kakitapalli MODULE_DEVICE_TABLE(of, cam_cc_sc8180x_match_table); 2839*691f3413SSatya Priya Kakitapalli 2840*691f3413SSatya Priya Kakitapalli static int cam_cc_sc8180x_probe(struct platform_device *pdev) 2841*691f3413SSatya Priya Kakitapalli { 2842*691f3413SSatya Priya Kakitapalli struct regmap *regmap; 2843*691f3413SSatya Priya Kakitapalli int ret; 2844*691f3413SSatya Priya Kakitapalli 2845*691f3413SSatya Priya Kakitapalli ret = devm_pm_runtime_enable(&pdev->dev); 2846*691f3413SSatya Priya Kakitapalli if (ret) 2847*691f3413SSatya Priya Kakitapalli return ret; 2848*691f3413SSatya Priya Kakitapalli 2849*691f3413SSatya Priya Kakitapalli ret = pm_runtime_resume_and_get(&pdev->dev); 2850*691f3413SSatya Priya Kakitapalli if (ret) 2851*691f3413SSatya Priya Kakitapalli return ret; 2852*691f3413SSatya Priya Kakitapalli 2853*691f3413SSatya Priya Kakitapalli regmap = qcom_cc_map(pdev, &cam_cc_sc8180x_desc); 2854*691f3413SSatya Priya Kakitapalli if (IS_ERR(regmap)) { 2855*691f3413SSatya Priya Kakitapalli pm_runtime_put(&pdev->dev); 2856*691f3413SSatya Priya Kakitapalli return PTR_ERR(regmap); 2857*691f3413SSatya Priya Kakitapalli } 2858*691f3413SSatya Priya Kakitapalli 2859*691f3413SSatya Priya Kakitapalli clk_trion_pll_configure(&cam_cc_pll0, regmap, &cam_cc_pll0_config); 2860*691f3413SSatya Priya Kakitapalli clk_trion_pll_configure(&cam_cc_pll1, regmap, &cam_cc_pll1_config); 2861*691f3413SSatya Priya Kakitapalli clk_regera_pll_configure(&cam_cc_pll2, regmap, &cam_cc_pll2_config); 2862*691f3413SSatya Priya Kakitapalli clk_trion_pll_configure(&cam_cc_pll3, regmap, &cam_cc_pll3_config); 2863*691f3413SSatya Priya Kakitapalli clk_trion_pll_configure(&cam_cc_pll4, regmap, &cam_cc_pll4_config); 2864*691f3413SSatya Priya Kakitapalli clk_trion_pll_configure(&cam_cc_pll5, regmap, &cam_cc_pll5_config); 2865*691f3413SSatya Priya Kakitapalli clk_trion_pll_configure(&cam_cc_pll6, regmap, &cam_cc_pll6_config); 2866*691f3413SSatya Priya Kakitapalli 2867*691f3413SSatya Priya Kakitapalli /* Keep some clocks always enabled */ 2868*691f3413SSatya Priya Kakitapalli qcom_branch_set_clk_en(regmap, 0xc1e4); /* CAM_CC_GDSC_CLK */ 2869*691f3413SSatya Priya Kakitapalli qcom_branch_set_clk_en(regmap, 0xc200); /* CAM_CC_SLEEP_CLK */ 2870*691f3413SSatya Priya Kakitapalli 2871*691f3413SSatya Priya Kakitapalli ret = qcom_cc_really_probe(&pdev->dev, &cam_cc_sc8180x_desc, regmap); 2872*691f3413SSatya Priya Kakitapalli 2873*691f3413SSatya Priya Kakitapalli pm_runtime_put(&pdev->dev); 2874*691f3413SSatya Priya Kakitapalli 2875*691f3413SSatya Priya Kakitapalli return ret; 2876*691f3413SSatya Priya Kakitapalli } 2877*691f3413SSatya Priya Kakitapalli 2878*691f3413SSatya Priya Kakitapalli static struct platform_driver cam_cc_sc8180x_driver = { 2879*691f3413SSatya Priya Kakitapalli .probe = cam_cc_sc8180x_probe, 2880*691f3413SSatya Priya Kakitapalli .driver = { 2881*691f3413SSatya Priya Kakitapalli .name = "camcc-sc8180x", 2882*691f3413SSatya Priya Kakitapalli .of_match_table = cam_cc_sc8180x_match_table, 2883*691f3413SSatya Priya Kakitapalli }, 2884*691f3413SSatya Priya Kakitapalli }; 2885*691f3413SSatya Priya Kakitapalli 2886*691f3413SSatya Priya Kakitapalli module_platform_driver(cam_cc_sc8180x_driver); 2887*691f3413SSatya Priya Kakitapalli 2888*691f3413SSatya Priya Kakitapalli MODULE_DESCRIPTION("QTI CAMCC SC8180X Driver"); 2889*691f3413SSatya Priya Kakitapalli MODULE_LICENSE("GPL"); 2890