xref: /openbmc/linux/drivers/clk/qcom/camcc-sm8450.c (revision a2a796c1)
16082037fSVladimir Zapolskiy // SPDX-License-Identifier: GPL-2.0-only
26082037fSVladimir Zapolskiy /*
36082037fSVladimir Zapolskiy  * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
46082037fSVladimir Zapolskiy  */
56082037fSVladimir Zapolskiy 
66082037fSVladimir Zapolskiy #include <linux/clk-provider.h>
76082037fSVladimir Zapolskiy #include <linux/mod_devicetable.h>
86082037fSVladimir Zapolskiy #include <linux/module.h>
96082037fSVladimir Zapolskiy #include <linux/platform_device.h>
106082037fSVladimir Zapolskiy #include <linux/regmap.h>
116082037fSVladimir Zapolskiy 
126082037fSVladimir Zapolskiy #include <dt-bindings/clock/qcom,sm8450-camcc.h>
136082037fSVladimir Zapolskiy 
146082037fSVladimir Zapolskiy #include "clk-alpha-pll.h"
156082037fSVladimir Zapolskiy #include "clk-branch.h"
166082037fSVladimir Zapolskiy #include "clk-pll.h"
176082037fSVladimir Zapolskiy #include "clk-rcg.h"
186082037fSVladimir Zapolskiy #include "clk-regmap-divider.h"
196082037fSVladimir Zapolskiy #include "clk-regmap-mux.h"
206082037fSVladimir Zapolskiy #include "clk-regmap.h"
216082037fSVladimir Zapolskiy #include "common.h"
226082037fSVladimir Zapolskiy #include "gdsc.h"
236082037fSVladimir Zapolskiy #include "reset.h"
246082037fSVladimir Zapolskiy 
256082037fSVladimir Zapolskiy enum {
266082037fSVladimir Zapolskiy 	DT_IFACE,
276082037fSVladimir Zapolskiy 	DT_BI_TCXO,
286082037fSVladimir Zapolskiy 	DT_BI_TCXO_AO,
296082037fSVladimir Zapolskiy 	DT_SLEEP_CLK
306082037fSVladimir Zapolskiy };
316082037fSVladimir Zapolskiy 
326082037fSVladimir Zapolskiy enum {
336082037fSVladimir Zapolskiy 	P_BI_TCXO,
346082037fSVladimir Zapolskiy 	P_CAM_CC_PLL0_OUT_EVEN,
356082037fSVladimir Zapolskiy 	P_CAM_CC_PLL0_OUT_MAIN,
366082037fSVladimir Zapolskiy 	P_CAM_CC_PLL0_OUT_ODD,
376082037fSVladimir Zapolskiy 	P_CAM_CC_PLL1_OUT_EVEN,
386082037fSVladimir Zapolskiy 	P_CAM_CC_PLL2_OUT_EVEN,
396082037fSVladimir Zapolskiy 	P_CAM_CC_PLL2_OUT_MAIN,
406082037fSVladimir Zapolskiy 	P_CAM_CC_PLL3_OUT_EVEN,
416082037fSVladimir Zapolskiy 	P_CAM_CC_PLL4_OUT_EVEN,
426082037fSVladimir Zapolskiy 	P_CAM_CC_PLL5_OUT_EVEN,
436082037fSVladimir Zapolskiy 	P_CAM_CC_PLL6_OUT_EVEN,
446082037fSVladimir Zapolskiy 	P_CAM_CC_PLL7_OUT_EVEN,
456082037fSVladimir Zapolskiy 	P_CAM_CC_PLL8_OUT_EVEN,
466082037fSVladimir Zapolskiy 	P_SLEEP_CLK,
476082037fSVladimir Zapolskiy };
486082037fSVladimir Zapolskiy 
496082037fSVladimir Zapolskiy static const struct pll_vco lucid_evo_vco[] = {
506082037fSVladimir Zapolskiy 	{ 249600000, 2000000000, 0 },
516082037fSVladimir Zapolskiy };
526082037fSVladimir Zapolskiy 
536082037fSVladimir Zapolskiy static const struct pll_vco rivian_evo_vco[] = {
546082037fSVladimir Zapolskiy 	{ 864000000, 1056000000, 0 },
556082037fSVladimir Zapolskiy };
566082037fSVladimir Zapolskiy 
576082037fSVladimir Zapolskiy static const struct clk_parent_data pll_parent_data_tcxo = { .index = DT_BI_TCXO };
586082037fSVladimir Zapolskiy 
596082037fSVladimir Zapolskiy static const struct alpha_pll_config cam_cc_pll0_config = {
606082037fSVladimir Zapolskiy 	.l = 0x3e,
616082037fSVladimir Zapolskiy 	.alpha = 0x8000,
626082037fSVladimir Zapolskiy 	.config_ctl_val = 0x20485699,
636082037fSVladimir Zapolskiy 	.config_ctl_hi_val = 0x00182261,
646082037fSVladimir Zapolskiy 	.config_ctl_hi1_val = 0x32aa299c,
656082037fSVladimir Zapolskiy 	.user_ctl_val = 0x00008400,
666082037fSVladimir Zapolskiy 	.user_ctl_hi_val = 0x00000805,
676082037fSVladimir Zapolskiy };
686082037fSVladimir Zapolskiy 
696082037fSVladimir Zapolskiy static struct clk_alpha_pll cam_cc_pll0 = {
706082037fSVladimir Zapolskiy 	.offset = 0x0,
716082037fSVladimir Zapolskiy 	.vco_table = lucid_evo_vco,
726082037fSVladimir Zapolskiy 	.num_vco = ARRAY_SIZE(lucid_evo_vco),
736082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
746082037fSVladimir Zapolskiy 	.clkr = {
756082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
766082037fSVladimir Zapolskiy 			.name = "cam_cc_pll0",
776082037fSVladimir Zapolskiy 			.parent_data = &pll_parent_data_tcxo,
786082037fSVladimir Zapolskiy 			.num_parents = 1,
796082037fSVladimir Zapolskiy 			.ops = &clk_alpha_pll_lucid_evo_ops,
806082037fSVladimir Zapolskiy 		},
816082037fSVladimir Zapolskiy 	},
826082037fSVladimir Zapolskiy };
836082037fSVladimir Zapolskiy 
846082037fSVladimir Zapolskiy static const struct clk_div_table post_div_table_cam_cc_pll0_out_even[] = {
856082037fSVladimir Zapolskiy 	{ 0x1, 2 },
866082037fSVladimir Zapolskiy 	{ }
876082037fSVladimir Zapolskiy };
886082037fSVladimir Zapolskiy 
896082037fSVladimir Zapolskiy static struct clk_alpha_pll_postdiv cam_cc_pll0_out_even = {
906082037fSVladimir Zapolskiy 	.offset = 0x0,
916082037fSVladimir Zapolskiy 	.post_div_shift = 10,
926082037fSVladimir Zapolskiy 	.post_div_table = post_div_table_cam_cc_pll0_out_even,
936082037fSVladimir Zapolskiy 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_even),
946082037fSVladimir Zapolskiy 	.width = 4,
956082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
966082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
976082037fSVladimir Zapolskiy 		.name = "cam_cc_pll0_out_even",
98*a2a796c1SDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
99*a2a796c1SDmitry Baryshkov 			&cam_cc_pll0.clkr.hw,
1006082037fSVladimir Zapolskiy 		},
1016082037fSVladimir Zapolskiy 		.num_parents = 1,
1026082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
1036082037fSVladimir Zapolskiy 		.ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
1046082037fSVladimir Zapolskiy 	},
1056082037fSVladimir Zapolskiy };
1066082037fSVladimir Zapolskiy 
1076082037fSVladimir Zapolskiy static const struct clk_div_table post_div_table_cam_cc_pll0_out_odd[] = {
1086082037fSVladimir Zapolskiy 	{ 0x2, 3 },
1096082037fSVladimir Zapolskiy 	{ }
1106082037fSVladimir Zapolskiy };
1116082037fSVladimir Zapolskiy 
1126082037fSVladimir Zapolskiy static struct clk_alpha_pll_postdiv cam_cc_pll0_out_odd = {
1136082037fSVladimir Zapolskiy 	.offset = 0x0,
1146082037fSVladimir Zapolskiy 	.post_div_shift = 14,
1156082037fSVladimir Zapolskiy 	.post_div_table = post_div_table_cam_cc_pll0_out_odd,
1166082037fSVladimir Zapolskiy 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_odd),
1176082037fSVladimir Zapolskiy 	.width = 4,
1186082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
1196082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
1206082037fSVladimir Zapolskiy 		.name = "cam_cc_pll0_out_odd",
121*a2a796c1SDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
122*a2a796c1SDmitry Baryshkov 			&cam_cc_pll0.clkr.hw,
1236082037fSVladimir Zapolskiy 		},
1246082037fSVladimir Zapolskiy 		.num_parents = 1,
1256082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
1266082037fSVladimir Zapolskiy 		.ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
1276082037fSVladimir Zapolskiy 	},
1286082037fSVladimir Zapolskiy };
1296082037fSVladimir Zapolskiy 
1306082037fSVladimir Zapolskiy static const struct alpha_pll_config cam_cc_pll1_config = {
1316082037fSVladimir Zapolskiy 	.l = 0x25,
1326082037fSVladimir Zapolskiy 	.alpha = 0xeaaa,
1336082037fSVladimir Zapolskiy 	.config_ctl_val = 0x20485699,
1346082037fSVladimir Zapolskiy 	.config_ctl_hi_val = 0x00182261,
1356082037fSVladimir Zapolskiy 	.config_ctl_hi1_val = 0x32aa299c,
1366082037fSVladimir Zapolskiy 	.user_ctl_val = 0x00000400,
1376082037fSVladimir Zapolskiy 	.user_ctl_hi_val = 0x00000805,
1386082037fSVladimir Zapolskiy };
1396082037fSVladimir Zapolskiy 
1406082037fSVladimir Zapolskiy static struct clk_alpha_pll cam_cc_pll1 = {
1416082037fSVladimir Zapolskiy 	.offset = 0x1000,
1426082037fSVladimir Zapolskiy 	.vco_table = lucid_evo_vco,
1436082037fSVladimir Zapolskiy 	.num_vco = ARRAY_SIZE(lucid_evo_vco),
1446082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
1456082037fSVladimir Zapolskiy 	.clkr = {
1466082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
1476082037fSVladimir Zapolskiy 			.name = "cam_cc_pll1",
1486082037fSVladimir Zapolskiy 			.parent_data = &pll_parent_data_tcxo,
1496082037fSVladimir Zapolskiy 			.num_parents = 1,
1506082037fSVladimir Zapolskiy 			.ops = &clk_alpha_pll_lucid_evo_ops,
1516082037fSVladimir Zapolskiy 		},
1526082037fSVladimir Zapolskiy 	},
1536082037fSVladimir Zapolskiy };
1546082037fSVladimir Zapolskiy 
1556082037fSVladimir Zapolskiy static const struct clk_div_table post_div_table_cam_cc_pll1_out_even[] = {
1566082037fSVladimir Zapolskiy 	{ 0x1, 2 },
1576082037fSVladimir Zapolskiy 	{ }
1586082037fSVladimir Zapolskiy };
1596082037fSVladimir Zapolskiy 
1606082037fSVladimir Zapolskiy static struct clk_alpha_pll_postdiv cam_cc_pll1_out_even = {
1616082037fSVladimir Zapolskiy 	.offset = 0x1000,
1626082037fSVladimir Zapolskiy 	.post_div_shift = 10,
1636082037fSVladimir Zapolskiy 	.post_div_table = post_div_table_cam_cc_pll1_out_even,
1646082037fSVladimir Zapolskiy 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll1_out_even),
1656082037fSVladimir Zapolskiy 	.width = 4,
1666082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
1676082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
1686082037fSVladimir Zapolskiy 		.name = "cam_cc_pll1_out_even",
169*a2a796c1SDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
170*a2a796c1SDmitry Baryshkov 			&cam_cc_pll1.clkr.hw,
1716082037fSVladimir Zapolskiy 		},
1726082037fSVladimir Zapolskiy 		.num_parents = 1,
1736082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
1746082037fSVladimir Zapolskiy 		.ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
1756082037fSVladimir Zapolskiy 	},
1766082037fSVladimir Zapolskiy };
1776082037fSVladimir Zapolskiy 
1786082037fSVladimir Zapolskiy static const struct alpha_pll_config cam_cc_pll2_config = {
1796082037fSVladimir Zapolskiy 	.l = 0x32,
1806082037fSVladimir Zapolskiy 	.alpha = 0x0,
1816082037fSVladimir Zapolskiy 	.config_ctl_val = 0x90008820,
1826082037fSVladimir Zapolskiy 	.config_ctl_hi_val = 0x00890263,
1836082037fSVladimir Zapolskiy 	.config_ctl_hi1_val = 0x00000217,
1846082037fSVladimir Zapolskiy };
1856082037fSVladimir Zapolskiy 
1866082037fSVladimir Zapolskiy static struct clk_alpha_pll cam_cc_pll2 = {
1876082037fSVladimir Zapolskiy 	.offset = 0x2000,
1886082037fSVladimir Zapolskiy 	.vco_table = rivian_evo_vco,
1896082037fSVladimir Zapolskiy 	.num_vco = ARRAY_SIZE(rivian_evo_vco),
1906082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_RIVIAN_EVO],
1916082037fSVladimir Zapolskiy 	.clkr = {
1926082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
1936082037fSVladimir Zapolskiy 			.name = "cam_cc_pll2",
1946082037fSVladimir Zapolskiy 			.parent_data = &pll_parent_data_tcxo,
1956082037fSVladimir Zapolskiy 			.num_parents = 1,
1966082037fSVladimir Zapolskiy 			.ops = &clk_alpha_pll_rivian_evo_ops,
1976082037fSVladimir Zapolskiy 		},
1986082037fSVladimir Zapolskiy 	},
1996082037fSVladimir Zapolskiy };
2006082037fSVladimir Zapolskiy 
2016082037fSVladimir Zapolskiy static const struct alpha_pll_config cam_cc_pll3_config = {
2026082037fSVladimir Zapolskiy 	.l = 0x2d,
2036082037fSVladimir Zapolskiy 	.alpha = 0x0,
2046082037fSVladimir Zapolskiy 	.config_ctl_val = 0x20485699,
2056082037fSVladimir Zapolskiy 	.config_ctl_hi_val = 0x00182261,
2066082037fSVladimir Zapolskiy 	.config_ctl_hi1_val = 0x32aa299c,
2076082037fSVladimir Zapolskiy 	.user_ctl_val = 0x00000400,
2086082037fSVladimir Zapolskiy 	.user_ctl_hi_val = 0x00000805,
2096082037fSVladimir Zapolskiy };
2106082037fSVladimir Zapolskiy 
2116082037fSVladimir Zapolskiy static struct clk_alpha_pll cam_cc_pll3 = {
2126082037fSVladimir Zapolskiy 	.offset = 0x3000,
2136082037fSVladimir Zapolskiy 	.vco_table = lucid_evo_vco,
2146082037fSVladimir Zapolskiy 	.num_vco = ARRAY_SIZE(lucid_evo_vco),
2156082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
2166082037fSVladimir Zapolskiy 	.clkr = {
2176082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
2186082037fSVladimir Zapolskiy 			.name = "cam_cc_pll3",
2196082037fSVladimir Zapolskiy 			.parent_data = &pll_parent_data_tcxo,
2206082037fSVladimir Zapolskiy 			.num_parents = 1,
2216082037fSVladimir Zapolskiy 			.ops = &clk_alpha_pll_lucid_evo_ops,
2226082037fSVladimir Zapolskiy 		},
2236082037fSVladimir Zapolskiy 	},
2246082037fSVladimir Zapolskiy };
2256082037fSVladimir Zapolskiy 
2266082037fSVladimir Zapolskiy static const struct clk_div_table post_div_table_cam_cc_pll3_out_even[] = {
2276082037fSVladimir Zapolskiy 	{ 0x1, 2 },
2286082037fSVladimir Zapolskiy 	{ }
2296082037fSVladimir Zapolskiy };
2306082037fSVladimir Zapolskiy 
2316082037fSVladimir Zapolskiy static struct clk_alpha_pll_postdiv cam_cc_pll3_out_even = {
2326082037fSVladimir Zapolskiy 	.offset = 0x3000,
2336082037fSVladimir Zapolskiy 	.post_div_shift = 10,
2346082037fSVladimir Zapolskiy 	.post_div_table = post_div_table_cam_cc_pll3_out_even,
2356082037fSVladimir Zapolskiy 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll3_out_even),
2366082037fSVladimir Zapolskiy 	.width = 4,
2376082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
2386082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
2396082037fSVladimir Zapolskiy 		.name = "cam_cc_pll3_out_even",
240*a2a796c1SDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
241*a2a796c1SDmitry Baryshkov 			&cam_cc_pll3.clkr.hw,
2426082037fSVladimir Zapolskiy 		},
2436082037fSVladimir Zapolskiy 		.num_parents = 1,
2446082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
2456082037fSVladimir Zapolskiy 		.ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
2466082037fSVladimir Zapolskiy 	},
2476082037fSVladimir Zapolskiy };
2486082037fSVladimir Zapolskiy 
2496082037fSVladimir Zapolskiy static const struct alpha_pll_config cam_cc_pll4_config = {
2506082037fSVladimir Zapolskiy 	.l = 0x2d,
2516082037fSVladimir Zapolskiy 	.alpha = 0x0,
2526082037fSVladimir Zapolskiy 	.config_ctl_val = 0x20485699,
2536082037fSVladimir Zapolskiy 	.config_ctl_hi_val = 0x00182261,
2546082037fSVladimir Zapolskiy 	.config_ctl_hi1_val = 0x32aa299c,
2556082037fSVladimir Zapolskiy 	.user_ctl_val = 0x00000400,
2566082037fSVladimir Zapolskiy 	.user_ctl_hi_val = 0x00000805,
2576082037fSVladimir Zapolskiy };
2586082037fSVladimir Zapolskiy 
2596082037fSVladimir Zapolskiy static struct clk_alpha_pll cam_cc_pll4 = {
2606082037fSVladimir Zapolskiy 	.offset = 0x4000,
2616082037fSVladimir Zapolskiy 	.vco_table = lucid_evo_vco,
2626082037fSVladimir Zapolskiy 	.num_vco = ARRAY_SIZE(lucid_evo_vco),
2636082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
2646082037fSVladimir Zapolskiy 	.clkr = {
2656082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
2666082037fSVladimir Zapolskiy 			.name = "cam_cc_pll4",
2676082037fSVladimir Zapolskiy 			.parent_data = &pll_parent_data_tcxo,
2686082037fSVladimir Zapolskiy 			.num_parents = 1,
2696082037fSVladimir Zapolskiy 			.ops = &clk_alpha_pll_lucid_evo_ops,
2706082037fSVladimir Zapolskiy 		},
2716082037fSVladimir Zapolskiy 	},
2726082037fSVladimir Zapolskiy };
2736082037fSVladimir Zapolskiy 
2746082037fSVladimir Zapolskiy static const struct clk_div_table post_div_table_cam_cc_pll4_out_even[] = {
2756082037fSVladimir Zapolskiy 	{ 0x1, 2 },
2766082037fSVladimir Zapolskiy 	{ }
2776082037fSVladimir Zapolskiy };
2786082037fSVladimir Zapolskiy 
2796082037fSVladimir Zapolskiy static struct clk_alpha_pll_postdiv cam_cc_pll4_out_even = {
2806082037fSVladimir Zapolskiy 	.offset = 0x4000,
2816082037fSVladimir Zapolskiy 	.post_div_shift = 10,
2826082037fSVladimir Zapolskiy 	.post_div_table = post_div_table_cam_cc_pll4_out_even,
2836082037fSVladimir Zapolskiy 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll4_out_even),
2846082037fSVladimir Zapolskiy 	.width = 4,
2856082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
2866082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
2876082037fSVladimir Zapolskiy 		.name = "cam_cc_pll4_out_even",
288*a2a796c1SDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
289*a2a796c1SDmitry Baryshkov 			&cam_cc_pll4.clkr.hw,
2906082037fSVladimir Zapolskiy 		},
2916082037fSVladimir Zapolskiy 		.num_parents = 1,
2926082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
2936082037fSVladimir Zapolskiy 		.ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
2946082037fSVladimir Zapolskiy 	},
2956082037fSVladimir Zapolskiy };
2966082037fSVladimir Zapolskiy 
2976082037fSVladimir Zapolskiy static const struct alpha_pll_config cam_cc_pll5_config = {
2986082037fSVladimir Zapolskiy 	.l = 0x2d,
2996082037fSVladimir Zapolskiy 	.alpha = 0x0,
3006082037fSVladimir Zapolskiy 	.config_ctl_val = 0x20485699,
3016082037fSVladimir Zapolskiy 	.config_ctl_hi_val = 0x00182261,
3026082037fSVladimir Zapolskiy 	.config_ctl_hi1_val = 0x32aa299c,
3036082037fSVladimir Zapolskiy 	.user_ctl_val = 0x00000400,
3046082037fSVladimir Zapolskiy 	.user_ctl_hi_val = 0x00000805,
3056082037fSVladimir Zapolskiy };
3066082037fSVladimir Zapolskiy 
3076082037fSVladimir Zapolskiy static struct clk_alpha_pll cam_cc_pll5 = {
3086082037fSVladimir Zapolskiy 	.offset = 0x5000,
3096082037fSVladimir Zapolskiy 	.vco_table = lucid_evo_vco,
3106082037fSVladimir Zapolskiy 	.num_vco = ARRAY_SIZE(lucid_evo_vco),
3116082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
3126082037fSVladimir Zapolskiy 	.clkr = {
3136082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
3146082037fSVladimir Zapolskiy 			.name = "cam_cc_pll5",
3156082037fSVladimir Zapolskiy 			.parent_data = &pll_parent_data_tcxo,
3166082037fSVladimir Zapolskiy 			.num_parents = 1,
3176082037fSVladimir Zapolskiy 			.ops = &clk_alpha_pll_lucid_evo_ops,
3186082037fSVladimir Zapolskiy 		},
3196082037fSVladimir Zapolskiy 	},
3206082037fSVladimir Zapolskiy };
3216082037fSVladimir Zapolskiy 
3226082037fSVladimir Zapolskiy static const struct clk_div_table post_div_table_cam_cc_pll5_out_even[] = {
3236082037fSVladimir Zapolskiy 	{ 0x1, 2 },
3246082037fSVladimir Zapolskiy 	{ }
3256082037fSVladimir Zapolskiy };
3266082037fSVladimir Zapolskiy 
3276082037fSVladimir Zapolskiy static struct clk_alpha_pll_postdiv cam_cc_pll5_out_even = {
3286082037fSVladimir Zapolskiy 	.offset = 0x5000,
3296082037fSVladimir Zapolskiy 	.post_div_shift = 10,
3306082037fSVladimir Zapolskiy 	.post_div_table = post_div_table_cam_cc_pll5_out_even,
3316082037fSVladimir Zapolskiy 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll5_out_even),
3326082037fSVladimir Zapolskiy 	.width = 4,
3336082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
3346082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
3356082037fSVladimir Zapolskiy 		.name = "cam_cc_pll5_out_even",
336*a2a796c1SDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
337*a2a796c1SDmitry Baryshkov 			&cam_cc_pll5.clkr.hw,
3386082037fSVladimir Zapolskiy 		},
3396082037fSVladimir Zapolskiy 		.num_parents = 1,
3406082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
3416082037fSVladimir Zapolskiy 		.ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
3426082037fSVladimir Zapolskiy 	},
3436082037fSVladimir Zapolskiy };
3446082037fSVladimir Zapolskiy 
3456082037fSVladimir Zapolskiy static const struct alpha_pll_config cam_cc_pll6_config = {
3466082037fSVladimir Zapolskiy 	.l = 0x2d,
3476082037fSVladimir Zapolskiy 	.alpha = 0x0,
3486082037fSVladimir Zapolskiy 	.config_ctl_val = 0x20485699,
3496082037fSVladimir Zapolskiy 	.config_ctl_hi_val = 0x00182261,
3506082037fSVladimir Zapolskiy 	.config_ctl_hi1_val = 0x32aa299c,
3516082037fSVladimir Zapolskiy 	.user_ctl_val = 0x00000400,
3526082037fSVladimir Zapolskiy 	.user_ctl_hi_val = 0x00000805,
3536082037fSVladimir Zapolskiy };
3546082037fSVladimir Zapolskiy 
3556082037fSVladimir Zapolskiy static struct clk_alpha_pll cam_cc_pll6 = {
3566082037fSVladimir Zapolskiy 	.offset = 0x6000,
3576082037fSVladimir Zapolskiy 	.vco_table = lucid_evo_vco,
3586082037fSVladimir Zapolskiy 	.num_vco = ARRAY_SIZE(lucid_evo_vco),
3596082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
3606082037fSVladimir Zapolskiy 	.clkr = {
3616082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
3626082037fSVladimir Zapolskiy 			.name = "cam_cc_pll6",
3636082037fSVladimir Zapolskiy 			.parent_data = &pll_parent_data_tcxo,
3646082037fSVladimir Zapolskiy 			.num_parents = 1,
3656082037fSVladimir Zapolskiy 			.ops = &clk_alpha_pll_lucid_evo_ops,
3666082037fSVladimir Zapolskiy 		},
3676082037fSVladimir Zapolskiy 	},
3686082037fSVladimir Zapolskiy };
3696082037fSVladimir Zapolskiy 
3706082037fSVladimir Zapolskiy static const struct clk_div_table post_div_table_cam_cc_pll6_out_even[] = {
3716082037fSVladimir Zapolskiy 	{ 0x1, 2 },
3726082037fSVladimir Zapolskiy 	{ }
3736082037fSVladimir Zapolskiy };
3746082037fSVladimir Zapolskiy 
3756082037fSVladimir Zapolskiy static struct clk_alpha_pll_postdiv cam_cc_pll6_out_even = {
3766082037fSVladimir Zapolskiy 	.offset = 0x6000,
3776082037fSVladimir Zapolskiy 	.post_div_shift = 10,
3786082037fSVladimir Zapolskiy 	.post_div_table = post_div_table_cam_cc_pll6_out_even,
3796082037fSVladimir Zapolskiy 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll6_out_even),
3806082037fSVladimir Zapolskiy 	.width = 4,
3816082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
3826082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
3836082037fSVladimir Zapolskiy 		.name = "cam_cc_pll6_out_even",
384*a2a796c1SDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
385*a2a796c1SDmitry Baryshkov 			&cam_cc_pll6.clkr.hw,
3866082037fSVladimir Zapolskiy 		},
3876082037fSVladimir Zapolskiy 		.num_parents = 1,
3886082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
3896082037fSVladimir Zapolskiy 		.ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
3906082037fSVladimir Zapolskiy 	},
3916082037fSVladimir Zapolskiy };
3926082037fSVladimir Zapolskiy 
3936082037fSVladimir Zapolskiy static const struct alpha_pll_config cam_cc_pll7_config = {
3946082037fSVladimir Zapolskiy 	.l = 0x2d,
3956082037fSVladimir Zapolskiy 	.alpha = 0x0,
3966082037fSVladimir Zapolskiy 	.config_ctl_val = 0x20485699,
3976082037fSVladimir Zapolskiy 	.config_ctl_hi_val = 0x00182261,
3986082037fSVladimir Zapolskiy 	.config_ctl_hi1_val = 0x32aa299c,
3996082037fSVladimir Zapolskiy 	.user_ctl_val = 0x00000400,
4006082037fSVladimir Zapolskiy 	.user_ctl_hi_val = 0x00000805,
4016082037fSVladimir Zapolskiy };
4026082037fSVladimir Zapolskiy 
4036082037fSVladimir Zapolskiy static struct clk_alpha_pll cam_cc_pll7 = {
4046082037fSVladimir Zapolskiy 	.offset = 0x7000,
4056082037fSVladimir Zapolskiy 	.vco_table = lucid_evo_vco,
4066082037fSVladimir Zapolskiy 	.num_vco = ARRAY_SIZE(lucid_evo_vco),
4076082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
4086082037fSVladimir Zapolskiy 	.clkr = {
4096082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
4106082037fSVladimir Zapolskiy 			.name = "cam_cc_pll7",
4116082037fSVladimir Zapolskiy 			.parent_data = &pll_parent_data_tcxo,
4126082037fSVladimir Zapolskiy 			.num_parents = 1,
4136082037fSVladimir Zapolskiy 			.ops = &clk_alpha_pll_lucid_evo_ops,
4146082037fSVladimir Zapolskiy 		},
4156082037fSVladimir Zapolskiy 	},
4166082037fSVladimir Zapolskiy };
4176082037fSVladimir Zapolskiy 
4186082037fSVladimir Zapolskiy static const struct clk_div_table post_div_table_cam_cc_pll7_out_even[] = {
4196082037fSVladimir Zapolskiy 	{ 0x1, 2 },
4206082037fSVladimir Zapolskiy 	{ }
4216082037fSVladimir Zapolskiy };
4226082037fSVladimir Zapolskiy 
4236082037fSVladimir Zapolskiy static struct clk_alpha_pll_postdiv cam_cc_pll7_out_even = {
4246082037fSVladimir Zapolskiy 	.offset = 0x7000,
4256082037fSVladimir Zapolskiy 	.post_div_shift = 10,
4266082037fSVladimir Zapolskiy 	.post_div_table = post_div_table_cam_cc_pll7_out_even,
4276082037fSVladimir Zapolskiy 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll7_out_even),
4286082037fSVladimir Zapolskiy 	.width = 4,
4296082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
4306082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
4316082037fSVladimir Zapolskiy 		.name = "cam_cc_pll7_out_even",
432*a2a796c1SDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
433*a2a796c1SDmitry Baryshkov 			&cam_cc_pll7.clkr.hw,
4346082037fSVladimir Zapolskiy 		},
4356082037fSVladimir Zapolskiy 		.num_parents = 1,
4366082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
4376082037fSVladimir Zapolskiy 		.ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
4386082037fSVladimir Zapolskiy 	},
4396082037fSVladimir Zapolskiy };
4406082037fSVladimir Zapolskiy 
4416082037fSVladimir Zapolskiy static const struct alpha_pll_config cam_cc_pll8_config = {
4426082037fSVladimir Zapolskiy 	.l = 0x32,
4436082037fSVladimir Zapolskiy 	.alpha = 0x0,
4446082037fSVladimir Zapolskiy 	.config_ctl_val = 0x20485699,
4456082037fSVladimir Zapolskiy 	.config_ctl_hi_val = 0x00182261,
4466082037fSVladimir Zapolskiy 	.config_ctl_hi1_val = 0x32aa299c,
4476082037fSVladimir Zapolskiy 	.user_ctl_val = 0x00000400,
4486082037fSVladimir Zapolskiy 	.user_ctl_hi_val = 0x00000805,
4496082037fSVladimir Zapolskiy };
4506082037fSVladimir Zapolskiy 
4516082037fSVladimir Zapolskiy static struct clk_alpha_pll cam_cc_pll8 = {
4526082037fSVladimir Zapolskiy 	.offset = 0x8000,
4536082037fSVladimir Zapolskiy 	.vco_table = lucid_evo_vco,
4546082037fSVladimir Zapolskiy 	.num_vco = ARRAY_SIZE(lucid_evo_vco),
4556082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
4566082037fSVladimir Zapolskiy 	.clkr = {
4576082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
4586082037fSVladimir Zapolskiy 			.name = "cam_cc_pll8",
4596082037fSVladimir Zapolskiy 			.parent_data = &pll_parent_data_tcxo,
4606082037fSVladimir Zapolskiy 			.num_parents = 1,
4616082037fSVladimir Zapolskiy 			.ops = &clk_alpha_pll_lucid_evo_ops,
4626082037fSVladimir Zapolskiy 		},
4636082037fSVladimir Zapolskiy 	},
4646082037fSVladimir Zapolskiy };
4656082037fSVladimir Zapolskiy 
4666082037fSVladimir Zapolskiy static const struct clk_div_table post_div_table_cam_cc_pll8_out_even[] = {
4676082037fSVladimir Zapolskiy 	{ 0x1, 2 },
4686082037fSVladimir Zapolskiy 	{ }
4696082037fSVladimir Zapolskiy };
4706082037fSVladimir Zapolskiy 
4716082037fSVladimir Zapolskiy static struct clk_alpha_pll_postdiv cam_cc_pll8_out_even = {
4726082037fSVladimir Zapolskiy 	.offset = 0x8000,
4736082037fSVladimir Zapolskiy 	.post_div_shift = 10,
4746082037fSVladimir Zapolskiy 	.post_div_table = post_div_table_cam_cc_pll8_out_even,
4756082037fSVladimir Zapolskiy 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll8_out_even),
4766082037fSVladimir Zapolskiy 	.width = 4,
4776082037fSVladimir Zapolskiy 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
4786082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
4796082037fSVladimir Zapolskiy 		.name = "cam_cc_pll8_out_even",
480*a2a796c1SDmitry Baryshkov 		.parent_hws = (const struct clk_hw*[]) {
481*a2a796c1SDmitry Baryshkov 			&cam_cc_pll8.clkr.hw,
4826082037fSVladimir Zapolskiy 		},
4836082037fSVladimir Zapolskiy 		.num_parents = 1,
4846082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
4856082037fSVladimir Zapolskiy 		.ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
4866082037fSVladimir Zapolskiy 	},
4876082037fSVladimir Zapolskiy };
4886082037fSVladimir Zapolskiy 
4896082037fSVladimir Zapolskiy static const struct parent_map cam_cc_parent_map_0[] = {
4906082037fSVladimir Zapolskiy 	{ P_BI_TCXO, 0 },
4916082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL0_OUT_MAIN, 1 },
4926082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL0_OUT_EVEN, 2 },
4936082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL0_OUT_ODD, 3 },
4946082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL8_OUT_EVEN, 5 },
4956082037fSVladimir Zapolskiy };
4966082037fSVladimir Zapolskiy 
4976082037fSVladimir Zapolskiy static const struct clk_parent_data cam_cc_parent_data_0[] = {
4986082037fSVladimir Zapolskiy 	{ .index = DT_BI_TCXO },
4996082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll0.clkr.hw },
5006082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll0_out_even.clkr.hw },
5016082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll0_out_odd.clkr.hw },
5026082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll8_out_even.clkr.hw },
5036082037fSVladimir Zapolskiy };
5046082037fSVladimir Zapolskiy 
5056082037fSVladimir Zapolskiy static const struct parent_map cam_cc_parent_map_1[] = {
5066082037fSVladimir Zapolskiy 	{ P_BI_TCXO, 0 },
5076082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL2_OUT_EVEN, 3 },
5086082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL2_OUT_MAIN, 5 },
5096082037fSVladimir Zapolskiy };
5106082037fSVladimir Zapolskiy 
5116082037fSVladimir Zapolskiy static const struct clk_parent_data cam_cc_parent_data_1[] = {
5126082037fSVladimir Zapolskiy 	{ .index = DT_BI_TCXO },
5136082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll2.clkr.hw },
5146082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll2.clkr.hw },
5156082037fSVladimir Zapolskiy };
5166082037fSVladimir Zapolskiy 
5176082037fSVladimir Zapolskiy static const struct parent_map cam_cc_parent_map_2[] = {
5186082037fSVladimir Zapolskiy 	{ P_BI_TCXO, 0 },
5196082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL3_OUT_EVEN, 6 },
5206082037fSVladimir Zapolskiy };
5216082037fSVladimir Zapolskiy 
5226082037fSVladimir Zapolskiy static const struct clk_parent_data cam_cc_parent_data_2[] = {
5236082037fSVladimir Zapolskiy 	{ .index = DT_BI_TCXO },
5246082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll3_out_even.clkr.hw },
5256082037fSVladimir Zapolskiy };
5266082037fSVladimir Zapolskiy 
5276082037fSVladimir Zapolskiy static const struct parent_map cam_cc_parent_map_3[] = {
5286082037fSVladimir Zapolskiy 	{ P_BI_TCXO, 0 },
5296082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL4_OUT_EVEN, 6 },
5306082037fSVladimir Zapolskiy };
5316082037fSVladimir Zapolskiy 
5326082037fSVladimir Zapolskiy static const struct clk_parent_data cam_cc_parent_data_3[] = {
5336082037fSVladimir Zapolskiy 	{ .index = DT_BI_TCXO },
5346082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll4_out_even.clkr.hw },
5356082037fSVladimir Zapolskiy };
5366082037fSVladimir Zapolskiy 
5376082037fSVladimir Zapolskiy static const struct parent_map cam_cc_parent_map_4[] = {
5386082037fSVladimir Zapolskiy 	{ P_BI_TCXO, 0 },
5396082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL5_OUT_EVEN, 6 },
5406082037fSVladimir Zapolskiy };
5416082037fSVladimir Zapolskiy 
5426082037fSVladimir Zapolskiy static const struct clk_parent_data cam_cc_parent_data_4[] = {
5436082037fSVladimir Zapolskiy 	{ .index = DT_BI_TCXO },
5446082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll5_out_even.clkr.hw },
5456082037fSVladimir Zapolskiy };
5466082037fSVladimir Zapolskiy 
5476082037fSVladimir Zapolskiy static const struct parent_map cam_cc_parent_map_5[] = {
5486082037fSVladimir Zapolskiy 	{ P_BI_TCXO, 0 },
5496082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL1_OUT_EVEN, 4 },
5506082037fSVladimir Zapolskiy };
5516082037fSVladimir Zapolskiy 
5526082037fSVladimir Zapolskiy static const struct clk_parent_data cam_cc_parent_data_5[] = {
5536082037fSVladimir Zapolskiy 	{ .index = DT_BI_TCXO },
5546082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll1_out_even.clkr.hw },
5556082037fSVladimir Zapolskiy };
5566082037fSVladimir Zapolskiy 
5576082037fSVladimir Zapolskiy static const struct parent_map cam_cc_parent_map_6[] = {
5586082037fSVladimir Zapolskiy 	{ P_BI_TCXO, 0 },
5596082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL6_OUT_EVEN, 6 },
5606082037fSVladimir Zapolskiy };
5616082037fSVladimir Zapolskiy 
5626082037fSVladimir Zapolskiy static const struct clk_parent_data cam_cc_parent_data_6[] = {
5636082037fSVladimir Zapolskiy 	{ .index = DT_BI_TCXO },
5646082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll6_out_even.clkr.hw },
5656082037fSVladimir Zapolskiy };
5666082037fSVladimir Zapolskiy 
5676082037fSVladimir Zapolskiy static const struct parent_map cam_cc_parent_map_7[] = {
5686082037fSVladimir Zapolskiy 	{ P_BI_TCXO, 0 },
5696082037fSVladimir Zapolskiy 	{ P_CAM_CC_PLL7_OUT_EVEN, 6 },
5706082037fSVladimir Zapolskiy };
5716082037fSVladimir Zapolskiy 
5726082037fSVladimir Zapolskiy static const struct clk_parent_data cam_cc_parent_data_7[] = {
5736082037fSVladimir Zapolskiy 	{ .index = DT_BI_TCXO },
5746082037fSVladimir Zapolskiy 	{ .hw = &cam_cc_pll7_out_even.clkr.hw },
5756082037fSVladimir Zapolskiy };
5766082037fSVladimir Zapolskiy 
5776082037fSVladimir Zapolskiy static const struct parent_map cam_cc_parent_map_8[] = {
5786082037fSVladimir Zapolskiy 	{ P_SLEEP_CLK, 0 },
5796082037fSVladimir Zapolskiy };
5806082037fSVladimir Zapolskiy 
5816082037fSVladimir Zapolskiy static const struct clk_parent_data cam_cc_parent_data_8[] = {
5826082037fSVladimir Zapolskiy 	{ .index = DT_SLEEP_CLK },
5836082037fSVladimir Zapolskiy };
5846082037fSVladimir Zapolskiy 
5856082037fSVladimir Zapolskiy static const struct parent_map cam_cc_parent_map_9[] = {
5866082037fSVladimir Zapolskiy 	{ P_BI_TCXO, 0 },
5876082037fSVladimir Zapolskiy };
5886082037fSVladimir Zapolskiy 
5896082037fSVladimir Zapolskiy static const struct clk_parent_data cam_cc_parent_data_9_ao[] = {
5906082037fSVladimir Zapolskiy 	{ .index = DT_BI_TCXO_AO, .name = "bi_tcxo_ao" },
5916082037fSVladimir Zapolskiy };
5926082037fSVladimir Zapolskiy 
5936082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_bps_clk_src[] = {
5946082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
5956082037fSVladimir Zapolskiy 	F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0),
5966082037fSVladimir Zapolskiy 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
5976082037fSVladimir Zapolskiy 	F(480000000, P_CAM_CC_PLL8_OUT_EVEN, 1, 0, 0),
5986082037fSVladimir Zapolskiy 	F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
5996082037fSVladimir Zapolskiy 	{ }
6006082037fSVladimir Zapolskiy };
6016082037fSVladimir Zapolskiy 
6026082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_bps_clk_src = {
6036082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x10050,
6046082037fSVladimir Zapolskiy 	.mnd_width = 0,
6056082037fSVladimir Zapolskiy 	.hid_width = 5,
6066082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
6076082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_bps_clk_src,
6086082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
6096082037fSVladimir Zapolskiy 		.name = "cam_cc_bps_clk_src",
6106082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
6116082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
6126082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
6136082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
6146082037fSVladimir Zapolskiy 	},
6156082037fSVladimir Zapolskiy };
6166082037fSVladimir Zapolskiy 
6176082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_camnoc_axi_clk_src[] = {
6186082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
6196082037fSVladimir Zapolskiy 	F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0),
6206082037fSVladimir Zapolskiy 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
6216082037fSVladimir Zapolskiy 	{ }
6226082037fSVladimir Zapolskiy };
6236082037fSVladimir Zapolskiy 
6246082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_camnoc_axi_clk_src = {
6256082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x13194,
6266082037fSVladimir Zapolskiy 	.mnd_width = 0,
6276082037fSVladimir Zapolskiy 	.hid_width = 5,
6286082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
6296082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_camnoc_axi_clk_src,
6306082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
6316082037fSVladimir Zapolskiy 		.name = "cam_cc_camnoc_axi_clk_src",
6326082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
6336082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
6346082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
6356082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
6366082037fSVladimir Zapolskiy 	},
6376082037fSVladimir Zapolskiy };
6386082037fSVladimir Zapolskiy 
6396082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_cci_0_clk_src[] = {
6406082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
6416082037fSVladimir Zapolskiy 	F(37500000, P_CAM_CC_PLL0_OUT_EVEN, 16, 0, 0),
6426082037fSVladimir Zapolskiy 	{ }
6436082037fSVladimir Zapolskiy };
6446082037fSVladimir Zapolskiy 
6456082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_cci_0_clk_src = {
6466082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x1312c,
6476082037fSVladimir Zapolskiy 	.mnd_width = 8,
6486082037fSVladimir Zapolskiy 	.hid_width = 5,
6496082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
6506082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_cci_0_clk_src,
6516082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
6526082037fSVladimir Zapolskiy 		.name = "cam_cc_cci_0_clk_src",
6536082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
6546082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
6556082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
6566082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
6576082037fSVladimir Zapolskiy 	},
6586082037fSVladimir Zapolskiy };
6596082037fSVladimir Zapolskiy 
6606082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_cci_1_clk_src = {
6616082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x13148,
6626082037fSVladimir Zapolskiy 	.mnd_width = 8,
6636082037fSVladimir Zapolskiy 	.hid_width = 5,
6646082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
6656082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_cci_0_clk_src,
6666082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
6676082037fSVladimir Zapolskiy 		.name = "cam_cc_cci_1_clk_src",
6686082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
6696082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
6706082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
6716082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
6726082037fSVladimir Zapolskiy 	},
6736082037fSVladimir Zapolskiy };
6746082037fSVladimir Zapolskiy 
6756082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_cphy_rx_clk_src[] = {
6766082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
6776082037fSVladimir Zapolskiy 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
6786082037fSVladimir Zapolskiy 	F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0),
6796082037fSVladimir Zapolskiy 	{ }
6806082037fSVladimir Zapolskiy };
6816082037fSVladimir Zapolskiy 
6826082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_cphy_rx_clk_src = {
6836082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x1104c,
6846082037fSVladimir Zapolskiy 	.mnd_width = 0,
6856082037fSVladimir Zapolskiy 	.hid_width = 5,
6866082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
6876082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_cphy_rx_clk_src,
6886082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
6896082037fSVladimir Zapolskiy 		.name = "cam_cc_cphy_rx_clk_src",
6906082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
6916082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
6926082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
6936082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
6946082037fSVladimir Zapolskiy 	},
6956082037fSVladimir Zapolskiy };
6966082037fSVladimir Zapolskiy 
6976082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_csi0phytimer_clk_src[] = {
6986082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
6996082037fSVladimir Zapolskiy 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
7006082037fSVladimir Zapolskiy 	{ }
7016082037fSVladimir Zapolskiy };
7026082037fSVladimir Zapolskiy 
7036082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_csi0phytimer_clk_src = {
7046082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x150e0,
7056082037fSVladimir Zapolskiy 	.mnd_width = 0,
7066082037fSVladimir Zapolskiy 	.hid_width = 5,
7076082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
7086082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
7096082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
7106082037fSVladimir Zapolskiy 		.name = "cam_cc_csi0phytimer_clk_src",
7116082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
7126082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
7136082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
7146082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
7156082037fSVladimir Zapolskiy 	},
7166082037fSVladimir Zapolskiy };
7176082037fSVladimir Zapolskiy 
7186082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_csi1phytimer_clk_src = {
7196082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x15104,
7206082037fSVladimir Zapolskiy 	.mnd_width = 0,
7216082037fSVladimir Zapolskiy 	.hid_width = 5,
7226082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
7236082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
7246082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
7256082037fSVladimir Zapolskiy 		.name = "cam_cc_csi1phytimer_clk_src",
7266082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
7276082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
7286082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
7296082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
7306082037fSVladimir Zapolskiy 	},
7316082037fSVladimir Zapolskiy };
7326082037fSVladimir Zapolskiy 
7336082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_csi2phytimer_clk_src = {
7346082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x15124,
7356082037fSVladimir Zapolskiy 	.mnd_width = 0,
7366082037fSVladimir Zapolskiy 	.hid_width = 5,
7376082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
7386082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
7396082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
7406082037fSVladimir Zapolskiy 		.name = "cam_cc_csi2phytimer_clk_src",
7416082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
7426082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
7436082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
7446082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
7456082037fSVladimir Zapolskiy 	},
7466082037fSVladimir Zapolskiy };
7476082037fSVladimir Zapolskiy 
7486082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_csi3phytimer_clk_src = {
7496082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x1514c,
7506082037fSVladimir Zapolskiy 	.mnd_width = 0,
7516082037fSVladimir Zapolskiy 	.hid_width = 5,
7526082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
7536082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
7546082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
7556082037fSVladimir Zapolskiy 		.name = "cam_cc_csi3phytimer_clk_src",
7566082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
7576082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
7586082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
7596082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
7606082037fSVladimir Zapolskiy 	},
7616082037fSVladimir Zapolskiy };
7626082037fSVladimir Zapolskiy 
7636082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_csi4phytimer_clk_src = {
7646082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x1516c,
7656082037fSVladimir Zapolskiy 	.mnd_width = 0,
7666082037fSVladimir Zapolskiy 	.hid_width = 5,
7676082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
7686082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
7696082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
7706082037fSVladimir Zapolskiy 		.name = "cam_cc_csi4phytimer_clk_src",
7716082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
7726082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
7736082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
7746082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
7756082037fSVladimir Zapolskiy 	},
7766082037fSVladimir Zapolskiy };
7776082037fSVladimir Zapolskiy 
7786082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_csi5phytimer_clk_src = {
7796082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x1518c,
7806082037fSVladimir Zapolskiy 	.mnd_width = 0,
7816082037fSVladimir Zapolskiy 	.hid_width = 5,
7826082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
7836082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
7846082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
7856082037fSVladimir Zapolskiy 		.name = "cam_cc_csi5phytimer_clk_src",
7866082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
7876082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
7886082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
7896082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
7906082037fSVladimir Zapolskiy 	},
7916082037fSVladimir Zapolskiy };
7926082037fSVladimir Zapolskiy 
7936082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_csid_clk_src[] = {
7946082037fSVladimir Zapolskiy 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
7956082037fSVladimir Zapolskiy 	F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0),
7966082037fSVladimir Zapolskiy 	{ }
7976082037fSVladimir Zapolskiy };
7986082037fSVladimir Zapolskiy 
7996082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_csid_clk_src = {
8006082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x13174,
8016082037fSVladimir Zapolskiy 	.mnd_width = 0,
8026082037fSVladimir Zapolskiy 	.hid_width = 5,
8036082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
8046082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_csid_clk_src,
8056082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
8066082037fSVladimir Zapolskiy 		.name = "cam_cc_csid_clk_src",
8076082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
8086082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
8096082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
8106082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
8116082037fSVladimir Zapolskiy 	},
8126082037fSVladimir Zapolskiy };
8136082037fSVladimir Zapolskiy 
8146082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_fast_ahb_clk_src[] = {
8156082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
8166082037fSVladimir Zapolskiy 	F(100000000, P_CAM_CC_PLL0_OUT_EVEN, 6, 0, 0),
8176082037fSVladimir Zapolskiy 	F(200000000, P_CAM_CC_PLL0_OUT_EVEN, 3, 0, 0),
8186082037fSVladimir Zapolskiy 	F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0),
8196082037fSVladimir Zapolskiy 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
8206082037fSVladimir Zapolskiy 	{ }
8216082037fSVladimir Zapolskiy };
8226082037fSVladimir Zapolskiy 
8236082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_fast_ahb_clk_src = {
8246082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x10018,
8256082037fSVladimir Zapolskiy 	.mnd_width = 0,
8266082037fSVladimir Zapolskiy 	.hid_width = 5,
8276082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
8286082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_fast_ahb_clk_src,
8296082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
8306082037fSVladimir Zapolskiy 		.name = "cam_cc_fast_ahb_clk_src",
8316082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
8326082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
8336082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
8346082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
8356082037fSVladimir Zapolskiy 	},
8366082037fSVladimir Zapolskiy };
8376082037fSVladimir Zapolskiy 
8386082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_icp_clk_src[] = {
8396082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
8406082037fSVladimir Zapolskiy 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
8416082037fSVladimir Zapolskiy 	F(480000000, P_CAM_CC_PLL8_OUT_EVEN, 1, 0, 0),
8426082037fSVladimir Zapolskiy 	F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0),
8436082037fSVladimir Zapolskiy 	{ }
8446082037fSVladimir Zapolskiy };
8456082037fSVladimir Zapolskiy 
8466082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_icp_clk_src = {
8476082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x13108,
8486082037fSVladimir Zapolskiy 	.mnd_width = 0,
8496082037fSVladimir Zapolskiy 	.hid_width = 5,
8506082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
8516082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_icp_clk_src,
8526082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
8536082037fSVladimir Zapolskiy 		.name = "cam_cc_icp_clk_src",
8546082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
8556082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
8566082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
8576082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
8586082037fSVladimir Zapolskiy 	},
8596082037fSVladimir Zapolskiy };
8606082037fSVladimir Zapolskiy 
8616082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_ife_0_clk_src[] = {
8626082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
8636082037fSVladimir Zapolskiy 	F(432000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
8646082037fSVladimir Zapolskiy 	F(594000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
8656082037fSVladimir Zapolskiy 	F(675000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
8666082037fSVladimir Zapolskiy 	F(727000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
8676082037fSVladimir Zapolskiy 	{ }
8686082037fSVladimir Zapolskiy };
8696082037fSVladimir Zapolskiy 
8706082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_ife_0_clk_src = {
8716082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x11018,
8726082037fSVladimir Zapolskiy 	.mnd_width = 0,
8736082037fSVladimir Zapolskiy 	.hid_width = 5,
8746082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_2,
8756082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_ife_0_clk_src,
8766082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
8776082037fSVladimir Zapolskiy 		.name = "cam_cc_ife_0_clk_src",
8786082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_2,
8796082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_2),
8806082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
8816082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
8826082037fSVladimir Zapolskiy 	},
8836082037fSVladimir Zapolskiy };
8846082037fSVladimir Zapolskiy 
8856082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_ife_1_clk_src[] = {
8866082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
8876082037fSVladimir Zapolskiy 	F(432000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
8886082037fSVladimir Zapolskiy 	F(594000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
8896082037fSVladimir Zapolskiy 	F(675000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
8906082037fSVladimir Zapolskiy 	F(727000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
8916082037fSVladimir Zapolskiy 	{ }
8926082037fSVladimir Zapolskiy };
8936082037fSVladimir Zapolskiy 
8946082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_ife_1_clk_src = {
8956082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x12018,
8966082037fSVladimir Zapolskiy 	.mnd_width = 0,
8976082037fSVladimir Zapolskiy 	.hid_width = 5,
8986082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_3,
8996082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_ife_1_clk_src,
9006082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
9016082037fSVladimir Zapolskiy 		.name = "cam_cc_ife_1_clk_src",
9026082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_3,
9036082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_3),
9046082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
9056082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
9066082037fSVladimir Zapolskiy 	},
9076082037fSVladimir Zapolskiy };
9086082037fSVladimir Zapolskiy 
9096082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_ife_2_clk_src[] = {
9106082037fSVladimir Zapolskiy 	F(432000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
9116082037fSVladimir Zapolskiy 	F(594000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
9126082037fSVladimir Zapolskiy 	F(675000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
9136082037fSVladimir Zapolskiy 	F(727000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
9146082037fSVladimir Zapolskiy 	{ }
9156082037fSVladimir Zapolskiy };
9166082037fSVladimir Zapolskiy 
9176082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_ife_2_clk_src = {
9186082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x12064,
9196082037fSVladimir Zapolskiy 	.mnd_width = 0,
9206082037fSVladimir Zapolskiy 	.hid_width = 5,
9216082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_4,
9226082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_ife_2_clk_src,
9236082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
9246082037fSVladimir Zapolskiy 		.name = "cam_cc_ife_2_clk_src",
9256082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_4,
9266082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_4),
9276082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
9286082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
9296082037fSVladimir Zapolskiy 	},
9306082037fSVladimir Zapolskiy };
9316082037fSVladimir Zapolskiy 
9326082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_ife_lite_clk_src[] = {
9336082037fSVladimir Zapolskiy 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
9346082037fSVladimir Zapolskiy 	F(480000000, P_CAM_CC_PLL8_OUT_EVEN, 1, 0, 0),
9356082037fSVladimir Zapolskiy 	{ }
9366082037fSVladimir Zapolskiy };
9376082037fSVladimir Zapolskiy 
9386082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_ife_lite_clk_src = {
9396082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x13000,
9406082037fSVladimir Zapolskiy 	.mnd_width = 0,
9416082037fSVladimir Zapolskiy 	.hid_width = 5,
9426082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
9436082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_ife_lite_clk_src,
9446082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
9456082037fSVladimir Zapolskiy 		.name = "cam_cc_ife_lite_clk_src",
9466082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
9476082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
9486082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
9496082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
9506082037fSVladimir Zapolskiy 	},
9516082037fSVladimir Zapolskiy };
9526082037fSVladimir Zapolskiy 
9536082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_ife_lite_csid_clk_src = {
9546082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x13024,
9556082037fSVladimir Zapolskiy 	.mnd_width = 0,
9566082037fSVladimir Zapolskiy 	.hid_width = 5,
9576082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
9586082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_ife_lite_clk_src,
9596082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
9606082037fSVladimir Zapolskiy 		.name = "cam_cc_ife_lite_csid_clk_src",
9616082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
9626082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
9636082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
9646082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
9656082037fSVladimir Zapolskiy 	},
9666082037fSVladimir Zapolskiy };
9676082037fSVladimir Zapolskiy 
9686082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_ipe_nps_clk_src[] = {
9696082037fSVladimir Zapolskiy 	F(364000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
9706082037fSVladimir Zapolskiy 	F(500000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
9716082037fSVladimir Zapolskiy 	F(600000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
9726082037fSVladimir Zapolskiy 	F(700000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
9736082037fSVladimir Zapolskiy 	{ }
9746082037fSVladimir Zapolskiy };
9756082037fSVladimir Zapolskiy 
9766082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_ipe_nps_clk_src = {
9776082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x1008c,
9786082037fSVladimir Zapolskiy 	.mnd_width = 0,
9796082037fSVladimir Zapolskiy 	.hid_width = 5,
9806082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_5,
9816082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_ipe_nps_clk_src,
9826082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
9836082037fSVladimir Zapolskiy 		.name = "cam_cc_ipe_nps_clk_src",
9846082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_5,
9856082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_5),
9866082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
9876082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
9886082037fSVladimir Zapolskiy 	},
9896082037fSVladimir Zapolskiy };
9906082037fSVladimir Zapolskiy 
9916082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_jpeg_clk_src = {
9926082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x130dc,
9936082037fSVladimir Zapolskiy 	.mnd_width = 0,
9946082037fSVladimir Zapolskiy 	.hid_width = 5,
9956082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
9966082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_bps_clk_src,
9976082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
9986082037fSVladimir Zapolskiy 		.name = "cam_cc_jpeg_clk_src",
9996082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
10006082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
10016082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
10026082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
10036082037fSVladimir Zapolskiy 	},
10046082037fSVladimir Zapolskiy };
10056082037fSVladimir Zapolskiy 
10066082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_mclk0_clk_src[] = {
10076082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
10086082037fSVladimir Zapolskiy 	F(24000000, P_CAM_CC_PLL2_OUT_MAIN, 10, 1, 4),
10096082037fSVladimir Zapolskiy 	F(68571429, P_CAM_CC_PLL2_OUT_MAIN, 14, 0, 0),
10106082037fSVladimir Zapolskiy 	{ }
10116082037fSVladimir Zapolskiy };
10126082037fSVladimir Zapolskiy 
10136082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_mclk0_clk_src = {
10146082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x15000,
10156082037fSVladimir Zapolskiy 	.mnd_width = 8,
10166082037fSVladimir Zapolskiy 	.hid_width = 5,
10176082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_1,
10186082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
10196082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
10206082037fSVladimir Zapolskiy 		.name = "cam_cc_mclk0_clk_src",
10216082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_1,
10226082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
10236082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
10246082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
10256082037fSVladimir Zapolskiy 	},
10266082037fSVladimir Zapolskiy };
10276082037fSVladimir Zapolskiy 
10286082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_mclk1_clk_src = {
10296082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x1501c,
10306082037fSVladimir Zapolskiy 	.mnd_width = 8,
10316082037fSVladimir Zapolskiy 	.hid_width = 5,
10326082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_1,
10336082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
10346082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
10356082037fSVladimir Zapolskiy 		.name = "cam_cc_mclk1_clk_src",
10366082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_1,
10376082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
10386082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
10396082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
10406082037fSVladimir Zapolskiy 	},
10416082037fSVladimir Zapolskiy };
10426082037fSVladimir Zapolskiy 
10436082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_mclk2_clk_src = {
10446082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x15038,
10456082037fSVladimir Zapolskiy 	.mnd_width = 8,
10466082037fSVladimir Zapolskiy 	.hid_width = 5,
10476082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_1,
10486082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
10496082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
10506082037fSVladimir Zapolskiy 		.name = "cam_cc_mclk2_clk_src",
10516082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_1,
10526082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
10536082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
10546082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
10556082037fSVladimir Zapolskiy 	},
10566082037fSVladimir Zapolskiy };
10576082037fSVladimir Zapolskiy 
10586082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_mclk3_clk_src = {
10596082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x15054,
10606082037fSVladimir Zapolskiy 	.mnd_width = 8,
10616082037fSVladimir Zapolskiy 	.hid_width = 5,
10626082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_1,
10636082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
10646082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
10656082037fSVladimir Zapolskiy 		.name = "cam_cc_mclk3_clk_src",
10666082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_1,
10676082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
10686082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
10696082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
10706082037fSVladimir Zapolskiy 	},
10716082037fSVladimir Zapolskiy };
10726082037fSVladimir Zapolskiy 
10736082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_mclk4_clk_src = {
10746082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x15070,
10756082037fSVladimir Zapolskiy 	.mnd_width = 8,
10766082037fSVladimir Zapolskiy 	.hid_width = 5,
10776082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_1,
10786082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
10796082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
10806082037fSVladimir Zapolskiy 		.name = "cam_cc_mclk4_clk_src",
10816082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_1,
10826082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
10836082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
10846082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
10856082037fSVladimir Zapolskiy 	},
10866082037fSVladimir Zapolskiy };
10876082037fSVladimir Zapolskiy 
10886082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_mclk5_clk_src = {
10896082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x1508c,
10906082037fSVladimir Zapolskiy 	.mnd_width = 8,
10916082037fSVladimir Zapolskiy 	.hid_width = 5,
10926082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_1,
10936082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
10946082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
10956082037fSVladimir Zapolskiy 		.name = "cam_cc_mclk5_clk_src",
10966082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_1,
10976082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
10986082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
10996082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
11006082037fSVladimir Zapolskiy 	},
11016082037fSVladimir Zapolskiy };
11026082037fSVladimir Zapolskiy 
11036082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_mclk6_clk_src = {
11046082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x150a8,
11056082037fSVladimir Zapolskiy 	.mnd_width = 8,
11066082037fSVladimir Zapolskiy 	.hid_width = 5,
11076082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_1,
11086082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
11096082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
11106082037fSVladimir Zapolskiy 		.name = "cam_cc_mclk6_clk_src",
11116082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_1,
11126082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
11136082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
11146082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
11156082037fSVladimir Zapolskiy 	},
11166082037fSVladimir Zapolskiy };
11176082037fSVladimir Zapolskiy 
11186082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_mclk7_clk_src = {
11196082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x150c4,
11206082037fSVladimir Zapolskiy 	.mnd_width = 8,
11216082037fSVladimir Zapolskiy 	.hid_width = 5,
11226082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_1,
11236082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
11246082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
11256082037fSVladimir Zapolskiy 		.name = "cam_cc_mclk7_clk_src",
11266082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_1,
11276082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
11286082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
11296082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
11306082037fSVladimir Zapolskiy 	},
11316082037fSVladimir Zapolskiy };
11326082037fSVladimir Zapolskiy 
11336082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_qdss_debug_clk_src[] = {
11346082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
11356082037fSVladimir Zapolskiy 	F(75000000, P_CAM_CC_PLL0_OUT_EVEN, 8, 0, 0),
11366082037fSVladimir Zapolskiy 	F(150000000, P_CAM_CC_PLL0_OUT_EVEN, 4, 0, 0),
11376082037fSVladimir Zapolskiy 	F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0),
11386082037fSVladimir Zapolskiy 	{ }
11396082037fSVladimir Zapolskiy };
11406082037fSVladimir Zapolskiy 
11416082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_qdss_debug_clk_src = {
11426082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x131bc,
11436082037fSVladimir Zapolskiy 	.mnd_width = 0,
11446082037fSVladimir Zapolskiy 	.hid_width = 5,
11456082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
11466082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_qdss_debug_clk_src,
11476082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
11486082037fSVladimir Zapolskiy 		.name = "cam_cc_qdss_debug_clk_src",
11496082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
11506082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
11516082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
11526082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
11536082037fSVladimir Zapolskiy 	},
11546082037fSVladimir Zapolskiy };
11556082037fSVladimir Zapolskiy 
11566082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_sfe_0_clk_src[] = {
11576082037fSVladimir Zapolskiy 	F(432000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
11586082037fSVladimir Zapolskiy 	F(594000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
11596082037fSVladimir Zapolskiy 	F(675000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
11606082037fSVladimir Zapolskiy 	F(727000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
11616082037fSVladimir Zapolskiy 	{ }
11626082037fSVladimir Zapolskiy };
11636082037fSVladimir Zapolskiy 
11646082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_sfe_0_clk_src = {
11656082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x13064,
11666082037fSVladimir Zapolskiy 	.mnd_width = 0,
11676082037fSVladimir Zapolskiy 	.hid_width = 5,
11686082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_6,
11696082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_sfe_0_clk_src,
11706082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
11716082037fSVladimir Zapolskiy 		.name = "cam_cc_sfe_0_clk_src",
11726082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_6,
11736082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_6),
11746082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
11756082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
11766082037fSVladimir Zapolskiy 	},
11776082037fSVladimir Zapolskiy };
11786082037fSVladimir Zapolskiy 
11796082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_sfe_1_clk_src[] = {
11806082037fSVladimir Zapolskiy 	F(432000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0),
11816082037fSVladimir Zapolskiy 	F(594000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0),
11826082037fSVladimir Zapolskiy 	F(675000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0),
11836082037fSVladimir Zapolskiy 	F(727000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0),
11846082037fSVladimir Zapolskiy 	{ }
11856082037fSVladimir Zapolskiy };
11866082037fSVladimir Zapolskiy 
11876082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_sfe_1_clk_src = {
11886082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x130ac,
11896082037fSVladimir Zapolskiy 	.mnd_width = 0,
11906082037fSVladimir Zapolskiy 	.hid_width = 5,
11916082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_7,
11926082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_sfe_1_clk_src,
11936082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
11946082037fSVladimir Zapolskiy 		.name = "cam_cc_sfe_1_clk_src",
11956082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_7,
11966082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_7),
11976082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
11986082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
11996082037fSVladimir Zapolskiy 	},
12006082037fSVladimir Zapolskiy };
12016082037fSVladimir Zapolskiy 
12026082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_sleep_clk_src[] = {
12036082037fSVladimir Zapolskiy 	F(32000, P_SLEEP_CLK, 1, 0, 0),
12046082037fSVladimir Zapolskiy 	{ }
12056082037fSVladimir Zapolskiy };
12066082037fSVladimir Zapolskiy 
12076082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_sleep_clk_src = {
12086082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x13210,
12096082037fSVladimir Zapolskiy 	.mnd_width = 0,
12106082037fSVladimir Zapolskiy 	.hid_width = 5,
12116082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_8,
12126082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_sleep_clk_src,
12136082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
12146082037fSVladimir Zapolskiy 		.name = "cam_cc_sleep_clk_src",
12156082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_8,
12166082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_8),
12176082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
12186082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
12196082037fSVladimir Zapolskiy 	},
12206082037fSVladimir Zapolskiy };
12216082037fSVladimir Zapolskiy 
12226082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src[] = {
12236082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
12246082037fSVladimir Zapolskiy 	F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 7.5, 0, 0),
12256082037fSVladimir Zapolskiy 	{ }
12266082037fSVladimir Zapolskiy };
12276082037fSVladimir Zapolskiy 
12286082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_slow_ahb_clk_src = {
12296082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x10034,
12306082037fSVladimir Zapolskiy 	.mnd_width = 8,
12316082037fSVladimir Zapolskiy 	.hid_width = 5,
12326082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_0,
12336082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_slow_ahb_clk_src,
12346082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
12356082037fSVladimir Zapolskiy 		.name = "cam_cc_slow_ahb_clk_src",
12366082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_0,
12376082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
12386082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
12396082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
12406082037fSVladimir Zapolskiy 	},
12416082037fSVladimir Zapolskiy };
12426082037fSVladimir Zapolskiy 
12436082037fSVladimir Zapolskiy static const struct freq_tbl ftbl_cam_cc_xo_clk_src[] = {
12446082037fSVladimir Zapolskiy 	F(19200000, P_BI_TCXO, 1, 0, 0),
12456082037fSVladimir Zapolskiy 	{ }
12466082037fSVladimir Zapolskiy };
12476082037fSVladimir Zapolskiy 
12486082037fSVladimir Zapolskiy static struct clk_rcg2 cam_cc_xo_clk_src = {
12496082037fSVladimir Zapolskiy 	.cmd_rcgr = 0x131f4,
12506082037fSVladimir Zapolskiy 	.mnd_width = 0,
12516082037fSVladimir Zapolskiy 	.hid_width = 5,
12526082037fSVladimir Zapolskiy 	.parent_map = cam_cc_parent_map_9,
12536082037fSVladimir Zapolskiy 	.freq_tbl = ftbl_cam_cc_xo_clk_src,
12546082037fSVladimir Zapolskiy 	.clkr.hw.init = &(const struct clk_init_data) {
12556082037fSVladimir Zapolskiy 		.name = "cam_cc_xo_clk_src",
12566082037fSVladimir Zapolskiy 		.parent_data = cam_cc_parent_data_9_ao,
12576082037fSVladimir Zapolskiy 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_9_ao),
12586082037fSVladimir Zapolskiy 		.flags = CLK_SET_RATE_PARENT,
12596082037fSVladimir Zapolskiy 		.ops = &clk_rcg2_ops,
12606082037fSVladimir Zapolskiy 	},
12616082037fSVladimir Zapolskiy };
12626082037fSVladimir Zapolskiy 
12636082037fSVladimir Zapolskiy static struct clk_branch cam_cc_gdsc_clk = {
12646082037fSVladimir Zapolskiy 	.halt_reg = 0x1320c,
12656082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
12666082037fSVladimir Zapolskiy 	.clkr = {
12676082037fSVladimir Zapolskiy 		.enable_reg = 0x1320c,
12686082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
12696082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
12706082037fSVladimir Zapolskiy 			.name = "cam_cc_gdsc_clk",
1271*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1272*a2a796c1SDmitry Baryshkov 				&cam_cc_xo_clk_src.clkr.hw,
12736082037fSVladimir Zapolskiy 			},
12746082037fSVladimir Zapolskiy 			.num_parents = 1,
12756082037fSVladimir Zapolskiy 			.flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT,
12766082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
12776082037fSVladimir Zapolskiy 		},
12786082037fSVladimir Zapolskiy 	},
12796082037fSVladimir Zapolskiy };
12806082037fSVladimir Zapolskiy 
12816082037fSVladimir Zapolskiy static struct clk_branch cam_cc_bps_ahb_clk = {
12826082037fSVladimir Zapolskiy 	.halt_reg = 0x1004c,
12836082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
12846082037fSVladimir Zapolskiy 	.clkr = {
12856082037fSVladimir Zapolskiy 		.enable_reg = 0x1004c,
12866082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
12876082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
12886082037fSVladimir Zapolskiy 			.name = "cam_cc_bps_ahb_clk",
1289*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1290*a2a796c1SDmitry Baryshkov 				&cam_cc_slow_ahb_clk_src.clkr.hw,
12916082037fSVladimir Zapolskiy 			},
12926082037fSVladimir Zapolskiy 			.num_parents = 1,
12936082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
12946082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
12956082037fSVladimir Zapolskiy 		},
12966082037fSVladimir Zapolskiy 	},
12976082037fSVladimir Zapolskiy };
12986082037fSVladimir Zapolskiy 
12996082037fSVladimir Zapolskiy static struct clk_branch cam_cc_bps_clk = {
13006082037fSVladimir Zapolskiy 	.halt_reg = 0x10068,
13016082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
13026082037fSVladimir Zapolskiy 	.clkr = {
13036082037fSVladimir Zapolskiy 		.enable_reg = 0x10068,
13046082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
13056082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
13066082037fSVladimir Zapolskiy 			.name = "cam_cc_bps_clk",
1307*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1308*a2a796c1SDmitry Baryshkov 				&cam_cc_bps_clk_src.clkr.hw,
13096082037fSVladimir Zapolskiy 			},
13106082037fSVladimir Zapolskiy 			.num_parents = 1,
13116082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
13126082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
13136082037fSVladimir Zapolskiy 		},
13146082037fSVladimir Zapolskiy 	},
13156082037fSVladimir Zapolskiy };
13166082037fSVladimir Zapolskiy 
13176082037fSVladimir Zapolskiy static struct clk_branch cam_cc_bps_fast_ahb_clk = {
13186082037fSVladimir Zapolskiy 	.halt_reg = 0x10030,
13196082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
13206082037fSVladimir Zapolskiy 	.clkr = {
13216082037fSVladimir Zapolskiy 		.enable_reg = 0x10030,
13226082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
13236082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
13246082037fSVladimir Zapolskiy 			.name = "cam_cc_bps_fast_ahb_clk",
1325*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1326*a2a796c1SDmitry Baryshkov 				&cam_cc_fast_ahb_clk_src.clkr.hw,
13276082037fSVladimir Zapolskiy 			},
13286082037fSVladimir Zapolskiy 			.num_parents = 1,
13296082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
13306082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
13316082037fSVladimir Zapolskiy 		},
13326082037fSVladimir Zapolskiy 	},
13336082037fSVladimir Zapolskiy };
13346082037fSVladimir Zapolskiy 
13356082037fSVladimir Zapolskiy static struct clk_branch cam_cc_camnoc_axi_clk = {
13366082037fSVladimir Zapolskiy 	.halt_reg = 0x131ac,
13376082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
13386082037fSVladimir Zapolskiy 	.clkr = {
13396082037fSVladimir Zapolskiy 		.enable_reg = 0x131ac,
13406082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
13416082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
13426082037fSVladimir Zapolskiy 			.name = "cam_cc_camnoc_axi_clk",
1343*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1344*a2a796c1SDmitry Baryshkov 				&cam_cc_camnoc_axi_clk_src.clkr.hw,
13456082037fSVladimir Zapolskiy 			},
13466082037fSVladimir Zapolskiy 			.num_parents = 1,
13476082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
13486082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
13496082037fSVladimir Zapolskiy 		},
13506082037fSVladimir Zapolskiy 	},
13516082037fSVladimir Zapolskiy };
13526082037fSVladimir Zapolskiy 
13536082037fSVladimir Zapolskiy static struct clk_branch cam_cc_camnoc_dcd_xo_clk = {
13546082037fSVladimir Zapolskiy 	.halt_reg = 0x131b4,
13556082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
13566082037fSVladimir Zapolskiy 	.clkr = {
13576082037fSVladimir Zapolskiy 		.enable_reg = 0x131b4,
13586082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
13596082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
13606082037fSVladimir Zapolskiy 			.name = "cam_cc_camnoc_dcd_xo_clk",
1361*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1362*a2a796c1SDmitry Baryshkov 				&cam_cc_xo_clk_src.clkr.hw,
13636082037fSVladimir Zapolskiy 			},
13646082037fSVladimir Zapolskiy 			.num_parents = 1,
13656082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
13666082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
13676082037fSVladimir Zapolskiy 		},
13686082037fSVladimir Zapolskiy 	},
13696082037fSVladimir Zapolskiy };
13706082037fSVladimir Zapolskiy 
13716082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cci_0_clk = {
13726082037fSVladimir Zapolskiy 	.halt_reg = 0x13144,
13736082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
13746082037fSVladimir Zapolskiy 	.clkr = {
13756082037fSVladimir Zapolskiy 		.enable_reg = 0x13144,
13766082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
13776082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
13786082037fSVladimir Zapolskiy 			.name = "cam_cc_cci_0_clk",
1379*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1380*a2a796c1SDmitry Baryshkov 				&cam_cc_cci_0_clk_src.clkr.hw,
13816082037fSVladimir Zapolskiy 			},
13826082037fSVladimir Zapolskiy 			.num_parents = 1,
13836082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
13846082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
13856082037fSVladimir Zapolskiy 		},
13866082037fSVladimir Zapolskiy 	},
13876082037fSVladimir Zapolskiy };
13886082037fSVladimir Zapolskiy 
13896082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cci_1_clk = {
13906082037fSVladimir Zapolskiy 	.halt_reg = 0x13160,
13916082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
13926082037fSVladimir Zapolskiy 	.clkr = {
13936082037fSVladimir Zapolskiy 		.enable_reg = 0x13160,
13946082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
13956082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
13966082037fSVladimir Zapolskiy 			.name = "cam_cc_cci_1_clk",
1397*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1398*a2a796c1SDmitry Baryshkov 				&cam_cc_cci_1_clk_src.clkr.hw,
13996082037fSVladimir Zapolskiy 			},
14006082037fSVladimir Zapolskiy 			.num_parents = 1,
14016082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
14026082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
14036082037fSVladimir Zapolskiy 		},
14046082037fSVladimir Zapolskiy 	},
14056082037fSVladimir Zapolskiy };
14066082037fSVladimir Zapolskiy 
14076082037fSVladimir Zapolskiy static struct clk_branch cam_cc_core_ahb_clk = {
14086082037fSVladimir Zapolskiy 	.halt_reg = 0x131f0,
14096082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT_DELAY,
14106082037fSVladimir Zapolskiy 	.clkr = {
14116082037fSVladimir Zapolskiy 		.enable_reg = 0x131f0,
14126082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
14136082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
14146082037fSVladimir Zapolskiy 			.name = "cam_cc_core_ahb_clk",
1415*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1416*a2a796c1SDmitry Baryshkov 				&cam_cc_slow_ahb_clk_src.clkr.hw,
14176082037fSVladimir Zapolskiy 			},
14186082037fSVladimir Zapolskiy 			.num_parents = 1,
14196082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
14206082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
14216082037fSVladimir Zapolskiy 		},
14226082037fSVladimir Zapolskiy 	},
14236082037fSVladimir Zapolskiy };
14246082037fSVladimir Zapolskiy 
14256082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cpas_ahb_clk = {
14266082037fSVladimir Zapolskiy 	.halt_reg = 0x13164,
14276082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
14286082037fSVladimir Zapolskiy 	.clkr = {
14296082037fSVladimir Zapolskiy 		.enable_reg = 0x13164,
14306082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
14316082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
14326082037fSVladimir Zapolskiy 			.name = "cam_cc_cpas_ahb_clk",
1433*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1434*a2a796c1SDmitry Baryshkov 				&cam_cc_slow_ahb_clk_src.clkr.hw,
14356082037fSVladimir Zapolskiy 			},
14366082037fSVladimir Zapolskiy 			.num_parents = 1,
14376082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
14386082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
14396082037fSVladimir Zapolskiy 		},
14406082037fSVladimir Zapolskiy 	},
14416082037fSVladimir Zapolskiy };
14426082037fSVladimir Zapolskiy 
14436082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cpas_bps_clk = {
14446082037fSVladimir Zapolskiy 	.halt_reg = 0x10070,
14456082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
14466082037fSVladimir Zapolskiy 	.clkr = {
14476082037fSVladimir Zapolskiy 		.enable_reg = 0x10070,
14486082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
14496082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
14506082037fSVladimir Zapolskiy 			.name = "cam_cc_cpas_bps_clk",
1451*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1452*a2a796c1SDmitry Baryshkov 				&cam_cc_bps_clk_src.clkr.hw,
14536082037fSVladimir Zapolskiy 			},
14546082037fSVladimir Zapolskiy 			.num_parents = 1,
14556082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
14566082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
14576082037fSVladimir Zapolskiy 		},
14586082037fSVladimir Zapolskiy 	},
14596082037fSVladimir Zapolskiy };
14606082037fSVladimir Zapolskiy 
14616082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cpas_fast_ahb_clk = {
14626082037fSVladimir Zapolskiy 	.halt_reg = 0x1316c,
14636082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
14646082037fSVladimir Zapolskiy 	.clkr = {
14656082037fSVladimir Zapolskiy 		.enable_reg = 0x1316c,
14666082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
14676082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
14686082037fSVladimir Zapolskiy 			.name = "cam_cc_cpas_fast_ahb_clk",
1469*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1470*a2a796c1SDmitry Baryshkov 				&cam_cc_fast_ahb_clk_src.clkr.hw,
14716082037fSVladimir Zapolskiy 			},
14726082037fSVladimir Zapolskiy 			.num_parents = 1,
14736082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
14746082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
14756082037fSVladimir Zapolskiy 		},
14766082037fSVladimir Zapolskiy 	},
14776082037fSVladimir Zapolskiy };
14786082037fSVladimir Zapolskiy 
14796082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cpas_ife_0_clk = {
14806082037fSVladimir Zapolskiy 	.halt_reg = 0x11038,
14816082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
14826082037fSVladimir Zapolskiy 	.clkr = {
14836082037fSVladimir Zapolskiy 		.enable_reg = 0x11038,
14846082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
14856082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
14866082037fSVladimir Zapolskiy 			.name = "cam_cc_cpas_ife_0_clk",
1487*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1488*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_0_clk_src.clkr.hw,
14896082037fSVladimir Zapolskiy 			},
14906082037fSVladimir Zapolskiy 			.num_parents = 1,
14916082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
14926082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
14936082037fSVladimir Zapolskiy 		},
14946082037fSVladimir Zapolskiy 	},
14956082037fSVladimir Zapolskiy };
14966082037fSVladimir Zapolskiy 
14976082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cpas_ife_1_clk = {
14986082037fSVladimir Zapolskiy 	.halt_reg = 0x12038,
14996082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
15006082037fSVladimir Zapolskiy 	.clkr = {
15016082037fSVladimir Zapolskiy 		.enable_reg = 0x12038,
15026082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
15036082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
15046082037fSVladimir Zapolskiy 			.name = "cam_cc_cpas_ife_1_clk",
1505*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1506*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_1_clk_src.clkr.hw,
15076082037fSVladimir Zapolskiy 			},
15086082037fSVladimir Zapolskiy 			.num_parents = 1,
15096082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
15106082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
15116082037fSVladimir Zapolskiy 		},
15126082037fSVladimir Zapolskiy 	},
15136082037fSVladimir Zapolskiy };
15146082037fSVladimir Zapolskiy 
15156082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cpas_ife_2_clk = {
15166082037fSVladimir Zapolskiy 	.halt_reg = 0x12084,
15176082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
15186082037fSVladimir Zapolskiy 	.clkr = {
15196082037fSVladimir Zapolskiy 		.enable_reg = 0x12084,
15206082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
15216082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
15226082037fSVladimir Zapolskiy 			.name = "cam_cc_cpas_ife_2_clk",
1523*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1524*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_2_clk_src.clkr.hw,
15256082037fSVladimir Zapolskiy 			},
15266082037fSVladimir Zapolskiy 			.num_parents = 1,
15276082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
15286082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
15296082037fSVladimir Zapolskiy 		},
15306082037fSVladimir Zapolskiy 	},
15316082037fSVladimir Zapolskiy };
15326082037fSVladimir Zapolskiy 
15336082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cpas_ife_lite_clk = {
15346082037fSVladimir Zapolskiy 	.halt_reg = 0x13020,
15356082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
15366082037fSVladimir Zapolskiy 	.clkr = {
15376082037fSVladimir Zapolskiy 		.enable_reg = 0x13020,
15386082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
15396082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
15406082037fSVladimir Zapolskiy 			.name = "cam_cc_cpas_ife_lite_clk",
1541*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1542*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_lite_clk_src.clkr.hw,
15436082037fSVladimir Zapolskiy 			},
15446082037fSVladimir Zapolskiy 			.num_parents = 1,
15456082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
15466082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
15476082037fSVladimir Zapolskiy 		},
15486082037fSVladimir Zapolskiy 	},
15496082037fSVladimir Zapolskiy };
15506082037fSVladimir Zapolskiy 
15516082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cpas_ipe_nps_clk = {
15526082037fSVladimir Zapolskiy 	.halt_reg = 0x100ac,
15536082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
15546082037fSVladimir Zapolskiy 	.clkr = {
15556082037fSVladimir Zapolskiy 		.enable_reg = 0x100ac,
15566082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
15576082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
15586082037fSVladimir Zapolskiy 			.name = "cam_cc_cpas_ipe_nps_clk",
1559*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1560*a2a796c1SDmitry Baryshkov 				&cam_cc_ipe_nps_clk_src.clkr.hw,
15616082037fSVladimir Zapolskiy 			},
15626082037fSVladimir Zapolskiy 			.num_parents = 1,
15636082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
15646082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
15656082037fSVladimir Zapolskiy 		},
15666082037fSVladimir Zapolskiy 	},
15676082037fSVladimir Zapolskiy };
15686082037fSVladimir Zapolskiy 
15696082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cpas_sbi_clk = {
15706082037fSVladimir Zapolskiy 	.halt_reg = 0x100ec,
15716082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
15726082037fSVladimir Zapolskiy 	.clkr = {
15736082037fSVladimir Zapolskiy 		.enable_reg = 0x100ec,
15746082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
15756082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
15766082037fSVladimir Zapolskiy 			.name = "cam_cc_cpas_sbi_clk",
1577*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1578*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_0_clk_src.clkr.hw,
15796082037fSVladimir Zapolskiy 			},
15806082037fSVladimir Zapolskiy 			.num_parents = 1,
15816082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
15826082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
15836082037fSVladimir Zapolskiy 		},
15846082037fSVladimir Zapolskiy 	},
15856082037fSVladimir Zapolskiy };
15866082037fSVladimir Zapolskiy 
15876082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cpas_sfe_0_clk = {
15886082037fSVladimir Zapolskiy 	.halt_reg = 0x13084,
15896082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
15906082037fSVladimir Zapolskiy 	.clkr = {
15916082037fSVladimir Zapolskiy 		.enable_reg = 0x13084,
15926082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
15936082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
15946082037fSVladimir Zapolskiy 			.name = "cam_cc_cpas_sfe_0_clk",
1595*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1596*a2a796c1SDmitry Baryshkov 				&cam_cc_sfe_0_clk_src.clkr.hw,
15976082037fSVladimir Zapolskiy 			},
15986082037fSVladimir Zapolskiy 			.num_parents = 1,
15996082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
16006082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
16016082037fSVladimir Zapolskiy 		},
16026082037fSVladimir Zapolskiy 	},
16036082037fSVladimir Zapolskiy };
16046082037fSVladimir Zapolskiy 
16056082037fSVladimir Zapolskiy static struct clk_branch cam_cc_cpas_sfe_1_clk = {
16066082037fSVladimir Zapolskiy 	.halt_reg = 0x130cc,
16076082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
16086082037fSVladimir Zapolskiy 	.clkr = {
16096082037fSVladimir Zapolskiy 		.enable_reg = 0x130cc,
16106082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
16116082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
16126082037fSVladimir Zapolskiy 			.name = "cam_cc_cpas_sfe_1_clk",
1613*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1614*a2a796c1SDmitry Baryshkov 				&cam_cc_sfe_1_clk_src.clkr.hw,
16156082037fSVladimir Zapolskiy 			},
16166082037fSVladimir Zapolskiy 			.num_parents = 1,
16176082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
16186082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
16196082037fSVladimir Zapolskiy 		},
16206082037fSVladimir Zapolskiy 	},
16216082037fSVladimir Zapolskiy };
16226082037fSVladimir Zapolskiy 
16236082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csi0phytimer_clk = {
16246082037fSVladimir Zapolskiy 	.halt_reg = 0x150f8,
16256082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
16266082037fSVladimir Zapolskiy 	.clkr = {
16276082037fSVladimir Zapolskiy 		.enable_reg = 0x150f8,
16286082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
16296082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
16306082037fSVladimir Zapolskiy 			.name = "cam_cc_csi0phytimer_clk",
1631*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1632*a2a796c1SDmitry Baryshkov 				&cam_cc_csi0phytimer_clk_src.clkr.hw,
16336082037fSVladimir Zapolskiy 			},
16346082037fSVladimir Zapolskiy 			.num_parents = 1,
16356082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
16366082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
16376082037fSVladimir Zapolskiy 		},
16386082037fSVladimir Zapolskiy 	},
16396082037fSVladimir Zapolskiy };
16406082037fSVladimir Zapolskiy 
16416082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csi1phytimer_clk = {
16426082037fSVladimir Zapolskiy 	.halt_reg = 0x1511c,
16436082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
16446082037fSVladimir Zapolskiy 	.clkr = {
16456082037fSVladimir Zapolskiy 		.enable_reg = 0x1511c,
16466082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
16476082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
16486082037fSVladimir Zapolskiy 			.name = "cam_cc_csi1phytimer_clk",
1649*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1650*a2a796c1SDmitry Baryshkov 				&cam_cc_csi1phytimer_clk_src.clkr.hw,
16516082037fSVladimir Zapolskiy 			},
16526082037fSVladimir Zapolskiy 			.num_parents = 1,
16536082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
16546082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
16556082037fSVladimir Zapolskiy 		},
16566082037fSVladimir Zapolskiy 	},
16576082037fSVladimir Zapolskiy };
16586082037fSVladimir Zapolskiy 
16596082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csi2phytimer_clk = {
16606082037fSVladimir Zapolskiy 	.halt_reg = 0x1513c,
16616082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
16626082037fSVladimir Zapolskiy 	.clkr = {
16636082037fSVladimir Zapolskiy 		.enable_reg = 0x1513c,
16646082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
16656082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
16666082037fSVladimir Zapolskiy 			.name = "cam_cc_csi2phytimer_clk",
1667*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1668*a2a796c1SDmitry Baryshkov 				&cam_cc_csi2phytimer_clk_src.clkr.hw,
16696082037fSVladimir Zapolskiy 			},
16706082037fSVladimir Zapolskiy 			.num_parents = 1,
16716082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
16726082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
16736082037fSVladimir Zapolskiy 		},
16746082037fSVladimir Zapolskiy 	},
16756082037fSVladimir Zapolskiy };
16766082037fSVladimir Zapolskiy 
16776082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csi3phytimer_clk = {
16786082037fSVladimir Zapolskiy 	.halt_reg = 0x15164,
16796082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
16806082037fSVladimir Zapolskiy 	.clkr = {
16816082037fSVladimir Zapolskiy 		.enable_reg = 0x15164,
16826082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
16836082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
16846082037fSVladimir Zapolskiy 			.name = "cam_cc_csi3phytimer_clk",
1685*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1686*a2a796c1SDmitry Baryshkov 				&cam_cc_csi3phytimer_clk_src.clkr.hw,
16876082037fSVladimir Zapolskiy 			},
16886082037fSVladimir Zapolskiy 			.num_parents = 1,
16896082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
16906082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
16916082037fSVladimir Zapolskiy 		},
16926082037fSVladimir Zapolskiy 	},
16936082037fSVladimir Zapolskiy };
16946082037fSVladimir Zapolskiy 
16956082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csi4phytimer_clk = {
16966082037fSVladimir Zapolskiy 	.halt_reg = 0x15184,
16976082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
16986082037fSVladimir Zapolskiy 	.clkr = {
16996082037fSVladimir Zapolskiy 		.enable_reg = 0x15184,
17006082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
17016082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
17026082037fSVladimir Zapolskiy 			.name = "cam_cc_csi4phytimer_clk",
1703*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1704*a2a796c1SDmitry Baryshkov 				&cam_cc_csi4phytimer_clk_src.clkr.hw,
17056082037fSVladimir Zapolskiy 			},
17066082037fSVladimir Zapolskiy 			.num_parents = 1,
17076082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
17086082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
17096082037fSVladimir Zapolskiy 		},
17106082037fSVladimir Zapolskiy 	},
17116082037fSVladimir Zapolskiy };
17126082037fSVladimir Zapolskiy 
17136082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csi5phytimer_clk = {
17146082037fSVladimir Zapolskiy 	.halt_reg = 0x151a4,
17156082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
17166082037fSVladimir Zapolskiy 	.clkr = {
17176082037fSVladimir Zapolskiy 		.enable_reg = 0x151a4,
17186082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
17196082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
17206082037fSVladimir Zapolskiy 			.name = "cam_cc_csi5phytimer_clk",
1721*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1722*a2a796c1SDmitry Baryshkov 				&cam_cc_csi5phytimer_clk_src.clkr.hw,
17236082037fSVladimir Zapolskiy 			},
17246082037fSVladimir Zapolskiy 			.num_parents = 1,
17256082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
17266082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
17276082037fSVladimir Zapolskiy 		},
17286082037fSVladimir Zapolskiy 	},
17296082037fSVladimir Zapolskiy };
17306082037fSVladimir Zapolskiy 
17316082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csid_clk = {
17326082037fSVladimir Zapolskiy 	.halt_reg = 0x1318c,
17336082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
17346082037fSVladimir Zapolskiy 	.clkr = {
17356082037fSVladimir Zapolskiy 		.enable_reg = 0x1318c,
17366082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
17376082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
17386082037fSVladimir Zapolskiy 			.name = "cam_cc_csid_clk",
1739*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1740*a2a796c1SDmitry Baryshkov 				&cam_cc_csid_clk_src.clkr.hw,
17416082037fSVladimir Zapolskiy 			},
17426082037fSVladimir Zapolskiy 			.num_parents = 1,
17436082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
17446082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
17456082037fSVladimir Zapolskiy 		},
17466082037fSVladimir Zapolskiy 	},
17476082037fSVladimir Zapolskiy };
17486082037fSVladimir Zapolskiy 
17496082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csid_csiphy_rx_clk = {
17506082037fSVladimir Zapolskiy 	.halt_reg = 0x15100,
17516082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
17526082037fSVladimir Zapolskiy 	.clkr = {
17536082037fSVladimir Zapolskiy 		.enable_reg = 0x15100,
17546082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
17556082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
17566082037fSVladimir Zapolskiy 			.name = "cam_cc_csid_csiphy_rx_clk",
1757*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1758*a2a796c1SDmitry Baryshkov 				&cam_cc_cphy_rx_clk_src.clkr.hw,
17596082037fSVladimir Zapolskiy 			},
17606082037fSVladimir Zapolskiy 			.num_parents = 1,
17616082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
17626082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
17636082037fSVladimir Zapolskiy 		},
17646082037fSVladimir Zapolskiy 	},
17656082037fSVladimir Zapolskiy };
17666082037fSVladimir Zapolskiy 
17676082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csiphy0_clk = {
17686082037fSVladimir Zapolskiy 	.halt_reg = 0x150fc,
17696082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
17706082037fSVladimir Zapolskiy 	.clkr = {
17716082037fSVladimir Zapolskiy 		.enable_reg = 0x150fc,
17726082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
17736082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
17746082037fSVladimir Zapolskiy 			.name = "cam_cc_csiphy0_clk",
1775*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1776*a2a796c1SDmitry Baryshkov 				&cam_cc_cphy_rx_clk_src.clkr.hw,
17776082037fSVladimir Zapolskiy 			},
17786082037fSVladimir Zapolskiy 			.num_parents = 1,
17796082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
17806082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
17816082037fSVladimir Zapolskiy 		},
17826082037fSVladimir Zapolskiy 	},
17836082037fSVladimir Zapolskiy };
17846082037fSVladimir Zapolskiy 
17856082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csiphy1_clk = {
17866082037fSVladimir Zapolskiy 	.halt_reg = 0x15120,
17876082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
17886082037fSVladimir Zapolskiy 	.clkr = {
17896082037fSVladimir Zapolskiy 		.enable_reg = 0x15120,
17906082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
17916082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
17926082037fSVladimir Zapolskiy 			.name = "cam_cc_csiphy1_clk",
1793*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1794*a2a796c1SDmitry Baryshkov 				&cam_cc_cphy_rx_clk_src.clkr.hw,
17956082037fSVladimir Zapolskiy 			},
17966082037fSVladimir Zapolskiy 			.num_parents = 1,
17976082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
17986082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
17996082037fSVladimir Zapolskiy 		},
18006082037fSVladimir Zapolskiy 	},
18016082037fSVladimir Zapolskiy };
18026082037fSVladimir Zapolskiy 
18036082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csiphy2_clk = {
18046082037fSVladimir Zapolskiy 	.halt_reg = 0x15140,
18056082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
18066082037fSVladimir Zapolskiy 	.clkr = {
18076082037fSVladimir Zapolskiy 		.enable_reg = 0x15140,
18086082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
18096082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
18106082037fSVladimir Zapolskiy 			.name = "cam_cc_csiphy2_clk",
1811*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1812*a2a796c1SDmitry Baryshkov 				&cam_cc_cphy_rx_clk_src.clkr.hw,
18136082037fSVladimir Zapolskiy 			},
18146082037fSVladimir Zapolskiy 			.num_parents = 1,
18156082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
18166082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
18176082037fSVladimir Zapolskiy 		},
18186082037fSVladimir Zapolskiy 	},
18196082037fSVladimir Zapolskiy };
18206082037fSVladimir Zapolskiy 
18216082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csiphy3_clk = {
18226082037fSVladimir Zapolskiy 	.halt_reg = 0x15168,
18236082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
18246082037fSVladimir Zapolskiy 	.clkr = {
18256082037fSVladimir Zapolskiy 		.enable_reg = 0x15168,
18266082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
18276082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
18286082037fSVladimir Zapolskiy 			.name = "cam_cc_csiphy3_clk",
1829*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1830*a2a796c1SDmitry Baryshkov 				&cam_cc_cphy_rx_clk_src.clkr.hw,
18316082037fSVladimir Zapolskiy 			},
18326082037fSVladimir Zapolskiy 			.num_parents = 1,
18336082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
18346082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
18356082037fSVladimir Zapolskiy 		},
18366082037fSVladimir Zapolskiy 	},
18376082037fSVladimir Zapolskiy };
18386082037fSVladimir Zapolskiy 
18396082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csiphy4_clk = {
18406082037fSVladimir Zapolskiy 	.halt_reg = 0x15188,
18416082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
18426082037fSVladimir Zapolskiy 	.clkr = {
18436082037fSVladimir Zapolskiy 		.enable_reg = 0x15188,
18446082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
18456082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
18466082037fSVladimir Zapolskiy 			.name = "cam_cc_csiphy4_clk",
1847*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1848*a2a796c1SDmitry Baryshkov 				&cam_cc_cphy_rx_clk_src.clkr.hw,
18496082037fSVladimir Zapolskiy 			},
18506082037fSVladimir Zapolskiy 			.num_parents = 1,
18516082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
18526082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
18536082037fSVladimir Zapolskiy 		},
18546082037fSVladimir Zapolskiy 	},
18556082037fSVladimir Zapolskiy };
18566082037fSVladimir Zapolskiy 
18576082037fSVladimir Zapolskiy static struct clk_branch cam_cc_csiphy5_clk = {
18586082037fSVladimir Zapolskiy 	.halt_reg = 0x151a8,
18596082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
18606082037fSVladimir Zapolskiy 	.clkr = {
18616082037fSVladimir Zapolskiy 		.enable_reg = 0x151a8,
18626082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
18636082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
18646082037fSVladimir Zapolskiy 			.name = "cam_cc_csiphy5_clk",
1865*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1866*a2a796c1SDmitry Baryshkov 				&cam_cc_cphy_rx_clk_src.clkr.hw,
18676082037fSVladimir Zapolskiy 			},
18686082037fSVladimir Zapolskiy 			.num_parents = 1,
18696082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
18706082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
18716082037fSVladimir Zapolskiy 		},
18726082037fSVladimir Zapolskiy 	},
18736082037fSVladimir Zapolskiy };
18746082037fSVladimir Zapolskiy 
18756082037fSVladimir Zapolskiy static struct clk_branch cam_cc_icp_ahb_clk = {
18766082037fSVladimir Zapolskiy 	.halt_reg = 0x13128,
18776082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
18786082037fSVladimir Zapolskiy 	.clkr = {
18796082037fSVladimir Zapolskiy 		.enable_reg = 0x13128,
18806082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
18816082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
18826082037fSVladimir Zapolskiy 			.name = "cam_cc_icp_ahb_clk",
1883*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1884*a2a796c1SDmitry Baryshkov 				&cam_cc_slow_ahb_clk_src.clkr.hw,
18856082037fSVladimir Zapolskiy 			},
18866082037fSVladimir Zapolskiy 			.num_parents = 1,
18876082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
18886082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
18896082037fSVladimir Zapolskiy 		},
18906082037fSVladimir Zapolskiy 	},
18916082037fSVladimir Zapolskiy };
18926082037fSVladimir Zapolskiy 
18936082037fSVladimir Zapolskiy static struct clk_branch cam_cc_icp_clk = {
18946082037fSVladimir Zapolskiy 	.halt_reg = 0x13120,
18956082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
18966082037fSVladimir Zapolskiy 	.clkr = {
18976082037fSVladimir Zapolskiy 		.enable_reg = 0x13120,
18986082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
18996082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
19006082037fSVladimir Zapolskiy 			.name = "cam_cc_icp_clk",
1901*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1902*a2a796c1SDmitry Baryshkov 				&cam_cc_icp_clk_src.clkr.hw,
19036082037fSVladimir Zapolskiy 			},
19046082037fSVladimir Zapolskiy 			.num_parents = 1,
19056082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
19066082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
19076082037fSVladimir Zapolskiy 		},
19086082037fSVladimir Zapolskiy 	},
19096082037fSVladimir Zapolskiy };
19106082037fSVladimir Zapolskiy 
19116082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_0_clk = {
19126082037fSVladimir Zapolskiy 	.halt_reg = 0x11030,
19136082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
19146082037fSVladimir Zapolskiy 	.clkr = {
19156082037fSVladimir Zapolskiy 		.enable_reg = 0x11030,
19166082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
19176082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
19186082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_0_clk",
1919*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1920*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_0_clk_src.clkr.hw,
19216082037fSVladimir Zapolskiy 			},
19226082037fSVladimir Zapolskiy 			.num_parents = 1,
19236082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
19246082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
19256082037fSVladimir Zapolskiy 		},
19266082037fSVladimir Zapolskiy 	},
19276082037fSVladimir Zapolskiy };
19286082037fSVladimir Zapolskiy 
19296082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_0_dsp_clk = {
19306082037fSVladimir Zapolskiy 	.halt_reg = 0x1103c,
19316082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
19326082037fSVladimir Zapolskiy 	.clkr = {
19336082037fSVladimir Zapolskiy 		.enable_reg = 0x1103c,
19346082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
19356082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
19366082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_0_dsp_clk",
1937*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1938*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_0_clk_src.clkr.hw,
19396082037fSVladimir Zapolskiy 			},
19406082037fSVladimir Zapolskiy 			.num_parents = 1,
19416082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
19426082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
19436082037fSVladimir Zapolskiy 		},
19446082037fSVladimir Zapolskiy 	},
19456082037fSVladimir Zapolskiy };
19466082037fSVladimir Zapolskiy 
19476082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_0_fast_ahb_clk = {
19486082037fSVladimir Zapolskiy 	.halt_reg = 0x11048,
19496082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
19506082037fSVladimir Zapolskiy 	.clkr = {
19516082037fSVladimir Zapolskiy 		.enable_reg = 0x11048,
19526082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
19536082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
19546082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_0_fast_ahb_clk",
1955*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1956*a2a796c1SDmitry Baryshkov 				&cam_cc_fast_ahb_clk_src.clkr.hw,
19576082037fSVladimir Zapolskiy 			},
19586082037fSVladimir Zapolskiy 			.num_parents = 1,
19596082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
19606082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
19616082037fSVladimir Zapolskiy 		},
19626082037fSVladimir Zapolskiy 	},
19636082037fSVladimir Zapolskiy };
19646082037fSVladimir Zapolskiy 
19656082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_1_clk = {
19666082037fSVladimir Zapolskiy 	.halt_reg = 0x12030,
19676082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
19686082037fSVladimir Zapolskiy 	.clkr = {
19696082037fSVladimir Zapolskiy 		.enable_reg = 0x12030,
19706082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
19716082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
19726082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_1_clk",
1973*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1974*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_1_clk_src.clkr.hw,
19756082037fSVladimir Zapolskiy 			},
19766082037fSVladimir Zapolskiy 			.num_parents = 1,
19776082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
19786082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
19796082037fSVladimir Zapolskiy 		},
19806082037fSVladimir Zapolskiy 	},
19816082037fSVladimir Zapolskiy };
19826082037fSVladimir Zapolskiy 
19836082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_1_dsp_clk = {
19846082037fSVladimir Zapolskiy 	.halt_reg = 0x1203c,
19856082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
19866082037fSVladimir Zapolskiy 	.clkr = {
19876082037fSVladimir Zapolskiy 		.enable_reg = 0x1203c,
19886082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
19896082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
19906082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_1_dsp_clk",
1991*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
1992*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_1_clk_src.clkr.hw,
19936082037fSVladimir Zapolskiy 			},
19946082037fSVladimir Zapolskiy 			.num_parents = 1,
19956082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
19966082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
19976082037fSVladimir Zapolskiy 		},
19986082037fSVladimir Zapolskiy 	},
19996082037fSVladimir Zapolskiy };
20006082037fSVladimir Zapolskiy 
20016082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_1_fast_ahb_clk = {
20026082037fSVladimir Zapolskiy 	.halt_reg = 0x12048,
20036082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
20046082037fSVladimir Zapolskiy 	.clkr = {
20056082037fSVladimir Zapolskiy 		.enable_reg = 0x12048,
20066082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
20076082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
20086082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_1_fast_ahb_clk",
2009*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2010*a2a796c1SDmitry Baryshkov 				&cam_cc_fast_ahb_clk_src.clkr.hw,
20116082037fSVladimir Zapolskiy 			},
20126082037fSVladimir Zapolskiy 			.num_parents = 1,
20136082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
20146082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
20156082037fSVladimir Zapolskiy 		},
20166082037fSVladimir Zapolskiy 	},
20176082037fSVladimir Zapolskiy };
20186082037fSVladimir Zapolskiy 
20196082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_2_clk = {
20206082037fSVladimir Zapolskiy 	.halt_reg = 0x1207c,
20216082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
20226082037fSVladimir Zapolskiy 	.clkr = {
20236082037fSVladimir Zapolskiy 		.enable_reg = 0x1207c,
20246082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
20256082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
20266082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_2_clk",
2027*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2028*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_2_clk_src.clkr.hw,
20296082037fSVladimir Zapolskiy 			},
20306082037fSVladimir Zapolskiy 			.num_parents = 1,
20316082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
20326082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
20336082037fSVladimir Zapolskiy 		},
20346082037fSVladimir Zapolskiy 	},
20356082037fSVladimir Zapolskiy };
20366082037fSVladimir Zapolskiy 
20376082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_2_dsp_clk = {
20386082037fSVladimir Zapolskiy 	.halt_reg = 0x12088,
20396082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
20406082037fSVladimir Zapolskiy 	.clkr = {
20416082037fSVladimir Zapolskiy 		.enable_reg = 0x12088,
20426082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
20436082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
20446082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_2_dsp_clk",
2045*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2046*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_2_clk_src.clkr.hw,
20476082037fSVladimir Zapolskiy 			},
20486082037fSVladimir Zapolskiy 			.num_parents = 1,
20496082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
20506082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
20516082037fSVladimir Zapolskiy 		},
20526082037fSVladimir Zapolskiy 	},
20536082037fSVladimir Zapolskiy };
20546082037fSVladimir Zapolskiy 
20556082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_2_fast_ahb_clk = {
20566082037fSVladimir Zapolskiy 	.halt_reg = 0x12094,
20576082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
20586082037fSVladimir Zapolskiy 	.clkr = {
20596082037fSVladimir Zapolskiy 		.enable_reg = 0x12094,
20606082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
20616082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
20626082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_2_fast_ahb_clk",
2063*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2064*a2a796c1SDmitry Baryshkov 				&cam_cc_fast_ahb_clk_src.clkr.hw,
20656082037fSVladimir Zapolskiy 			},
20666082037fSVladimir Zapolskiy 			.num_parents = 1,
20676082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
20686082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
20696082037fSVladimir Zapolskiy 		},
20706082037fSVladimir Zapolskiy 	},
20716082037fSVladimir Zapolskiy };
20726082037fSVladimir Zapolskiy 
20736082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_lite_ahb_clk = {
20746082037fSVladimir Zapolskiy 	.halt_reg = 0x13048,
20756082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
20766082037fSVladimir Zapolskiy 	.clkr = {
20776082037fSVladimir Zapolskiy 		.enable_reg = 0x13048,
20786082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
20796082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
20806082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_lite_ahb_clk",
2081*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2082*a2a796c1SDmitry Baryshkov 				&cam_cc_slow_ahb_clk_src.clkr.hw,
20836082037fSVladimir Zapolskiy 			},
20846082037fSVladimir Zapolskiy 			.num_parents = 1,
20856082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
20866082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
20876082037fSVladimir Zapolskiy 		},
20886082037fSVladimir Zapolskiy 	},
20896082037fSVladimir Zapolskiy };
20906082037fSVladimir Zapolskiy 
20916082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_lite_clk = {
20926082037fSVladimir Zapolskiy 	.halt_reg = 0x13018,
20936082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
20946082037fSVladimir Zapolskiy 	.clkr = {
20956082037fSVladimir Zapolskiy 		.enable_reg = 0x13018,
20966082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
20976082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
20986082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_lite_clk",
2099*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2100*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_lite_clk_src.clkr.hw,
21016082037fSVladimir Zapolskiy 			},
21026082037fSVladimir Zapolskiy 			.num_parents = 1,
21036082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
21046082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
21056082037fSVladimir Zapolskiy 		},
21066082037fSVladimir Zapolskiy 	},
21076082037fSVladimir Zapolskiy };
21086082037fSVladimir Zapolskiy 
21096082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_lite_cphy_rx_clk = {
21106082037fSVladimir Zapolskiy 	.halt_reg = 0x13044,
21116082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
21126082037fSVladimir Zapolskiy 	.clkr = {
21136082037fSVladimir Zapolskiy 		.enable_reg = 0x13044,
21146082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
21156082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
21166082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_lite_cphy_rx_clk",
2117*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2118*a2a796c1SDmitry Baryshkov 				&cam_cc_cphy_rx_clk_src.clkr.hw,
21196082037fSVladimir Zapolskiy 			},
21206082037fSVladimir Zapolskiy 			.num_parents = 1,
21216082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
21226082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
21236082037fSVladimir Zapolskiy 		},
21246082037fSVladimir Zapolskiy 	},
21256082037fSVladimir Zapolskiy };
21266082037fSVladimir Zapolskiy 
21276082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ife_lite_csid_clk = {
21286082037fSVladimir Zapolskiy 	.halt_reg = 0x1303c,
21296082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
21306082037fSVladimir Zapolskiy 	.clkr = {
21316082037fSVladimir Zapolskiy 		.enable_reg = 0x1303c,
21326082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
21336082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
21346082037fSVladimir Zapolskiy 			.name = "cam_cc_ife_lite_csid_clk",
2135*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2136*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_lite_csid_clk_src.clkr.hw,
21376082037fSVladimir Zapolskiy 			},
21386082037fSVladimir Zapolskiy 			.num_parents = 1,
21396082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
21406082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
21416082037fSVladimir Zapolskiy 		},
21426082037fSVladimir Zapolskiy 	},
21436082037fSVladimir Zapolskiy };
21446082037fSVladimir Zapolskiy 
21456082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ipe_nps_ahb_clk = {
21466082037fSVladimir Zapolskiy 	.halt_reg = 0x100c0,
21476082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
21486082037fSVladimir Zapolskiy 	.clkr = {
21496082037fSVladimir Zapolskiy 		.enable_reg = 0x100c0,
21506082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
21516082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
21526082037fSVladimir Zapolskiy 			.name = "cam_cc_ipe_nps_ahb_clk",
2153*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2154*a2a796c1SDmitry Baryshkov 				&cam_cc_slow_ahb_clk_src.clkr.hw,
21556082037fSVladimir Zapolskiy 			},
21566082037fSVladimir Zapolskiy 			.num_parents = 1,
21576082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
21586082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
21596082037fSVladimir Zapolskiy 		},
21606082037fSVladimir Zapolskiy 	},
21616082037fSVladimir Zapolskiy };
21626082037fSVladimir Zapolskiy 
21636082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ipe_nps_clk = {
21646082037fSVladimir Zapolskiy 	.halt_reg = 0x100a4,
21656082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
21666082037fSVladimir Zapolskiy 	.clkr = {
21676082037fSVladimir Zapolskiy 		.enable_reg = 0x100a4,
21686082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
21696082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
21706082037fSVladimir Zapolskiy 			.name = "cam_cc_ipe_nps_clk",
2171*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2172*a2a796c1SDmitry Baryshkov 				&cam_cc_ipe_nps_clk_src.clkr.hw,
21736082037fSVladimir Zapolskiy 			},
21746082037fSVladimir Zapolskiy 			.num_parents = 1,
21756082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
21766082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
21776082037fSVladimir Zapolskiy 		},
21786082037fSVladimir Zapolskiy 	},
21796082037fSVladimir Zapolskiy };
21806082037fSVladimir Zapolskiy 
21816082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ipe_nps_fast_ahb_clk = {
21826082037fSVladimir Zapolskiy 	.halt_reg = 0x100c4,
21836082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
21846082037fSVladimir Zapolskiy 	.clkr = {
21856082037fSVladimir Zapolskiy 		.enable_reg = 0x100c4,
21866082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
21876082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
21886082037fSVladimir Zapolskiy 			.name = "cam_cc_ipe_nps_fast_ahb_clk",
2189*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2190*a2a796c1SDmitry Baryshkov 				&cam_cc_fast_ahb_clk_src.clkr.hw,
21916082037fSVladimir Zapolskiy 			},
21926082037fSVladimir Zapolskiy 			.num_parents = 1,
21936082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
21946082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
21956082037fSVladimir Zapolskiy 		},
21966082037fSVladimir Zapolskiy 	},
21976082037fSVladimir Zapolskiy };
21986082037fSVladimir Zapolskiy 
21996082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ipe_pps_clk = {
22006082037fSVladimir Zapolskiy 	.halt_reg = 0x100b0,
22016082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
22026082037fSVladimir Zapolskiy 	.clkr = {
22036082037fSVladimir Zapolskiy 		.enable_reg = 0x100b0,
22046082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
22056082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
22066082037fSVladimir Zapolskiy 			.name = "cam_cc_ipe_pps_clk",
2207*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2208*a2a796c1SDmitry Baryshkov 				&cam_cc_ipe_nps_clk_src.clkr.hw,
22096082037fSVladimir Zapolskiy 			},
22106082037fSVladimir Zapolskiy 			.num_parents = 1,
22116082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
22126082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
22136082037fSVladimir Zapolskiy 		},
22146082037fSVladimir Zapolskiy 	},
22156082037fSVladimir Zapolskiy };
22166082037fSVladimir Zapolskiy 
22176082037fSVladimir Zapolskiy static struct clk_branch cam_cc_ipe_pps_fast_ahb_clk = {
22186082037fSVladimir Zapolskiy 	.halt_reg = 0x100c8,
22196082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
22206082037fSVladimir Zapolskiy 	.clkr = {
22216082037fSVladimir Zapolskiy 		.enable_reg = 0x100c8,
22226082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
22236082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
22246082037fSVladimir Zapolskiy 			.name = "cam_cc_ipe_pps_fast_ahb_clk",
2225*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2226*a2a796c1SDmitry Baryshkov 				&cam_cc_fast_ahb_clk_src.clkr.hw,
22276082037fSVladimir Zapolskiy 			},
22286082037fSVladimir Zapolskiy 			.num_parents = 1,
22296082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
22306082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
22316082037fSVladimir Zapolskiy 		},
22326082037fSVladimir Zapolskiy 	},
22336082037fSVladimir Zapolskiy };
22346082037fSVladimir Zapolskiy 
22356082037fSVladimir Zapolskiy static struct clk_branch cam_cc_jpeg_clk = {
22366082037fSVladimir Zapolskiy 	.halt_reg = 0x130f4,
22376082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
22386082037fSVladimir Zapolskiy 	.clkr = {
22396082037fSVladimir Zapolskiy 		.enable_reg = 0x130f4,
22406082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
22416082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
22426082037fSVladimir Zapolskiy 			.name = "cam_cc_jpeg_clk",
2243*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2244*a2a796c1SDmitry Baryshkov 				&cam_cc_jpeg_clk_src.clkr.hw,
22456082037fSVladimir Zapolskiy 			},
22466082037fSVladimir Zapolskiy 			.num_parents = 1,
22476082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
22486082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
22496082037fSVladimir Zapolskiy 		},
22506082037fSVladimir Zapolskiy 	},
22516082037fSVladimir Zapolskiy };
22526082037fSVladimir Zapolskiy 
22536082037fSVladimir Zapolskiy static struct clk_branch cam_cc_mclk0_clk = {
22546082037fSVladimir Zapolskiy 	.halt_reg = 0x15018,
22556082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
22566082037fSVladimir Zapolskiy 	.clkr = {
22576082037fSVladimir Zapolskiy 		.enable_reg = 0x15018,
22586082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
22596082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
22606082037fSVladimir Zapolskiy 			.name = "cam_cc_mclk0_clk",
2261*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2262*a2a796c1SDmitry Baryshkov 				&cam_cc_mclk0_clk_src.clkr.hw,
22636082037fSVladimir Zapolskiy 			},
22646082037fSVladimir Zapolskiy 			.num_parents = 1,
22656082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
22666082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
22676082037fSVladimir Zapolskiy 		},
22686082037fSVladimir Zapolskiy 	},
22696082037fSVladimir Zapolskiy };
22706082037fSVladimir Zapolskiy 
22716082037fSVladimir Zapolskiy static struct clk_branch cam_cc_mclk1_clk = {
22726082037fSVladimir Zapolskiy 	.halt_reg = 0x15034,
22736082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
22746082037fSVladimir Zapolskiy 	.clkr = {
22756082037fSVladimir Zapolskiy 		.enable_reg = 0x15034,
22766082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
22776082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
22786082037fSVladimir Zapolskiy 			.name = "cam_cc_mclk1_clk",
2279*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2280*a2a796c1SDmitry Baryshkov 				&cam_cc_mclk1_clk_src.clkr.hw,
22816082037fSVladimir Zapolskiy 			},
22826082037fSVladimir Zapolskiy 			.num_parents = 1,
22836082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
22846082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
22856082037fSVladimir Zapolskiy 		},
22866082037fSVladimir Zapolskiy 	},
22876082037fSVladimir Zapolskiy };
22886082037fSVladimir Zapolskiy 
22896082037fSVladimir Zapolskiy static struct clk_branch cam_cc_mclk2_clk = {
22906082037fSVladimir Zapolskiy 	.halt_reg = 0x15050,
22916082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
22926082037fSVladimir Zapolskiy 	.clkr = {
22936082037fSVladimir Zapolskiy 		.enable_reg = 0x15050,
22946082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
22956082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
22966082037fSVladimir Zapolskiy 			.name = "cam_cc_mclk2_clk",
2297*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2298*a2a796c1SDmitry Baryshkov 				&cam_cc_mclk2_clk_src.clkr.hw,
22996082037fSVladimir Zapolskiy 			},
23006082037fSVladimir Zapolskiy 			.num_parents = 1,
23016082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
23026082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
23036082037fSVladimir Zapolskiy 		},
23046082037fSVladimir Zapolskiy 	},
23056082037fSVladimir Zapolskiy };
23066082037fSVladimir Zapolskiy 
23076082037fSVladimir Zapolskiy static struct clk_branch cam_cc_mclk3_clk = {
23086082037fSVladimir Zapolskiy 	.halt_reg = 0x1506c,
23096082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
23106082037fSVladimir Zapolskiy 	.clkr = {
23116082037fSVladimir Zapolskiy 		.enable_reg = 0x1506c,
23126082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
23136082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
23146082037fSVladimir Zapolskiy 			.name = "cam_cc_mclk3_clk",
2315*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2316*a2a796c1SDmitry Baryshkov 				&cam_cc_mclk3_clk_src.clkr.hw,
23176082037fSVladimir Zapolskiy 			},
23186082037fSVladimir Zapolskiy 			.num_parents = 1,
23196082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
23206082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
23216082037fSVladimir Zapolskiy 		},
23226082037fSVladimir Zapolskiy 	},
23236082037fSVladimir Zapolskiy };
23246082037fSVladimir Zapolskiy 
23256082037fSVladimir Zapolskiy static struct clk_branch cam_cc_mclk4_clk = {
23266082037fSVladimir Zapolskiy 	.halt_reg = 0x15088,
23276082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
23286082037fSVladimir Zapolskiy 	.clkr = {
23296082037fSVladimir Zapolskiy 		.enable_reg = 0x15088,
23306082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
23316082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
23326082037fSVladimir Zapolskiy 			.name = "cam_cc_mclk4_clk",
2333*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2334*a2a796c1SDmitry Baryshkov 				&cam_cc_mclk4_clk_src.clkr.hw,
23356082037fSVladimir Zapolskiy 			},
23366082037fSVladimir Zapolskiy 			.num_parents = 1,
23376082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
23386082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
23396082037fSVladimir Zapolskiy 		},
23406082037fSVladimir Zapolskiy 	},
23416082037fSVladimir Zapolskiy };
23426082037fSVladimir Zapolskiy 
23436082037fSVladimir Zapolskiy static struct clk_branch cam_cc_mclk5_clk = {
23446082037fSVladimir Zapolskiy 	.halt_reg = 0x150a4,
23456082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
23466082037fSVladimir Zapolskiy 	.clkr = {
23476082037fSVladimir Zapolskiy 		.enable_reg = 0x150a4,
23486082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
23496082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
23506082037fSVladimir Zapolskiy 			.name = "cam_cc_mclk5_clk",
2351*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2352*a2a796c1SDmitry Baryshkov 				&cam_cc_mclk5_clk_src.clkr.hw,
23536082037fSVladimir Zapolskiy 			},
23546082037fSVladimir Zapolskiy 			.num_parents = 1,
23556082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
23566082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
23576082037fSVladimir Zapolskiy 		},
23586082037fSVladimir Zapolskiy 	},
23596082037fSVladimir Zapolskiy };
23606082037fSVladimir Zapolskiy 
23616082037fSVladimir Zapolskiy static struct clk_branch cam_cc_mclk6_clk = {
23626082037fSVladimir Zapolskiy 	.halt_reg = 0x150c0,
23636082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
23646082037fSVladimir Zapolskiy 	.clkr = {
23656082037fSVladimir Zapolskiy 		.enable_reg = 0x150c0,
23666082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
23676082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
23686082037fSVladimir Zapolskiy 			.name = "cam_cc_mclk6_clk",
2369*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2370*a2a796c1SDmitry Baryshkov 				&cam_cc_mclk6_clk_src.clkr.hw,
23716082037fSVladimir Zapolskiy 			},
23726082037fSVladimir Zapolskiy 			.num_parents = 1,
23736082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
23746082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
23756082037fSVladimir Zapolskiy 		},
23766082037fSVladimir Zapolskiy 	},
23776082037fSVladimir Zapolskiy };
23786082037fSVladimir Zapolskiy 
23796082037fSVladimir Zapolskiy static struct clk_branch cam_cc_mclk7_clk = {
23806082037fSVladimir Zapolskiy 	.halt_reg = 0x150dc,
23816082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
23826082037fSVladimir Zapolskiy 	.clkr = {
23836082037fSVladimir Zapolskiy 		.enable_reg = 0x150dc,
23846082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
23856082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
23866082037fSVladimir Zapolskiy 			.name = "cam_cc_mclk7_clk",
2387*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2388*a2a796c1SDmitry Baryshkov 				&cam_cc_mclk7_clk_src.clkr.hw,
23896082037fSVladimir Zapolskiy 			},
23906082037fSVladimir Zapolskiy 			.num_parents = 1,
23916082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
23926082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
23936082037fSVladimir Zapolskiy 		},
23946082037fSVladimir Zapolskiy 	},
23956082037fSVladimir Zapolskiy };
23966082037fSVladimir Zapolskiy 
23976082037fSVladimir Zapolskiy static struct clk_branch cam_cc_qdss_debug_clk = {
23986082037fSVladimir Zapolskiy 	.halt_reg = 0x131d4,
23996082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
24006082037fSVladimir Zapolskiy 	.clkr = {
24016082037fSVladimir Zapolskiy 		.enable_reg = 0x131d4,
24026082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
24036082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
24046082037fSVladimir Zapolskiy 			.name = "cam_cc_qdss_debug_clk",
2405*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2406*a2a796c1SDmitry Baryshkov 				&cam_cc_qdss_debug_clk_src.clkr.hw,
24076082037fSVladimir Zapolskiy 			},
24086082037fSVladimir Zapolskiy 			.num_parents = 1,
24096082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
24106082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
24116082037fSVladimir Zapolskiy 		},
24126082037fSVladimir Zapolskiy 	},
24136082037fSVladimir Zapolskiy };
24146082037fSVladimir Zapolskiy 
24156082037fSVladimir Zapolskiy static struct clk_branch cam_cc_qdss_debug_xo_clk = {
24166082037fSVladimir Zapolskiy 	.halt_reg = 0x131d8,
24176082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
24186082037fSVladimir Zapolskiy 	.clkr = {
24196082037fSVladimir Zapolskiy 		.enable_reg = 0x131d8,
24206082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
24216082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
24226082037fSVladimir Zapolskiy 			.name = "cam_cc_qdss_debug_xo_clk",
2423*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2424*a2a796c1SDmitry Baryshkov 				&cam_cc_xo_clk_src.clkr.hw,
24256082037fSVladimir Zapolskiy 			},
24266082037fSVladimir Zapolskiy 			.num_parents = 1,
24276082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
24286082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
24296082037fSVladimir Zapolskiy 		},
24306082037fSVladimir Zapolskiy 	},
24316082037fSVladimir Zapolskiy };
24326082037fSVladimir Zapolskiy 
24336082037fSVladimir Zapolskiy static struct clk_branch cam_cc_sbi_ahb_clk = {
24346082037fSVladimir Zapolskiy 	.halt_reg = 0x100f0,
24356082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
24366082037fSVladimir Zapolskiy 	.clkr = {
24376082037fSVladimir Zapolskiy 		.enable_reg = 0x100f0,
24386082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
24396082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
24406082037fSVladimir Zapolskiy 			.name = "cam_cc_sbi_ahb_clk",
2441*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2442*a2a796c1SDmitry Baryshkov 				&cam_cc_slow_ahb_clk_src.clkr.hw,
24436082037fSVladimir Zapolskiy 			},
24446082037fSVladimir Zapolskiy 			.num_parents = 1,
24456082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
24466082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
24476082037fSVladimir Zapolskiy 		},
24486082037fSVladimir Zapolskiy 	},
24496082037fSVladimir Zapolskiy };
24506082037fSVladimir Zapolskiy 
24516082037fSVladimir Zapolskiy static struct clk_branch cam_cc_sbi_clk = {
24526082037fSVladimir Zapolskiy 	.halt_reg = 0x100e4,
24536082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
24546082037fSVladimir Zapolskiy 	.clkr = {
24556082037fSVladimir Zapolskiy 		.enable_reg = 0x100e4,
24566082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
24576082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
24586082037fSVladimir Zapolskiy 			.name = "cam_cc_sbi_clk",
2459*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2460*a2a796c1SDmitry Baryshkov 				&cam_cc_ife_0_clk_src.clkr.hw,
24616082037fSVladimir Zapolskiy 			},
24626082037fSVladimir Zapolskiy 			.num_parents = 1,
24636082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
24646082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
24656082037fSVladimir Zapolskiy 		},
24666082037fSVladimir Zapolskiy 	},
24676082037fSVladimir Zapolskiy };
24686082037fSVladimir Zapolskiy 
24696082037fSVladimir Zapolskiy static struct clk_branch cam_cc_sfe_0_clk = {
24706082037fSVladimir Zapolskiy 	.halt_reg = 0x1307c,
24716082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
24726082037fSVladimir Zapolskiy 	.clkr = {
24736082037fSVladimir Zapolskiy 		.enable_reg = 0x1307c,
24746082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
24756082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
24766082037fSVladimir Zapolskiy 			.name = "cam_cc_sfe_0_clk",
2477*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2478*a2a796c1SDmitry Baryshkov 				&cam_cc_sfe_0_clk_src.clkr.hw,
24796082037fSVladimir Zapolskiy 			},
24806082037fSVladimir Zapolskiy 			.num_parents = 1,
24816082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
24826082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
24836082037fSVladimir Zapolskiy 		},
24846082037fSVladimir Zapolskiy 	},
24856082037fSVladimir Zapolskiy };
24866082037fSVladimir Zapolskiy 
24876082037fSVladimir Zapolskiy static struct clk_branch cam_cc_sfe_0_fast_ahb_clk = {
24886082037fSVladimir Zapolskiy 	.halt_reg = 0x13090,
24896082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
24906082037fSVladimir Zapolskiy 	.clkr = {
24916082037fSVladimir Zapolskiy 		.enable_reg = 0x13090,
24926082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
24936082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
24946082037fSVladimir Zapolskiy 			.name = "cam_cc_sfe_0_fast_ahb_clk",
2495*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2496*a2a796c1SDmitry Baryshkov 				&cam_cc_fast_ahb_clk_src.clkr.hw,
24976082037fSVladimir Zapolskiy 			},
24986082037fSVladimir Zapolskiy 			.num_parents = 1,
24996082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
25006082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
25016082037fSVladimir Zapolskiy 		},
25026082037fSVladimir Zapolskiy 	},
25036082037fSVladimir Zapolskiy };
25046082037fSVladimir Zapolskiy 
25056082037fSVladimir Zapolskiy static struct clk_branch cam_cc_sfe_1_clk = {
25066082037fSVladimir Zapolskiy 	.halt_reg = 0x130c4,
25076082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
25086082037fSVladimir Zapolskiy 	.clkr = {
25096082037fSVladimir Zapolskiy 		.enable_reg = 0x130c4,
25106082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
25116082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
25126082037fSVladimir Zapolskiy 			.name = "cam_cc_sfe_1_clk",
2513*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2514*a2a796c1SDmitry Baryshkov 				&cam_cc_sfe_1_clk_src.clkr.hw,
25156082037fSVladimir Zapolskiy 			},
25166082037fSVladimir Zapolskiy 			.num_parents = 1,
25176082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
25186082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
25196082037fSVladimir Zapolskiy 		},
25206082037fSVladimir Zapolskiy 	},
25216082037fSVladimir Zapolskiy };
25226082037fSVladimir Zapolskiy 
25236082037fSVladimir Zapolskiy static struct clk_branch cam_cc_sfe_1_fast_ahb_clk = {
25246082037fSVladimir Zapolskiy 	.halt_reg = 0x130d8,
25256082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
25266082037fSVladimir Zapolskiy 	.clkr = {
25276082037fSVladimir Zapolskiy 		.enable_reg = 0x130d8,
25286082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
25296082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
25306082037fSVladimir Zapolskiy 			.name = "cam_cc_sfe_1_fast_ahb_clk",
2531*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2532*a2a796c1SDmitry Baryshkov 				&cam_cc_fast_ahb_clk_src.clkr.hw,
25336082037fSVladimir Zapolskiy 			},
25346082037fSVladimir Zapolskiy 			.num_parents = 1,
25356082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
25366082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
25376082037fSVladimir Zapolskiy 		},
25386082037fSVladimir Zapolskiy 	},
25396082037fSVladimir Zapolskiy };
25406082037fSVladimir Zapolskiy 
25416082037fSVladimir Zapolskiy static struct clk_branch cam_cc_sleep_clk = {
25426082037fSVladimir Zapolskiy 	.halt_reg = 0x13228,
25436082037fSVladimir Zapolskiy 	.halt_check = BRANCH_HALT,
25446082037fSVladimir Zapolskiy 	.clkr = {
25456082037fSVladimir Zapolskiy 		.enable_reg = 0x13228,
25466082037fSVladimir Zapolskiy 		.enable_mask = BIT(0),
25476082037fSVladimir Zapolskiy 		.hw.init = &(const struct clk_init_data) {
25486082037fSVladimir Zapolskiy 			.name = "cam_cc_sleep_clk",
2549*a2a796c1SDmitry Baryshkov 			.parent_hws = (const struct clk_hw*[]) {
2550*a2a796c1SDmitry Baryshkov 				&cam_cc_sleep_clk_src.clkr.hw,
25516082037fSVladimir Zapolskiy 			},
25526082037fSVladimir Zapolskiy 			.num_parents = 1,
25536082037fSVladimir Zapolskiy 			.flags = CLK_SET_RATE_PARENT,
25546082037fSVladimir Zapolskiy 			.ops = &clk_branch2_ops,
25556082037fSVladimir Zapolskiy 		},
25566082037fSVladimir Zapolskiy 	},
25576082037fSVladimir Zapolskiy };
25586082037fSVladimir Zapolskiy 
25596082037fSVladimir Zapolskiy static struct clk_regmap *cam_cc_sm8450_clocks[] = {
25606082037fSVladimir Zapolskiy 	[CAM_CC_BPS_AHB_CLK] = &cam_cc_bps_ahb_clk.clkr,
25616082037fSVladimir Zapolskiy 	[CAM_CC_BPS_CLK] = &cam_cc_bps_clk.clkr,
25626082037fSVladimir Zapolskiy 	[CAM_CC_BPS_CLK_SRC] = &cam_cc_bps_clk_src.clkr,
25636082037fSVladimir Zapolskiy 	[CAM_CC_BPS_FAST_AHB_CLK] = &cam_cc_bps_fast_ahb_clk.clkr,
25646082037fSVladimir Zapolskiy 	[CAM_CC_CAMNOC_AXI_CLK] = &cam_cc_camnoc_axi_clk.clkr,
25656082037fSVladimir Zapolskiy 	[CAM_CC_CAMNOC_AXI_CLK_SRC] = &cam_cc_camnoc_axi_clk_src.clkr,
25666082037fSVladimir Zapolskiy 	[CAM_CC_CAMNOC_DCD_XO_CLK] = &cam_cc_camnoc_dcd_xo_clk.clkr,
25676082037fSVladimir Zapolskiy 	[CAM_CC_CCI_0_CLK] = &cam_cc_cci_0_clk.clkr,
25686082037fSVladimir Zapolskiy 	[CAM_CC_CCI_0_CLK_SRC] = &cam_cc_cci_0_clk_src.clkr,
25696082037fSVladimir Zapolskiy 	[CAM_CC_CCI_1_CLK] = &cam_cc_cci_1_clk.clkr,
25706082037fSVladimir Zapolskiy 	[CAM_CC_CCI_1_CLK_SRC] = &cam_cc_cci_1_clk_src.clkr,
25716082037fSVladimir Zapolskiy 	[CAM_CC_CORE_AHB_CLK] = &cam_cc_core_ahb_clk.clkr,
25726082037fSVladimir Zapolskiy 	[CAM_CC_CPAS_AHB_CLK] = &cam_cc_cpas_ahb_clk.clkr,
25736082037fSVladimir Zapolskiy 	[CAM_CC_CPAS_BPS_CLK] = &cam_cc_cpas_bps_clk.clkr,
25746082037fSVladimir Zapolskiy 	[CAM_CC_CPAS_FAST_AHB_CLK] = &cam_cc_cpas_fast_ahb_clk.clkr,
25756082037fSVladimir Zapolskiy 	[CAM_CC_CPAS_IFE_0_CLK] = &cam_cc_cpas_ife_0_clk.clkr,
25766082037fSVladimir Zapolskiy 	[CAM_CC_CPAS_IFE_1_CLK] = &cam_cc_cpas_ife_1_clk.clkr,
25776082037fSVladimir Zapolskiy 	[CAM_CC_CPAS_IFE_2_CLK] = &cam_cc_cpas_ife_2_clk.clkr,
25786082037fSVladimir Zapolskiy 	[CAM_CC_CPAS_IFE_LITE_CLK] = &cam_cc_cpas_ife_lite_clk.clkr,
25796082037fSVladimir Zapolskiy 	[CAM_CC_CPAS_IPE_NPS_CLK] = &cam_cc_cpas_ipe_nps_clk.clkr,
25806082037fSVladimir Zapolskiy 	[CAM_CC_CPAS_SBI_CLK] = &cam_cc_cpas_sbi_clk.clkr,
25816082037fSVladimir Zapolskiy 	[CAM_CC_CPAS_SFE_0_CLK] = &cam_cc_cpas_sfe_0_clk.clkr,
25826082037fSVladimir Zapolskiy 	[CAM_CC_CPAS_SFE_1_CLK] = &cam_cc_cpas_sfe_1_clk.clkr,
25836082037fSVladimir Zapolskiy 	[CAM_CC_CPHY_RX_CLK_SRC] = &cam_cc_cphy_rx_clk_src.clkr,
25846082037fSVladimir Zapolskiy 	[CAM_CC_CSI0PHYTIMER_CLK] = &cam_cc_csi0phytimer_clk.clkr,
25856082037fSVladimir Zapolskiy 	[CAM_CC_CSI0PHYTIMER_CLK_SRC] = &cam_cc_csi0phytimer_clk_src.clkr,
25866082037fSVladimir Zapolskiy 	[CAM_CC_CSI1PHYTIMER_CLK] = &cam_cc_csi1phytimer_clk.clkr,
25876082037fSVladimir Zapolskiy 	[CAM_CC_CSI1PHYTIMER_CLK_SRC] = &cam_cc_csi1phytimer_clk_src.clkr,
25886082037fSVladimir Zapolskiy 	[CAM_CC_CSI2PHYTIMER_CLK] = &cam_cc_csi2phytimer_clk.clkr,
25896082037fSVladimir Zapolskiy 	[CAM_CC_CSI2PHYTIMER_CLK_SRC] = &cam_cc_csi2phytimer_clk_src.clkr,
25906082037fSVladimir Zapolskiy 	[CAM_CC_CSI3PHYTIMER_CLK] = &cam_cc_csi3phytimer_clk.clkr,
25916082037fSVladimir Zapolskiy 	[CAM_CC_CSI3PHYTIMER_CLK_SRC] = &cam_cc_csi3phytimer_clk_src.clkr,
25926082037fSVladimir Zapolskiy 	[CAM_CC_CSI4PHYTIMER_CLK] = &cam_cc_csi4phytimer_clk.clkr,
25936082037fSVladimir Zapolskiy 	[CAM_CC_CSI4PHYTIMER_CLK_SRC] = &cam_cc_csi4phytimer_clk_src.clkr,
25946082037fSVladimir Zapolskiy 	[CAM_CC_CSI5PHYTIMER_CLK] = &cam_cc_csi5phytimer_clk.clkr,
25956082037fSVladimir Zapolskiy 	[CAM_CC_CSI5PHYTIMER_CLK_SRC] = &cam_cc_csi5phytimer_clk_src.clkr,
25966082037fSVladimir Zapolskiy 	[CAM_CC_CSID_CLK] = &cam_cc_csid_clk.clkr,
25976082037fSVladimir Zapolskiy 	[CAM_CC_CSID_CLK_SRC] = &cam_cc_csid_clk_src.clkr,
25986082037fSVladimir Zapolskiy 	[CAM_CC_CSID_CSIPHY_RX_CLK] = &cam_cc_csid_csiphy_rx_clk.clkr,
25996082037fSVladimir Zapolskiy 	[CAM_CC_CSIPHY0_CLK] = &cam_cc_csiphy0_clk.clkr,
26006082037fSVladimir Zapolskiy 	[CAM_CC_CSIPHY1_CLK] = &cam_cc_csiphy1_clk.clkr,
26016082037fSVladimir Zapolskiy 	[CAM_CC_CSIPHY2_CLK] = &cam_cc_csiphy2_clk.clkr,
26026082037fSVladimir Zapolskiy 	[CAM_CC_CSIPHY3_CLK] = &cam_cc_csiphy3_clk.clkr,
26036082037fSVladimir Zapolskiy 	[CAM_CC_CSIPHY4_CLK] = &cam_cc_csiphy4_clk.clkr,
26046082037fSVladimir Zapolskiy 	[CAM_CC_CSIPHY5_CLK] = &cam_cc_csiphy5_clk.clkr,
26056082037fSVladimir Zapolskiy 	[CAM_CC_FAST_AHB_CLK_SRC] = &cam_cc_fast_ahb_clk_src.clkr,
26066082037fSVladimir Zapolskiy 	[CAM_CC_GDSC_CLK] = &cam_cc_gdsc_clk.clkr,
26076082037fSVladimir Zapolskiy 	[CAM_CC_ICP_AHB_CLK] = &cam_cc_icp_ahb_clk.clkr,
26086082037fSVladimir Zapolskiy 	[CAM_CC_ICP_CLK] = &cam_cc_icp_clk.clkr,
26096082037fSVladimir Zapolskiy 	[CAM_CC_ICP_CLK_SRC] = &cam_cc_icp_clk_src.clkr,
26106082037fSVladimir Zapolskiy 	[CAM_CC_IFE_0_CLK] = &cam_cc_ife_0_clk.clkr,
26116082037fSVladimir Zapolskiy 	[CAM_CC_IFE_0_CLK_SRC] = &cam_cc_ife_0_clk_src.clkr,
26126082037fSVladimir Zapolskiy 	[CAM_CC_IFE_0_DSP_CLK] = &cam_cc_ife_0_dsp_clk.clkr,
26136082037fSVladimir Zapolskiy 	[CAM_CC_IFE_0_FAST_AHB_CLK] = &cam_cc_ife_0_fast_ahb_clk.clkr,
26146082037fSVladimir Zapolskiy 	[CAM_CC_IFE_1_CLK] = &cam_cc_ife_1_clk.clkr,
26156082037fSVladimir Zapolskiy 	[CAM_CC_IFE_1_CLK_SRC] = &cam_cc_ife_1_clk_src.clkr,
26166082037fSVladimir Zapolskiy 	[CAM_CC_IFE_1_DSP_CLK] = &cam_cc_ife_1_dsp_clk.clkr,
26176082037fSVladimir Zapolskiy 	[CAM_CC_IFE_1_FAST_AHB_CLK] = &cam_cc_ife_1_fast_ahb_clk.clkr,
26186082037fSVladimir Zapolskiy 	[CAM_CC_IFE_2_CLK] = &cam_cc_ife_2_clk.clkr,
26196082037fSVladimir Zapolskiy 	[CAM_CC_IFE_2_CLK_SRC] = &cam_cc_ife_2_clk_src.clkr,
26206082037fSVladimir Zapolskiy 	[CAM_CC_IFE_2_DSP_CLK] = &cam_cc_ife_2_dsp_clk.clkr,
26216082037fSVladimir Zapolskiy 	[CAM_CC_IFE_2_FAST_AHB_CLK] = &cam_cc_ife_2_fast_ahb_clk.clkr,
26226082037fSVladimir Zapolskiy 	[CAM_CC_IFE_LITE_AHB_CLK] = &cam_cc_ife_lite_ahb_clk.clkr,
26236082037fSVladimir Zapolskiy 	[CAM_CC_IFE_LITE_CLK] = &cam_cc_ife_lite_clk.clkr,
26246082037fSVladimir Zapolskiy 	[CAM_CC_IFE_LITE_CLK_SRC] = &cam_cc_ife_lite_clk_src.clkr,
26256082037fSVladimir Zapolskiy 	[CAM_CC_IFE_LITE_CPHY_RX_CLK] = &cam_cc_ife_lite_cphy_rx_clk.clkr,
26266082037fSVladimir Zapolskiy 	[CAM_CC_IFE_LITE_CSID_CLK] = &cam_cc_ife_lite_csid_clk.clkr,
26276082037fSVladimir Zapolskiy 	[CAM_CC_IFE_LITE_CSID_CLK_SRC] = &cam_cc_ife_lite_csid_clk_src.clkr,
26286082037fSVladimir Zapolskiy 	[CAM_CC_IPE_NPS_AHB_CLK] = &cam_cc_ipe_nps_ahb_clk.clkr,
26296082037fSVladimir Zapolskiy 	[CAM_CC_IPE_NPS_CLK] = &cam_cc_ipe_nps_clk.clkr,
26306082037fSVladimir Zapolskiy 	[CAM_CC_IPE_NPS_CLK_SRC] = &cam_cc_ipe_nps_clk_src.clkr,
26316082037fSVladimir Zapolskiy 	[CAM_CC_IPE_NPS_FAST_AHB_CLK] = &cam_cc_ipe_nps_fast_ahb_clk.clkr,
26326082037fSVladimir Zapolskiy 	[CAM_CC_IPE_PPS_CLK] = &cam_cc_ipe_pps_clk.clkr,
26336082037fSVladimir Zapolskiy 	[CAM_CC_IPE_PPS_FAST_AHB_CLK] = &cam_cc_ipe_pps_fast_ahb_clk.clkr,
26346082037fSVladimir Zapolskiy 	[CAM_CC_JPEG_CLK] = &cam_cc_jpeg_clk.clkr,
26356082037fSVladimir Zapolskiy 	[CAM_CC_JPEG_CLK_SRC] = &cam_cc_jpeg_clk_src.clkr,
26366082037fSVladimir Zapolskiy 	[CAM_CC_MCLK0_CLK] = &cam_cc_mclk0_clk.clkr,
26376082037fSVladimir Zapolskiy 	[CAM_CC_MCLK0_CLK_SRC] = &cam_cc_mclk0_clk_src.clkr,
26386082037fSVladimir Zapolskiy 	[CAM_CC_MCLK1_CLK] = &cam_cc_mclk1_clk.clkr,
26396082037fSVladimir Zapolskiy 	[CAM_CC_MCLK1_CLK_SRC] = &cam_cc_mclk1_clk_src.clkr,
26406082037fSVladimir Zapolskiy 	[CAM_CC_MCLK2_CLK] = &cam_cc_mclk2_clk.clkr,
26416082037fSVladimir Zapolskiy 	[CAM_CC_MCLK2_CLK_SRC] = &cam_cc_mclk2_clk_src.clkr,
26426082037fSVladimir Zapolskiy 	[CAM_CC_MCLK3_CLK] = &cam_cc_mclk3_clk.clkr,
26436082037fSVladimir Zapolskiy 	[CAM_CC_MCLK3_CLK_SRC] = &cam_cc_mclk3_clk_src.clkr,
26446082037fSVladimir Zapolskiy 	[CAM_CC_MCLK4_CLK] = &cam_cc_mclk4_clk.clkr,
26456082037fSVladimir Zapolskiy 	[CAM_CC_MCLK4_CLK_SRC] = &cam_cc_mclk4_clk_src.clkr,
26466082037fSVladimir Zapolskiy 	[CAM_CC_MCLK5_CLK] = &cam_cc_mclk5_clk.clkr,
26476082037fSVladimir Zapolskiy 	[CAM_CC_MCLK5_CLK_SRC] = &cam_cc_mclk5_clk_src.clkr,
26486082037fSVladimir Zapolskiy 	[CAM_CC_MCLK6_CLK] = &cam_cc_mclk6_clk.clkr,
26496082037fSVladimir Zapolskiy 	[CAM_CC_MCLK6_CLK_SRC] = &cam_cc_mclk6_clk_src.clkr,
26506082037fSVladimir Zapolskiy 	[CAM_CC_MCLK7_CLK] = &cam_cc_mclk7_clk.clkr,
26516082037fSVladimir Zapolskiy 	[CAM_CC_MCLK7_CLK_SRC] = &cam_cc_mclk7_clk_src.clkr,
26526082037fSVladimir Zapolskiy 	[CAM_CC_PLL0] = &cam_cc_pll0.clkr,
26536082037fSVladimir Zapolskiy 	[CAM_CC_PLL0_OUT_EVEN] = &cam_cc_pll0_out_even.clkr,
26546082037fSVladimir Zapolskiy 	[CAM_CC_PLL0_OUT_ODD] = &cam_cc_pll0_out_odd.clkr,
26556082037fSVladimir Zapolskiy 	[CAM_CC_PLL1] = &cam_cc_pll1.clkr,
26566082037fSVladimir Zapolskiy 	[CAM_CC_PLL1_OUT_EVEN] = &cam_cc_pll1_out_even.clkr,
26576082037fSVladimir Zapolskiy 	[CAM_CC_PLL2] = &cam_cc_pll2.clkr,
26586082037fSVladimir Zapolskiy 	[CAM_CC_PLL3] = &cam_cc_pll3.clkr,
26596082037fSVladimir Zapolskiy 	[CAM_CC_PLL3_OUT_EVEN] = &cam_cc_pll3_out_even.clkr,
26606082037fSVladimir Zapolskiy 	[CAM_CC_PLL4] = &cam_cc_pll4.clkr,
26616082037fSVladimir Zapolskiy 	[CAM_CC_PLL4_OUT_EVEN] = &cam_cc_pll4_out_even.clkr,
26626082037fSVladimir Zapolskiy 	[CAM_CC_PLL5] = &cam_cc_pll5.clkr,
26636082037fSVladimir Zapolskiy 	[CAM_CC_PLL5_OUT_EVEN] = &cam_cc_pll5_out_even.clkr,
26646082037fSVladimir Zapolskiy 	[CAM_CC_PLL6] = &cam_cc_pll6.clkr,
26656082037fSVladimir Zapolskiy 	[CAM_CC_PLL6_OUT_EVEN] = &cam_cc_pll6_out_even.clkr,
26666082037fSVladimir Zapolskiy 	[CAM_CC_PLL7] = &cam_cc_pll7.clkr,
26676082037fSVladimir Zapolskiy 	[CAM_CC_PLL7_OUT_EVEN] = &cam_cc_pll7_out_even.clkr,
26686082037fSVladimir Zapolskiy 	[CAM_CC_PLL8] = &cam_cc_pll8.clkr,
26696082037fSVladimir Zapolskiy 	[CAM_CC_PLL8_OUT_EVEN] = &cam_cc_pll8_out_even.clkr,
26706082037fSVladimir Zapolskiy 	[CAM_CC_QDSS_DEBUG_CLK] = &cam_cc_qdss_debug_clk.clkr,
26716082037fSVladimir Zapolskiy 	[CAM_CC_QDSS_DEBUG_CLK_SRC] = &cam_cc_qdss_debug_clk_src.clkr,
26726082037fSVladimir Zapolskiy 	[CAM_CC_QDSS_DEBUG_XO_CLK] = &cam_cc_qdss_debug_xo_clk.clkr,
26736082037fSVladimir Zapolskiy 	[CAM_CC_SBI_AHB_CLK] = &cam_cc_sbi_ahb_clk.clkr,
26746082037fSVladimir Zapolskiy 	[CAM_CC_SBI_CLK] = &cam_cc_sbi_clk.clkr,
26756082037fSVladimir Zapolskiy 	[CAM_CC_SFE_0_CLK] = &cam_cc_sfe_0_clk.clkr,
26766082037fSVladimir Zapolskiy 	[CAM_CC_SFE_0_CLK_SRC] = &cam_cc_sfe_0_clk_src.clkr,
26776082037fSVladimir Zapolskiy 	[CAM_CC_SFE_0_FAST_AHB_CLK] = &cam_cc_sfe_0_fast_ahb_clk.clkr,
26786082037fSVladimir Zapolskiy 	[CAM_CC_SFE_1_CLK] = &cam_cc_sfe_1_clk.clkr,
26796082037fSVladimir Zapolskiy 	[CAM_CC_SFE_1_CLK_SRC] = &cam_cc_sfe_1_clk_src.clkr,
26806082037fSVladimir Zapolskiy 	[CAM_CC_SFE_1_FAST_AHB_CLK] = &cam_cc_sfe_1_fast_ahb_clk.clkr,
26816082037fSVladimir Zapolskiy 	[CAM_CC_SLEEP_CLK] = &cam_cc_sleep_clk.clkr,
26826082037fSVladimir Zapolskiy 	[CAM_CC_SLEEP_CLK_SRC] = &cam_cc_sleep_clk_src.clkr,
26836082037fSVladimir Zapolskiy 	[CAM_CC_SLOW_AHB_CLK_SRC] = &cam_cc_slow_ahb_clk_src.clkr,
26846082037fSVladimir Zapolskiy 	[CAM_CC_XO_CLK_SRC] = &cam_cc_xo_clk_src.clkr,
26856082037fSVladimir Zapolskiy };
26866082037fSVladimir Zapolskiy 
26876082037fSVladimir Zapolskiy static const struct qcom_reset_map cam_cc_sm8450_resets[] = {
26886082037fSVladimir Zapolskiy 	[CAM_CC_BPS_BCR] = { 0x10000 },
26896082037fSVladimir Zapolskiy 	[CAM_CC_ICP_BCR] = { 0x13104 },
26906082037fSVladimir Zapolskiy 	[CAM_CC_IFE_0_BCR] = { 0x11000 },
26916082037fSVladimir Zapolskiy 	[CAM_CC_IFE_1_BCR] = { 0x12000 },
26926082037fSVladimir Zapolskiy 	[CAM_CC_IFE_2_BCR] = { 0x1204c },
26936082037fSVladimir Zapolskiy 	[CAM_CC_IPE_0_BCR] = { 0x10074 },
26946082037fSVladimir Zapolskiy 	[CAM_CC_QDSS_DEBUG_BCR] = { 0x131b8 },
26956082037fSVladimir Zapolskiy 	[CAM_CC_SBI_BCR] = { 0x100cc },
26966082037fSVladimir Zapolskiy 	[CAM_CC_SFE_0_BCR] = { 0x1304c },
26976082037fSVladimir Zapolskiy 	[CAM_CC_SFE_1_BCR] = { 0x13094 },
26986082037fSVladimir Zapolskiy };
26996082037fSVladimir Zapolskiy 
27006082037fSVladimir Zapolskiy static const struct regmap_config cam_cc_sm8450_regmap_config = {
27016082037fSVladimir Zapolskiy 	.reg_bits = 32,
27026082037fSVladimir Zapolskiy 	.reg_stride = 4,
27036082037fSVladimir Zapolskiy 	.val_bits = 32,
27046082037fSVladimir Zapolskiy 	.max_register = 0x1601c,
27056082037fSVladimir Zapolskiy 	.fast_io = true,
27066082037fSVladimir Zapolskiy };
27076082037fSVladimir Zapolskiy 
27086082037fSVladimir Zapolskiy static struct gdsc titan_top_gdsc;
27096082037fSVladimir Zapolskiy 
27106082037fSVladimir Zapolskiy static struct gdsc bps_gdsc = {
27116082037fSVladimir Zapolskiy 	.gdscr = 0x10004,
27126082037fSVladimir Zapolskiy 	.pd = {
27136082037fSVladimir Zapolskiy 		.name = "bps_gdsc",
27146082037fSVladimir Zapolskiy 	},
27156082037fSVladimir Zapolskiy 	.flags = HW_CTRL | POLL_CFG_GDSCR,
27166082037fSVladimir Zapolskiy 	.pwrsts = PWRSTS_OFF_ON,
27176082037fSVladimir Zapolskiy };
27186082037fSVladimir Zapolskiy 
27196082037fSVladimir Zapolskiy static struct gdsc ipe_0_gdsc = {
27206082037fSVladimir Zapolskiy 	.gdscr = 0x10078,
27216082037fSVladimir Zapolskiy 	.pd = {
27226082037fSVladimir Zapolskiy 		.name = "ipe_0_gdsc",
27236082037fSVladimir Zapolskiy 	},
27246082037fSVladimir Zapolskiy 	.flags = HW_CTRL | POLL_CFG_GDSCR,
27256082037fSVladimir Zapolskiy 	.pwrsts = PWRSTS_OFF_ON,
27266082037fSVladimir Zapolskiy };
27276082037fSVladimir Zapolskiy 
27286082037fSVladimir Zapolskiy static struct gdsc sbi_gdsc = {
27296082037fSVladimir Zapolskiy 	.gdscr = 0x100d0,
27306082037fSVladimir Zapolskiy 	.pd = {
27316082037fSVladimir Zapolskiy 		.name = "sbi_gdsc",
27326082037fSVladimir Zapolskiy 	},
27336082037fSVladimir Zapolskiy 	.flags = POLL_CFG_GDSCR,
27346082037fSVladimir Zapolskiy 	.pwrsts = PWRSTS_OFF_ON,
27356082037fSVladimir Zapolskiy };
27366082037fSVladimir Zapolskiy 
27376082037fSVladimir Zapolskiy static struct gdsc ife_0_gdsc = {
27386082037fSVladimir Zapolskiy 	.gdscr = 0x11004,
27396082037fSVladimir Zapolskiy 	.pd = {
27406082037fSVladimir Zapolskiy 		.name = "ife_0_gdsc",
27416082037fSVladimir Zapolskiy 	},
27426082037fSVladimir Zapolskiy 	.flags = POLL_CFG_GDSCR,
27436082037fSVladimir Zapolskiy 	.parent = &titan_top_gdsc.pd,
27446082037fSVladimir Zapolskiy 	.pwrsts = PWRSTS_OFF_ON,
27456082037fSVladimir Zapolskiy };
27466082037fSVladimir Zapolskiy 
27476082037fSVladimir Zapolskiy static struct gdsc ife_1_gdsc = {
27486082037fSVladimir Zapolskiy 	.gdscr = 0x12004,
27496082037fSVladimir Zapolskiy 	.pd = {
27506082037fSVladimir Zapolskiy 		.name = "ife_1_gdsc",
27516082037fSVladimir Zapolskiy 	},
27526082037fSVladimir Zapolskiy 	.flags = POLL_CFG_GDSCR,
27536082037fSVladimir Zapolskiy 	.parent = &titan_top_gdsc.pd,
27546082037fSVladimir Zapolskiy 	.pwrsts = PWRSTS_OFF_ON,
27556082037fSVladimir Zapolskiy };
27566082037fSVladimir Zapolskiy 
27576082037fSVladimir Zapolskiy static struct gdsc ife_2_gdsc = {
27586082037fSVladimir Zapolskiy 	.gdscr = 0x12050,
27596082037fSVladimir Zapolskiy 	.pd = {
27606082037fSVladimir Zapolskiy 		.name = "ife_2_gdsc",
27616082037fSVladimir Zapolskiy 	},
27626082037fSVladimir Zapolskiy 	.flags = POLL_CFG_GDSCR,
27636082037fSVladimir Zapolskiy 	.parent = &titan_top_gdsc.pd,
27646082037fSVladimir Zapolskiy 	.pwrsts = PWRSTS_OFF_ON,
27656082037fSVladimir Zapolskiy };
27666082037fSVladimir Zapolskiy 
27676082037fSVladimir Zapolskiy static struct gdsc sfe_0_gdsc = {
27686082037fSVladimir Zapolskiy 	.gdscr = 0x13050,
27696082037fSVladimir Zapolskiy 	.pd = {
27706082037fSVladimir Zapolskiy 		.name = "sfe_0_gdsc",
27716082037fSVladimir Zapolskiy 	},
27726082037fSVladimir Zapolskiy 	.flags = POLL_CFG_GDSCR,
27736082037fSVladimir Zapolskiy 	.parent = &titan_top_gdsc.pd,
27746082037fSVladimir Zapolskiy 	.pwrsts = PWRSTS_OFF_ON,
27756082037fSVladimir Zapolskiy };
27766082037fSVladimir Zapolskiy 
27776082037fSVladimir Zapolskiy static struct gdsc sfe_1_gdsc = {
27786082037fSVladimir Zapolskiy 	.gdscr = 0x13098,
27796082037fSVladimir Zapolskiy 	.pd = {
27806082037fSVladimir Zapolskiy 		.name = "sfe_1_gdsc",
27816082037fSVladimir Zapolskiy 	},
27826082037fSVladimir Zapolskiy 	.flags = POLL_CFG_GDSCR,
27836082037fSVladimir Zapolskiy 	.parent = &titan_top_gdsc.pd,
27846082037fSVladimir Zapolskiy 	.pwrsts = PWRSTS_OFF_ON,
27856082037fSVladimir Zapolskiy };
27866082037fSVladimir Zapolskiy 
27876082037fSVladimir Zapolskiy static struct gdsc titan_top_gdsc = {
27886082037fSVladimir Zapolskiy 	.gdscr = 0x131dc,
27896082037fSVladimir Zapolskiy 	.pd = {
27906082037fSVladimir Zapolskiy 		.name = "titan_top_gdsc",
27916082037fSVladimir Zapolskiy 	},
27926082037fSVladimir Zapolskiy 	.flags = POLL_CFG_GDSCR,
27936082037fSVladimir Zapolskiy 	.pwrsts = PWRSTS_OFF_ON,
27946082037fSVladimir Zapolskiy };
27956082037fSVladimir Zapolskiy 
27966082037fSVladimir Zapolskiy static struct gdsc *cam_cc_sm8450_gdscs[] = {
27976082037fSVladimir Zapolskiy 	[BPS_GDSC] = &bps_gdsc,
27986082037fSVladimir Zapolskiy 	[IPE_0_GDSC] = &ipe_0_gdsc,
27996082037fSVladimir Zapolskiy 	[SBI_GDSC] = &sbi_gdsc,
28006082037fSVladimir Zapolskiy 	[IFE_0_GDSC] = &ife_0_gdsc,
28016082037fSVladimir Zapolskiy 	[IFE_1_GDSC] = &ife_1_gdsc,
28026082037fSVladimir Zapolskiy 	[IFE_2_GDSC] = &ife_2_gdsc,
28036082037fSVladimir Zapolskiy 	[SFE_0_GDSC] = &sfe_0_gdsc,
28046082037fSVladimir Zapolskiy 	[SFE_1_GDSC] = &sfe_1_gdsc,
28056082037fSVladimir Zapolskiy 	[TITAN_TOP_GDSC] = &titan_top_gdsc,
28066082037fSVladimir Zapolskiy };
28076082037fSVladimir Zapolskiy 
28086082037fSVladimir Zapolskiy static const struct qcom_cc_desc cam_cc_sm8450_desc = {
28096082037fSVladimir Zapolskiy 	.config = &cam_cc_sm8450_regmap_config,
28106082037fSVladimir Zapolskiy 	.clks = cam_cc_sm8450_clocks,
28116082037fSVladimir Zapolskiy 	.num_clks = ARRAY_SIZE(cam_cc_sm8450_clocks),
28126082037fSVladimir Zapolskiy 	.resets = cam_cc_sm8450_resets,
28136082037fSVladimir Zapolskiy 	.num_resets = ARRAY_SIZE(cam_cc_sm8450_resets),
28146082037fSVladimir Zapolskiy 	.gdscs = cam_cc_sm8450_gdscs,
28156082037fSVladimir Zapolskiy 	.num_gdscs = ARRAY_SIZE(cam_cc_sm8450_gdscs),
28166082037fSVladimir Zapolskiy };
28176082037fSVladimir Zapolskiy 
28186082037fSVladimir Zapolskiy static const struct of_device_id cam_cc_sm8450_match_table[] = {
28196082037fSVladimir Zapolskiy 	{ .compatible = "qcom,sm8450-camcc" },
28206082037fSVladimir Zapolskiy 	{ }
28216082037fSVladimir Zapolskiy };
28226082037fSVladimir Zapolskiy MODULE_DEVICE_TABLE(of, cam_cc_sm8450_match_table);
28236082037fSVladimir Zapolskiy 
cam_cc_sm8450_probe(struct platform_device * pdev)28246082037fSVladimir Zapolskiy static int cam_cc_sm8450_probe(struct platform_device *pdev)
28256082037fSVladimir Zapolskiy {
28266082037fSVladimir Zapolskiy 	struct regmap *regmap;
28276082037fSVladimir Zapolskiy 
28286082037fSVladimir Zapolskiy 	regmap = qcom_cc_map(pdev, &cam_cc_sm8450_desc);
28296082037fSVladimir Zapolskiy 	if (IS_ERR(regmap))
28306082037fSVladimir Zapolskiy 		return PTR_ERR(regmap);
28316082037fSVladimir Zapolskiy 
28326082037fSVladimir Zapolskiy 	clk_lucid_evo_pll_configure(&cam_cc_pll0, regmap, &cam_cc_pll0_config);
28336082037fSVladimir Zapolskiy 	clk_lucid_evo_pll_configure(&cam_cc_pll1, regmap, &cam_cc_pll1_config);
28346082037fSVladimir Zapolskiy 	clk_rivian_evo_pll_configure(&cam_cc_pll2, regmap, &cam_cc_pll2_config);
28356082037fSVladimir Zapolskiy 	clk_lucid_evo_pll_configure(&cam_cc_pll3, regmap, &cam_cc_pll3_config);
28366082037fSVladimir Zapolskiy 	clk_lucid_evo_pll_configure(&cam_cc_pll4, regmap, &cam_cc_pll4_config);
28376082037fSVladimir Zapolskiy 	clk_lucid_evo_pll_configure(&cam_cc_pll5, regmap, &cam_cc_pll5_config);
28386082037fSVladimir Zapolskiy 	clk_lucid_evo_pll_configure(&cam_cc_pll6, regmap, &cam_cc_pll6_config);
28396082037fSVladimir Zapolskiy 	clk_lucid_evo_pll_configure(&cam_cc_pll7, regmap, &cam_cc_pll7_config);
28406082037fSVladimir Zapolskiy 	clk_lucid_evo_pll_configure(&cam_cc_pll8, regmap, &cam_cc_pll8_config);
28416082037fSVladimir Zapolskiy 
28426082037fSVladimir Zapolskiy 	return qcom_cc_really_probe(pdev, &cam_cc_sm8450_desc, regmap);
28436082037fSVladimir Zapolskiy }
28446082037fSVladimir Zapolskiy 
28456082037fSVladimir Zapolskiy static struct platform_driver cam_cc_sm8450_driver = {
28466082037fSVladimir Zapolskiy 	.probe = cam_cc_sm8450_probe,
28476082037fSVladimir Zapolskiy 	.driver = {
28486082037fSVladimir Zapolskiy 		.name = "camcc-sm8450",
28496082037fSVladimir Zapolskiy 		.of_match_table = cam_cc_sm8450_match_table,
28506082037fSVladimir Zapolskiy 	},
28516082037fSVladimir Zapolskiy };
28526082037fSVladimir Zapolskiy 
28536082037fSVladimir Zapolskiy module_platform_driver(cam_cc_sm8450_driver);
28546082037fSVladimir Zapolskiy 
28556082037fSVladimir Zapolskiy MODULE_DESCRIPTION("QCOM CAMCC SM8450 Driver");
28566082037fSVladimir Zapolskiy MODULE_LICENSE("GPL");
2857