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