xref: /linux/drivers/clk/qcom/camcc-sm8550.c (revision 3a2c4d55e32ad65efebdb6de44eef3bfa08bb49d)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
4  */
5 
6 #include <linux/clk-provider.h>
7 #include <linux/module.h>
8 #include <linux/platform_device.h>
9 #include <linux/regmap.h>
10 
11 #include <dt-bindings/clock/qcom,sm8550-camcc.h>
12 
13 #include "clk-alpha-pll.h"
14 #include "clk-branch.h"
15 #include "clk-rcg.h"
16 #include "clk-regmap.h"
17 #include "common.h"
18 #include "gdsc.h"
19 #include "reset.h"
20 
21 enum {
22 	DT_IFACE,
23 	DT_BI_TCXO,
24 	DT_BI_TCXO_AO,
25 	DT_SLEEP_CLK,
26 };
27 
28 enum {
29 	P_BI_TCXO,
30 	P_BI_TCXO_AO,
31 	P_CAM_CC_PLL0_OUT_EVEN,
32 	P_CAM_CC_PLL0_OUT_MAIN,
33 	P_CAM_CC_PLL0_OUT_ODD,
34 	P_CAM_CC_PLL1_OUT_EVEN,
35 	P_CAM_CC_PLL2_OUT_EVEN,
36 	P_CAM_CC_PLL2_OUT_MAIN,
37 	P_CAM_CC_PLL3_OUT_EVEN,
38 	P_CAM_CC_PLL4_OUT_EVEN,
39 	P_CAM_CC_PLL5_OUT_EVEN,
40 	P_CAM_CC_PLL6_OUT_EVEN,
41 	P_CAM_CC_PLL7_OUT_EVEN,
42 	P_CAM_CC_PLL8_OUT_EVEN,
43 	P_CAM_CC_PLL9_OUT_EVEN,
44 	P_CAM_CC_PLL9_OUT_ODD,
45 	P_CAM_CC_PLL10_OUT_EVEN,
46 	P_CAM_CC_PLL11_OUT_EVEN,
47 	P_CAM_CC_PLL12_OUT_EVEN,
48 	P_SLEEP_CLK,
49 };
50 
51 static const struct pll_vco lucid_ole_vco[] = {
52 	{ 249600000, 2300000000, 0 },
53 };
54 
55 static const struct pll_vco rivian_ole_vco[] = {
56 	{ 777000000, 1285000000, 0 },
57 };
58 
59 static const struct alpha_pll_config cam_cc_pll0_config = {
60 	.l = 0x3e,
61 	.alpha = 0x8000,
62 	.config_ctl_val = 0x20485699,
63 	.config_ctl_hi_val = 0x00182261,
64 	.config_ctl_hi1_val = 0x82aa299c,
65 	.test_ctl_val = 0x00000000,
66 	.test_ctl_hi_val = 0x00000003,
67 	.test_ctl_hi1_val = 0x00009000,
68 	.test_ctl_hi2_val = 0x00000034,
69 	.user_ctl_val = 0x00008400,
70 	.user_ctl_hi_val = 0x00000005,
71 };
72 
73 static struct clk_alpha_pll cam_cc_pll0 = {
74 	.offset = 0x0,
75 	.config = &cam_cc_pll0_config,
76 	.vco_table = lucid_ole_vco,
77 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
78 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
79 	.clkr = {
80 		.hw.init = &(const struct clk_init_data) {
81 			.name = "cam_cc_pll0",
82 			.parent_data = &(const struct clk_parent_data) {
83 				.index = DT_BI_TCXO,
84 			},
85 			.num_parents = 1,
86 			.ops = &clk_alpha_pll_lucid_evo_ops,
87 		},
88 	},
89 };
90 
91 static const struct clk_div_table post_div_table_cam_cc_pll0_out_even[] = {
92 	{ 0x1, 2 },
93 	{ }
94 };
95 
96 static struct clk_alpha_pll_postdiv cam_cc_pll0_out_even = {
97 	.offset = 0x0,
98 	.post_div_shift = 10,
99 	.post_div_table = post_div_table_cam_cc_pll0_out_even,
100 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_even),
101 	.width = 4,
102 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
103 	.clkr.hw.init = &(const struct clk_init_data) {
104 		.name = "cam_cc_pll0_out_even",
105 		.parent_hws = (const struct clk_hw*[]) {
106 			&cam_cc_pll0.clkr.hw,
107 		},
108 		.num_parents = 1,
109 		.flags = CLK_SET_RATE_PARENT,
110 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
111 	},
112 };
113 
114 static const struct clk_div_table post_div_table_cam_cc_pll0_out_odd[] = {
115 	{ 0x2, 3 },
116 	{ }
117 };
118 
119 static struct clk_alpha_pll_postdiv cam_cc_pll0_out_odd = {
120 	.offset = 0x0,
121 	.post_div_shift = 14,
122 	.post_div_table = post_div_table_cam_cc_pll0_out_odd,
123 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll0_out_odd),
124 	.width = 4,
125 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
126 	.clkr.hw.init = &(const struct clk_init_data) {
127 		.name = "cam_cc_pll0_out_odd",
128 		.parent_hws = (const struct clk_hw*[]) {
129 			&cam_cc_pll0.clkr.hw,
130 		},
131 		.num_parents = 1,
132 		.flags = CLK_SET_RATE_PARENT,
133 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
134 	},
135 };
136 
137 static const struct alpha_pll_config cam_cc_pll1_config = {
138 	.l = 0x2f,
139 	.alpha = 0x6555,
140 	.config_ctl_val = 0x20485699,
141 	.config_ctl_hi_val = 0x00182261,
142 	.config_ctl_hi1_val = 0x82aa299c,
143 	.test_ctl_val = 0x00000000,
144 	.test_ctl_hi_val = 0x00000003,
145 	.test_ctl_hi1_val = 0x00009000,
146 	.test_ctl_hi2_val = 0x00000034,
147 	.user_ctl_val = 0x00000400,
148 	.user_ctl_hi_val = 0x00000005,
149 };
150 
151 static struct clk_alpha_pll cam_cc_pll1 = {
152 	.offset = 0x1000,
153 	.config = &cam_cc_pll1_config,
154 	.vco_table = lucid_ole_vco,
155 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
156 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
157 	.clkr = {
158 		.hw.init = &(const struct clk_init_data) {
159 			.name = "cam_cc_pll1",
160 			.parent_data = &(const struct clk_parent_data) {
161 				.index = DT_BI_TCXO,
162 			},
163 			.num_parents = 1,
164 			.ops = &clk_alpha_pll_lucid_evo_ops,
165 		},
166 	},
167 };
168 
169 static const struct clk_div_table post_div_table_cam_cc_pll1_out_even[] = {
170 	{ 0x1, 2 },
171 	{ }
172 };
173 
174 static struct clk_alpha_pll_postdiv cam_cc_pll1_out_even = {
175 	.offset = 0x1000,
176 	.post_div_shift = 10,
177 	.post_div_table = post_div_table_cam_cc_pll1_out_even,
178 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll1_out_even),
179 	.width = 4,
180 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
181 	.clkr.hw.init = &(const struct clk_init_data) {
182 		.name = "cam_cc_pll1_out_even",
183 		.parent_hws = (const struct clk_hw*[]) {
184 			&cam_cc_pll1.clkr.hw,
185 		},
186 		.num_parents = 1,
187 		.flags = CLK_SET_RATE_PARENT,
188 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
189 	},
190 };
191 
192 static const struct alpha_pll_config cam_cc_pll2_config = {
193 	.l = 0x32,
194 	.alpha = 0x0,
195 	.config_ctl_val = 0x10000030,
196 	.config_ctl_hi_val = 0x80890263,
197 	.config_ctl_hi1_val = 0x00000217,
198 	.user_ctl_val = 0x00000000,
199 	.user_ctl_hi_val = 0x00100000,
200 };
201 
202 static struct clk_alpha_pll cam_cc_pll2 = {
203 	.offset = 0x2000,
204 	.config = &cam_cc_pll2_config,
205 	.vco_table = rivian_ole_vco,
206 	.num_vco = ARRAY_SIZE(rivian_ole_vco),
207 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_RIVIAN_EVO],
208 	.clkr = {
209 		.hw.init = &(const struct clk_init_data) {
210 			.name = "cam_cc_pll2",
211 			.parent_data = &(const struct clk_parent_data) {
212 				.index = DT_BI_TCXO,
213 			},
214 			.num_parents = 1,
215 			.ops = &clk_alpha_pll_rivian_evo_ops,
216 		},
217 	},
218 };
219 
220 static const struct alpha_pll_config cam_cc_pll3_config = {
221 	.l = 0x30,
222 	.alpha = 0x8aaa,
223 	.config_ctl_val = 0x20485699,
224 	.config_ctl_hi_val = 0x00182261,
225 	.config_ctl_hi1_val = 0x82aa299c,
226 	.test_ctl_val = 0x00000000,
227 	.test_ctl_hi_val = 0x00000003,
228 	.test_ctl_hi1_val = 0x00009000,
229 	.test_ctl_hi2_val = 0x00000034,
230 	.user_ctl_val = 0x00000400,
231 	.user_ctl_hi_val = 0x00000005,
232 };
233 
234 static struct clk_alpha_pll cam_cc_pll3 = {
235 	.offset = 0x3000,
236 	.config = &cam_cc_pll3_config,
237 	.vco_table = lucid_ole_vco,
238 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
239 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
240 	.clkr = {
241 		.hw.init = &(const struct clk_init_data) {
242 			.name = "cam_cc_pll3",
243 			.parent_data = &(const struct clk_parent_data) {
244 				.index = DT_BI_TCXO,
245 			},
246 			.num_parents = 1,
247 			.ops = &clk_alpha_pll_lucid_evo_ops,
248 		},
249 	},
250 };
251 
252 static const struct clk_div_table post_div_table_cam_cc_pll3_out_even[] = {
253 	{ 0x1, 2 },
254 	{ }
255 };
256 
257 static struct clk_alpha_pll_postdiv cam_cc_pll3_out_even = {
258 	.offset = 0x3000,
259 	.post_div_shift = 10,
260 	.post_div_table = post_div_table_cam_cc_pll3_out_even,
261 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll3_out_even),
262 	.width = 4,
263 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
264 	.clkr.hw.init = &(const struct clk_init_data) {
265 		.name = "cam_cc_pll3_out_even",
266 		.parent_hws = (const struct clk_hw*[]) {
267 			&cam_cc_pll3.clkr.hw,
268 		},
269 		.num_parents = 1,
270 		.flags = CLK_SET_RATE_PARENT,
271 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
272 	},
273 };
274 
275 static const struct alpha_pll_config cam_cc_pll4_config = {
276 	.l = 0x30,
277 	.alpha = 0x8aaa,
278 	.config_ctl_val = 0x20485699,
279 	.config_ctl_hi_val = 0x00182261,
280 	.config_ctl_hi1_val = 0x82aa299c,
281 	.test_ctl_val = 0x00000000,
282 	.test_ctl_hi_val = 0x00000003,
283 	.test_ctl_hi1_val = 0x00009000,
284 	.test_ctl_hi2_val = 0x00000034,
285 	.user_ctl_val = 0x00000400,
286 	.user_ctl_hi_val = 0x00000005,
287 };
288 
289 static struct clk_alpha_pll cam_cc_pll4 = {
290 	.offset = 0x4000,
291 	.config = &cam_cc_pll4_config,
292 	.vco_table = lucid_ole_vco,
293 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
294 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
295 	.clkr = {
296 		.hw.init = &(const struct clk_init_data) {
297 			.name = "cam_cc_pll4",
298 			.parent_data = &(const struct clk_parent_data) {
299 				.index = DT_BI_TCXO,
300 			},
301 			.num_parents = 1,
302 			.ops = &clk_alpha_pll_lucid_evo_ops,
303 		},
304 	},
305 };
306 
307 static const struct clk_div_table post_div_table_cam_cc_pll4_out_even[] = {
308 	{ 0x1, 2 },
309 	{ }
310 };
311 
312 static struct clk_alpha_pll_postdiv cam_cc_pll4_out_even = {
313 	.offset = 0x4000,
314 	.post_div_shift = 10,
315 	.post_div_table = post_div_table_cam_cc_pll4_out_even,
316 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll4_out_even),
317 	.width = 4,
318 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
319 	.clkr.hw.init = &(const struct clk_init_data) {
320 		.name = "cam_cc_pll4_out_even",
321 		.parent_hws = (const struct clk_hw*[]) {
322 			&cam_cc_pll4.clkr.hw,
323 		},
324 		.num_parents = 1,
325 		.flags = CLK_SET_RATE_PARENT,
326 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
327 	},
328 };
329 
330 static const struct alpha_pll_config cam_cc_pll5_config = {
331 	.l = 0x30,
332 	.alpha = 0x8aaa,
333 	.config_ctl_val = 0x20485699,
334 	.config_ctl_hi_val = 0x00182261,
335 	.config_ctl_hi1_val = 0x82aa299c,
336 	.test_ctl_val = 0x00000000,
337 	.test_ctl_hi_val = 0x00000003,
338 	.test_ctl_hi1_val = 0x00009000,
339 	.test_ctl_hi2_val = 0x00000034,
340 	.user_ctl_val = 0x00000400,
341 	.user_ctl_hi_val = 0x00000005,
342 };
343 
344 static struct clk_alpha_pll cam_cc_pll5 = {
345 	.offset = 0x5000,
346 	.config = &cam_cc_pll5_config,
347 	.vco_table = lucid_ole_vco,
348 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
349 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
350 	.clkr = {
351 		.hw.init = &(const struct clk_init_data) {
352 			.name = "cam_cc_pll5",
353 			.parent_data = &(const struct clk_parent_data) {
354 				.index = DT_BI_TCXO,
355 			},
356 			.num_parents = 1,
357 			.ops = &clk_alpha_pll_lucid_evo_ops,
358 		},
359 	},
360 };
361 
362 static const struct clk_div_table post_div_table_cam_cc_pll5_out_even[] = {
363 	{ 0x1, 2 },
364 	{ }
365 };
366 
367 static struct clk_alpha_pll_postdiv cam_cc_pll5_out_even = {
368 	.offset = 0x5000,
369 	.post_div_shift = 10,
370 	.post_div_table = post_div_table_cam_cc_pll5_out_even,
371 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll5_out_even),
372 	.width = 4,
373 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
374 	.clkr.hw.init = &(const struct clk_init_data) {
375 		.name = "cam_cc_pll5_out_even",
376 		.parent_hws = (const struct clk_hw*[]) {
377 			&cam_cc_pll5.clkr.hw,
378 		},
379 		.num_parents = 1,
380 		.flags = CLK_SET_RATE_PARENT,
381 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
382 	},
383 };
384 
385 static const struct alpha_pll_config cam_cc_pll6_config = {
386 	.l = 0x30,
387 	.alpha = 0x8aaa,
388 	.config_ctl_val = 0x20485699,
389 	.config_ctl_hi_val = 0x00182261,
390 	.config_ctl_hi1_val = 0x82aa299c,
391 	.test_ctl_val = 0x00000000,
392 	.test_ctl_hi_val = 0x00000003,
393 	.test_ctl_hi1_val = 0x00009000,
394 	.test_ctl_hi2_val = 0x00000034,
395 	.user_ctl_val = 0x00000400,
396 	.user_ctl_hi_val = 0x00000005,
397 };
398 
399 static struct clk_alpha_pll cam_cc_pll6 = {
400 	.offset = 0x6000,
401 	.config = &cam_cc_pll6_config,
402 	.vco_table = lucid_ole_vco,
403 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
404 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
405 	.clkr = {
406 		.hw.init = &(const struct clk_init_data) {
407 			.name = "cam_cc_pll6",
408 			.parent_data = &(const struct clk_parent_data) {
409 				.index = DT_BI_TCXO,
410 			},
411 			.num_parents = 1,
412 			.ops = &clk_alpha_pll_lucid_evo_ops,
413 		},
414 	},
415 };
416 
417 static const struct clk_div_table post_div_table_cam_cc_pll6_out_even[] = {
418 	{ 0x1, 2 },
419 	{ }
420 };
421 
422 static struct clk_alpha_pll_postdiv cam_cc_pll6_out_even = {
423 	.offset = 0x6000,
424 	.post_div_shift = 10,
425 	.post_div_table = post_div_table_cam_cc_pll6_out_even,
426 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll6_out_even),
427 	.width = 4,
428 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
429 	.clkr.hw.init = &(const struct clk_init_data) {
430 		.name = "cam_cc_pll6_out_even",
431 		.parent_hws = (const struct clk_hw*[]) {
432 			&cam_cc_pll6.clkr.hw,
433 		},
434 		.num_parents = 1,
435 		.flags = CLK_SET_RATE_PARENT,
436 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
437 	},
438 };
439 
440 static const struct alpha_pll_config cam_cc_pll7_config = {
441 	.l = 0x30,
442 	.alpha = 0x8aaa,
443 	.config_ctl_val = 0x20485699,
444 	.config_ctl_hi_val = 0x00182261,
445 	.config_ctl_hi1_val = 0x82aa299c,
446 	.test_ctl_val = 0x00000000,
447 	.test_ctl_hi_val = 0x00000003,
448 	.test_ctl_hi1_val = 0x00009000,
449 	.test_ctl_hi2_val = 0x00000034,
450 	.user_ctl_val = 0x00000400,
451 	.user_ctl_hi_val = 0x00000005,
452 };
453 
454 static struct clk_alpha_pll cam_cc_pll7 = {
455 	.offset = 0x7000,
456 	.config = &cam_cc_pll7_config,
457 	.vco_table = lucid_ole_vco,
458 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
459 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
460 	.clkr = {
461 		.hw.init = &(const struct clk_init_data) {
462 			.name = "cam_cc_pll7",
463 			.parent_data = &(const struct clk_parent_data) {
464 				.index = DT_BI_TCXO,
465 			},
466 			.num_parents = 1,
467 			.ops = &clk_alpha_pll_lucid_evo_ops,
468 		},
469 	},
470 };
471 
472 static const struct clk_div_table post_div_table_cam_cc_pll7_out_even[] = {
473 	{ 0x1, 2 },
474 	{ }
475 };
476 
477 static struct clk_alpha_pll_postdiv cam_cc_pll7_out_even = {
478 	.offset = 0x7000,
479 	.post_div_shift = 10,
480 	.post_div_table = post_div_table_cam_cc_pll7_out_even,
481 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll7_out_even),
482 	.width = 4,
483 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
484 	.clkr.hw.init = &(const struct clk_init_data) {
485 		.name = "cam_cc_pll7_out_even",
486 		.parent_hws = (const struct clk_hw*[]) {
487 			&cam_cc_pll7.clkr.hw,
488 		},
489 		.num_parents = 1,
490 		.flags = CLK_SET_RATE_PARENT,
491 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
492 	},
493 };
494 
495 static const struct alpha_pll_config cam_cc_pll8_config = {
496 	.l = 0x14,
497 	.alpha = 0xd555,
498 	.config_ctl_val = 0x20485699,
499 	.config_ctl_hi_val = 0x00182261,
500 	.config_ctl_hi1_val = 0x82aa299c,
501 	.test_ctl_val = 0x00000000,
502 	.test_ctl_hi_val = 0x00000003,
503 	.test_ctl_hi1_val = 0x00009000,
504 	.test_ctl_hi2_val = 0x00000034,
505 	.user_ctl_val = 0x00000400,
506 	.user_ctl_hi_val = 0x00000005,
507 };
508 
509 static struct clk_alpha_pll cam_cc_pll8 = {
510 	.offset = 0x8000,
511 	.config = &cam_cc_pll8_config,
512 	.vco_table = lucid_ole_vco,
513 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
514 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
515 	.clkr = {
516 		.hw.init = &(const struct clk_init_data) {
517 			.name = "cam_cc_pll8",
518 			.parent_data = &(const struct clk_parent_data) {
519 				.index = DT_BI_TCXO,
520 			},
521 			.num_parents = 1,
522 			.ops = &clk_alpha_pll_lucid_evo_ops,
523 		},
524 	},
525 };
526 
527 static const struct clk_div_table post_div_table_cam_cc_pll8_out_even[] = {
528 	{ 0x1, 2 },
529 	{ }
530 };
531 
532 static struct clk_alpha_pll_postdiv cam_cc_pll8_out_even = {
533 	.offset = 0x8000,
534 	.post_div_shift = 10,
535 	.post_div_table = post_div_table_cam_cc_pll8_out_even,
536 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll8_out_even),
537 	.width = 4,
538 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
539 	.clkr.hw.init = &(const struct clk_init_data) {
540 		.name = "cam_cc_pll8_out_even",
541 		.parent_hws = (const struct clk_hw*[]) {
542 			&cam_cc_pll8.clkr.hw,
543 		},
544 		.num_parents = 1,
545 		.flags = CLK_SET_RATE_PARENT,
546 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
547 	},
548 };
549 
550 static const struct alpha_pll_config cam_cc_pll9_config = {
551 	.l = 0x32,
552 	.alpha = 0x0,
553 	.config_ctl_val = 0x20485699,
554 	.config_ctl_hi_val = 0x00182261,
555 	.config_ctl_hi1_val = 0x82aa299c,
556 	.test_ctl_val = 0x00000000,
557 	.test_ctl_hi_val = 0x00000003,
558 	.test_ctl_hi1_val = 0x00009000,
559 	.test_ctl_hi2_val = 0x00000034,
560 	.user_ctl_val = 0x00000400,
561 	.user_ctl_hi_val = 0x00000005,
562 };
563 
564 static struct clk_alpha_pll cam_cc_pll9 = {
565 	.offset = 0x9000,
566 	.config = &cam_cc_pll9_config,
567 	.vco_table = lucid_ole_vco,
568 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
569 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
570 	.clkr = {
571 		.hw.init = &(const struct clk_init_data) {
572 			.name = "cam_cc_pll9",
573 			.parent_data = &(const struct clk_parent_data) {
574 				.index = DT_BI_TCXO,
575 			},
576 			.num_parents = 1,
577 			.ops = &clk_alpha_pll_lucid_evo_ops,
578 		},
579 	},
580 };
581 
582 static const struct clk_div_table post_div_table_cam_cc_pll9_out_even[] = {
583 	{ 0x1, 2 },
584 	{ }
585 };
586 
587 static struct clk_alpha_pll_postdiv cam_cc_pll9_out_even = {
588 	.offset = 0x9000,
589 	.post_div_shift = 10,
590 	.post_div_table = post_div_table_cam_cc_pll9_out_even,
591 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll9_out_even),
592 	.width = 4,
593 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
594 	.clkr.hw.init = &(const struct clk_init_data) {
595 		.name = "cam_cc_pll9_out_even",
596 		.parent_hws = (const struct clk_hw*[]) {
597 			&cam_cc_pll9.clkr.hw,
598 		},
599 		.num_parents = 1,
600 		.flags = CLK_SET_RATE_PARENT,
601 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
602 	},
603 };
604 
605 static const struct alpha_pll_config cam_cc_pll10_config = {
606 	.l = 0x30,
607 	.alpha = 0x8aaa,
608 	.config_ctl_val = 0x20485699,
609 	.config_ctl_hi_val = 0x00182261,
610 	.config_ctl_hi1_val = 0x82aa299c,
611 	.test_ctl_val = 0x00000000,
612 	.test_ctl_hi_val = 0x00000003,
613 	.test_ctl_hi1_val = 0x00009000,
614 	.test_ctl_hi2_val = 0x00000034,
615 	.user_ctl_val = 0x00000400,
616 	.user_ctl_hi_val = 0x00000005,
617 };
618 
619 static struct clk_alpha_pll cam_cc_pll10 = {
620 	.offset = 0xa000,
621 	.config = &cam_cc_pll10_config,
622 	.vco_table = lucid_ole_vco,
623 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
624 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
625 	.clkr = {
626 		.hw.init = &(const struct clk_init_data) {
627 			.name = "cam_cc_pll10",
628 			.parent_data = &(const struct clk_parent_data) {
629 				.index = DT_BI_TCXO,
630 			},
631 			.num_parents = 1,
632 			.ops = &clk_alpha_pll_lucid_evo_ops,
633 		},
634 	},
635 };
636 
637 static const struct clk_div_table post_div_table_cam_cc_pll10_out_even[] = {
638 	{ 0x1, 2 },
639 	{ }
640 };
641 
642 static struct clk_alpha_pll_postdiv cam_cc_pll10_out_even = {
643 	.offset = 0xa000,
644 	.post_div_shift = 10,
645 	.post_div_table = post_div_table_cam_cc_pll10_out_even,
646 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll10_out_even),
647 	.width = 4,
648 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
649 	.clkr.hw.init = &(const struct clk_init_data) {
650 		.name = "cam_cc_pll10_out_even",
651 		.parent_hws = (const struct clk_hw*[]) {
652 			&cam_cc_pll10.clkr.hw,
653 		},
654 		.num_parents = 1,
655 		.flags = CLK_SET_RATE_PARENT,
656 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
657 	},
658 };
659 
660 static const struct alpha_pll_config cam_cc_pll11_config = {
661 	.l = 0x30,
662 	.alpha = 0x8aaa,
663 	.config_ctl_val = 0x20485699,
664 	.config_ctl_hi_val = 0x00182261,
665 	.config_ctl_hi1_val = 0x82aa299c,
666 	.test_ctl_val = 0x00000000,
667 	.test_ctl_hi_val = 0x00000003,
668 	.test_ctl_hi1_val = 0x00009000,
669 	.test_ctl_hi2_val = 0x00000034,
670 	.user_ctl_val = 0x00000400,
671 	.user_ctl_hi_val = 0x00000005,
672 };
673 
674 static struct clk_alpha_pll cam_cc_pll11 = {
675 	.offset = 0xb000,
676 	.config = &cam_cc_pll11_config,
677 	.vco_table = lucid_ole_vco,
678 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
679 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
680 	.clkr = {
681 		.hw.init = &(const struct clk_init_data) {
682 			.name = "cam_cc_pll11",
683 			.parent_data = &(const struct clk_parent_data) {
684 				.index = DT_BI_TCXO,
685 			},
686 			.num_parents = 1,
687 			.ops = &clk_alpha_pll_lucid_evo_ops,
688 		},
689 	},
690 };
691 
692 static const struct clk_div_table post_div_table_cam_cc_pll11_out_even[] = {
693 	{ 0x1, 2 },
694 	{ }
695 };
696 
697 static struct clk_alpha_pll_postdiv cam_cc_pll11_out_even = {
698 	.offset = 0xb000,
699 	.post_div_shift = 10,
700 	.post_div_table = post_div_table_cam_cc_pll11_out_even,
701 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll11_out_even),
702 	.width = 4,
703 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
704 	.clkr.hw.init = &(const struct clk_init_data) {
705 		.name = "cam_cc_pll11_out_even",
706 		.parent_hws = (const struct clk_hw*[]) {
707 			&cam_cc_pll11.clkr.hw,
708 		},
709 		.num_parents = 1,
710 		.flags = CLK_SET_RATE_PARENT,
711 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
712 	},
713 };
714 
715 static const struct alpha_pll_config cam_cc_pll12_config = {
716 	.l = 0x30,
717 	.alpha = 0x8aaa,
718 	.config_ctl_val = 0x20485699,
719 	.config_ctl_hi_val = 0x00182261,
720 	.config_ctl_hi1_val = 0x82aa299c,
721 	.test_ctl_val = 0x00000000,
722 	.test_ctl_hi_val = 0x00000003,
723 	.test_ctl_hi1_val = 0x00009000,
724 	.test_ctl_hi2_val = 0x00000034,
725 	.user_ctl_val = 0x00000400,
726 	.user_ctl_hi_val = 0x00000005,
727 };
728 
729 static struct clk_alpha_pll cam_cc_pll12 = {
730 	.offset = 0xc000,
731 	.config = &cam_cc_pll12_config,
732 	.vco_table = lucid_ole_vco,
733 	.num_vco = ARRAY_SIZE(lucid_ole_vco),
734 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
735 	.clkr = {
736 		.hw.init = &(const struct clk_init_data) {
737 			.name = "cam_cc_pll12",
738 			.parent_data = &(const struct clk_parent_data) {
739 				.index = DT_BI_TCXO,
740 			},
741 			.num_parents = 1,
742 			.ops = &clk_alpha_pll_lucid_evo_ops,
743 		},
744 	},
745 };
746 
747 static const struct clk_div_table post_div_table_cam_cc_pll12_out_even[] = {
748 	{ 0x1, 2 },
749 	{ }
750 };
751 
752 static struct clk_alpha_pll_postdiv cam_cc_pll12_out_even = {
753 	.offset = 0xc000,
754 	.post_div_shift = 10,
755 	.post_div_table = post_div_table_cam_cc_pll12_out_even,
756 	.num_post_div = ARRAY_SIZE(post_div_table_cam_cc_pll12_out_even),
757 	.width = 4,
758 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
759 	.clkr.hw.init = &(const struct clk_init_data) {
760 		.name = "cam_cc_pll12_out_even",
761 		.parent_hws = (const struct clk_hw*[]) {
762 			&cam_cc_pll12.clkr.hw,
763 		},
764 		.num_parents = 1,
765 		.flags = CLK_SET_RATE_PARENT,
766 		.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
767 	},
768 };
769 
770 static const struct parent_map cam_cc_parent_map_0[] = {
771 	{ P_BI_TCXO, 0 },
772 	{ P_CAM_CC_PLL0_OUT_MAIN, 1 },
773 	{ P_CAM_CC_PLL0_OUT_EVEN, 2 },
774 	{ P_CAM_CC_PLL0_OUT_ODD, 3 },
775 	{ P_CAM_CC_PLL9_OUT_ODD, 4 },
776 	{ P_CAM_CC_PLL9_OUT_EVEN, 5 },
777 };
778 
779 static const struct clk_parent_data cam_cc_parent_data_0[] = {
780 	{ .index = DT_BI_TCXO },
781 	{ .hw = &cam_cc_pll0.clkr.hw },
782 	{ .hw = &cam_cc_pll0_out_even.clkr.hw },
783 	{ .hw = &cam_cc_pll0_out_odd.clkr.hw },
784 	{ .hw = &cam_cc_pll9.clkr.hw },
785 	{ .hw = &cam_cc_pll9_out_even.clkr.hw },
786 };
787 
788 static const struct parent_map cam_cc_parent_map_1[] = {
789 	{ P_BI_TCXO, 0 },
790 	{ P_CAM_CC_PLL2_OUT_EVEN, 3 },
791 	{ P_CAM_CC_PLL2_OUT_MAIN, 5 },
792 };
793 
794 static const struct clk_parent_data cam_cc_parent_data_1[] = {
795 	{ .index = DT_BI_TCXO },
796 	{ .hw = &cam_cc_pll2.clkr.hw },
797 	{ .hw = &cam_cc_pll2.clkr.hw },
798 };
799 
800 static const struct parent_map cam_cc_parent_map_2[] = {
801 	{ P_BI_TCXO, 0 },
802 	{ P_CAM_CC_PLL8_OUT_EVEN, 6 },
803 };
804 
805 static const struct clk_parent_data cam_cc_parent_data_2[] = {
806 	{ .index = DT_BI_TCXO },
807 	{ .hw = &cam_cc_pll8_out_even.clkr.hw },
808 };
809 
810 static const struct parent_map cam_cc_parent_map_3[] = {
811 	{ P_BI_TCXO, 0 },
812 	{ P_CAM_CC_PLL3_OUT_EVEN, 6 },
813 };
814 
815 static const struct clk_parent_data cam_cc_parent_data_3[] = {
816 	{ .index = DT_BI_TCXO },
817 	{ .hw = &cam_cc_pll3_out_even.clkr.hw },
818 };
819 
820 static const struct parent_map cam_cc_parent_map_4[] = {
821 	{ P_BI_TCXO, 0 },
822 	{ P_CAM_CC_PLL10_OUT_EVEN, 6 },
823 };
824 
825 static const struct clk_parent_data cam_cc_parent_data_4[] = {
826 	{ .index = DT_BI_TCXO },
827 	{ .hw = &cam_cc_pll10_out_even.clkr.hw },
828 };
829 
830 static const struct parent_map cam_cc_parent_map_5[] = {
831 	{ P_BI_TCXO, 0 },
832 	{ P_CAM_CC_PLL4_OUT_EVEN, 6 },
833 };
834 
835 static const struct clk_parent_data cam_cc_parent_data_5[] = {
836 	{ .index = DT_BI_TCXO },
837 	{ .hw = &cam_cc_pll4_out_even.clkr.hw },
838 };
839 
840 static const struct parent_map cam_cc_parent_map_6[] = {
841 	{ P_BI_TCXO, 0 },
842 	{ P_CAM_CC_PLL11_OUT_EVEN, 6 },
843 };
844 
845 static const struct clk_parent_data cam_cc_parent_data_6[] = {
846 	{ .index = DT_BI_TCXO },
847 	{ .hw = &cam_cc_pll11_out_even.clkr.hw },
848 };
849 
850 static const struct parent_map cam_cc_parent_map_7[] = {
851 	{ P_BI_TCXO, 0 },
852 	{ P_CAM_CC_PLL5_OUT_EVEN, 6 },
853 };
854 
855 static const struct clk_parent_data cam_cc_parent_data_7[] = {
856 	{ .index = DT_BI_TCXO },
857 	{ .hw = &cam_cc_pll5_out_even.clkr.hw },
858 };
859 
860 static const struct parent_map cam_cc_parent_map_8[] = {
861 	{ P_BI_TCXO, 0 },
862 	{ P_CAM_CC_PLL12_OUT_EVEN, 6 },
863 };
864 
865 static const struct clk_parent_data cam_cc_parent_data_8[] = {
866 	{ .index = DT_BI_TCXO },
867 	{ .hw = &cam_cc_pll12_out_even.clkr.hw },
868 };
869 
870 static const struct parent_map cam_cc_parent_map_9[] = {
871 	{ P_BI_TCXO, 0 },
872 	{ P_CAM_CC_PLL1_OUT_EVEN, 4 },
873 };
874 
875 static const struct clk_parent_data cam_cc_parent_data_9[] = {
876 	{ .index = DT_BI_TCXO },
877 	{ .hw = &cam_cc_pll1_out_even.clkr.hw },
878 };
879 
880 static const struct parent_map cam_cc_parent_map_10[] = {
881 	{ P_BI_TCXO, 0 },
882 	{ P_CAM_CC_PLL6_OUT_EVEN, 6 },
883 };
884 
885 static const struct clk_parent_data cam_cc_parent_data_10[] = {
886 	{ .index = DT_BI_TCXO },
887 	{ .hw = &cam_cc_pll6_out_even.clkr.hw },
888 };
889 
890 static const struct parent_map cam_cc_parent_map_11[] = {
891 	{ P_BI_TCXO, 0 },
892 	{ P_CAM_CC_PLL7_OUT_EVEN, 6 },
893 };
894 
895 static const struct clk_parent_data cam_cc_parent_data_11[] = {
896 	{ .index = DT_BI_TCXO },
897 	{ .hw = &cam_cc_pll7_out_even.clkr.hw },
898 };
899 
900 static const struct parent_map cam_cc_parent_map_12[] = {
901 	{ P_SLEEP_CLK, 0 },
902 };
903 
904 static const struct clk_parent_data cam_cc_parent_data_12[] = {
905 	{ .index = DT_SLEEP_CLK },
906 };
907 
908 static const struct parent_map cam_cc_parent_map_13_ao[] = {
909 	{ P_BI_TCXO_AO, 0 },
910 };
911 
912 static const struct clk_parent_data cam_cc_parent_data_13_ao[] = {
913 	{ .index = DT_BI_TCXO_AO },
914 };
915 
916 static const struct freq_tbl ftbl_cam_cc_bps_clk_src[] = {
917 	F(19200000, P_BI_TCXO, 1, 0, 0),
918 	F(200000000, P_CAM_CC_PLL8_OUT_EVEN, 1, 0, 0),
919 	F(400000000, P_CAM_CC_PLL8_OUT_EVEN, 1, 0, 0),
920 	F(480000000, P_CAM_CC_PLL8_OUT_EVEN, 1, 0, 0),
921 	F(785000000, P_CAM_CC_PLL8_OUT_EVEN, 1, 0, 0),
922 	{ }
923 };
924 
925 static struct clk_rcg2 cam_cc_bps_clk_src = {
926 	.cmd_rcgr = 0x10278,
927 	.mnd_width = 0,
928 	.hid_width = 5,
929 	.parent_map = cam_cc_parent_map_2,
930 	.freq_tbl = ftbl_cam_cc_bps_clk_src,
931 	.clkr.hw.init = &(const struct clk_init_data) {
932 		.name = "cam_cc_bps_clk_src",
933 		.parent_data = cam_cc_parent_data_2,
934 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_2),
935 		.flags = CLK_SET_RATE_PARENT,
936 		.ops = &clk_rcg2_shared_ops,
937 	},
938 };
939 
940 static const struct freq_tbl ftbl_cam_cc_camnoc_axi_clk_src[] = {
941 	F(19200000, P_BI_TCXO, 1, 0, 0),
942 	F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0),
943 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
944 	{ }
945 };
946 
947 static struct clk_rcg2 cam_cc_camnoc_axi_clk_src = {
948 	.cmd_rcgr = 0x13de0,
949 	.mnd_width = 0,
950 	.hid_width = 5,
951 	.parent_map = cam_cc_parent_map_0,
952 	.freq_tbl = ftbl_cam_cc_camnoc_axi_clk_src,
953 	.clkr.hw.init = &(const struct clk_init_data) {
954 		.name = "cam_cc_camnoc_axi_clk_src",
955 		.parent_data = cam_cc_parent_data_0,
956 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
957 		.flags = CLK_SET_RATE_PARENT,
958 		.ops = &clk_rcg2_shared_ops,
959 	},
960 };
961 
962 static const struct freq_tbl ftbl_cam_cc_cci_0_clk_src[] = {
963 	F(19200000, P_BI_TCXO, 1, 0, 0),
964 	F(37500000, P_CAM_CC_PLL0_OUT_EVEN, 16, 0, 0),
965 	{ }
966 };
967 
968 static struct clk_rcg2 cam_cc_cci_0_clk_src = {
969 	.cmd_rcgr = 0x13900,
970 	.mnd_width = 8,
971 	.hid_width = 5,
972 	.parent_map = cam_cc_parent_map_0,
973 	.freq_tbl = ftbl_cam_cc_cci_0_clk_src,
974 	.clkr.hw.init = &(const struct clk_init_data) {
975 		.name = "cam_cc_cci_0_clk_src",
976 		.parent_data = cam_cc_parent_data_0,
977 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
978 		.flags = CLK_SET_RATE_PARENT,
979 		.ops = &clk_rcg2_shared_ops,
980 	},
981 };
982 
983 static struct clk_rcg2 cam_cc_cci_1_clk_src = {
984 	.cmd_rcgr = 0x13a30,
985 	.mnd_width = 8,
986 	.hid_width = 5,
987 	.parent_map = cam_cc_parent_map_0,
988 	.freq_tbl = ftbl_cam_cc_cci_0_clk_src,
989 	.clkr.hw.init = &(const struct clk_init_data) {
990 		.name = "cam_cc_cci_1_clk_src",
991 		.parent_data = cam_cc_parent_data_0,
992 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
993 		.flags = CLK_SET_RATE_PARENT,
994 		.ops = &clk_rcg2_shared_ops,
995 	},
996 };
997 
998 static struct clk_rcg2 cam_cc_cci_2_clk_src = {
999 	.cmd_rcgr = 0x13b60,
1000 	.mnd_width = 8,
1001 	.hid_width = 5,
1002 	.parent_map = cam_cc_parent_map_0,
1003 	.freq_tbl = ftbl_cam_cc_cci_0_clk_src,
1004 	.clkr.hw.init = &(const struct clk_init_data) {
1005 		.name = "cam_cc_cci_2_clk_src",
1006 		.parent_data = cam_cc_parent_data_0,
1007 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1008 		.flags = CLK_SET_RATE_PARENT,
1009 		.ops = &clk_rcg2_shared_ops,
1010 	},
1011 };
1012 
1013 static const struct freq_tbl ftbl_cam_cc_cphy_rx_clk_src[] = {
1014 	F(19200000, P_BI_TCXO, 1, 0, 0),
1015 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
1016 	F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0),
1017 	{ }
1018 };
1019 
1020 static struct clk_rcg2 cam_cc_cphy_rx_clk_src = {
1021 	.cmd_rcgr = 0x11290,
1022 	.mnd_width = 0,
1023 	.hid_width = 5,
1024 	.parent_map = cam_cc_parent_map_0,
1025 	.freq_tbl = ftbl_cam_cc_cphy_rx_clk_src,
1026 	.clkr.hw.init = &(const struct clk_init_data) {
1027 		.name = "cam_cc_cphy_rx_clk_src",
1028 		.parent_data = cam_cc_parent_data_0,
1029 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1030 		.flags = CLK_SET_RATE_PARENT,
1031 		.ops = &clk_rcg2_shared_ops,
1032 	},
1033 };
1034 
1035 static const struct freq_tbl ftbl_cam_cc_cre_clk_src[] = {
1036 	F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0),
1037 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
1038 	F(480000000, P_CAM_CC_PLL9_OUT_EVEN, 1, 0, 0),
1039 	F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
1040 	{ }
1041 };
1042 
1043 static struct clk_rcg2 cam_cc_cre_clk_src = {
1044 	.cmd_rcgr = 0x1353c,
1045 	.mnd_width = 0,
1046 	.hid_width = 5,
1047 	.parent_map = cam_cc_parent_map_0,
1048 	.freq_tbl = ftbl_cam_cc_cre_clk_src,
1049 	.clkr.hw.init = &(const struct clk_init_data) {
1050 		.name = "cam_cc_cre_clk_src",
1051 		.parent_data = cam_cc_parent_data_0,
1052 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1053 		.flags = CLK_SET_RATE_PARENT,
1054 		.ops = &clk_rcg2_shared_ops,
1055 	},
1056 };
1057 
1058 static const struct freq_tbl ftbl_cam_cc_csi0phytimer_clk_src[] = {
1059 	F(19200000, P_BI_TCXO, 1, 0, 0),
1060 	F(400000000, P_CAM_CC_PLL0_OUT_EVEN, 1.5, 0, 0),
1061 	{ }
1062 };
1063 
1064 static struct clk_rcg2 cam_cc_csi0phytimer_clk_src = {
1065 	.cmd_rcgr = 0x15980,
1066 	.mnd_width = 0,
1067 	.hid_width = 5,
1068 	.parent_map = cam_cc_parent_map_0,
1069 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
1070 	.clkr.hw.init = &(const struct clk_init_data) {
1071 		.name = "cam_cc_csi0phytimer_clk_src",
1072 		.parent_data = cam_cc_parent_data_0,
1073 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1074 		.flags = CLK_SET_RATE_PARENT,
1075 		.ops = &clk_rcg2_shared_ops,
1076 	},
1077 };
1078 
1079 static struct clk_rcg2 cam_cc_csi1phytimer_clk_src = {
1080 	.cmd_rcgr = 0x15ab8,
1081 	.mnd_width = 0,
1082 	.hid_width = 5,
1083 	.parent_map = cam_cc_parent_map_0,
1084 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
1085 	.clkr.hw.init = &(const struct clk_init_data) {
1086 		.name = "cam_cc_csi1phytimer_clk_src",
1087 		.parent_data = cam_cc_parent_data_0,
1088 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1089 		.flags = CLK_SET_RATE_PARENT,
1090 		.ops = &clk_rcg2_shared_ops,
1091 	},
1092 };
1093 
1094 static struct clk_rcg2 cam_cc_csi2phytimer_clk_src = {
1095 	.cmd_rcgr = 0x15bec,
1096 	.mnd_width = 0,
1097 	.hid_width = 5,
1098 	.parent_map = cam_cc_parent_map_0,
1099 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
1100 	.clkr.hw.init = &(const struct clk_init_data) {
1101 		.name = "cam_cc_csi2phytimer_clk_src",
1102 		.parent_data = cam_cc_parent_data_0,
1103 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1104 		.flags = CLK_SET_RATE_PARENT,
1105 		.ops = &clk_rcg2_shared_ops,
1106 	},
1107 };
1108 
1109 static struct clk_rcg2 cam_cc_csi3phytimer_clk_src = {
1110 	.cmd_rcgr = 0x15d20,
1111 	.mnd_width = 0,
1112 	.hid_width = 5,
1113 	.parent_map = cam_cc_parent_map_0,
1114 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
1115 	.clkr.hw.init = &(const struct clk_init_data) {
1116 		.name = "cam_cc_csi3phytimer_clk_src",
1117 		.parent_data = cam_cc_parent_data_0,
1118 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1119 		.flags = CLK_SET_RATE_PARENT,
1120 		.ops = &clk_rcg2_shared_ops,
1121 	},
1122 };
1123 
1124 static const struct freq_tbl ftbl_cam_cc_csi4phytimer_clk_src[] = {
1125 	F(19200000, P_BI_TCXO, 1, 0, 0),
1126 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
1127 	{ }
1128 };
1129 
1130 static struct clk_rcg2 cam_cc_csi4phytimer_clk_src = {
1131 	.cmd_rcgr = 0x15e54,
1132 	.mnd_width = 0,
1133 	.hid_width = 5,
1134 	.parent_map = cam_cc_parent_map_0,
1135 	.freq_tbl = ftbl_cam_cc_csi4phytimer_clk_src,
1136 	.clkr.hw.init = &(const struct clk_init_data) {
1137 		.name = "cam_cc_csi4phytimer_clk_src",
1138 		.parent_data = cam_cc_parent_data_0,
1139 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1140 		.flags = CLK_SET_RATE_PARENT,
1141 		.ops = &clk_rcg2_shared_ops,
1142 	},
1143 };
1144 
1145 static struct clk_rcg2 cam_cc_csi5phytimer_clk_src = {
1146 	.cmd_rcgr = 0x15f88,
1147 	.mnd_width = 0,
1148 	.hid_width = 5,
1149 	.parent_map = cam_cc_parent_map_0,
1150 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
1151 	.clkr.hw.init = &(const struct clk_init_data) {
1152 		.name = "cam_cc_csi5phytimer_clk_src",
1153 		.parent_data = cam_cc_parent_data_0,
1154 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1155 		.flags = CLK_SET_RATE_PARENT,
1156 		.ops = &clk_rcg2_shared_ops,
1157 	},
1158 };
1159 
1160 static struct clk_rcg2 cam_cc_csi6phytimer_clk_src = {
1161 	.cmd_rcgr = 0x160bc,
1162 	.mnd_width = 0,
1163 	.hid_width = 5,
1164 	.parent_map = cam_cc_parent_map_0,
1165 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
1166 	.clkr.hw.init = &(const struct clk_init_data) {
1167 		.name = "cam_cc_csi6phytimer_clk_src",
1168 		.parent_data = cam_cc_parent_data_0,
1169 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1170 		.flags = CLK_SET_RATE_PARENT,
1171 		.ops = &clk_rcg2_shared_ops,
1172 	},
1173 };
1174 
1175 static struct clk_rcg2 cam_cc_csi7phytimer_clk_src = {
1176 	.cmd_rcgr = 0x161f0,
1177 	.mnd_width = 0,
1178 	.hid_width = 5,
1179 	.parent_map = cam_cc_parent_map_0,
1180 	.freq_tbl = ftbl_cam_cc_csi0phytimer_clk_src,
1181 	.clkr.hw.init = &(const struct clk_init_data) {
1182 		.name = "cam_cc_csi7phytimer_clk_src",
1183 		.parent_data = cam_cc_parent_data_0,
1184 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1185 		.flags = CLK_SET_RATE_PARENT,
1186 		.ops = &clk_rcg2_shared_ops,
1187 	},
1188 };
1189 
1190 static const struct freq_tbl ftbl_cam_cc_csid_clk_src[] = {
1191 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
1192 	F(480000000, P_CAM_CC_PLL0_OUT_MAIN, 2.5, 0, 0),
1193 	{ }
1194 };
1195 
1196 static struct clk_rcg2 cam_cc_csid_clk_src = {
1197 	.cmd_rcgr = 0x13ca8,
1198 	.mnd_width = 0,
1199 	.hid_width = 5,
1200 	.parent_map = cam_cc_parent_map_0,
1201 	.freq_tbl = ftbl_cam_cc_csid_clk_src,
1202 	.clkr.hw.init = &(const struct clk_init_data) {
1203 		.name = "cam_cc_csid_clk_src",
1204 		.parent_data = cam_cc_parent_data_0,
1205 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1206 		.flags = CLK_SET_RATE_PARENT,
1207 		.ops = &clk_rcg2_shared_ops,
1208 	},
1209 };
1210 
1211 static const struct freq_tbl ftbl_cam_cc_fast_ahb_clk_src[] = {
1212 	F(19200000, P_BI_TCXO, 1, 0, 0),
1213 	F(300000000, P_CAM_CC_PLL0_OUT_EVEN, 2, 0, 0),
1214 	F(400000000, P_CAM_CC_PLL0_OUT_MAIN, 3, 0, 0),
1215 	{ }
1216 };
1217 
1218 static struct clk_rcg2 cam_cc_fast_ahb_clk_src = {
1219 	.cmd_rcgr = 0x10018,
1220 	.mnd_width = 0,
1221 	.hid_width = 5,
1222 	.parent_map = cam_cc_parent_map_0,
1223 	.freq_tbl = ftbl_cam_cc_fast_ahb_clk_src,
1224 	.clkr.hw.init = &(const struct clk_init_data) {
1225 		.name = "cam_cc_fast_ahb_clk_src",
1226 		.parent_data = cam_cc_parent_data_0,
1227 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1228 		.flags = CLK_SET_RATE_PARENT,
1229 		.ops = &clk_rcg2_shared_ops,
1230 	},
1231 };
1232 
1233 static const struct freq_tbl ftbl_cam_cc_icp_clk_src[] = {
1234 	F(19200000, P_BI_TCXO, 1, 0, 0),
1235 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
1236 	F(480000000, P_CAM_CC_PLL9_OUT_EVEN, 1, 0, 0),
1237 	F(600000000, P_CAM_CC_PLL0_OUT_MAIN, 2, 0, 0),
1238 	{ }
1239 };
1240 
1241 static struct clk_rcg2 cam_cc_icp_clk_src = {
1242 	.cmd_rcgr = 0x137c4,
1243 	.mnd_width = 0,
1244 	.hid_width = 5,
1245 	.parent_map = cam_cc_parent_map_0,
1246 	.freq_tbl = ftbl_cam_cc_icp_clk_src,
1247 	.clkr.hw.init = &(const struct clk_init_data) {
1248 		.name = "cam_cc_icp_clk_src",
1249 		.parent_data = cam_cc_parent_data_0,
1250 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1251 		.flags = CLK_SET_RATE_PARENT,
1252 		.ops = &clk_rcg2_shared_ops,
1253 	},
1254 };
1255 
1256 static const struct freq_tbl ftbl_cam_cc_ife_0_clk_src[] = {
1257 	F(19200000, P_BI_TCXO, 1, 0, 0),
1258 	F(466000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
1259 	F(594000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
1260 	F(675000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
1261 	F(785000000, P_CAM_CC_PLL3_OUT_EVEN, 1, 0, 0),
1262 	{ }
1263 };
1264 
1265 static struct clk_rcg2 cam_cc_ife_0_clk_src = {
1266 	.cmd_rcgr = 0x11018,
1267 	.mnd_width = 0,
1268 	.hid_width = 5,
1269 	.parent_map = cam_cc_parent_map_3,
1270 	.freq_tbl = ftbl_cam_cc_ife_0_clk_src,
1271 	.clkr.hw.init = &(const struct clk_init_data) {
1272 		.name = "cam_cc_ife_0_clk_src",
1273 		.parent_data = cam_cc_parent_data_3,
1274 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_3),
1275 		.flags = CLK_SET_RATE_PARENT,
1276 		.ops = &clk_rcg2_shared_ops,
1277 	},
1278 };
1279 
1280 static const struct freq_tbl ftbl_cam_cc_ife_0_dsp_clk_src[] = {
1281 	F(466000000, P_CAM_CC_PLL10_OUT_EVEN, 1, 0, 0),
1282 	F(594000000, P_CAM_CC_PLL10_OUT_EVEN, 1, 0, 0),
1283 	F(675000000, P_CAM_CC_PLL10_OUT_EVEN, 1, 0, 0),
1284 	F(785000000, P_CAM_CC_PLL10_OUT_EVEN, 1, 0, 0),
1285 	{ }
1286 };
1287 
1288 static struct clk_rcg2 cam_cc_ife_0_dsp_clk_src = {
1289 	.cmd_rcgr = 0x11154,
1290 	.mnd_width = 0,
1291 	.hid_width = 5,
1292 	.parent_map = cam_cc_parent_map_4,
1293 	.freq_tbl = ftbl_cam_cc_ife_0_dsp_clk_src,
1294 	.clkr.hw.init = &(const struct clk_init_data) {
1295 		.name = "cam_cc_ife_0_dsp_clk_src",
1296 		.parent_data = cam_cc_parent_data_4,
1297 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_4),
1298 		.flags = CLK_SET_RATE_PARENT,
1299 		.ops = &clk_rcg2_shared_ops,
1300 	},
1301 };
1302 
1303 static const struct freq_tbl ftbl_cam_cc_ife_1_clk_src[] = {
1304 	F(19200000, P_BI_TCXO, 1, 0, 0),
1305 	F(466000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
1306 	F(594000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
1307 	F(675000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
1308 	F(785000000, P_CAM_CC_PLL4_OUT_EVEN, 1, 0, 0),
1309 	{ }
1310 };
1311 
1312 static struct clk_rcg2 cam_cc_ife_1_clk_src = {
1313 	.cmd_rcgr = 0x12018,
1314 	.mnd_width = 0,
1315 	.hid_width = 5,
1316 	.parent_map = cam_cc_parent_map_5,
1317 	.freq_tbl = ftbl_cam_cc_ife_1_clk_src,
1318 	.clkr.hw.init = &(const struct clk_init_data) {
1319 		.name = "cam_cc_ife_1_clk_src",
1320 		.parent_data = cam_cc_parent_data_5,
1321 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_5),
1322 		.flags = CLK_SET_RATE_PARENT,
1323 		.ops = &clk_rcg2_shared_ops,
1324 	},
1325 };
1326 
1327 static const struct freq_tbl ftbl_cam_cc_ife_1_dsp_clk_src[] = {
1328 	F(466000000, P_CAM_CC_PLL11_OUT_EVEN, 1, 0, 0),
1329 	F(594000000, P_CAM_CC_PLL11_OUT_EVEN, 1, 0, 0),
1330 	F(675000000, P_CAM_CC_PLL11_OUT_EVEN, 1, 0, 0),
1331 	F(785000000, P_CAM_CC_PLL11_OUT_EVEN, 1, 0, 0),
1332 	{ }
1333 };
1334 
1335 static struct clk_rcg2 cam_cc_ife_1_dsp_clk_src = {
1336 	.cmd_rcgr = 0x12154,
1337 	.mnd_width = 0,
1338 	.hid_width = 5,
1339 	.parent_map = cam_cc_parent_map_6,
1340 	.freq_tbl = ftbl_cam_cc_ife_1_dsp_clk_src,
1341 	.clkr.hw.init = &(const struct clk_init_data) {
1342 		.name = "cam_cc_ife_1_dsp_clk_src",
1343 		.parent_data = cam_cc_parent_data_6,
1344 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_6),
1345 		.flags = CLK_SET_RATE_PARENT,
1346 		.ops = &clk_rcg2_shared_ops,
1347 	},
1348 };
1349 
1350 static const struct freq_tbl ftbl_cam_cc_ife_2_clk_src[] = {
1351 	F(466000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
1352 	F(594000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
1353 	F(675000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
1354 	F(785000000, P_CAM_CC_PLL5_OUT_EVEN, 1, 0, 0),
1355 	{ }
1356 };
1357 
1358 static struct clk_rcg2 cam_cc_ife_2_clk_src = {
1359 	.cmd_rcgr = 0x122a8,
1360 	.mnd_width = 0,
1361 	.hid_width = 5,
1362 	.parent_map = cam_cc_parent_map_7,
1363 	.freq_tbl = ftbl_cam_cc_ife_2_clk_src,
1364 	.clkr.hw.init = &(const struct clk_init_data) {
1365 		.name = "cam_cc_ife_2_clk_src",
1366 		.parent_data = cam_cc_parent_data_7,
1367 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_7),
1368 		.flags = CLK_SET_RATE_PARENT,
1369 		.ops = &clk_rcg2_shared_ops,
1370 	},
1371 };
1372 
1373 static const struct freq_tbl ftbl_cam_cc_ife_2_dsp_clk_src[] = {
1374 	F(466000000, P_CAM_CC_PLL12_OUT_EVEN, 1, 0, 0),
1375 	F(594000000, P_CAM_CC_PLL12_OUT_EVEN, 1, 0, 0),
1376 	F(675000000, P_CAM_CC_PLL12_OUT_EVEN, 1, 0, 0),
1377 	F(785000000, P_CAM_CC_PLL12_OUT_EVEN, 1, 0, 0),
1378 	{ }
1379 };
1380 
1381 static struct clk_rcg2 cam_cc_ife_2_dsp_clk_src = {
1382 	.cmd_rcgr = 0x123e4,
1383 	.mnd_width = 0,
1384 	.hid_width = 5,
1385 	.parent_map = cam_cc_parent_map_8,
1386 	.freq_tbl = ftbl_cam_cc_ife_2_dsp_clk_src,
1387 	.clkr.hw.init = &(const struct clk_init_data) {
1388 		.name = "cam_cc_ife_2_dsp_clk_src",
1389 		.parent_data = cam_cc_parent_data_8,
1390 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_8),
1391 		.flags = CLK_SET_RATE_PARENT,
1392 		.ops = &clk_rcg2_shared_ops,
1393 	},
1394 };
1395 
1396 static struct clk_rcg2 cam_cc_ife_lite_clk_src = {
1397 	.cmd_rcgr = 0x13000,
1398 	.mnd_width = 0,
1399 	.hid_width = 5,
1400 	.parent_map = cam_cc_parent_map_0,
1401 	.freq_tbl = ftbl_cam_cc_csid_clk_src,
1402 	.clkr.hw.init = &(const struct clk_init_data) {
1403 		.name = "cam_cc_ife_lite_clk_src",
1404 		.parent_data = cam_cc_parent_data_0,
1405 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1406 		.flags = CLK_SET_RATE_PARENT,
1407 		.ops = &clk_rcg2_shared_ops,
1408 	},
1409 };
1410 
1411 static struct clk_rcg2 cam_cc_ife_lite_csid_clk_src = {
1412 	.cmd_rcgr = 0x1313c,
1413 	.mnd_width = 0,
1414 	.hid_width = 5,
1415 	.parent_map = cam_cc_parent_map_0,
1416 	.freq_tbl = ftbl_cam_cc_csid_clk_src,
1417 	.clkr.hw.init = &(const struct clk_init_data) {
1418 		.name = "cam_cc_ife_lite_csid_clk_src",
1419 		.parent_data = cam_cc_parent_data_0,
1420 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1421 		.flags = CLK_SET_RATE_PARENT,
1422 		.ops = &clk_rcg2_shared_ops,
1423 	},
1424 };
1425 
1426 static const struct freq_tbl ftbl_cam_cc_ipe_nps_clk_src[] = {
1427 	F(455000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
1428 	F(575000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
1429 	F(675000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
1430 	F(825000000, P_CAM_CC_PLL1_OUT_EVEN, 1, 0, 0),
1431 	{ }
1432 };
1433 
1434 static struct clk_rcg2 cam_cc_ipe_nps_clk_src = {
1435 	.cmd_rcgr = 0x103cc,
1436 	.mnd_width = 0,
1437 	.hid_width = 5,
1438 	.parent_map = cam_cc_parent_map_9,
1439 	.freq_tbl = ftbl_cam_cc_ipe_nps_clk_src,
1440 	.clkr.hw.init = &(const struct clk_init_data) {
1441 		.name = "cam_cc_ipe_nps_clk_src",
1442 		.parent_data = cam_cc_parent_data_9,
1443 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_9),
1444 		.flags = CLK_SET_RATE_PARENT,
1445 		.ops = &clk_rcg2_shared_ops,
1446 	},
1447 };
1448 
1449 static const struct freq_tbl ftbl_cam_cc_jpeg_clk_src[] = {
1450 	F(19200000, P_BI_TCXO, 1, 0, 0),
1451 	F(200000000, P_CAM_CC_PLL0_OUT_ODD, 2, 0, 0),
1452 	F(400000000, P_CAM_CC_PLL0_OUT_ODD, 1, 0, 0),
1453 	F(480000000, P_CAM_CC_PLL9_OUT_EVEN, 1, 0, 0),
1454 	F(600000000, P_CAM_CC_PLL0_OUT_EVEN, 1, 0, 0),
1455 	{ }
1456 };
1457 
1458 static struct clk_rcg2 cam_cc_jpeg_clk_src = {
1459 	.cmd_rcgr = 0x13674,
1460 	.mnd_width = 0,
1461 	.hid_width = 5,
1462 	.parent_map = cam_cc_parent_map_0,
1463 	.freq_tbl = ftbl_cam_cc_jpeg_clk_src,
1464 	.clkr.hw.init = &(const struct clk_init_data) {
1465 		.name = "cam_cc_jpeg_clk_src",
1466 		.parent_data = cam_cc_parent_data_0,
1467 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1468 		.flags = CLK_SET_RATE_PARENT,
1469 		.ops = &clk_rcg2_shared_ops,
1470 	},
1471 };
1472 
1473 static const struct freq_tbl ftbl_cam_cc_mclk0_clk_src[] = {
1474 	F(19200000, P_BI_TCXO, 1, 0, 0),
1475 	F(24000000, P_CAM_CC_PLL2_OUT_MAIN, 10, 1, 4),
1476 	F(68571429, P_CAM_CC_PLL2_OUT_MAIN, 14, 0, 0),
1477 	{ }
1478 };
1479 
1480 static struct clk_rcg2 cam_cc_mclk0_clk_src = {
1481 	.cmd_rcgr = 0x15000,
1482 	.mnd_width = 8,
1483 	.hid_width = 5,
1484 	.parent_map = cam_cc_parent_map_1,
1485 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1486 	.clkr.hw.init = &(const struct clk_init_data) {
1487 		.name = "cam_cc_mclk0_clk_src",
1488 		.parent_data = cam_cc_parent_data_1,
1489 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1490 		.flags = CLK_SET_RATE_PARENT,
1491 		.ops = &clk_rcg2_shared_ops,
1492 	},
1493 };
1494 
1495 static struct clk_rcg2 cam_cc_mclk1_clk_src = {
1496 	.cmd_rcgr = 0x15130,
1497 	.mnd_width = 8,
1498 	.hid_width = 5,
1499 	.parent_map = cam_cc_parent_map_1,
1500 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1501 	.clkr.hw.init = &(const struct clk_init_data) {
1502 		.name = "cam_cc_mclk1_clk_src",
1503 		.parent_data = cam_cc_parent_data_1,
1504 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1505 		.flags = CLK_SET_RATE_PARENT,
1506 		.ops = &clk_rcg2_shared_ops,
1507 	},
1508 };
1509 
1510 static struct clk_rcg2 cam_cc_mclk2_clk_src = {
1511 	.cmd_rcgr = 0x15260,
1512 	.mnd_width = 8,
1513 	.hid_width = 5,
1514 	.parent_map = cam_cc_parent_map_1,
1515 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1516 	.clkr.hw.init = &(const struct clk_init_data) {
1517 		.name = "cam_cc_mclk2_clk_src",
1518 		.parent_data = cam_cc_parent_data_1,
1519 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1520 		.flags = CLK_SET_RATE_PARENT,
1521 		.ops = &clk_rcg2_shared_ops,
1522 	},
1523 };
1524 
1525 static struct clk_rcg2 cam_cc_mclk3_clk_src = {
1526 	.cmd_rcgr = 0x15390,
1527 	.mnd_width = 8,
1528 	.hid_width = 5,
1529 	.parent_map = cam_cc_parent_map_1,
1530 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1531 	.clkr.hw.init = &(const struct clk_init_data) {
1532 		.name = "cam_cc_mclk3_clk_src",
1533 		.parent_data = cam_cc_parent_data_1,
1534 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1535 		.flags = CLK_SET_RATE_PARENT,
1536 		.ops = &clk_rcg2_shared_ops,
1537 	},
1538 };
1539 
1540 static struct clk_rcg2 cam_cc_mclk4_clk_src = {
1541 	.cmd_rcgr = 0x154c0,
1542 	.mnd_width = 8,
1543 	.hid_width = 5,
1544 	.parent_map = cam_cc_parent_map_1,
1545 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1546 	.clkr.hw.init = &(const struct clk_init_data) {
1547 		.name = "cam_cc_mclk4_clk_src",
1548 		.parent_data = cam_cc_parent_data_1,
1549 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1550 		.flags = CLK_SET_RATE_PARENT,
1551 		.ops = &clk_rcg2_shared_ops,
1552 	},
1553 };
1554 
1555 static struct clk_rcg2 cam_cc_mclk5_clk_src = {
1556 	.cmd_rcgr = 0x155f0,
1557 	.mnd_width = 8,
1558 	.hid_width = 5,
1559 	.parent_map = cam_cc_parent_map_1,
1560 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1561 	.clkr.hw.init = &(const struct clk_init_data) {
1562 		.name = "cam_cc_mclk5_clk_src",
1563 		.parent_data = cam_cc_parent_data_1,
1564 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1565 		.flags = CLK_SET_RATE_PARENT,
1566 		.ops = &clk_rcg2_shared_ops,
1567 	},
1568 };
1569 
1570 static struct clk_rcg2 cam_cc_mclk6_clk_src = {
1571 	.cmd_rcgr = 0x15720,
1572 	.mnd_width = 8,
1573 	.hid_width = 5,
1574 	.parent_map = cam_cc_parent_map_1,
1575 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1576 	.clkr.hw.init = &(const struct clk_init_data) {
1577 		.name = "cam_cc_mclk6_clk_src",
1578 		.parent_data = cam_cc_parent_data_1,
1579 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1580 		.flags = CLK_SET_RATE_PARENT,
1581 		.ops = &clk_rcg2_shared_ops,
1582 	},
1583 };
1584 
1585 static struct clk_rcg2 cam_cc_mclk7_clk_src = {
1586 	.cmd_rcgr = 0x15850,
1587 	.mnd_width = 8,
1588 	.hid_width = 5,
1589 	.parent_map = cam_cc_parent_map_1,
1590 	.freq_tbl = ftbl_cam_cc_mclk0_clk_src,
1591 	.clkr.hw.init = &(const struct clk_init_data) {
1592 		.name = "cam_cc_mclk7_clk_src",
1593 		.parent_data = cam_cc_parent_data_1,
1594 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_1),
1595 		.flags = CLK_SET_RATE_PARENT,
1596 		.ops = &clk_rcg2_shared_ops,
1597 	},
1598 };
1599 
1600 static const struct freq_tbl ftbl_cam_cc_qdss_debug_clk_src[] = {
1601 	F(19200000, P_BI_TCXO, 1, 0, 0),
1602 	F(75000000, P_CAM_CC_PLL0_OUT_EVEN, 8, 0, 0),
1603 	F(150000000, P_CAM_CC_PLL0_OUT_EVEN, 4, 0, 0),
1604 	F(300000000, P_CAM_CC_PLL0_OUT_MAIN, 4, 0, 0),
1605 	{ }
1606 };
1607 
1608 static struct clk_rcg2 cam_cc_qdss_debug_clk_src = {
1609 	.cmd_rcgr = 0x13f24,
1610 	.mnd_width = 0,
1611 	.hid_width = 5,
1612 	.parent_map = cam_cc_parent_map_0,
1613 	.freq_tbl = ftbl_cam_cc_qdss_debug_clk_src,
1614 	.clkr.hw.init = &(const struct clk_init_data) {
1615 		.name = "cam_cc_qdss_debug_clk_src",
1616 		.parent_data = cam_cc_parent_data_0,
1617 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1618 		.flags = CLK_SET_RATE_PARENT,
1619 		.ops = &clk_rcg2_shared_ops,
1620 	},
1621 };
1622 
1623 static const struct freq_tbl ftbl_cam_cc_sfe_0_clk_src[] = {
1624 	F(466000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
1625 	F(594000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
1626 	F(675000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
1627 	F(785000000, P_CAM_CC_PLL6_OUT_EVEN, 1, 0, 0),
1628 	{ }
1629 };
1630 
1631 static struct clk_rcg2 cam_cc_sfe_0_clk_src = {
1632 	.cmd_rcgr = 0x13294,
1633 	.mnd_width = 0,
1634 	.hid_width = 5,
1635 	.parent_map = cam_cc_parent_map_10,
1636 	.freq_tbl = ftbl_cam_cc_sfe_0_clk_src,
1637 	.clkr.hw.init = &(const struct clk_init_data) {
1638 		.name = "cam_cc_sfe_0_clk_src",
1639 		.parent_data = cam_cc_parent_data_10,
1640 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_10),
1641 		.flags = CLK_SET_RATE_PARENT,
1642 		.ops = &clk_rcg2_shared_ops,
1643 	},
1644 };
1645 
1646 static const struct freq_tbl ftbl_cam_cc_sfe_1_clk_src[] = {
1647 	F(466000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0),
1648 	F(594000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0),
1649 	F(675000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0),
1650 	F(785000000, P_CAM_CC_PLL7_OUT_EVEN, 1, 0, 0),
1651 	{ }
1652 };
1653 
1654 static struct clk_rcg2 cam_cc_sfe_1_clk_src = {
1655 	.cmd_rcgr = 0x133f4,
1656 	.mnd_width = 0,
1657 	.hid_width = 5,
1658 	.parent_map = cam_cc_parent_map_11,
1659 	.freq_tbl = ftbl_cam_cc_sfe_1_clk_src,
1660 	.clkr.hw.init = &(const struct clk_init_data) {
1661 		.name = "cam_cc_sfe_1_clk_src",
1662 		.parent_data = cam_cc_parent_data_11,
1663 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_11),
1664 		.flags = CLK_SET_RATE_PARENT,
1665 		.ops = &clk_rcg2_shared_ops,
1666 	},
1667 };
1668 
1669 static const struct freq_tbl ftbl_cam_cc_sleep_clk_src[] = {
1670 	F(32000, P_SLEEP_CLK, 1, 0, 0),
1671 	{ }
1672 };
1673 
1674 static struct clk_rcg2 cam_cc_sleep_clk_src = {
1675 	.cmd_rcgr = 0x141a0,
1676 	.mnd_width = 0,
1677 	.hid_width = 5,
1678 	.parent_map = cam_cc_parent_map_12,
1679 	.freq_tbl = ftbl_cam_cc_sleep_clk_src,
1680 	.clkr.hw.init = &(const struct clk_init_data) {
1681 		.name = "cam_cc_sleep_clk_src",
1682 		.parent_data = cam_cc_parent_data_12,
1683 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_12),
1684 		.flags = CLK_SET_RATE_PARENT,
1685 		.ops = &clk_rcg2_shared_ops,
1686 	},
1687 };
1688 
1689 static const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src[] = {
1690 	F(19200000, P_BI_TCXO, 1, 0, 0),
1691 	F(80000000, P_CAM_CC_PLL0_OUT_EVEN, 7.5, 0, 0),
1692 	{ }
1693 };
1694 
1695 static struct clk_rcg2 cam_cc_slow_ahb_clk_src = {
1696 	.cmd_rcgr = 0x10148,
1697 	.mnd_width = 8,
1698 	.hid_width = 5,
1699 	.parent_map = cam_cc_parent_map_0,
1700 	.freq_tbl = ftbl_cam_cc_slow_ahb_clk_src,
1701 	.clkr.hw.init = &(const struct clk_init_data) {
1702 		.name = "cam_cc_slow_ahb_clk_src",
1703 		.parent_data = cam_cc_parent_data_0,
1704 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_0),
1705 		.flags = CLK_SET_RATE_PARENT,
1706 		.ops = &clk_rcg2_shared_ops,
1707 	},
1708 };
1709 
1710 static const struct freq_tbl ftbl_cam_cc_xo_clk_src[] = {
1711 	F(19200000, P_BI_TCXO_AO, 1, 0, 0),
1712 	{ }
1713 };
1714 
1715 static struct clk_rcg2 cam_cc_xo_clk_src = {
1716 	.cmd_rcgr = 0x14070,
1717 	.mnd_width = 0,
1718 	.hid_width = 5,
1719 	.parent_map = cam_cc_parent_map_13_ao,
1720 	.freq_tbl = ftbl_cam_cc_xo_clk_src,
1721 	.clkr.hw.init = &(const struct clk_init_data) {
1722 		.name = "cam_cc_xo_clk_src",
1723 		.parent_data = cam_cc_parent_data_13_ao,
1724 		.num_parents = ARRAY_SIZE(cam_cc_parent_data_13_ao),
1725 		.flags = CLK_SET_RATE_PARENT,
1726 		.ops = &clk_rcg2_shared_ops,
1727 	},
1728 };
1729 
1730 static struct clk_branch cam_cc_bps_ahb_clk = {
1731 	.halt_reg = 0x10274,
1732 	.halt_check = BRANCH_HALT,
1733 	.clkr = {
1734 		.enable_reg = 0x10274,
1735 		.enable_mask = BIT(0),
1736 		.hw.init = &(const struct clk_init_data) {
1737 			.name = "cam_cc_bps_ahb_clk",
1738 			.parent_hws = (const struct clk_hw*[]) {
1739 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1740 			},
1741 			.num_parents = 1,
1742 			.flags = CLK_SET_RATE_PARENT,
1743 			.ops = &clk_branch2_ops,
1744 		},
1745 	},
1746 };
1747 
1748 static struct clk_branch cam_cc_bps_clk = {
1749 	.halt_reg = 0x103a4,
1750 	.halt_check = BRANCH_HALT,
1751 	.clkr = {
1752 		.enable_reg = 0x103a4,
1753 		.enable_mask = BIT(0),
1754 		.hw.init = &(const struct clk_init_data) {
1755 			.name = "cam_cc_bps_clk",
1756 			.parent_hws = (const struct clk_hw*[]) {
1757 				&cam_cc_bps_clk_src.clkr.hw,
1758 			},
1759 			.num_parents = 1,
1760 			.flags = CLK_SET_RATE_PARENT,
1761 			.ops = &clk_branch2_ops,
1762 		},
1763 	},
1764 };
1765 
1766 static struct clk_branch cam_cc_bps_fast_ahb_clk = {
1767 	.halt_reg = 0x10144,
1768 	.halt_check = BRANCH_HALT,
1769 	.clkr = {
1770 		.enable_reg = 0x10144,
1771 		.enable_mask = BIT(0),
1772 		.hw.init = &(const struct clk_init_data) {
1773 			.name = "cam_cc_bps_fast_ahb_clk",
1774 			.parent_hws = (const struct clk_hw*[]) {
1775 				&cam_cc_fast_ahb_clk_src.clkr.hw,
1776 			},
1777 			.num_parents = 1,
1778 			.flags = CLK_SET_RATE_PARENT,
1779 			.ops = &clk_branch2_ops,
1780 		},
1781 	},
1782 };
1783 
1784 static struct clk_branch cam_cc_camnoc_axi_clk = {
1785 	.halt_reg = 0x13f0c,
1786 	.halt_check = BRANCH_HALT,
1787 	.clkr = {
1788 		.enable_reg = 0x13f0c,
1789 		.enable_mask = BIT(0),
1790 		.hw.init = &(const struct clk_init_data) {
1791 			.name = "cam_cc_camnoc_axi_clk",
1792 			.parent_hws = (const struct clk_hw*[]) {
1793 				&cam_cc_camnoc_axi_clk_src.clkr.hw,
1794 			},
1795 			.num_parents = 1,
1796 			.flags = CLK_SET_RATE_PARENT,
1797 			.ops = &clk_branch2_ops,
1798 		},
1799 	},
1800 };
1801 
1802 static struct clk_branch cam_cc_camnoc_dcd_xo_clk = {
1803 	.halt_reg = 0x13f18,
1804 	.halt_check = BRANCH_HALT,
1805 	.clkr = {
1806 		.enable_reg = 0x13f18,
1807 		.enable_mask = BIT(0),
1808 		.hw.init = &(const struct clk_init_data) {
1809 			.name = "cam_cc_camnoc_dcd_xo_clk",
1810 			.parent_hws = (const struct clk_hw*[]) {
1811 				&cam_cc_xo_clk_src.clkr.hw,
1812 			},
1813 			.num_parents = 1,
1814 			.flags = CLK_SET_RATE_PARENT,
1815 			.ops = &clk_branch2_ops,
1816 		},
1817 	},
1818 };
1819 
1820 static struct clk_branch cam_cc_camnoc_xo_clk = {
1821 	.halt_reg = 0x13f1c,
1822 	.halt_check = BRANCH_HALT,
1823 	.clkr = {
1824 		.enable_reg = 0x13f1c,
1825 		.enable_mask = BIT(0),
1826 		.hw.init = &(const struct clk_init_data) {
1827 			.name = "cam_cc_camnoc_xo_clk",
1828 			.parent_hws = (const struct clk_hw*[]) {
1829 				&cam_cc_xo_clk_src.clkr.hw,
1830 			},
1831 			.num_parents = 1,
1832 			.flags = CLK_SET_RATE_PARENT,
1833 			.ops = &clk_branch2_ops,
1834 		},
1835 	},
1836 };
1837 
1838 static struct clk_branch cam_cc_cci_0_clk = {
1839 	.halt_reg = 0x13a2c,
1840 	.halt_check = BRANCH_HALT,
1841 	.clkr = {
1842 		.enable_reg = 0x13a2c,
1843 		.enable_mask = BIT(0),
1844 		.hw.init = &(const struct clk_init_data) {
1845 			.name = "cam_cc_cci_0_clk",
1846 			.parent_hws = (const struct clk_hw*[]) {
1847 				&cam_cc_cci_0_clk_src.clkr.hw,
1848 			},
1849 			.num_parents = 1,
1850 			.flags = CLK_SET_RATE_PARENT,
1851 			.ops = &clk_branch2_ops,
1852 		},
1853 	},
1854 };
1855 
1856 static struct clk_branch cam_cc_cci_1_clk = {
1857 	.halt_reg = 0x13b5c,
1858 	.halt_check = BRANCH_HALT,
1859 	.clkr = {
1860 		.enable_reg = 0x13b5c,
1861 		.enable_mask = BIT(0),
1862 		.hw.init = &(const struct clk_init_data) {
1863 			.name = "cam_cc_cci_1_clk",
1864 			.parent_hws = (const struct clk_hw*[]) {
1865 				&cam_cc_cci_1_clk_src.clkr.hw,
1866 			},
1867 			.num_parents = 1,
1868 			.flags = CLK_SET_RATE_PARENT,
1869 			.ops = &clk_branch2_ops,
1870 		},
1871 	},
1872 };
1873 
1874 static struct clk_branch cam_cc_cci_2_clk = {
1875 	.halt_reg = 0x13c8c,
1876 	.halt_check = BRANCH_HALT,
1877 	.clkr = {
1878 		.enable_reg = 0x13c8c,
1879 		.enable_mask = BIT(0),
1880 		.hw.init = &(const struct clk_init_data) {
1881 			.name = "cam_cc_cci_2_clk",
1882 			.parent_hws = (const struct clk_hw*[]) {
1883 				&cam_cc_cci_2_clk_src.clkr.hw,
1884 			},
1885 			.num_parents = 1,
1886 			.flags = CLK_SET_RATE_PARENT,
1887 			.ops = &clk_branch2_ops,
1888 		},
1889 	},
1890 };
1891 
1892 static struct clk_branch cam_cc_core_ahb_clk = {
1893 	.halt_reg = 0x1406c,
1894 	.halt_check = BRANCH_HALT_DELAY,
1895 	.clkr = {
1896 		.enable_reg = 0x1406c,
1897 		.enable_mask = BIT(0),
1898 		.hw.init = &(const struct clk_init_data) {
1899 			.name = "cam_cc_core_ahb_clk",
1900 			.parent_hws = (const struct clk_hw*[]) {
1901 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1902 			},
1903 			.num_parents = 1,
1904 			.flags = CLK_SET_RATE_PARENT,
1905 			.ops = &clk_branch2_ops,
1906 		},
1907 	},
1908 };
1909 
1910 static struct clk_branch cam_cc_cpas_ahb_clk = {
1911 	.halt_reg = 0x13c90,
1912 	.halt_check = BRANCH_HALT,
1913 	.clkr = {
1914 		.enable_reg = 0x13c90,
1915 		.enable_mask = BIT(0),
1916 		.hw.init = &(const struct clk_init_data) {
1917 			.name = "cam_cc_cpas_ahb_clk",
1918 			.parent_hws = (const struct clk_hw*[]) {
1919 				&cam_cc_slow_ahb_clk_src.clkr.hw,
1920 			},
1921 			.num_parents = 1,
1922 			.flags = CLK_SET_RATE_PARENT,
1923 			.ops = &clk_branch2_ops,
1924 		},
1925 	},
1926 };
1927 
1928 static struct clk_branch cam_cc_cpas_bps_clk = {
1929 	.halt_reg = 0x103b0,
1930 	.halt_check = BRANCH_HALT,
1931 	.clkr = {
1932 		.enable_reg = 0x103b0,
1933 		.enable_mask = BIT(0),
1934 		.hw.init = &(const struct clk_init_data) {
1935 			.name = "cam_cc_cpas_bps_clk",
1936 			.parent_hws = (const struct clk_hw*[]) {
1937 				&cam_cc_bps_clk_src.clkr.hw,
1938 			},
1939 			.num_parents = 1,
1940 			.flags = CLK_SET_RATE_PARENT,
1941 			.ops = &clk_branch2_ops,
1942 		},
1943 	},
1944 };
1945 
1946 static struct clk_branch cam_cc_cpas_cre_clk = {
1947 	.halt_reg = 0x1366c,
1948 	.halt_check = BRANCH_HALT,
1949 	.clkr = {
1950 		.enable_reg = 0x1366c,
1951 		.enable_mask = BIT(0),
1952 		.hw.init = &(const struct clk_init_data) {
1953 			.name = "cam_cc_cpas_cre_clk",
1954 			.parent_hws = (const struct clk_hw*[]) {
1955 				&cam_cc_cre_clk_src.clkr.hw,
1956 			},
1957 			.num_parents = 1,
1958 			.flags = CLK_SET_RATE_PARENT,
1959 			.ops = &clk_branch2_ops,
1960 		},
1961 	},
1962 };
1963 
1964 static struct clk_branch cam_cc_cpas_fast_ahb_clk = {
1965 	.halt_reg = 0x13c9c,
1966 	.halt_check = BRANCH_HALT,
1967 	.clkr = {
1968 		.enable_reg = 0x13c9c,
1969 		.enable_mask = BIT(0),
1970 		.hw.init = &(const struct clk_init_data) {
1971 			.name = "cam_cc_cpas_fast_ahb_clk",
1972 			.parent_hws = (const struct clk_hw*[]) {
1973 				&cam_cc_fast_ahb_clk_src.clkr.hw,
1974 			},
1975 			.num_parents = 1,
1976 			.flags = CLK_SET_RATE_PARENT,
1977 			.ops = &clk_branch2_ops,
1978 		},
1979 	},
1980 };
1981 
1982 static struct clk_branch cam_cc_cpas_ife_0_clk = {
1983 	.halt_reg = 0x11150,
1984 	.halt_check = BRANCH_HALT,
1985 	.clkr = {
1986 		.enable_reg = 0x11150,
1987 		.enable_mask = BIT(0),
1988 		.hw.init = &(const struct clk_init_data) {
1989 			.name = "cam_cc_cpas_ife_0_clk",
1990 			.parent_hws = (const struct clk_hw*[]) {
1991 				&cam_cc_ife_0_clk_src.clkr.hw,
1992 			},
1993 			.num_parents = 1,
1994 			.flags = CLK_SET_RATE_PARENT,
1995 			.ops = &clk_branch2_ops,
1996 		},
1997 	},
1998 };
1999 
2000 static struct clk_branch cam_cc_cpas_ife_1_clk = {
2001 	.halt_reg = 0x12150,
2002 	.halt_check = BRANCH_HALT,
2003 	.clkr = {
2004 		.enable_reg = 0x12150,
2005 		.enable_mask = BIT(0),
2006 		.hw.init = &(const struct clk_init_data) {
2007 			.name = "cam_cc_cpas_ife_1_clk",
2008 			.parent_hws = (const struct clk_hw*[]) {
2009 				&cam_cc_ife_1_clk_src.clkr.hw,
2010 			},
2011 			.num_parents = 1,
2012 			.flags = CLK_SET_RATE_PARENT,
2013 			.ops = &clk_branch2_ops,
2014 		},
2015 	},
2016 };
2017 
2018 static struct clk_branch cam_cc_cpas_ife_2_clk = {
2019 	.halt_reg = 0x123e0,
2020 	.halt_check = BRANCH_HALT,
2021 	.clkr = {
2022 		.enable_reg = 0x123e0,
2023 		.enable_mask = BIT(0),
2024 		.hw.init = &(const struct clk_init_data) {
2025 			.name = "cam_cc_cpas_ife_2_clk",
2026 			.parent_hws = (const struct clk_hw*[]) {
2027 				&cam_cc_ife_2_clk_src.clkr.hw,
2028 			},
2029 			.num_parents = 1,
2030 			.flags = CLK_SET_RATE_PARENT,
2031 			.ops = &clk_branch2_ops,
2032 		},
2033 	},
2034 };
2035 
2036 static struct clk_branch cam_cc_cpas_ife_lite_clk = {
2037 	.halt_reg = 0x13138,
2038 	.halt_check = BRANCH_HALT,
2039 	.clkr = {
2040 		.enable_reg = 0x13138,
2041 		.enable_mask = BIT(0),
2042 		.hw.init = &(const struct clk_init_data) {
2043 			.name = "cam_cc_cpas_ife_lite_clk",
2044 			.parent_hws = (const struct clk_hw*[]) {
2045 				&cam_cc_ife_lite_clk_src.clkr.hw,
2046 			},
2047 			.num_parents = 1,
2048 			.flags = CLK_SET_RATE_PARENT,
2049 			.ops = &clk_branch2_ops,
2050 		},
2051 	},
2052 };
2053 
2054 static struct clk_branch cam_cc_cpas_ipe_nps_clk = {
2055 	.halt_reg = 0x10504,
2056 	.halt_check = BRANCH_HALT,
2057 	.clkr = {
2058 		.enable_reg = 0x10504,
2059 		.enable_mask = BIT(0),
2060 		.hw.init = &(const struct clk_init_data) {
2061 			.name = "cam_cc_cpas_ipe_nps_clk",
2062 			.parent_hws = (const struct clk_hw*[]) {
2063 				&cam_cc_ipe_nps_clk_src.clkr.hw,
2064 			},
2065 			.num_parents = 1,
2066 			.flags = CLK_SET_RATE_PARENT,
2067 			.ops = &clk_branch2_ops,
2068 		},
2069 	},
2070 };
2071 
2072 static struct clk_branch cam_cc_cpas_sbi_clk = {
2073 	.halt_reg = 0x1054c,
2074 	.halt_check = BRANCH_HALT,
2075 	.clkr = {
2076 		.enable_reg = 0x1054c,
2077 		.enable_mask = BIT(0),
2078 		.hw.init = &(const struct clk_init_data) {
2079 			.name = "cam_cc_cpas_sbi_clk",
2080 			.parent_hws = (const struct clk_hw*[]) {
2081 				&cam_cc_ife_0_clk_src.clkr.hw,
2082 			},
2083 			.num_parents = 1,
2084 			.flags = CLK_SET_RATE_PARENT,
2085 			.ops = &clk_branch2_ops,
2086 		},
2087 	},
2088 };
2089 
2090 static struct clk_branch cam_cc_cpas_sfe_0_clk = {
2091 	.halt_reg = 0x133cc,
2092 	.halt_check = BRANCH_HALT,
2093 	.clkr = {
2094 		.enable_reg = 0x133cc,
2095 		.enable_mask = BIT(0),
2096 		.hw.init = &(const struct clk_init_data) {
2097 			.name = "cam_cc_cpas_sfe_0_clk",
2098 			.parent_hws = (const struct clk_hw*[]) {
2099 				&cam_cc_sfe_0_clk_src.clkr.hw,
2100 			},
2101 			.num_parents = 1,
2102 			.flags = CLK_SET_RATE_PARENT,
2103 			.ops = &clk_branch2_ops,
2104 		},
2105 	},
2106 };
2107 
2108 static struct clk_branch cam_cc_cpas_sfe_1_clk = {
2109 	.halt_reg = 0x1352c,
2110 	.halt_check = BRANCH_HALT,
2111 	.clkr = {
2112 		.enable_reg = 0x1352c,
2113 		.enable_mask = BIT(0),
2114 		.hw.init = &(const struct clk_init_data) {
2115 			.name = "cam_cc_cpas_sfe_1_clk",
2116 			.parent_hws = (const struct clk_hw*[]) {
2117 				&cam_cc_sfe_1_clk_src.clkr.hw,
2118 			},
2119 			.num_parents = 1,
2120 			.flags = CLK_SET_RATE_PARENT,
2121 			.ops = &clk_branch2_ops,
2122 		},
2123 	},
2124 };
2125 
2126 static struct clk_branch cam_cc_cre_ahb_clk = {
2127 	.halt_reg = 0x13670,
2128 	.halt_check = BRANCH_HALT,
2129 	.clkr = {
2130 		.enable_reg = 0x13670,
2131 		.enable_mask = BIT(0),
2132 		.hw.init = &(const struct clk_init_data) {
2133 			.name = "cam_cc_cre_ahb_clk",
2134 			.parent_hws = (const struct clk_hw*[]) {
2135 				&cam_cc_slow_ahb_clk_src.clkr.hw,
2136 			},
2137 			.num_parents = 1,
2138 			.flags = CLK_SET_RATE_PARENT,
2139 			.ops = &clk_branch2_ops,
2140 		},
2141 	},
2142 };
2143 
2144 static struct clk_branch cam_cc_cre_clk = {
2145 	.halt_reg = 0x13668,
2146 	.halt_check = BRANCH_HALT,
2147 	.clkr = {
2148 		.enable_reg = 0x13668,
2149 		.enable_mask = BIT(0),
2150 		.hw.init = &(const struct clk_init_data) {
2151 			.name = "cam_cc_cre_clk",
2152 			.parent_hws = (const struct clk_hw*[]) {
2153 				&cam_cc_cre_clk_src.clkr.hw,
2154 			},
2155 			.num_parents = 1,
2156 			.flags = CLK_SET_RATE_PARENT,
2157 			.ops = &clk_branch2_ops,
2158 		},
2159 	},
2160 };
2161 
2162 static struct clk_branch cam_cc_csi0phytimer_clk = {
2163 	.halt_reg = 0x15aac,
2164 	.halt_check = BRANCH_HALT,
2165 	.clkr = {
2166 		.enable_reg = 0x15aac,
2167 		.enable_mask = BIT(0),
2168 		.hw.init = &(const struct clk_init_data) {
2169 			.name = "cam_cc_csi0phytimer_clk",
2170 			.parent_hws = (const struct clk_hw*[]) {
2171 				&cam_cc_csi0phytimer_clk_src.clkr.hw,
2172 			},
2173 			.num_parents = 1,
2174 			.flags = CLK_SET_RATE_PARENT,
2175 			.ops = &clk_branch2_ops,
2176 		},
2177 	},
2178 };
2179 
2180 static struct clk_branch cam_cc_csi1phytimer_clk = {
2181 	.halt_reg = 0x15be4,
2182 	.halt_check = BRANCH_HALT,
2183 	.clkr = {
2184 		.enable_reg = 0x15be4,
2185 		.enable_mask = BIT(0),
2186 		.hw.init = &(const struct clk_init_data) {
2187 			.name = "cam_cc_csi1phytimer_clk",
2188 			.parent_hws = (const struct clk_hw*[]) {
2189 				&cam_cc_csi1phytimer_clk_src.clkr.hw,
2190 			},
2191 			.num_parents = 1,
2192 			.flags = CLK_SET_RATE_PARENT,
2193 			.ops = &clk_branch2_ops,
2194 		},
2195 	},
2196 };
2197 
2198 static struct clk_branch cam_cc_csi2phytimer_clk = {
2199 	.halt_reg = 0x15d18,
2200 	.halt_check = BRANCH_HALT,
2201 	.clkr = {
2202 		.enable_reg = 0x15d18,
2203 		.enable_mask = BIT(0),
2204 		.hw.init = &(const struct clk_init_data) {
2205 			.name = "cam_cc_csi2phytimer_clk",
2206 			.parent_hws = (const struct clk_hw*[]) {
2207 				&cam_cc_csi2phytimer_clk_src.clkr.hw,
2208 			},
2209 			.num_parents = 1,
2210 			.flags = CLK_SET_RATE_PARENT,
2211 			.ops = &clk_branch2_ops,
2212 		},
2213 	},
2214 };
2215 
2216 static struct clk_branch cam_cc_csi3phytimer_clk = {
2217 	.halt_reg = 0x15e4c,
2218 	.halt_check = BRANCH_HALT,
2219 	.clkr = {
2220 		.enable_reg = 0x15e4c,
2221 		.enable_mask = BIT(0),
2222 		.hw.init = &(const struct clk_init_data) {
2223 			.name = "cam_cc_csi3phytimer_clk",
2224 			.parent_hws = (const struct clk_hw*[]) {
2225 				&cam_cc_csi3phytimer_clk_src.clkr.hw,
2226 			},
2227 			.num_parents = 1,
2228 			.flags = CLK_SET_RATE_PARENT,
2229 			.ops = &clk_branch2_ops,
2230 		},
2231 	},
2232 };
2233 
2234 static struct clk_branch cam_cc_csi4phytimer_clk = {
2235 	.halt_reg = 0x15f80,
2236 	.halt_check = BRANCH_HALT,
2237 	.clkr = {
2238 		.enable_reg = 0x15f80,
2239 		.enable_mask = BIT(0),
2240 		.hw.init = &(const struct clk_init_data) {
2241 			.name = "cam_cc_csi4phytimer_clk",
2242 			.parent_hws = (const struct clk_hw*[]) {
2243 				&cam_cc_csi4phytimer_clk_src.clkr.hw,
2244 			},
2245 			.num_parents = 1,
2246 			.flags = CLK_SET_RATE_PARENT,
2247 			.ops = &clk_branch2_ops,
2248 		},
2249 	},
2250 };
2251 
2252 static struct clk_branch cam_cc_csi5phytimer_clk = {
2253 	.halt_reg = 0x160b4,
2254 	.halt_check = BRANCH_HALT,
2255 	.clkr = {
2256 		.enable_reg = 0x160b4,
2257 		.enable_mask = BIT(0),
2258 		.hw.init = &(const struct clk_init_data) {
2259 			.name = "cam_cc_csi5phytimer_clk",
2260 			.parent_hws = (const struct clk_hw*[]) {
2261 				&cam_cc_csi5phytimer_clk_src.clkr.hw,
2262 			},
2263 			.num_parents = 1,
2264 			.flags = CLK_SET_RATE_PARENT,
2265 			.ops = &clk_branch2_ops,
2266 		},
2267 	},
2268 };
2269 
2270 static struct clk_branch cam_cc_csi6phytimer_clk = {
2271 	.halt_reg = 0x161e8,
2272 	.halt_check = BRANCH_HALT,
2273 	.clkr = {
2274 		.enable_reg = 0x161e8,
2275 		.enable_mask = BIT(0),
2276 		.hw.init = &(const struct clk_init_data) {
2277 			.name = "cam_cc_csi6phytimer_clk",
2278 			.parent_hws = (const struct clk_hw*[]) {
2279 				&cam_cc_csi6phytimer_clk_src.clkr.hw,
2280 			},
2281 			.num_parents = 1,
2282 			.flags = CLK_SET_RATE_PARENT,
2283 			.ops = &clk_branch2_ops,
2284 		},
2285 	},
2286 };
2287 
2288 static struct clk_branch cam_cc_csi7phytimer_clk = {
2289 	.halt_reg = 0x1631c,
2290 	.halt_check = BRANCH_HALT,
2291 	.clkr = {
2292 		.enable_reg = 0x1631c,
2293 		.enable_mask = BIT(0),
2294 		.hw.init = &(const struct clk_init_data) {
2295 			.name = "cam_cc_csi7phytimer_clk",
2296 			.parent_hws = (const struct clk_hw*[]) {
2297 				&cam_cc_csi7phytimer_clk_src.clkr.hw,
2298 			},
2299 			.num_parents = 1,
2300 			.flags = CLK_SET_RATE_PARENT,
2301 			.ops = &clk_branch2_ops,
2302 		},
2303 	},
2304 };
2305 
2306 static struct clk_branch cam_cc_csid_clk = {
2307 	.halt_reg = 0x13dd4,
2308 	.halt_check = BRANCH_HALT,
2309 	.clkr = {
2310 		.enable_reg = 0x13dd4,
2311 		.enable_mask = BIT(0),
2312 		.hw.init = &(const struct clk_init_data) {
2313 			.name = "cam_cc_csid_clk",
2314 			.parent_hws = (const struct clk_hw*[]) {
2315 				&cam_cc_csid_clk_src.clkr.hw,
2316 			},
2317 			.num_parents = 1,
2318 			.flags = CLK_SET_RATE_PARENT,
2319 			.ops = &clk_branch2_ops,
2320 		},
2321 	},
2322 };
2323 
2324 static struct clk_branch cam_cc_csid_csiphy_rx_clk = {
2325 	.halt_reg = 0x15ab4,
2326 	.halt_check = BRANCH_HALT,
2327 	.clkr = {
2328 		.enable_reg = 0x15ab4,
2329 		.enable_mask = BIT(0),
2330 		.hw.init = &(const struct clk_init_data) {
2331 			.name = "cam_cc_csid_csiphy_rx_clk",
2332 			.parent_hws = (const struct clk_hw*[]) {
2333 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2334 			},
2335 			.num_parents = 1,
2336 			.flags = CLK_SET_RATE_PARENT,
2337 			.ops = &clk_branch2_ops,
2338 		},
2339 	},
2340 };
2341 
2342 static struct clk_branch cam_cc_csiphy0_clk = {
2343 	.halt_reg = 0x15ab0,
2344 	.halt_check = BRANCH_HALT,
2345 	.clkr = {
2346 		.enable_reg = 0x15ab0,
2347 		.enable_mask = BIT(0),
2348 		.hw.init = &(const struct clk_init_data) {
2349 			.name = "cam_cc_csiphy0_clk",
2350 			.parent_hws = (const struct clk_hw*[]) {
2351 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2352 			},
2353 			.num_parents = 1,
2354 			.flags = CLK_SET_RATE_PARENT,
2355 			.ops = &clk_branch2_ops,
2356 		},
2357 	},
2358 };
2359 
2360 static struct clk_branch cam_cc_csiphy1_clk = {
2361 	.halt_reg = 0x15be8,
2362 	.halt_check = BRANCH_HALT,
2363 	.clkr = {
2364 		.enable_reg = 0x15be8,
2365 		.enable_mask = BIT(0),
2366 		.hw.init = &(const struct clk_init_data) {
2367 			.name = "cam_cc_csiphy1_clk",
2368 			.parent_hws = (const struct clk_hw*[]) {
2369 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2370 			},
2371 			.num_parents = 1,
2372 			.flags = CLK_SET_RATE_PARENT,
2373 			.ops = &clk_branch2_ops,
2374 		},
2375 	},
2376 };
2377 
2378 static struct clk_branch cam_cc_csiphy2_clk = {
2379 	.halt_reg = 0x15d1c,
2380 	.halt_check = BRANCH_HALT,
2381 	.clkr = {
2382 		.enable_reg = 0x15d1c,
2383 		.enable_mask = BIT(0),
2384 		.hw.init = &(const struct clk_init_data) {
2385 			.name = "cam_cc_csiphy2_clk",
2386 			.parent_hws = (const struct clk_hw*[]) {
2387 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2388 			},
2389 			.num_parents = 1,
2390 			.flags = CLK_SET_RATE_PARENT,
2391 			.ops = &clk_branch2_ops,
2392 		},
2393 	},
2394 };
2395 
2396 static struct clk_branch cam_cc_csiphy3_clk = {
2397 	.halt_reg = 0x15e50,
2398 	.halt_check = BRANCH_HALT,
2399 	.clkr = {
2400 		.enable_reg = 0x15e50,
2401 		.enable_mask = BIT(0),
2402 		.hw.init = &(const struct clk_init_data) {
2403 			.name = "cam_cc_csiphy3_clk",
2404 			.parent_hws = (const struct clk_hw*[]) {
2405 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2406 			},
2407 			.num_parents = 1,
2408 			.flags = CLK_SET_RATE_PARENT,
2409 			.ops = &clk_branch2_ops,
2410 		},
2411 	},
2412 };
2413 
2414 static struct clk_branch cam_cc_csiphy4_clk = {
2415 	.halt_reg = 0x15f84,
2416 	.halt_check = BRANCH_HALT,
2417 	.clkr = {
2418 		.enable_reg = 0x15f84,
2419 		.enable_mask = BIT(0),
2420 		.hw.init = &(const struct clk_init_data) {
2421 			.name = "cam_cc_csiphy4_clk",
2422 			.parent_hws = (const struct clk_hw*[]) {
2423 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2424 			},
2425 			.num_parents = 1,
2426 			.flags = CLK_SET_RATE_PARENT,
2427 			.ops = &clk_branch2_ops,
2428 		},
2429 	},
2430 };
2431 
2432 static struct clk_branch cam_cc_csiphy5_clk = {
2433 	.halt_reg = 0x160b8,
2434 	.halt_check = BRANCH_HALT,
2435 	.clkr = {
2436 		.enable_reg = 0x160b8,
2437 		.enable_mask = BIT(0),
2438 		.hw.init = &(const struct clk_init_data) {
2439 			.name = "cam_cc_csiphy5_clk",
2440 			.parent_hws = (const struct clk_hw*[]) {
2441 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2442 			},
2443 			.num_parents = 1,
2444 			.flags = CLK_SET_RATE_PARENT,
2445 			.ops = &clk_branch2_ops,
2446 		},
2447 	},
2448 };
2449 
2450 static struct clk_branch cam_cc_csiphy6_clk = {
2451 	.halt_reg = 0x161ec,
2452 	.halt_check = BRANCH_HALT,
2453 	.clkr = {
2454 		.enable_reg = 0x161ec,
2455 		.enable_mask = BIT(0),
2456 		.hw.init = &(const struct clk_init_data) {
2457 			.name = "cam_cc_csiphy6_clk",
2458 			.parent_hws = (const struct clk_hw*[]) {
2459 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2460 			},
2461 			.num_parents = 1,
2462 			.flags = CLK_SET_RATE_PARENT,
2463 			.ops = &clk_branch2_ops,
2464 		},
2465 	},
2466 };
2467 
2468 static struct clk_branch cam_cc_csiphy7_clk = {
2469 	.halt_reg = 0x16320,
2470 	.halt_check = BRANCH_HALT,
2471 	.clkr = {
2472 		.enable_reg = 0x16320,
2473 		.enable_mask = BIT(0),
2474 		.hw.init = &(const struct clk_init_data) {
2475 			.name = "cam_cc_csiphy7_clk",
2476 			.parent_hws = (const struct clk_hw*[]) {
2477 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2478 			},
2479 			.num_parents = 1,
2480 			.flags = CLK_SET_RATE_PARENT,
2481 			.ops = &clk_branch2_ops,
2482 		},
2483 	},
2484 };
2485 
2486 static struct clk_branch cam_cc_drv_ahb_clk = {
2487 	.halt_reg = 0x142d8,
2488 	.halt_check = BRANCH_HALT,
2489 	.clkr = {
2490 		.enable_reg = 0x142d8,
2491 		.enable_mask = BIT(0),
2492 		.hw.init = &(const struct clk_init_data) {
2493 			.name = "cam_cc_drv_ahb_clk",
2494 			.parent_hws = (const struct clk_hw*[]) {
2495 				&cam_cc_slow_ahb_clk_src.clkr.hw,
2496 			},
2497 			.num_parents = 1,
2498 			.flags = CLK_SET_RATE_PARENT,
2499 			.ops = &clk_branch2_ops,
2500 		},
2501 	},
2502 };
2503 
2504 static struct clk_branch cam_cc_drv_xo_clk = {
2505 	.halt_reg = 0x142d4,
2506 	.halt_check = BRANCH_HALT,
2507 	.clkr = {
2508 		.enable_reg = 0x142d4,
2509 		.enable_mask = BIT(0),
2510 		.hw.init = &(const struct clk_init_data) {
2511 			.name = "cam_cc_drv_xo_clk",
2512 			.parent_hws = (const struct clk_hw*[]) {
2513 				&cam_cc_xo_clk_src.clkr.hw,
2514 			},
2515 			.num_parents = 1,
2516 			.flags = CLK_SET_RATE_PARENT,
2517 			.ops = &clk_branch2_ops,
2518 		},
2519 	},
2520 };
2521 
2522 static struct clk_branch cam_cc_icp_ahb_clk = {
2523 	.halt_reg = 0x138fc,
2524 	.halt_check = BRANCH_HALT,
2525 	.clkr = {
2526 		.enable_reg = 0x138fc,
2527 		.enable_mask = BIT(0),
2528 		.hw.init = &(const struct clk_init_data) {
2529 			.name = "cam_cc_icp_ahb_clk",
2530 			.parent_hws = (const struct clk_hw*[]) {
2531 				&cam_cc_slow_ahb_clk_src.clkr.hw,
2532 			},
2533 			.num_parents = 1,
2534 			.flags = CLK_SET_RATE_PARENT,
2535 			.ops = &clk_branch2_ops,
2536 		},
2537 	},
2538 };
2539 
2540 static struct clk_branch cam_cc_icp_clk = {
2541 	.halt_reg = 0x138f0,
2542 	.halt_check = BRANCH_HALT,
2543 	.clkr = {
2544 		.enable_reg = 0x138f0,
2545 		.enable_mask = BIT(0),
2546 		.hw.init = &(const struct clk_init_data) {
2547 			.name = "cam_cc_icp_clk",
2548 			.parent_hws = (const struct clk_hw*[]) {
2549 				&cam_cc_icp_clk_src.clkr.hw,
2550 			},
2551 			.num_parents = 1,
2552 			.flags = CLK_SET_RATE_PARENT,
2553 			.ops = &clk_branch2_ops,
2554 		},
2555 	},
2556 };
2557 
2558 static struct clk_branch cam_cc_ife_0_clk = {
2559 	.halt_reg = 0x11144,
2560 	.halt_check = BRANCH_HALT,
2561 	.clkr = {
2562 		.enable_reg = 0x11144,
2563 		.enable_mask = BIT(0),
2564 		.hw.init = &(const struct clk_init_data) {
2565 			.name = "cam_cc_ife_0_clk",
2566 			.parent_hws = (const struct clk_hw*[]) {
2567 				&cam_cc_ife_0_clk_src.clkr.hw,
2568 			},
2569 			.num_parents = 1,
2570 			.flags = CLK_SET_RATE_PARENT,
2571 			.ops = &clk_branch2_ops,
2572 		},
2573 	},
2574 };
2575 
2576 static struct clk_branch cam_cc_ife_0_dsp_clk = {
2577 	.halt_reg = 0x11280,
2578 	.halt_check = BRANCH_HALT,
2579 	.clkr = {
2580 		.enable_reg = 0x11280,
2581 		.enable_mask = BIT(0),
2582 		.hw.init = &(const struct clk_init_data) {
2583 			.name = "cam_cc_ife_0_dsp_clk",
2584 			.parent_hws = (const struct clk_hw*[]) {
2585 				&cam_cc_ife_0_dsp_clk_src.clkr.hw,
2586 			},
2587 			.num_parents = 1,
2588 			.flags = CLK_SET_RATE_PARENT,
2589 			.ops = &clk_branch2_ops,
2590 		},
2591 	},
2592 };
2593 
2594 static struct clk_branch cam_cc_ife_0_fast_ahb_clk = {
2595 	.halt_reg = 0x1128c,
2596 	.halt_check = BRANCH_HALT,
2597 	.clkr = {
2598 		.enable_reg = 0x1128c,
2599 		.enable_mask = BIT(0),
2600 		.hw.init = &(const struct clk_init_data) {
2601 			.name = "cam_cc_ife_0_fast_ahb_clk",
2602 			.parent_hws = (const struct clk_hw*[]) {
2603 				&cam_cc_fast_ahb_clk_src.clkr.hw,
2604 			},
2605 			.num_parents = 1,
2606 			.flags = CLK_SET_RATE_PARENT,
2607 			.ops = &clk_branch2_ops,
2608 		},
2609 	},
2610 };
2611 
2612 static struct clk_branch cam_cc_ife_1_clk = {
2613 	.halt_reg = 0x12144,
2614 	.halt_check = BRANCH_HALT,
2615 	.clkr = {
2616 		.enable_reg = 0x12144,
2617 		.enable_mask = BIT(0),
2618 		.hw.init = &(const struct clk_init_data) {
2619 			.name = "cam_cc_ife_1_clk",
2620 			.parent_hws = (const struct clk_hw*[]) {
2621 				&cam_cc_ife_1_clk_src.clkr.hw,
2622 			},
2623 			.num_parents = 1,
2624 			.flags = CLK_SET_RATE_PARENT,
2625 			.ops = &clk_branch2_ops,
2626 		},
2627 	},
2628 };
2629 
2630 static struct clk_branch cam_cc_ife_1_dsp_clk = {
2631 	.halt_reg = 0x12280,
2632 	.halt_check = BRANCH_HALT,
2633 	.clkr = {
2634 		.enable_reg = 0x12280,
2635 		.enable_mask = BIT(0),
2636 		.hw.init = &(const struct clk_init_data) {
2637 			.name = "cam_cc_ife_1_dsp_clk",
2638 			.parent_hws = (const struct clk_hw*[]) {
2639 				&cam_cc_ife_1_dsp_clk_src.clkr.hw,
2640 			},
2641 			.num_parents = 1,
2642 			.flags = CLK_SET_RATE_PARENT,
2643 			.ops = &clk_branch2_ops,
2644 		},
2645 	},
2646 };
2647 
2648 static struct clk_branch cam_cc_ife_1_fast_ahb_clk = {
2649 	.halt_reg = 0x1228c,
2650 	.halt_check = BRANCH_HALT,
2651 	.clkr = {
2652 		.enable_reg = 0x1228c,
2653 		.enable_mask = BIT(0),
2654 		.hw.init = &(const struct clk_init_data) {
2655 			.name = "cam_cc_ife_1_fast_ahb_clk",
2656 			.parent_hws = (const struct clk_hw*[]) {
2657 				&cam_cc_fast_ahb_clk_src.clkr.hw,
2658 			},
2659 			.num_parents = 1,
2660 			.flags = CLK_SET_RATE_PARENT,
2661 			.ops = &clk_branch2_ops,
2662 		},
2663 	},
2664 };
2665 
2666 static struct clk_branch cam_cc_ife_2_clk = {
2667 	.halt_reg = 0x123d4,
2668 	.halt_check = BRANCH_HALT,
2669 	.clkr = {
2670 		.enable_reg = 0x123d4,
2671 		.enable_mask = BIT(0),
2672 		.hw.init = &(const struct clk_init_data) {
2673 			.name = "cam_cc_ife_2_clk",
2674 			.parent_hws = (const struct clk_hw*[]) {
2675 				&cam_cc_ife_2_clk_src.clkr.hw,
2676 			},
2677 			.num_parents = 1,
2678 			.flags = CLK_SET_RATE_PARENT,
2679 			.ops = &clk_branch2_ops,
2680 		},
2681 	},
2682 };
2683 
2684 static struct clk_branch cam_cc_ife_2_dsp_clk = {
2685 	.halt_reg = 0x12510,
2686 	.halt_check = BRANCH_HALT,
2687 	.clkr = {
2688 		.enable_reg = 0x12510,
2689 		.enable_mask = BIT(0),
2690 		.hw.init = &(const struct clk_init_data) {
2691 			.name = "cam_cc_ife_2_dsp_clk",
2692 			.parent_hws = (const struct clk_hw*[]) {
2693 				&cam_cc_ife_2_dsp_clk_src.clkr.hw,
2694 			},
2695 			.num_parents = 1,
2696 			.flags = CLK_SET_RATE_PARENT,
2697 			.ops = &clk_branch2_ops,
2698 		},
2699 	},
2700 };
2701 
2702 static struct clk_branch cam_cc_ife_2_fast_ahb_clk = {
2703 	.halt_reg = 0x1251c,
2704 	.halt_check = BRANCH_HALT,
2705 	.clkr = {
2706 		.enable_reg = 0x1251c,
2707 		.enable_mask = BIT(0),
2708 		.hw.init = &(const struct clk_init_data) {
2709 			.name = "cam_cc_ife_2_fast_ahb_clk",
2710 			.parent_hws = (const struct clk_hw*[]) {
2711 				&cam_cc_fast_ahb_clk_src.clkr.hw,
2712 			},
2713 			.num_parents = 1,
2714 			.flags = CLK_SET_RATE_PARENT,
2715 			.ops = &clk_branch2_ops,
2716 		},
2717 	},
2718 };
2719 
2720 static struct clk_branch cam_cc_ife_lite_ahb_clk = {
2721 	.halt_reg = 0x13278,
2722 	.halt_check = BRANCH_HALT,
2723 	.clkr = {
2724 		.enable_reg = 0x13278,
2725 		.enable_mask = BIT(0),
2726 		.hw.init = &(const struct clk_init_data) {
2727 			.name = "cam_cc_ife_lite_ahb_clk",
2728 			.parent_hws = (const struct clk_hw*[]) {
2729 				&cam_cc_slow_ahb_clk_src.clkr.hw,
2730 			},
2731 			.num_parents = 1,
2732 			.flags = CLK_SET_RATE_PARENT,
2733 			.ops = &clk_branch2_ops,
2734 		},
2735 	},
2736 };
2737 
2738 static struct clk_branch cam_cc_ife_lite_clk = {
2739 	.halt_reg = 0x1312c,
2740 	.halt_check = BRANCH_HALT,
2741 	.clkr = {
2742 		.enable_reg = 0x1312c,
2743 		.enable_mask = BIT(0),
2744 		.hw.init = &(const struct clk_init_data) {
2745 			.name = "cam_cc_ife_lite_clk",
2746 			.parent_hws = (const struct clk_hw*[]) {
2747 				&cam_cc_ife_lite_clk_src.clkr.hw,
2748 			},
2749 			.num_parents = 1,
2750 			.flags = CLK_SET_RATE_PARENT,
2751 			.ops = &clk_branch2_ops,
2752 		},
2753 	},
2754 };
2755 
2756 static struct clk_branch cam_cc_ife_lite_cphy_rx_clk = {
2757 	.halt_reg = 0x13274,
2758 	.halt_check = BRANCH_HALT,
2759 	.clkr = {
2760 		.enable_reg = 0x13274,
2761 		.enable_mask = BIT(0),
2762 		.hw.init = &(const struct clk_init_data) {
2763 			.name = "cam_cc_ife_lite_cphy_rx_clk",
2764 			.parent_hws = (const struct clk_hw*[]) {
2765 				&cam_cc_cphy_rx_clk_src.clkr.hw,
2766 			},
2767 			.num_parents = 1,
2768 			.flags = CLK_SET_RATE_PARENT,
2769 			.ops = &clk_branch2_ops,
2770 		},
2771 	},
2772 };
2773 
2774 static struct clk_branch cam_cc_ife_lite_csid_clk = {
2775 	.halt_reg = 0x13268,
2776 	.halt_check = BRANCH_HALT,
2777 	.clkr = {
2778 		.enable_reg = 0x13268,
2779 		.enable_mask = BIT(0),
2780 		.hw.init = &(const struct clk_init_data) {
2781 			.name = "cam_cc_ife_lite_csid_clk",
2782 			.parent_hws = (const struct clk_hw*[]) {
2783 				&cam_cc_ife_lite_csid_clk_src.clkr.hw,
2784 			},
2785 			.num_parents = 1,
2786 			.flags = CLK_SET_RATE_PARENT,
2787 			.ops = &clk_branch2_ops,
2788 		},
2789 	},
2790 };
2791 
2792 static struct clk_branch cam_cc_ipe_nps_ahb_clk = {
2793 	.halt_reg = 0x1051c,
2794 	.halt_check = BRANCH_HALT,
2795 	.clkr = {
2796 		.enable_reg = 0x1051c,
2797 		.enable_mask = BIT(0),
2798 		.hw.init = &(const struct clk_init_data) {
2799 			.name = "cam_cc_ipe_nps_ahb_clk",
2800 			.parent_hws = (const struct clk_hw*[]) {
2801 				&cam_cc_slow_ahb_clk_src.clkr.hw,
2802 			},
2803 			.num_parents = 1,
2804 			.flags = CLK_SET_RATE_PARENT,
2805 			.ops = &clk_branch2_ops,
2806 		},
2807 	},
2808 };
2809 
2810 static struct clk_branch cam_cc_ipe_nps_clk = {
2811 	.halt_reg = 0x104f8,
2812 	.halt_check = BRANCH_HALT,
2813 	.clkr = {
2814 		.enable_reg = 0x104f8,
2815 		.enable_mask = BIT(0),
2816 		.hw.init = &(const struct clk_init_data) {
2817 			.name = "cam_cc_ipe_nps_clk",
2818 			.parent_hws = (const struct clk_hw*[]) {
2819 				&cam_cc_ipe_nps_clk_src.clkr.hw,
2820 			},
2821 			.num_parents = 1,
2822 			.flags = CLK_SET_RATE_PARENT,
2823 			.ops = &clk_branch2_ops,
2824 		},
2825 	},
2826 };
2827 
2828 static struct clk_branch cam_cc_ipe_nps_fast_ahb_clk = {
2829 	.halt_reg = 0x10520,
2830 	.halt_check = BRANCH_HALT,
2831 	.clkr = {
2832 		.enable_reg = 0x10520,
2833 		.enable_mask = BIT(0),
2834 		.hw.init = &(const struct clk_init_data) {
2835 			.name = "cam_cc_ipe_nps_fast_ahb_clk",
2836 			.parent_hws = (const struct clk_hw*[]) {
2837 				&cam_cc_fast_ahb_clk_src.clkr.hw,
2838 			},
2839 			.num_parents = 1,
2840 			.flags = CLK_SET_RATE_PARENT,
2841 			.ops = &clk_branch2_ops,
2842 		},
2843 	},
2844 };
2845 
2846 static struct clk_branch cam_cc_ipe_pps_clk = {
2847 	.halt_reg = 0x10508,
2848 	.halt_check = BRANCH_HALT,
2849 	.clkr = {
2850 		.enable_reg = 0x10508,
2851 		.enable_mask = BIT(0),
2852 		.hw.init = &(const struct clk_init_data) {
2853 			.name = "cam_cc_ipe_pps_clk",
2854 			.parent_hws = (const struct clk_hw*[]) {
2855 				&cam_cc_ipe_nps_clk_src.clkr.hw,
2856 			},
2857 			.num_parents = 1,
2858 			.flags = CLK_SET_RATE_PARENT,
2859 			.ops = &clk_branch2_ops,
2860 		},
2861 	},
2862 };
2863 
2864 static struct clk_branch cam_cc_ipe_pps_fast_ahb_clk = {
2865 	.halt_reg = 0x10524,
2866 	.halt_check = BRANCH_HALT,
2867 	.clkr = {
2868 		.enable_reg = 0x10524,
2869 		.enable_mask = BIT(0),
2870 		.hw.init = &(const struct clk_init_data) {
2871 			.name = "cam_cc_ipe_pps_fast_ahb_clk",
2872 			.parent_hws = (const struct clk_hw*[]) {
2873 				&cam_cc_fast_ahb_clk_src.clkr.hw,
2874 			},
2875 			.num_parents = 1,
2876 			.flags = CLK_SET_RATE_PARENT,
2877 			.ops = &clk_branch2_ops,
2878 		},
2879 	},
2880 };
2881 
2882 static struct clk_branch cam_cc_jpeg_1_clk = {
2883 	.halt_reg = 0x137ac,
2884 	.halt_check = BRANCH_HALT,
2885 	.clkr = {
2886 		.enable_reg = 0x137ac,
2887 		.enable_mask = BIT(0),
2888 		.hw.init = &(const struct clk_init_data) {
2889 			.name = "cam_cc_jpeg_1_clk",
2890 			.parent_hws = (const struct clk_hw*[]) {
2891 				&cam_cc_jpeg_clk_src.clkr.hw,
2892 			},
2893 			.num_parents = 1,
2894 			.flags = CLK_SET_RATE_PARENT,
2895 			.ops = &clk_branch2_ops,
2896 		},
2897 	},
2898 };
2899 
2900 static struct clk_branch cam_cc_jpeg_clk = {
2901 	.halt_reg = 0x137a0,
2902 	.halt_check = BRANCH_HALT,
2903 	.clkr = {
2904 		.enable_reg = 0x137a0,
2905 		.enable_mask = BIT(0),
2906 		.hw.init = &(const struct clk_init_data) {
2907 			.name = "cam_cc_jpeg_clk",
2908 			.parent_hws = (const struct clk_hw*[]) {
2909 				&cam_cc_jpeg_clk_src.clkr.hw,
2910 			},
2911 			.num_parents = 1,
2912 			.flags = CLK_SET_RATE_PARENT,
2913 			.ops = &clk_branch2_ops,
2914 		},
2915 	},
2916 };
2917 
2918 static struct clk_branch cam_cc_mclk0_clk = {
2919 	.halt_reg = 0x1512c,
2920 	.halt_check = BRANCH_HALT,
2921 	.clkr = {
2922 		.enable_reg = 0x1512c,
2923 		.enable_mask = BIT(0),
2924 		.hw.init = &(const struct clk_init_data) {
2925 			.name = "cam_cc_mclk0_clk",
2926 			.parent_hws = (const struct clk_hw*[]) {
2927 				&cam_cc_mclk0_clk_src.clkr.hw,
2928 			},
2929 			.num_parents = 1,
2930 			.flags = CLK_SET_RATE_PARENT,
2931 			.ops = &clk_branch2_ops,
2932 		},
2933 	},
2934 };
2935 
2936 static struct clk_branch cam_cc_mclk1_clk = {
2937 	.halt_reg = 0x1525c,
2938 	.halt_check = BRANCH_HALT,
2939 	.clkr = {
2940 		.enable_reg = 0x1525c,
2941 		.enable_mask = BIT(0),
2942 		.hw.init = &(const struct clk_init_data) {
2943 			.name = "cam_cc_mclk1_clk",
2944 			.parent_hws = (const struct clk_hw*[]) {
2945 				&cam_cc_mclk1_clk_src.clkr.hw,
2946 			},
2947 			.num_parents = 1,
2948 			.flags = CLK_SET_RATE_PARENT,
2949 			.ops = &clk_branch2_ops,
2950 		},
2951 	},
2952 };
2953 
2954 static struct clk_branch cam_cc_mclk2_clk = {
2955 	.halt_reg = 0x1538c,
2956 	.halt_check = BRANCH_HALT,
2957 	.clkr = {
2958 		.enable_reg = 0x1538c,
2959 		.enable_mask = BIT(0),
2960 		.hw.init = &(const struct clk_init_data) {
2961 			.name = "cam_cc_mclk2_clk",
2962 			.parent_hws = (const struct clk_hw*[]) {
2963 				&cam_cc_mclk2_clk_src.clkr.hw,
2964 			},
2965 			.num_parents = 1,
2966 			.flags = CLK_SET_RATE_PARENT,
2967 			.ops = &clk_branch2_ops,
2968 		},
2969 	},
2970 };
2971 
2972 static struct clk_branch cam_cc_mclk3_clk = {
2973 	.halt_reg = 0x154bc,
2974 	.halt_check = BRANCH_HALT,
2975 	.clkr = {
2976 		.enable_reg = 0x154bc,
2977 		.enable_mask = BIT(0),
2978 		.hw.init = &(const struct clk_init_data) {
2979 			.name = "cam_cc_mclk3_clk",
2980 			.parent_hws = (const struct clk_hw*[]) {
2981 				&cam_cc_mclk3_clk_src.clkr.hw,
2982 			},
2983 			.num_parents = 1,
2984 			.flags = CLK_SET_RATE_PARENT,
2985 			.ops = &clk_branch2_ops,
2986 		},
2987 	},
2988 };
2989 
2990 static struct clk_branch cam_cc_mclk4_clk = {
2991 	.halt_reg = 0x155ec,
2992 	.halt_check = BRANCH_HALT,
2993 	.clkr = {
2994 		.enable_reg = 0x155ec,
2995 		.enable_mask = BIT(0),
2996 		.hw.init = &(const struct clk_init_data) {
2997 			.name = "cam_cc_mclk4_clk",
2998 			.parent_hws = (const struct clk_hw*[]) {
2999 				&cam_cc_mclk4_clk_src.clkr.hw,
3000 			},
3001 			.num_parents = 1,
3002 			.flags = CLK_SET_RATE_PARENT,
3003 			.ops = &clk_branch2_ops,
3004 		},
3005 	},
3006 };
3007 
3008 static struct clk_branch cam_cc_mclk5_clk = {
3009 	.halt_reg = 0x1571c,
3010 	.halt_check = BRANCH_HALT,
3011 	.clkr = {
3012 		.enable_reg = 0x1571c,
3013 		.enable_mask = BIT(0),
3014 		.hw.init = &(const struct clk_init_data) {
3015 			.name = "cam_cc_mclk5_clk",
3016 			.parent_hws = (const struct clk_hw*[]) {
3017 				&cam_cc_mclk5_clk_src.clkr.hw,
3018 			},
3019 			.num_parents = 1,
3020 			.flags = CLK_SET_RATE_PARENT,
3021 			.ops = &clk_branch2_ops,
3022 		},
3023 	},
3024 };
3025 
3026 static struct clk_branch cam_cc_mclk6_clk = {
3027 	.halt_reg = 0x1584c,
3028 	.halt_check = BRANCH_HALT,
3029 	.clkr = {
3030 		.enable_reg = 0x1584c,
3031 		.enable_mask = BIT(0),
3032 		.hw.init = &(const struct clk_init_data) {
3033 			.name = "cam_cc_mclk6_clk",
3034 			.parent_hws = (const struct clk_hw*[]) {
3035 				&cam_cc_mclk6_clk_src.clkr.hw,
3036 			},
3037 			.num_parents = 1,
3038 			.flags = CLK_SET_RATE_PARENT,
3039 			.ops = &clk_branch2_ops,
3040 		},
3041 	},
3042 };
3043 
3044 static struct clk_branch cam_cc_mclk7_clk = {
3045 	.halt_reg = 0x1597c,
3046 	.halt_check = BRANCH_HALT,
3047 	.clkr = {
3048 		.enable_reg = 0x1597c,
3049 		.enable_mask = BIT(0),
3050 		.hw.init = &(const struct clk_init_data) {
3051 			.name = "cam_cc_mclk7_clk",
3052 			.parent_hws = (const struct clk_hw*[]) {
3053 				&cam_cc_mclk7_clk_src.clkr.hw,
3054 			},
3055 			.num_parents = 1,
3056 			.flags = CLK_SET_RATE_PARENT,
3057 			.ops = &clk_branch2_ops,
3058 		},
3059 	},
3060 };
3061 
3062 static struct clk_branch cam_cc_qdss_debug_clk = {
3063 	.halt_reg = 0x14050,
3064 	.halt_check = BRANCH_HALT,
3065 	.clkr = {
3066 		.enable_reg = 0x14050,
3067 		.enable_mask = BIT(0),
3068 		.hw.init = &(const struct clk_init_data) {
3069 			.name = "cam_cc_qdss_debug_clk",
3070 			.parent_hws = (const struct clk_hw*[]) {
3071 				&cam_cc_qdss_debug_clk_src.clkr.hw,
3072 			},
3073 			.num_parents = 1,
3074 			.flags = CLK_SET_RATE_PARENT,
3075 			.ops = &clk_branch2_ops,
3076 		},
3077 	},
3078 };
3079 
3080 static struct clk_branch cam_cc_qdss_debug_xo_clk = {
3081 	.halt_reg = 0x14054,
3082 	.halt_check = BRANCH_HALT,
3083 	.clkr = {
3084 		.enable_reg = 0x14054,
3085 		.enable_mask = BIT(0),
3086 		.hw.init = &(const struct clk_init_data) {
3087 			.name = "cam_cc_qdss_debug_xo_clk",
3088 			.parent_hws = (const struct clk_hw*[]) {
3089 				&cam_cc_xo_clk_src.clkr.hw,
3090 			},
3091 			.num_parents = 1,
3092 			.flags = CLK_SET_RATE_PARENT,
3093 			.ops = &clk_branch2_ops,
3094 		},
3095 	},
3096 };
3097 
3098 static struct clk_branch cam_cc_sbi_clk = {
3099 	.halt_reg = 0x10540,
3100 	.halt_check = BRANCH_HALT,
3101 	.clkr = {
3102 		.enable_reg = 0x10540,
3103 		.enable_mask = BIT(0),
3104 		.hw.init = &(const struct clk_init_data) {
3105 			.name = "cam_cc_sbi_clk",
3106 			.parent_hws = (const struct clk_hw*[]) {
3107 				&cam_cc_ife_0_clk_src.clkr.hw,
3108 			},
3109 			.num_parents = 1,
3110 			.flags = CLK_SET_RATE_PARENT,
3111 			.ops = &clk_branch2_ops,
3112 		},
3113 	},
3114 };
3115 
3116 static struct clk_branch cam_cc_sbi_fast_ahb_clk = {
3117 	.halt_reg = 0x10550,
3118 	.halt_check = BRANCH_HALT,
3119 	.clkr = {
3120 		.enable_reg = 0x10550,
3121 		.enable_mask = BIT(0),
3122 		.hw.init = &(const struct clk_init_data) {
3123 			.name = "cam_cc_sbi_fast_ahb_clk",
3124 			.parent_hws = (const struct clk_hw*[]) {
3125 				&cam_cc_fast_ahb_clk_src.clkr.hw,
3126 			},
3127 			.num_parents = 1,
3128 			.flags = CLK_SET_RATE_PARENT,
3129 			.ops = &clk_branch2_ops,
3130 		},
3131 	},
3132 };
3133 
3134 static struct clk_branch cam_cc_sfe_0_clk = {
3135 	.halt_reg = 0x133c0,
3136 	.halt_check = BRANCH_HALT,
3137 	.clkr = {
3138 		.enable_reg = 0x133c0,
3139 		.enable_mask = BIT(0),
3140 		.hw.init = &(const struct clk_init_data) {
3141 			.name = "cam_cc_sfe_0_clk",
3142 			.parent_hws = (const struct clk_hw*[]) {
3143 				&cam_cc_sfe_0_clk_src.clkr.hw,
3144 			},
3145 			.num_parents = 1,
3146 			.flags = CLK_SET_RATE_PARENT,
3147 			.ops = &clk_branch2_ops,
3148 		},
3149 	},
3150 };
3151 
3152 static struct clk_branch cam_cc_sfe_0_fast_ahb_clk = {
3153 	.halt_reg = 0x133d8,
3154 	.halt_check = BRANCH_HALT,
3155 	.clkr = {
3156 		.enable_reg = 0x133d8,
3157 		.enable_mask = BIT(0),
3158 		.hw.init = &(const struct clk_init_data) {
3159 			.name = "cam_cc_sfe_0_fast_ahb_clk",
3160 			.parent_hws = (const struct clk_hw*[]) {
3161 				&cam_cc_fast_ahb_clk_src.clkr.hw,
3162 			},
3163 			.num_parents = 1,
3164 			.flags = CLK_SET_RATE_PARENT,
3165 			.ops = &clk_branch2_ops,
3166 		},
3167 	},
3168 };
3169 
3170 static struct clk_branch cam_cc_sfe_1_clk = {
3171 	.halt_reg = 0x13520,
3172 	.halt_check = BRANCH_HALT,
3173 	.clkr = {
3174 		.enable_reg = 0x13520,
3175 		.enable_mask = BIT(0),
3176 		.hw.init = &(const struct clk_init_data) {
3177 			.name = "cam_cc_sfe_1_clk",
3178 			.parent_hws = (const struct clk_hw*[]) {
3179 				&cam_cc_sfe_1_clk_src.clkr.hw,
3180 			},
3181 			.num_parents = 1,
3182 			.flags = CLK_SET_RATE_PARENT,
3183 			.ops = &clk_branch2_ops,
3184 		},
3185 	},
3186 };
3187 
3188 static struct clk_branch cam_cc_sfe_1_fast_ahb_clk = {
3189 	.halt_reg = 0x13538,
3190 	.halt_check = BRANCH_HALT,
3191 	.clkr = {
3192 		.enable_reg = 0x13538,
3193 		.enable_mask = BIT(0),
3194 		.hw.init = &(const struct clk_init_data) {
3195 			.name = "cam_cc_sfe_1_fast_ahb_clk",
3196 			.parent_hws = (const struct clk_hw*[]) {
3197 				&cam_cc_fast_ahb_clk_src.clkr.hw,
3198 			},
3199 			.num_parents = 1,
3200 			.flags = CLK_SET_RATE_PARENT,
3201 			.ops = &clk_branch2_ops,
3202 		},
3203 	},
3204 };
3205 
3206 static struct gdsc cam_cc_titan_top_gdsc;
3207 
3208 static struct gdsc cam_cc_bps_gdsc = {
3209 	.gdscr = 0x10004,
3210 	.en_rest_wait_val = 0x2,
3211 	.en_few_wait_val = 0x2,
3212 	.clk_dis_wait_val = 0xf,
3213 	.pd = {
3214 		.name = "cam_cc_bps_gdsc",
3215 	},
3216 	.pwrsts = PWRSTS_OFF_ON,
3217 	.parent = &cam_cc_titan_top_gdsc.pd,
3218 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3219 };
3220 
3221 static struct gdsc cam_cc_ife_0_gdsc = {
3222 	.gdscr = 0x11004,
3223 	.en_rest_wait_val = 0x2,
3224 	.en_few_wait_val = 0x2,
3225 	.clk_dis_wait_val = 0xf,
3226 	.pd = {
3227 		.name = "cam_cc_ife_0_gdsc",
3228 	},
3229 	.pwrsts = PWRSTS_OFF_ON,
3230 	.parent = &cam_cc_titan_top_gdsc.pd,
3231 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3232 };
3233 
3234 static struct gdsc cam_cc_ife_1_gdsc = {
3235 	.gdscr = 0x12004,
3236 	.en_rest_wait_val = 0x2,
3237 	.en_few_wait_val = 0x2,
3238 	.clk_dis_wait_val = 0xf,
3239 	.pd = {
3240 		.name = "cam_cc_ife_1_gdsc",
3241 	},
3242 	.pwrsts = PWRSTS_OFF_ON,
3243 	.parent = &cam_cc_titan_top_gdsc.pd,
3244 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3245 };
3246 
3247 static struct gdsc cam_cc_ife_2_gdsc = {
3248 	.gdscr = 0x12294,
3249 	.en_rest_wait_val = 0x2,
3250 	.en_few_wait_val = 0x2,
3251 	.clk_dis_wait_val = 0xf,
3252 	.pd = {
3253 		.name = "cam_cc_ife_2_gdsc",
3254 	},
3255 	.pwrsts = PWRSTS_OFF_ON,
3256 	.parent = &cam_cc_titan_top_gdsc.pd,
3257 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3258 };
3259 
3260 static struct gdsc cam_cc_ipe_0_gdsc = {
3261 	.gdscr = 0x103b8,
3262 	.en_rest_wait_val = 0x2,
3263 	.en_few_wait_val = 0x2,
3264 	.clk_dis_wait_val = 0xf,
3265 	.pd = {
3266 		.name = "cam_cc_ipe_0_gdsc",
3267 	},
3268 	.pwrsts = PWRSTS_OFF_ON,
3269 	.parent = &cam_cc_titan_top_gdsc.pd,
3270 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3271 };
3272 
3273 static struct gdsc cam_cc_sbi_gdsc = {
3274 	.gdscr = 0x1052c,
3275 	.en_rest_wait_val = 0x2,
3276 	.en_few_wait_val = 0x2,
3277 	.clk_dis_wait_val = 0xf,
3278 	.pd = {
3279 		.name = "cam_cc_sbi_gdsc",
3280 	},
3281 	.pwrsts = PWRSTS_OFF_ON,
3282 	.parent = &cam_cc_titan_top_gdsc.pd,
3283 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3284 };
3285 
3286 static struct gdsc cam_cc_sfe_0_gdsc = {
3287 	.gdscr = 0x13280,
3288 	.en_rest_wait_val = 0x2,
3289 	.en_few_wait_val = 0x2,
3290 	.clk_dis_wait_val = 0xf,
3291 	.pd = {
3292 		.name = "cam_cc_sfe_0_gdsc",
3293 	},
3294 	.pwrsts = PWRSTS_OFF_ON,
3295 	.parent = &cam_cc_titan_top_gdsc.pd,
3296 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3297 };
3298 
3299 static struct gdsc cam_cc_sfe_1_gdsc = {
3300 	.gdscr = 0x133e0,
3301 	.en_rest_wait_val = 0x2,
3302 	.en_few_wait_val = 0x2,
3303 	.clk_dis_wait_val = 0xf,
3304 	.pd = {
3305 		.name = "cam_cc_sfe_1_gdsc",
3306 	},
3307 	.pwrsts = PWRSTS_OFF_ON,
3308 	.parent = &cam_cc_titan_top_gdsc.pd,
3309 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3310 };
3311 
3312 static struct gdsc cam_cc_titan_top_gdsc = {
3313 	.gdscr = 0x14058,
3314 	.en_rest_wait_val = 0x2,
3315 	.en_few_wait_val = 0x2,
3316 	.clk_dis_wait_val = 0xf,
3317 	.pd = {
3318 		.name = "cam_cc_titan_top_gdsc",
3319 	},
3320 	.pwrsts = PWRSTS_OFF_ON,
3321 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3322 };
3323 
3324 static struct clk_regmap *cam_cc_sm8550_clocks[] = {
3325 	[CAM_CC_BPS_AHB_CLK] = &cam_cc_bps_ahb_clk.clkr,
3326 	[CAM_CC_BPS_CLK] = &cam_cc_bps_clk.clkr,
3327 	[CAM_CC_BPS_CLK_SRC] = &cam_cc_bps_clk_src.clkr,
3328 	[CAM_CC_BPS_FAST_AHB_CLK] = &cam_cc_bps_fast_ahb_clk.clkr,
3329 	[CAM_CC_CAMNOC_AXI_CLK] = &cam_cc_camnoc_axi_clk.clkr,
3330 	[CAM_CC_CAMNOC_AXI_CLK_SRC] = &cam_cc_camnoc_axi_clk_src.clkr,
3331 	[CAM_CC_CAMNOC_DCD_XO_CLK] = &cam_cc_camnoc_dcd_xo_clk.clkr,
3332 	[CAM_CC_CAMNOC_XO_CLK] = &cam_cc_camnoc_xo_clk.clkr,
3333 	[CAM_CC_CCI_0_CLK] = &cam_cc_cci_0_clk.clkr,
3334 	[CAM_CC_CCI_0_CLK_SRC] = &cam_cc_cci_0_clk_src.clkr,
3335 	[CAM_CC_CCI_1_CLK] = &cam_cc_cci_1_clk.clkr,
3336 	[CAM_CC_CCI_1_CLK_SRC] = &cam_cc_cci_1_clk_src.clkr,
3337 	[CAM_CC_CCI_2_CLK] = &cam_cc_cci_2_clk.clkr,
3338 	[CAM_CC_CCI_2_CLK_SRC] = &cam_cc_cci_2_clk_src.clkr,
3339 	[CAM_CC_CORE_AHB_CLK] = &cam_cc_core_ahb_clk.clkr,
3340 	[CAM_CC_CPAS_AHB_CLK] = &cam_cc_cpas_ahb_clk.clkr,
3341 	[CAM_CC_CPAS_BPS_CLK] = &cam_cc_cpas_bps_clk.clkr,
3342 	[CAM_CC_CPAS_CRE_CLK] = &cam_cc_cpas_cre_clk.clkr,
3343 	[CAM_CC_CPAS_FAST_AHB_CLK] = &cam_cc_cpas_fast_ahb_clk.clkr,
3344 	[CAM_CC_CPAS_IFE_0_CLK] = &cam_cc_cpas_ife_0_clk.clkr,
3345 	[CAM_CC_CPAS_IFE_1_CLK] = &cam_cc_cpas_ife_1_clk.clkr,
3346 	[CAM_CC_CPAS_IFE_2_CLK] = &cam_cc_cpas_ife_2_clk.clkr,
3347 	[CAM_CC_CPAS_IFE_LITE_CLK] = &cam_cc_cpas_ife_lite_clk.clkr,
3348 	[CAM_CC_CPAS_IPE_NPS_CLK] = &cam_cc_cpas_ipe_nps_clk.clkr,
3349 	[CAM_CC_CPAS_SBI_CLK] = &cam_cc_cpas_sbi_clk.clkr,
3350 	[CAM_CC_CPAS_SFE_0_CLK] = &cam_cc_cpas_sfe_0_clk.clkr,
3351 	[CAM_CC_CPAS_SFE_1_CLK] = &cam_cc_cpas_sfe_1_clk.clkr,
3352 	[CAM_CC_CPHY_RX_CLK_SRC] = &cam_cc_cphy_rx_clk_src.clkr,
3353 	[CAM_CC_CRE_AHB_CLK] = &cam_cc_cre_ahb_clk.clkr,
3354 	[CAM_CC_CRE_CLK] = &cam_cc_cre_clk.clkr,
3355 	[CAM_CC_CRE_CLK_SRC] = &cam_cc_cre_clk_src.clkr,
3356 	[CAM_CC_CSI0PHYTIMER_CLK] = &cam_cc_csi0phytimer_clk.clkr,
3357 	[CAM_CC_CSI0PHYTIMER_CLK_SRC] = &cam_cc_csi0phytimer_clk_src.clkr,
3358 	[CAM_CC_CSI1PHYTIMER_CLK] = &cam_cc_csi1phytimer_clk.clkr,
3359 	[CAM_CC_CSI1PHYTIMER_CLK_SRC] = &cam_cc_csi1phytimer_clk_src.clkr,
3360 	[CAM_CC_CSI2PHYTIMER_CLK] = &cam_cc_csi2phytimer_clk.clkr,
3361 	[CAM_CC_CSI2PHYTIMER_CLK_SRC] = &cam_cc_csi2phytimer_clk_src.clkr,
3362 	[CAM_CC_CSI3PHYTIMER_CLK] = &cam_cc_csi3phytimer_clk.clkr,
3363 	[CAM_CC_CSI3PHYTIMER_CLK_SRC] = &cam_cc_csi3phytimer_clk_src.clkr,
3364 	[CAM_CC_CSI4PHYTIMER_CLK] = &cam_cc_csi4phytimer_clk.clkr,
3365 	[CAM_CC_CSI4PHYTIMER_CLK_SRC] = &cam_cc_csi4phytimer_clk_src.clkr,
3366 	[CAM_CC_CSI5PHYTIMER_CLK] = &cam_cc_csi5phytimer_clk.clkr,
3367 	[CAM_CC_CSI5PHYTIMER_CLK_SRC] = &cam_cc_csi5phytimer_clk_src.clkr,
3368 	[CAM_CC_CSI6PHYTIMER_CLK] = &cam_cc_csi6phytimer_clk.clkr,
3369 	[CAM_CC_CSI6PHYTIMER_CLK_SRC] = &cam_cc_csi6phytimer_clk_src.clkr,
3370 	[CAM_CC_CSI7PHYTIMER_CLK] = &cam_cc_csi7phytimer_clk.clkr,
3371 	[CAM_CC_CSI7PHYTIMER_CLK_SRC] = &cam_cc_csi7phytimer_clk_src.clkr,
3372 	[CAM_CC_CSID_CLK] = &cam_cc_csid_clk.clkr,
3373 	[CAM_CC_CSID_CLK_SRC] = &cam_cc_csid_clk_src.clkr,
3374 	[CAM_CC_CSID_CSIPHY_RX_CLK] = &cam_cc_csid_csiphy_rx_clk.clkr,
3375 	[CAM_CC_CSIPHY0_CLK] = &cam_cc_csiphy0_clk.clkr,
3376 	[CAM_CC_CSIPHY1_CLK] = &cam_cc_csiphy1_clk.clkr,
3377 	[CAM_CC_CSIPHY2_CLK] = &cam_cc_csiphy2_clk.clkr,
3378 	[CAM_CC_CSIPHY3_CLK] = &cam_cc_csiphy3_clk.clkr,
3379 	[CAM_CC_CSIPHY4_CLK] = &cam_cc_csiphy4_clk.clkr,
3380 	[CAM_CC_CSIPHY5_CLK] = &cam_cc_csiphy5_clk.clkr,
3381 	[CAM_CC_CSIPHY6_CLK] = &cam_cc_csiphy6_clk.clkr,
3382 	[CAM_CC_CSIPHY7_CLK] = &cam_cc_csiphy7_clk.clkr,
3383 	[CAM_CC_DRV_AHB_CLK] = &cam_cc_drv_ahb_clk.clkr,
3384 	[CAM_CC_DRV_XO_CLK] = &cam_cc_drv_xo_clk.clkr,
3385 	[CAM_CC_FAST_AHB_CLK_SRC] = &cam_cc_fast_ahb_clk_src.clkr,
3386 	[CAM_CC_ICP_AHB_CLK] = &cam_cc_icp_ahb_clk.clkr,
3387 	[CAM_CC_ICP_CLK] = &cam_cc_icp_clk.clkr,
3388 	[CAM_CC_ICP_CLK_SRC] = &cam_cc_icp_clk_src.clkr,
3389 	[CAM_CC_IFE_0_CLK] = &cam_cc_ife_0_clk.clkr,
3390 	[CAM_CC_IFE_0_CLK_SRC] = &cam_cc_ife_0_clk_src.clkr,
3391 	[CAM_CC_IFE_0_DSP_CLK] = &cam_cc_ife_0_dsp_clk.clkr,
3392 	[CAM_CC_IFE_0_DSP_CLK_SRC] = &cam_cc_ife_0_dsp_clk_src.clkr,
3393 	[CAM_CC_IFE_0_FAST_AHB_CLK] = &cam_cc_ife_0_fast_ahb_clk.clkr,
3394 	[CAM_CC_IFE_1_CLK] = &cam_cc_ife_1_clk.clkr,
3395 	[CAM_CC_IFE_1_CLK_SRC] = &cam_cc_ife_1_clk_src.clkr,
3396 	[CAM_CC_IFE_1_DSP_CLK] = &cam_cc_ife_1_dsp_clk.clkr,
3397 	[CAM_CC_IFE_1_DSP_CLK_SRC] = &cam_cc_ife_1_dsp_clk_src.clkr,
3398 	[CAM_CC_IFE_1_FAST_AHB_CLK] = &cam_cc_ife_1_fast_ahb_clk.clkr,
3399 	[CAM_CC_IFE_2_CLK] = &cam_cc_ife_2_clk.clkr,
3400 	[CAM_CC_IFE_2_CLK_SRC] = &cam_cc_ife_2_clk_src.clkr,
3401 	[CAM_CC_IFE_2_DSP_CLK] = &cam_cc_ife_2_dsp_clk.clkr,
3402 	[CAM_CC_IFE_2_DSP_CLK_SRC] = &cam_cc_ife_2_dsp_clk_src.clkr,
3403 	[CAM_CC_IFE_2_FAST_AHB_CLK] = &cam_cc_ife_2_fast_ahb_clk.clkr,
3404 	[CAM_CC_IFE_LITE_AHB_CLK] = &cam_cc_ife_lite_ahb_clk.clkr,
3405 	[CAM_CC_IFE_LITE_CLK] = &cam_cc_ife_lite_clk.clkr,
3406 	[CAM_CC_IFE_LITE_CLK_SRC] = &cam_cc_ife_lite_clk_src.clkr,
3407 	[CAM_CC_IFE_LITE_CPHY_RX_CLK] = &cam_cc_ife_lite_cphy_rx_clk.clkr,
3408 	[CAM_CC_IFE_LITE_CSID_CLK] = &cam_cc_ife_lite_csid_clk.clkr,
3409 	[CAM_CC_IFE_LITE_CSID_CLK_SRC] = &cam_cc_ife_lite_csid_clk_src.clkr,
3410 	[CAM_CC_IPE_NPS_AHB_CLK] = &cam_cc_ipe_nps_ahb_clk.clkr,
3411 	[CAM_CC_IPE_NPS_CLK] = &cam_cc_ipe_nps_clk.clkr,
3412 	[CAM_CC_IPE_NPS_CLK_SRC] = &cam_cc_ipe_nps_clk_src.clkr,
3413 	[CAM_CC_IPE_NPS_FAST_AHB_CLK] = &cam_cc_ipe_nps_fast_ahb_clk.clkr,
3414 	[CAM_CC_IPE_PPS_CLK] = &cam_cc_ipe_pps_clk.clkr,
3415 	[CAM_CC_IPE_PPS_FAST_AHB_CLK] = &cam_cc_ipe_pps_fast_ahb_clk.clkr,
3416 	[CAM_CC_JPEG_1_CLK] = &cam_cc_jpeg_1_clk.clkr,
3417 	[CAM_CC_JPEG_CLK] = &cam_cc_jpeg_clk.clkr,
3418 	[CAM_CC_JPEG_CLK_SRC] = &cam_cc_jpeg_clk_src.clkr,
3419 	[CAM_CC_MCLK0_CLK] = &cam_cc_mclk0_clk.clkr,
3420 	[CAM_CC_MCLK0_CLK_SRC] = &cam_cc_mclk0_clk_src.clkr,
3421 	[CAM_CC_MCLK1_CLK] = &cam_cc_mclk1_clk.clkr,
3422 	[CAM_CC_MCLK1_CLK_SRC] = &cam_cc_mclk1_clk_src.clkr,
3423 	[CAM_CC_MCLK2_CLK] = &cam_cc_mclk2_clk.clkr,
3424 	[CAM_CC_MCLK2_CLK_SRC] = &cam_cc_mclk2_clk_src.clkr,
3425 	[CAM_CC_MCLK3_CLK] = &cam_cc_mclk3_clk.clkr,
3426 	[CAM_CC_MCLK3_CLK_SRC] = &cam_cc_mclk3_clk_src.clkr,
3427 	[CAM_CC_MCLK4_CLK] = &cam_cc_mclk4_clk.clkr,
3428 	[CAM_CC_MCLK4_CLK_SRC] = &cam_cc_mclk4_clk_src.clkr,
3429 	[CAM_CC_MCLK5_CLK] = &cam_cc_mclk5_clk.clkr,
3430 	[CAM_CC_MCLK5_CLK_SRC] = &cam_cc_mclk5_clk_src.clkr,
3431 	[CAM_CC_MCLK6_CLK] = &cam_cc_mclk6_clk.clkr,
3432 	[CAM_CC_MCLK6_CLK_SRC] = &cam_cc_mclk6_clk_src.clkr,
3433 	[CAM_CC_MCLK7_CLK] = &cam_cc_mclk7_clk.clkr,
3434 	[CAM_CC_MCLK7_CLK_SRC] = &cam_cc_mclk7_clk_src.clkr,
3435 	[CAM_CC_PLL0] = &cam_cc_pll0.clkr,
3436 	[CAM_CC_PLL0_OUT_EVEN] = &cam_cc_pll0_out_even.clkr,
3437 	[CAM_CC_PLL0_OUT_ODD] = &cam_cc_pll0_out_odd.clkr,
3438 	[CAM_CC_PLL1] = &cam_cc_pll1.clkr,
3439 	[CAM_CC_PLL1_OUT_EVEN] = &cam_cc_pll1_out_even.clkr,
3440 	[CAM_CC_PLL2] = &cam_cc_pll2.clkr,
3441 	[CAM_CC_PLL3] = &cam_cc_pll3.clkr,
3442 	[CAM_CC_PLL3_OUT_EVEN] = &cam_cc_pll3_out_even.clkr,
3443 	[CAM_CC_PLL4] = &cam_cc_pll4.clkr,
3444 	[CAM_CC_PLL4_OUT_EVEN] = &cam_cc_pll4_out_even.clkr,
3445 	[CAM_CC_PLL5] = &cam_cc_pll5.clkr,
3446 	[CAM_CC_PLL5_OUT_EVEN] = &cam_cc_pll5_out_even.clkr,
3447 	[CAM_CC_PLL6] = &cam_cc_pll6.clkr,
3448 	[CAM_CC_PLL6_OUT_EVEN] = &cam_cc_pll6_out_even.clkr,
3449 	[CAM_CC_PLL7] = &cam_cc_pll7.clkr,
3450 	[CAM_CC_PLL7_OUT_EVEN] = &cam_cc_pll7_out_even.clkr,
3451 	[CAM_CC_PLL8] = &cam_cc_pll8.clkr,
3452 	[CAM_CC_PLL8_OUT_EVEN] = &cam_cc_pll8_out_even.clkr,
3453 	[CAM_CC_PLL9] = &cam_cc_pll9.clkr,
3454 	[CAM_CC_PLL9_OUT_EVEN] = &cam_cc_pll9_out_even.clkr,
3455 	[CAM_CC_PLL10] = &cam_cc_pll10.clkr,
3456 	[CAM_CC_PLL10_OUT_EVEN] = &cam_cc_pll10_out_even.clkr,
3457 	[CAM_CC_PLL11] = &cam_cc_pll11.clkr,
3458 	[CAM_CC_PLL11_OUT_EVEN] = &cam_cc_pll11_out_even.clkr,
3459 	[CAM_CC_PLL12] = &cam_cc_pll12.clkr,
3460 	[CAM_CC_PLL12_OUT_EVEN] = &cam_cc_pll12_out_even.clkr,
3461 	[CAM_CC_QDSS_DEBUG_CLK] = &cam_cc_qdss_debug_clk.clkr,
3462 	[CAM_CC_QDSS_DEBUG_CLK_SRC] = &cam_cc_qdss_debug_clk_src.clkr,
3463 	[CAM_CC_QDSS_DEBUG_XO_CLK] = &cam_cc_qdss_debug_xo_clk.clkr,
3464 	[CAM_CC_SBI_CLK] = &cam_cc_sbi_clk.clkr,
3465 	[CAM_CC_SBI_FAST_AHB_CLK] = &cam_cc_sbi_fast_ahb_clk.clkr,
3466 	[CAM_CC_SFE_0_CLK] = &cam_cc_sfe_0_clk.clkr,
3467 	[CAM_CC_SFE_0_CLK_SRC] = &cam_cc_sfe_0_clk_src.clkr,
3468 	[CAM_CC_SFE_0_FAST_AHB_CLK] = &cam_cc_sfe_0_fast_ahb_clk.clkr,
3469 	[CAM_CC_SFE_1_CLK] = &cam_cc_sfe_1_clk.clkr,
3470 	[CAM_CC_SFE_1_CLK_SRC] = &cam_cc_sfe_1_clk_src.clkr,
3471 	[CAM_CC_SFE_1_FAST_AHB_CLK] = &cam_cc_sfe_1_fast_ahb_clk.clkr,
3472 	[CAM_CC_SLEEP_CLK_SRC] = &cam_cc_sleep_clk_src.clkr,
3473 	[CAM_CC_SLOW_AHB_CLK_SRC] = &cam_cc_slow_ahb_clk_src.clkr,
3474 	[CAM_CC_XO_CLK_SRC] = &cam_cc_xo_clk_src.clkr,
3475 };
3476 
3477 static struct gdsc *cam_cc_sm8550_gdscs[] = {
3478 	[CAM_CC_BPS_GDSC] = &cam_cc_bps_gdsc,
3479 	[CAM_CC_IFE_0_GDSC] = &cam_cc_ife_0_gdsc,
3480 	[CAM_CC_IFE_1_GDSC] = &cam_cc_ife_1_gdsc,
3481 	[CAM_CC_IFE_2_GDSC] = &cam_cc_ife_2_gdsc,
3482 	[CAM_CC_IPE_0_GDSC] = &cam_cc_ipe_0_gdsc,
3483 	[CAM_CC_SBI_GDSC] = &cam_cc_sbi_gdsc,
3484 	[CAM_CC_SFE_0_GDSC] = &cam_cc_sfe_0_gdsc,
3485 	[CAM_CC_SFE_1_GDSC] = &cam_cc_sfe_1_gdsc,
3486 	[CAM_CC_TITAN_TOP_GDSC] = &cam_cc_titan_top_gdsc,
3487 };
3488 
3489 static const struct qcom_reset_map cam_cc_sm8550_resets[] = {
3490 	[CAM_CC_BPS_BCR] = { 0x10000 },
3491 	[CAM_CC_DRV_BCR] = { 0x142d0 },
3492 	[CAM_CC_ICP_BCR] = { 0x137c0 },
3493 	[CAM_CC_IFE_0_BCR] = { 0x11000 },
3494 	[CAM_CC_IFE_1_BCR] = { 0x12000 },
3495 	[CAM_CC_IFE_2_BCR] = { 0x12290 },
3496 	[CAM_CC_IPE_0_BCR] = { 0x103b4 },
3497 	[CAM_CC_QDSS_DEBUG_BCR] = { 0x13f20 },
3498 	[CAM_CC_SBI_BCR] = { 0x10528 },
3499 	[CAM_CC_SFE_0_BCR] = { 0x1327c },
3500 	[CAM_CC_SFE_1_BCR] = { 0x133dc },
3501 };
3502 
3503 static struct clk_alpha_pll *cam_cc_sm8550_plls[] = {
3504 	&cam_cc_pll0,
3505 	&cam_cc_pll1,
3506 	&cam_cc_pll2,
3507 	&cam_cc_pll3,
3508 	&cam_cc_pll4,
3509 	&cam_cc_pll5,
3510 	&cam_cc_pll6,
3511 	&cam_cc_pll7,
3512 	&cam_cc_pll8,
3513 	&cam_cc_pll9,
3514 	&cam_cc_pll10,
3515 	&cam_cc_pll11,
3516 	&cam_cc_pll12,
3517 };
3518 
3519 static const u32 cam_cc_sm8550_critical_cbcrs[] = {
3520 	0x1419c, /* CAM_CC_GDSC_CLK */
3521 	0x142cc, /* CAM_CC_SLEEP_CLK */
3522 };
3523 
3524 static const struct regmap_config cam_cc_sm8550_regmap_config = {
3525 	.reg_bits = 32,
3526 	.reg_stride = 4,
3527 	.val_bits = 32,
3528 	.max_register = 0x16320,
3529 	.fast_io = true,
3530 };
3531 
3532 static const struct qcom_cc_driver_data cam_cc_sm8550_driver_data = {
3533 	.alpha_plls = cam_cc_sm8550_plls,
3534 	.num_alpha_plls = ARRAY_SIZE(cam_cc_sm8550_plls),
3535 	.clk_cbcrs = cam_cc_sm8550_critical_cbcrs,
3536 	.num_clk_cbcrs = ARRAY_SIZE(cam_cc_sm8550_critical_cbcrs),
3537 };
3538 
3539 static const struct qcom_cc_desc cam_cc_sm8550_desc = {
3540 	.config = &cam_cc_sm8550_regmap_config,
3541 	.clks = cam_cc_sm8550_clocks,
3542 	.num_clks = ARRAY_SIZE(cam_cc_sm8550_clocks),
3543 	.resets = cam_cc_sm8550_resets,
3544 	.num_resets = ARRAY_SIZE(cam_cc_sm8550_resets),
3545 	.gdscs = cam_cc_sm8550_gdscs,
3546 	.num_gdscs = ARRAY_SIZE(cam_cc_sm8550_gdscs),
3547 	.use_rpm = true,
3548 	.driver_data = &cam_cc_sm8550_driver_data,
3549 };
3550 
3551 static const struct of_device_id cam_cc_sm8550_match_table[] = {
3552 	{ .compatible = "qcom,sm8550-camcc" },
3553 	{ }
3554 };
3555 MODULE_DEVICE_TABLE(of, cam_cc_sm8550_match_table);
3556 
3557 static int cam_cc_sm8550_probe(struct platform_device *pdev)
3558 {
3559 	return qcom_cc_probe(pdev, &cam_cc_sm8550_desc);
3560 }
3561 
3562 static struct platform_driver cam_cc_sm8550_driver = {
3563 	.probe = cam_cc_sm8550_probe,
3564 	.driver = {
3565 		.name = "cam_cc-sm8550",
3566 		.of_match_table = cam_cc_sm8550_match_table,
3567 	},
3568 };
3569 
3570 module_platform_driver(cam_cc_sm8550_driver);
3571 
3572 MODULE_DESCRIPTION("QTI CAMCC SM8550 Driver");
3573 MODULE_LICENSE("GPL");
3574