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