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