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