1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
6 #include <linux/clk-provider.h>
7 #include <linux/mod_devicetable.h>
8 #include <linux/module.h>
9 #include <linux/platform_device.h>
10 #include <linux/pm_runtime.h>
11 #include <linux/regmap.h>
13 #include <dt-bindings/clock/qcom,sm8550-camcc.h>
15 #include "clk-alpha-pll.h"
16 #include "clk-branch.h"
18 #include "clk-regmap.h"
33 P_CAM_CC_PLL0_OUT_EVEN
,
34 P_CAM_CC_PLL0_OUT_MAIN
,
35 P_CAM_CC_PLL0_OUT_ODD
,
36 P_CAM_CC_PLL1_OUT_EVEN
,
37 P_CAM_CC_PLL2_OUT_EVEN
,
38 P_CAM_CC_PLL2_OUT_MAIN
,
39 P_CAM_CC_PLL3_OUT_EVEN
,
40 P_CAM_CC_PLL4_OUT_EVEN
,
41 P_CAM_CC_PLL5_OUT_EVEN
,
42 P_CAM_CC_PLL6_OUT_EVEN
,
43 P_CAM_CC_PLL7_OUT_EVEN
,
44 P_CAM_CC_PLL8_OUT_EVEN
,
45 P_CAM_CC_PLL9_OUT_EVEN
,
46 P_CAM_CC_PLL9_OUT_ODD
,
47 P_CAM_CC_PLL10_OUT_EVEN
,
48 P_CAM_CC_PLL11_OUT_EVEN
,
49 P_CAM_CC_PLL12_OUT_EVEN
,
53 static const struct pll_vco lucid_ole_vco
[] = {
54 { 249600000, 2300000000, 0 },
57 static const struct pll_vco rivian_ole_vco
[] = {
58 { 777000000, 1285000000, 0 },
61 static const struct alpha_pll_config cam_cc_pll0_config
= {
64 .config_ctl_val
= 0x20485699,
65 .config_ctl_hi_val
= 0x00182261,
66 .config_ctl_hi1_val
= 0x82aa299c,
67 .test_ctl_val
= 0x00000000,
68 .test_ctl_hi_val
= 0x00000003,
69 .test_ctl_hi1_val
= 0x00009000,
70 .test_ctl_hi2_val
= 0x00000034,
71 .user_ctl_val
= 0x00008400,
72 .user_ctl_hi_val
= 0x00000005,
75 static struct clk_alpha_pll cam_cc_pll0
= {
77 .vco_table
= lucid_ole_vco
,
78 .num_vco
= ARRAY_SIZE(lucid_ole_vco
),
79 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
81 .hw
.init
= &(const struct clk_init_data
) {
82 .name
= "cam_cc_pll0",
83 .parent_data
= &(const struct clk_parent_data
) {
87 .ops
= &clk_alpha_pll_lucid_evo_ops
,
92 static const struct clk_div_table post_div_table_cam_cc_pll0_out_even
[] = {
97 static struct clk_alpha_pll_postdiv cam_cc_pll0_out_even
= {
100 .post_div_table
= post_div_table_cam_cc_pll0_out_even
,
101 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll0_out_even
),
103 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
104 .clkr
.hw
.init
= &(const struct clk_init_data
) {
105 .name
= "cam_cc_pll0_out_even",
106 .parent_hws
= (const struct clk_hw
*[]) {
107 &cam_cc_pll0
.clkr
.hw
,
110 .flags
= CLK_SET_RATE_PARENT
,
111 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
115 static const struct clk_div_table post_div_table_cam_cc_pll0_out_odd
[] = {
120 static struct clk_alpha_pll_postdiv cam_cc_pll0_out_odd
= {
122 .post_div_shift
= 14,
123 .post_div_table
= post_div_table_cam_cc_pll0_out_odd
,
124 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll0_out_odd
),
126 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
127 .clkr
.hw
.init
= &(const struct clk_init_data
) {
128 .name
= "cam_cc_pll0_out_odd",
129 .parent_hws
= (const struct clk_hw
*[]) {
130 &cam_cc_pll0
.clkr
.hw
,
133 .flags
= CLK_SET_RATE_PARENT
,
134 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
138 static const struct alpha_pll_config cam_cc_pll1_config
= {
141 .config_ctl_val
= 0x20485699,
142 .config_ctl_hi_val
= 0x00182261,
143 .config_ctl_hi1_val
= 0x82aa299c,
144 .test_ctl_val
= 0x00000000,
145 .test_ctl_hi_val
= 0x00000003,
146 .test_ctl_hi1_val
= 0x00009000,
147 .test_ctl_hi2_val
= 0x00000034,
148 .user_ctl_val
= 0x00000400,
149 .user_ctl_hi_val
= 0x00000005,
152 static struct clk_alpha_pll cam_cc_pll1
= {
154 .vco_table
= lucid_ole_vco
,
155 .num_vco
= ARRAY_SIZE(lucid_ole_vco
),
156 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
158 .hw
.init
= &(const struct clk_init_data
) {
159 .name
= "cam_cc_pll1",
160 .parent_data
= &(const struct clk_parent_data
) {
164 .ops
= &clk_alpha_pll_lucid_evo_ops
,
169 static const struct clk_div_table post_div_table_cam_cc_pll1_out_even
[] = {
174 static struct clk_alpha_pll_postdiv cam_cc_pll1_out_even
= {
176 .post_div_shift
= 10,
177 .post_div_table
= post_div_table_cam_cc_pll1_out_even
,
178 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll1_out_even
),
180 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
181 .clkr
.hw
.init
= &(const struct clk_init_data
) {
182 .name
= "cam_cc_pll1_out_even",
183 .parent_hws
= (const struct clk_hw
*[]) {
184 &cam_cc_pll1
.clkr
.hw
,
187 .flags
= CLK_SET_RATE_PARENT
,
188 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
192 static const struct alpha_pll_config cam_cc_pll2_config
= {
195 .config_ctl_val
= 0x10000030,
196 .config_ctl_hi_val
= 0x80890263,
197 .config_ctl_hi1_val
= 0x00000217,
198 .user_ctl_val
= 0x00000000,
199 .user_ctl_hi_val
= 0x00100000,
202 static struct clk_alpha_pll cam_cc_pll2
= {
204 .vco_table
= rivian_ole_vco
,
205 .num_vco
= ARRAY_SIZE(rivian_ole_vco
),
206 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_RIVIAN_EVO
],
208 .hw
.init
= &(const struct clk_init_data
) {
209 .name
= "cam_cc_pll2",
210 .parent_data
= &(const struct clk_parent_data
) {
214 .ops
= &clk_alpha_pll_rivian_evo_ops
,
219 static const struct alpha_pll_config cam_cc_pll3_config
= {
222 .config_ctl_val
= 0x20485699,
223 .config_ctl_hi_val
= 0x00182261,
224 .config_ctl_hi1_val
= 0x82aa299c,
225 .test_ctl_val
= 0x00000000,
226 .test_ctl_hi_val
= 0x00000003,
227 .test_ctl_hi1_val
= 0x00009000,
228 .test_ctl_hi2_val
= 0x00000034,
229 .user_ctl_val
= 0x00000400,
230 .user_ctl_hi_val
= 0x00000005,
233 static struct clk_alpha_pll cam_cc_pll3
= {
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
],
239 .hw
.init
= &(const struct clk_init_data
) {
240 .name
= "cam_cc_pll3",
241 .parent_data
= &(const struct clk_parent_data
) {
245 .ops
= &clk_alpha_pll_lucid_evo_ops
,
250 static const struct clk_div_table post_div_table_cam_cc_pll3_out_even
[] = {
255 static struct clk_alpha_pll_postdiv cam_cc_pll3_out_even
= {
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
),
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
,
268 .flags
= CLK_SET_RATE_PARENT
,
269 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
273 static const struct alpha_pll_config cam_cc_pll4_config
= {
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,
287 static struct clk_alpha_pll cam_cc_pll4
= {
289 .vco_table
= lucid_ole_vco
,
290 .num_vco
= ARRAY_SIZE(lucid_ole_vco
),
291 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
293 .hw
.init
= &(const struct clk_init_data
) {
294 .name
= "cam_cc_pll4",
295 .parent_data
= &(const struct clk_parent_data
) {
299 .ops
= &clk_alpha_pll_lucid_evo_ops
,
304 static const struct clk_div_table post_div_table_cam_cc_pll4_out_even
[] = {
309 static struct clk_alpha_pll_postdiv cam_cc_pll4_out_even
= {
311 .post_div_shift
= 10,
312 .post_div_table
= post_div_table_cam_cc_pll4_out_even
,
313 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll4_out_even
),
315 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
316 .clkr
.hw
.init
= &(const struct clk_init_data
) {
317 .name
= "cam_cc_pll4_out_even",
318 .parent_hws
= (const struct clk_hw
*[]) {
319 &cam_cc_pll4
.clkr
.hw
,
322 .flags
= CLK_SET_RATE_PARENT
,
323 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
327 static const struct alpha_pll_config cam_cc_pll5_config
= {
330 .config_ctl_val
= 0x20485699,
331 .config_ctl_hi_val
= 0x00182261,
332 .config_ctl_hi1_val
= 0x82aa299c,
333 .test_ctl_val
= 0x00000000,
334 .test_ctl_hi_val
= 0x00000003,
335 .test_ctl_hi1_val
= 0x00009000,
336 .test_ctl_hi2_val
= 0x00000034,
337 .user_ctl_val
= 0x00000400,
338 .user_ctl_hi_val
= 0x00000005,
341 static struct clk_alpha_pll cam_cc_pll5
= {
343 .vco_table
= lucid_ole_vco
,
344 .num_vco
= ARRAY_SIZE(lucid_ole_vco
),
345 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
347 .hw
.init
= &(const struct clk_init_data
) {
348 .name
= "cam_cc_pll5",
349 .parent_data
= &(const struct clk_parent_data
) {
353 .ops
= &clk_alpha_pll_lucid_evo_ops
,
358 static const struct clk_div_table post_div_table_cam_cc_pll5_out_even
[] = {
363 static struct clk_alpha_pll_postdiv cam_cc_pll5_out_even
= {
365 .post_div_shift
= 10,
366 .post_div_table
= post_div_table_cam_cc_pll5_out_even
,
367 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll5_out_even
),
369 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
370 .clkr
.hw
.init
= &(const struct clk_init_data
) {
371 .name
= "cam_cc_pll5_out_even",
372 .parent_hws
= (const struct clk_hw
*[]) {
373 &cam_cc_pll5
.clkr
.hw
,
376 .flags
= CLK_SET_RATE_PARENT
,
377 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
381 static const struct alpha_pll_config cam_cc_pll6_config
= {
384 .config_ctl_val
= 0x20485699,
385 .config_ctl_hi_val
= 0x00182261,
386 .config_ctl_hi1_val
= 0x82aa299c,
387 .test_ctl_val
= 0x00000000,
388 .test_ctl_hi_val
= 0x00000003,
389 .test_ctl_hi1_val
= 0x00009000,
390 .test_ctl_hi2_val
= 0x00000034,
391 .user_ctl_val
= 0x00000400,
392 .user_ctl_hi_val
= 0x00000005,
395 static struct clk_alpha_pll cam_cc_pll6
= {
397 .vco_table
= lucid_ole_vco
,
398 .num_vco
= ARRAY_SIZE(lucid_ole_vco
),
399 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
401 .hw
.init
= &(const struct clk_init_data
) {
402 .name
= "cam_cc_pll6",
403 .parent_data
= &(const struct clk_parent_data
) {
407 .ops
= &clk_alpha_pll_lucid_evo_ops
,
412 static const struct clk_div_table post_div_table_cam_cc_pll6_out_even
[] = {
417 static struct clk_alpha_pll_postdiv cam_cc_pll6_out_even
= {
419 .post_div_shift
= 10,
420 .post_div_table
= post_div_table_cam_cc_pll6_out_even
,
421 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll6_out_even
),
423 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
424 .clkr
.hw
.init
= &(const struct clk_init_data
) {
425 .name
= "cam_cc_pll6_out_even",
426 .parent_hws
= (const struct clk_hw
*[]) {
427 &cam_cc_pll6
.clkr
.hw
,
430 .flags
= CLK_SET_RATE_PARENT
,
431 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
435 static const struct alpha_pll_config cam_cc_pll7_config
= {
438 .config_ctl_val
= 0x20485699,
439 .config_ctl_hi_val
= 0x00182261,
440 .config_ctl_hi1_val
= 0x82aa299c,
441 .test_ctl_val
= 0x00000000,
442 .test_ctl_hi_val
= 0x00000003,
443 .test_ctl_hi1_val
= 0x00009000,
444 .test_ctl_hi2_val
= 0x00000034,
445 .user_ctl_val
= 0x00000400,
446 .user_ctl_hi_val
= 0x00000005,
449 static struct clk_alpha_pll cam_cc_pll7
= {
451 .vco_table
= lucid_ole_vco
,
452 .num_vco
= ARRAY_SIZE(lucid_ole_vco
),
453 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
455 .hw
.init
= &(const struct clk_init_data
) {
456 .name
= "cam_cc_pll7",
457 .parent_data
= &(const struct clk_parent_data
) {
461 .ops
= &clk_alpha_pll_lucid_evo_ops
,
466 static const struct clk_div_table post_div_table_cam_cc_pll7_out_even
[] = {
471 static struct clk_alpha_pll_postdiv cam_cc_pll7_out_even
= {
473 .post_div_shift
= 10,
474 .post_div_table
= post_div_table_cam_cc_pll7_out_even
,
475 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll7_out_even
),
477 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
478 .clkr
.hw
.init
= &(const struct clk_init_data
) {
479 .name
= "cam_cc_pll7_out_even",
480 .parent_hws
= (const struct clk_hw
*[]) {
481 &cam_cc_pll7
.clkr
.hw
,
484 .flags
= CLK_SET_RATE_PARENT
,
485 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
489 static const struct alpha_pll_config cam_cc_pll8_config
= {
492 .config_ctl_val
= 0x20485699,
493 .config_ctl_hi_val
= 0x00182261,
494 .config_ctl_hi1_val
= 0x82aa299c,
495 .test_ctl_val
= 0x00000000,
496 .test_ctl_hi_val
= 0x00000003,
497 .test_ctl_hi1_val
= 0x00009000,
498 .test_ctl_hi2_val
= 0x00000034,
499 .user_ctl_val
= 0x00000400,
500 .user_ctl_hi_val
= 0x00000005,
503 static struct clk_alpha_pll cam_cc_pll8
= {
505 .vco_table
= lucid_ole_vco
,
506 .num_vco
= ARRAY_SIZE(lucid_ole_vco
),
507 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
509 .hw
.init
= &(const struct clk_init_data
) {
510 .name
= "cam_cc_pll8",
511 .parent_data
= &(const struct clk_parent_data
) {
515 .ops
= &clk_alpha_pll_lucid_evo_ops
,
520 static const struct clk_div_table post_div_table_cam_cc_pll8_out_even
[] = {
525 static struct clk_alpha_pll_postdiv cam_cc_pll8_out_even
= {
527 .post_div_shift
= 10,
528 .post_div_table
= post_div_table_cam_cc_pll8_out_even
,
529 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll8_out_even
),
531 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
532 .clkr
.hw
.init
= &(const struct clk_init_data
) {
533 .name
= "cam_cc_pll8_out_even",
534 .parent_hws
= (const struct clk_hw
*[]) {
535 &cam_cc_pll8
.clkr
.hw
,
538 .flags
= CLK_SET_RATE_PARENT
,
539 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
543 static const struct alpha_pll_config cam_cc_pll9_config
= {
546 .config_ctl_val
= 0x20485699,
547 .config_ctl_hi_val
= 0x00182261,
548 .config_ctl_hi1_val
= 0x82aa299c,
549 .test_ctl_val
= 0x00000000,
550 .test_ctl_hi_val
= 0x00000003,
551 .test_ctl_hi1_val
= 0x00009000,
552 .test_ctl_hi2_val
= 0x00000034,
553 .user_ctl_val
= 0x00000400,
554 .user_ctl_hi_val
= 0x00000005,
557 static struct clk_alpha_pll cam_cc_pll9
= {
559 .vco_table
= lucid_ole_vco
,
560 .num_vco
= ARRAY_SIZE(lucid_ole_vco
),
561 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
563 .hw
.init
= &(const struct clk_init_data
) {
564 .name
= "cam_cc_pll9",
565 .parent_data
= &(const struct clk_parent_data
) {
569 .ops
= &clk_alpha_pll_lucid_evo_ops
,
574 static const struct clk_div_table post_div_table_cam_cc_pll9_out_even
[] = {
579 static struct clk_alpha_pll_postdiv cam_cc_pll9_out_even
= {
581 .post_div_shift
= 10,
582 .post_div_table
= post_div_table_cam_cc_pll9_out_even
,
583 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll9_out_even
),
585 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
586 .clkr
.hw
.init
= &(const struct clk_init_data
) {
587 .name
= "cam_cc_pll9_out_even",
588 .parent_hws
= (const struct clk_hw
*[]) {
589 &cam_cc_pll9
.clkr
.hw
,
592 .flags
= CLK_SET_RATE_PARENT
,
593 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
597 static const struct alpha_pll_config cam_cc_pll10_config
= {
600 .config_ctl_val
= 0x20485699,
601 .config_ctl_hi_val
= 0x00182261,
602 .config_ctl_hi1_val
= 0x82aa299c,
603 .test_ctl_val
= 0x00000000,
604 .test_ctl_hi_val
= 0x00000003,
605 .test_ctl_hi1_val
= 0x00009000,
606 .test_ctl_hi2_val
= 0x00000034,
607 .user_ctl_val
= 0x00000400,
608 .user_ctl_hi_val
= 0x00000005,
611 static struct clk_alpha_pll cam_cc_pll10
= {
613 .vco_table
= lucid_ole_vco
,
614 .num_vco
= ARRAY_SIZE(lucid_ole_vco
),
615 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
617 .hw
.init
= &(const struct clk_init_data
) {
618 .name
= "cam_cc_pll10",
619 .parent_data
= &(const struct clk_parent_data
) {
623 .ops
= &clk_alpha_pll_lucid_evo_ops
,
628 static const struct clk_div_table post_div_table_cam_cc_pll10_out_even
[] = {
633 static struct clk_alpha_pll_postdiv cam_cc_pll10_out_even
= {
635 .post_div_shift
= 10,
636 .post_div_table
= post_div_table_cam_cc_pll10_out_even
,
637 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll10_out_even
),
639 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
640 .clkr
.hw
.init
= &(const struct clk_init_data
) {
641 .name
= "cam_cc_pll10_out_even",
642 .parent_hws
= (const struct clk_hw
*[]) {
643 &cam_cc_pll10
.clkr
.hw
,
646 .flags
= CLK_SET_RATE_PARENT
,
647 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
651 static const struct alpha_pll_config cam_cc_pll11_config
= {
654 .config_ctl_val
= 0x20485699,
655 .config_ctl_hi_val
= 0x00182261,
656 .config_ctl_hi1_val
= 0x82aa299c,
657 .test_ctl_val
= 0x00000000,
658 .test_ctl_hi_val
= 0x00000003,
659 .test_ctl_hi1_val
= 0x00009000,
660 .test_ctl_hi2_val
= 0x00000034,
661 .user_ctl_val
= 0x00000400,
662 .user_ctl_hi_val
= 0x00000005,
665 static struct clk_alpha_pll cam_cc_pll11
= {
667 .vco_table
= lucid_ole_vco
,
668 .num_vco
= ARRAY_SIZE(lucid_ole_vco
),
669 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
671 .hw
.init
= &(const struct clk_init_data
) {
672 .name
= "cam_cc_pll11",
673 .parent_data
= &(const struct clk_parent_data
) {
677 .ops
= &clk_alpha_pll_lucid_evo_ops
,
682 static const struct clk_div_table post_div_table_cam_cc_pll11_out_even
[] = {
687 static struct clk_alpha_pll_postdiv cam_cc_pll11_out_even
= {
689 .post_div_shift
= 10,
690 .post_div_table
= post_div_table_cam_cc_pll11_out_even
,
691 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll11_out_even
),
693 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
694 .clkr
.hw
.init
= &(const struct clk_init_data
) {
695 .name
= "cam_cc_pll11_out_even",
696 .parent_hws
= (const struct clk_hw
*[]) {
697 &cam_cc_pll11
.clkr
.hw
,
700 .flags
= CLK_SET_RATE_PARENT
,
701 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
705 static const struct alpha_pll_config cam_cc_pll12_config
= {
708 .config_ctl_val
= 0x20485699,
709 .config_ctl_hi_val
= 0x00182261,
710 .config_ctl_hi1_val
= 0x82aa299c,
711 .test_ctl_val
= 0x00000000,
712 .test_ctl_hi_val
= 0x00000003,
713 .test_ctl_hi1_val
= 0x00009000,
714 .test_ctl_hi2_val
= 0x00000034,
715 .user_ctl_val
= 0x00000400,
716 .user_ctl_hi_val
= 0x00000005,
719 static struct clk_alpha_pll cam_cc_pll12
= {
721 .vco_table
= lucid_ole_vco
,
722 .num_vco
= ARRAY_SIZE(lucid_ole_vco
),
723 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
725 .hw
.init
= &(const struct clk_init_data
) {
726 .name
= "cam_cc_pll12",
727 .parent_data
= &(const struct clk_parent_data
) {
731 .ops
= &clk_alpha_pll_lucid_evo_ops
,
736 static const struct clk_div_table post_div_table_cam_cc_pll12_out_even
[] = {
741 static struct clk_alpha_pll_postdiv cam_cc_pll12_out_even
= {
743 .post_div_shift
= 10,
744 .post_div_table
= post_div_table_cam_cc_pll12_out_even
,
745 .num_post_div
= ARRAY_SIZE(post_div_table_cam_cc_pll12_out_even
),
747 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_LUCID_OLE
],
748 .clkr
.hw
.init
= &(const struct clk_init_data
) {
749 .name
= "cam_cc_pll12_out_even",
750 .parent_hws
= (const struct clk_hw
*[]) {
751 &cam_cc_pll12
.clkr
.hw
,
754 .flags
= CLK_SET_RATE_PARENT
,
755 .ops
= &clk_alpha_pll_postdiv_lucid_ole_ops
,
759 static const struct parent_map cam_cc_parent_map_0
[] = {
761 { P_CAM_CC_PLL0_OUT_MAIN
, 1 },
762 { P_CAM_CC_PLL0_OUT_EVEN
, 2 },
763 { P_CAM_CC_PLL0_OUT_ODD
, 3 },
764 { P_CAM_CC_PLL9_OUT_ODD
, 4 },
765 { P_CAM_CC_PLL9_OUT_EVEN
, 5 },
768 static const struct clk_parent_data cam_cc_parent_data_0
[] = {
769 { .index
= DT_BI_TCXO
},
770 { .hw
= &cam_cc_pll0
.clkr
.hw
},
771 { .hw
= &cam_cc_pll0_out_even
.clkr
.hw
},
772 { .hw
= &cam_cc_pll0_out_odd
.clkr
.hw
},
773 { .hw
= &cam_cc_pll9
.clkr
.hw
},
774 { .hw
= &cam_cc_pll9_out_even
.clkr
.hw
},
777 static const struct parent_map cam_cc_parent_map_1
[] = {
779 { P_CAM_CC_PLL2_OUT_EVEN
, 3 },
780 { P_CAM_CC_PLL2_OUT_MAIN
, 5 },
783 static const struct clk_parent_data cam_cc_parent_data_1
[] = {
784 { .index
= DT_BI_TCXO
},
785 { .hw
= &cam_cc_pll2
.clkr
.hw
},
786 { .hw
= &cam_cc_pll2
.clkr
.hw
},
789 static const struct parent_map cam_cc_parent_map_2
[] = {
791 { P_CAM_CC_PLL8_OUT_EVEN
, 6 },
794 static const struct clk_parent_data cam_cc_parent_data_2
[] = {
795 { .index
= DT_BI_TCXO
},
796 { .hw
= &cam_cc_pll8_out_even
.clkr
.hw
},
799 static const struct parent_map cam_cc_parent_map_3
[] = {
801 { P_CAM_CC_PLL3_OUT_EVEN
, 6 },
804 static const struct clk_parent_data cam_cc_parent_data_3
[] = {
805 { .index
= DT_BI_TCXO
},
806 { .hw
= &cam_cc_pll3_out_even
.clkr
.hw
},
809 static const struct parent_map cam_cc_parent_map_4
[] = {
811 { P_CAM_CC_PLL10_OUT_EVEN
, 6 },
814 static const struct clk_parent_data cam_cc_parent_data_4
[] = {
815 { .index
= DT_BI_TCXO
},
816 { .hw
= &cam_cc_pll10_out_even
.clkr
.hw
},
819 static const struct parent_map cam_cc_parent_map_5
[] = {
821 { P_CAM_CC_PLL4_OUT_EVEN
, 6 },
824 static const struct clk_parent_data cam_cc_parent_data_5
[] = {
825 { .index
= DT_BI_TCXO
},
826 { .hw
= &cam_cc_pll4_out_even
.clkr
.hw
},
829 static const struct parent_map cam_cc_parent_map_6
[] = {
831 { P_CAM_CC_PLL11_OUT_EVEN
, 6 },
834 static const struct clk_parent_data cam_cc_parent_data_6
[] = {
835 { .index
= DT_BI_TCXO
},
836 { .hw
= &cam_cc_pll11_out_even
.clkr
.hw
},
839 static const struct parent_map cam_cc_parent_map_7
[] = {
841 { P_CAM_CC_PLL5_OUT_EVEN
, 6 },
844 static const struct clk_parent_data cam_cc_parent_data_7
[] = {
845 { .index
= DT_BI_TCXO
},
846 { .hw
= &cam_cc_pll5_out_even
.clkr
.hw
},
849 static const struct parent_map cam_cc_parent_map_8
[] = {
851 { P_CAM_CC_PLL12_OUT_EVEN
, 6 },
854 static const struct clk_parent_data cam_cc_parent_data_8
[] = {
855 { .index
= DT_BI_TCXO
},
856 { .hw
= &cam_cc_pll12_out_even
.clkr
.hw
},
859 static const struct parent_map cam_cc_parent_map_9
[] = {
861 { P_CAM_CC_PLL1_OUT_EVEN
, 4 },
864 static const struct clk_parent_data cam_cc_parent_data_9
[] = {
865 { .index
= DT_BI_TCXO
},
866 { .hw
= &cam_cc_pll1_out_even
.clkr
.hw
},
869 static const struct parent_map cam_cc_parent_map_10
[] = {
871 { P_CAM_CC_PLL6_OUT_EVEN
, 6 },
874 static const struct clk_parent_data cam_cc_parent_data_10
[] = {
875 { .index
= DT_BI_TCXO
},
876 { .hw
= &cam_cc_pll6_out_even
.clkr
.hw
},
879 static const struct parent_map cam_cc_parent_map_11
[] = {
881 { P_CAM_CC_PLL7_OUT_EVEN
, 6 },
884 static const struct clk_parent_data cam_cc_parent_data_11
[] = {
885 { .index
= DT_BI_TCXO
},
886 { .hw
= &cam_cc_pll7_out_even
.clkr
.hw
},
889 static const struct parent_map cam_cc_parent_map_12
[] = {
893 static const struct clk_parent_data cam_cc_parent_data_12
[] = {
894 { .index
= DT_SLEEP_CLK
},
897 static const struct parent_map cam_cc_parent_map_13_ao
[] = {
901 static const struct clk_parent_data cam_cc_parent_data_13_ao
[] = {
902 { .index
= DT_BI_TCXO_AO
},
905 static const struct freq_tbl ftbl_cam_cc_bps_clk_src
[] = {
906 F(19200000, P_BI_TCXO
, 1, 0, 0),
907 F(200000000, P_CAM_CC_PLL8_OUT_EVEN
, 1, 0, 0),
908 F(400000000, P_CAM_CC_PLL8_OUT_EVEN
, 1, 0, 0),
909 F(480000000, P_CAM_CC_PLL8_OUT_EVEN
, 1, 0, 0),
910 F(785000000, P_CAM_CC_PLL8_OUT_EVEN
, 1, 0, 0),
914 static struct clk_rcg2 cam_cc_bps_clk_src
= {
918 .parent_map
= cam_cc_parent_map_2
,
919 .freq_tbl
= ftbl_cam_cc_bps_clk_src
,
920 .clkr
.hw
.init
= &(const struct clk_init_data
) {
921 .name
= "cam_cc_bps_clk_src",
922 .parent_data
= cam_cc_parent_data_2
,
923 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_2
),
924 .flags
= CLK_SET_RATE_PARENT
,
925 .ops
= &clk_rcg2_shared_ops
,
929 static const struct freq_tbl ftbl_cam_cc_camnoc_axi_clk_src
[] = {
930 F(19200000, P_BI_TCXO
, 1, 0, 0),
931 F(300000000, P_CAM_CC_PLL0_OUT_EVEN
, 2, 0, 0),
932 F(400000000, P_CAM_CC_PLL0_OUT_ODD
, 1, 0, 0),
936 static struct clk_rcg2 cam_cc_camnoc_axi_clk_src
= {
940 .parent_map
= cam_cc_parent_map_0
,
941 .freq_tbl
= ftbl_cam_cc_camnoc_axi_clk_src
,
942 .clkr
.hw
.init
= &(const struct clk_init_data
) {
943 .name
= "cam_cc_camnoc_axi_clk_src",
944 .parent_data
= cam_cc_parent_data_0
,
945 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
946 .flags
= CLK_SET_RATE_PARENT
,
947 .ops
= &clk_rcg2_shared_ops
,
951 static const struct freq_tbl ftbl_cam_cc_cci_0_clk_src
[] = {
952 F(19200000, P_BI_TCXO
, 1, 0, 0),
953 F(37500000, P_CAM_CC_PLL0_OUT_EVEN
, 16, 0, 0),
957 static struct clk_rcg2 cam_cc_cci_0_clk_src
= {
961 .parent_map
= cam_cc_parent_map_0
,
962 .freq_tbl
= ftbl_cam_cc_cci_0_clk_src
,
963 .clkr
.hw
.init
= &(const struct clk_init_data
) {
964 .name
= "cam_cc_cci_0_clk_src",
965 .parent_data
= cam_cc_parent_data_0
,
966 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
967 .flags
= CLK_SET_RATE_PARENT
,
968 .ops
= &clk_rcg2_shared_ops
,
972 static struct clk_rcg2 cam_cc_cci_1_clk_src
= {
976 .parent_map
= cam_cc_parent_map_0
,
977 .freq_tbl
= ftbl_cam_cc_cci_0_clk_src
,
978 .clkr
.hw
.init
= &(const struct clk_init_data
) {
979 .name
= "cam_cc_cci_1_clk_src",
980 .parent_data
= cam_cc_parent_data_0
,
981 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
982 .flags
= CLK_SET_RATE_PARENT
,
983 .ops
= &clk_rcg2_shared_ops
,
987 static struct clk_rcg2 cam_cc_cci_2_clk_src
= {
991 .parent_map
= cam_cc_parent_map_0
,
992 .freq_tbl
= ftbl_cam_cc_cci_0_clk_src
,
993 .clkr
.hw
.init
= &(const struct clk_init_data
) {
994 .name
= "cam_cc_cci_2_clk_src",
995 .parent_data
= cam_cc_parent_data_0
,
996 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
997 .flags
= CLK_SET_RATE_PARENT
,
998 .ops
= &clk_rcg2_shared_ops
,
1002 static const struct freq_tbl ftbl_cam_cc_cphy_rx_clk_src
[] = {
1003 F(19200000, P_BI_TCXO
, 1, 0, 0),
1004 F(400000000, P_CAM_CC_PLL0_OUT_MAIN
, 3, 0, 0),
1005 F(480000000, P_CAM_CC_PLL0_OUT_MAIN
, 2.5, 0, 0),
1009 static struct clk_rcg2 cam_cc_cphy_rx_clk_src
= {
1010 .cmd_rcgr
= 0x11290,
1013 .parent_map
= cam_cc_parent_map_0
,
1014 .freq_tbl
= ftbl_cam_cc_cphy_rx_clk_src
,
1015 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1016 .name
= "cam_cc_cphy_rx_clk_src",
1017 .parent_data
= cam_cc_parent_data_0
,
1018 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1019 .flags
= CLK_SET_RATE_PARENT
,
1020 .ops
= &clk_rcg2_shared_ops
,
1024 static const struct freq_tbl ftbl_cam_cc_cre_clk_src
[] = {
1025 F(200000000, P_CAM_CC_PLL0_OUT_ODD
, 2, 0, 0),
1026 F(400000000, P_CAM_CC_PLL0_OUT_ODD
, 1, 0, 0),
1027 F(480000000, P_CAM_CC_PLL9_OUT_EVEN
, 1, 0, 0),
1028 F(600000000, P_CAM_CC_PLL0_OUT_EVEN
, 1, 0, 0),
1032 static struct clk_rcg2 cam_cc_cre_clk_src
= {
1033 .cmd_rcgr
= 0x1353c,
1036 .parent_map
= cam_cc_parent_map_0
,
1037 .freq_tbl
= ftbl_cam_cc_cre_clk_src
,
1038 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1039 .name
= "cam_cc_cre_clk_src",
1040 .parent_data
= cam_cc_parent_data_0
,
1041 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1042 .flags
= CLK_SET_RATE_PARENT
,
1043 .ops
= &clk_rcg2_shared_ops
,
1047 static const struct freq_tbl ftbl_cam_cc_csi0phytimer_clk_src
[] = {
1048 F(19200000, P_BI_TCXO
, 1, 0, 0),
1049 F(400000000, P_CAM_CC_PLL0_OUT_EVEN
, 1.5, 0, 0),
1053 static struct clk_rcg2 cam_cc_csi0phytimer_clk_src
= {
1054 .cmd_rcgr
= 0x15980,
1057 .parent_map
= cam_cc_parent_map_0
,
1058 .freq_tbl
= ftbl_cam_cc_csi0phytimer_clk_src
,
1059 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1060 .name
= "cam_cc_csi0phytimer_clk_src",
1061 .parent_data
= cam_cc_parent_data_0
,
1062 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1063 .flags
= CLK_SET_RATE_PARENT
,
1064 .ops
= &clk_rcg2_shared_ops
,
1068 static struct clk_rcg2 cam_cc_csi1phytimer_clk_src
= {
1069 .cmd_rcgr
= 0x15ab8,
1072 .parent_map
= cam_cc_parent_map_0
,
1073 .freq_tbl
= ftbl_cam_cc_csi0phytimer_clk_src
,
1074 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1075 .name
= "cam_cc_csi1phytimer_clk_src",
1076 .parent_data
= cam_cc_parent_data_0
,
1077 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1078 .flags
= CLK_SET_RATE_PARENT
,
1079 .ops
= &clk_rcg2_shared_ops
,
1083 static struct clk_rcg2 cam_cc_csi2phytimer_clk_src
= {
1084 .cmd_rcgr
= 0x15bec,
1087 .parent_map
= cam_cc_parent_map_0
,
1088 .freq_tbl
= ftbl_cam_cc_csi0phytimer_clk_src
,
1089 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1090 .name
= "cam_cc_csi2phytimer_clk_src",
1091 .parent_data
= cam_cc_parent_data_0
,
1092 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1093 .flags
= CLK_SET_RATE_PARENT
,
1094 .ops
= &clk_rcg2_shared_ops
,
1098 static struct clk_rcg2 cam_cc_csi3phytimer_clk_src
= {
1099 .cmd_rcgr
= 0x15d20,
1102 .parent_map
= cam_cc_parent_map_0
,
1103 .freq_tbl
= ftbl_cam_cc_csi0phytimer_clk_src
,
1104 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1105 .name
= "cam_cc_csi3phytimer_clk_src",
1106 .parent_data
= cam_cc_parent_data_0
,
1107 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1108 .flags
= CLK_SET_RATE_PARENT
,
1109 .ops
= &clk_rcg2_shared_ops
,
1113 static const struct freq_tbl ftbl_cam_cc_csi4phytimer_clk_src
[] = {
1114 F(19200000, P_BI_TCXO
, 1, 0, 0),
1115 F(400000000, P_CAM_CC_PLL0_OUT_ODD
, 1, 0, 0),
1119 static struct clk_rcg2 cam_cc_csi4phytimer_clk_src
= {
1120 .cmd_rcgr
= 0x15e54,
1123 .parent_map
= cam_cc_parent_map_0
,
1124 .freq_tbl
= ftbl_cam_cc_csi4phytimer_clk_src
,
1125 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1126 .name
= "cam_cc_csi4phytimer_clk_src",
1127 .parent_data
= cam_cc_parent_data_0
,
1128 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1129 .flags
= CLK_SET_RATE_PARENT
,
1130 .ops
= &clk_rcg2_shared_ops
,
1134 static struct clk_rcg2 cam_cc_csi5phytimer_clk_src
= {
1135 .cmd_rcgr
= 0x15f88,
1138 .parent_map
= cam_cc_parent_map_0
,
1139 .freq_tbl
= ftbl_cam_cc_csi0phytimer_clk_src
,
1140 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1141 .name
= "cam_cc_csi5phytimer_clk_src",
1142 .parent_data
= cam_cc_parent_data_0
,
1143 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1144 .flags
= CLK_SET_RATE_PARENT
,
1145 .ops
= &clk_rcg2_shared_ops
,
1149 static struct clk_rcg2 cam_cc_csi6phytimer_clk_src
= {
1150 .cmd_rcgr
= 0x160bc,
1153 .parent_map
= cam_cc_parent_map_0
,
1154 .freq_tbl
= ftbl_cam_cc_csi0phytimer_clk_src
,
1155 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1156 .name
= "cam_cc_csi6phytimer_clk_src",
1157 .parent_data
= cam_cc_parent_data_0
,
1158 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1159 .flags
= CLK_SET_RATE_PARENT
,
1160 .ops
= &clk_rcg2_shared_ops
,
1164 static struct clk_rcg2 cam_cc_csi7phytimer_clk_src
= {
1165 .cmd_rcgr
= 0x161f0,
1168 .parent_map
= cam_cc_parent_map_0
,
1169 .freq_tbl
= ftbl_cam_cc_csi0phytimer_clk_src
,
1170 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1171 .name
= "cam_cc_csi7phytimer_clk_src",
1172 .parent_data
= cam_cc_parent_data_0
,
1173 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1174 .flags
= CLK_SET_RATE_PARENT
,
1175 .ops
= &clk_rcg2_shared_ops
,
1179 static const struct freq_tbl ftbl_cam_cc_csid_clk_src
[] = {
1180 F(400000000, P_CAM_CC_PLL0_OUT_MAIN
, 3, 0, 0),
1181 F(480000000, P_CAM_CC_PLL0_OUT_MAIN
, 2.5, 0, 0),
1185 static struct clk_rcg2 cam_cc_csid_clk_src
= {
1186 .cmd_rcgr
= 0x13ca8,
1189 .parent_map
= cam_cc_parent_map_0
,
1190 .freq_tbl
= ftbl_cam_cc_csid_clk_src
,
1191 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1192 .name
= "cam_cc_csid_clk_src",
1193 .parent_data
= cam_cc_parent_data_0
,
1194 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1195 .flags
= CLK_SET_RATE_PARENT
,
1196 .ops
= &clk_rcg2_shared_ops
,
1200 static const struct freq_tbl ftbl_cam_cc_fast_ahb_clk_src
[] = {
1201 F(19200000, P_BI_TCXO
, 1, 0, 0),
1202 F(300000000, P_CAM_CC_PLL0_OUT_EVEN
, 2, 0, 0),
1203 F(400000000, P_CAM_CC_PLL0_OUT_MAIN
, 3, 0, 0),
1207 static struct clk_rcg2 cam_cc_fast_ahb_clk_src
= {
1208 .cmd_rcgr
= 0x10018,
1211 .parent_map
= cam_cc_parent_map_0
,
1212 .freq_tbl
= ftbl_cam_cc_fast_ahb_clk_src
,
1213 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1214 .name
= "cam_cc_fast_ahb_clk_src",
1215 .parent_data
= cam_cc_parent_data_0
,
1216 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1217 .flags
= CLK_SET_RATE_PARENT
,
1218 .ops
= &clk_rcg2_shared_ops
,
1222 static const struct freq_tbl ftbl_cam_cc_icp_clk_src
[] = {
1223 F(19200000, P_BI_TCXO
, 1, 0, 0),
1224 F(400000000, P_CAM_CC_PLL0_OUT_ODD
, 1, 0, 0),
1225 F(480000000, P_CAM_CC_PLL9_OUT_EVEN
, 1, 0, 0),
1226 F(600000000, P_CAM_CC_PLL0_OUT_MAIN
, 2, 0, 0),
1230 static struct clk_rcg2 cam_cc_icp_clk_src
= {
1231 .cmd_rcgr
= 0x137c4,
1234 .parent_map
= cam_cc_parent_map_0
,
1235 .freq_tbl
= ftbl_cam_cc_icp_clk_src
,
1236 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1237 .name
= "cam_cc_icp_clk_src",
1238 .parent_data
= cam_cc_parent_data_0
,
1239 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1240 .flags
= CLK_SET_RATE_PARENT
,
1241 .ops
= &clk_rcg2_shared_ops
,
1245 static const struct freq_tbl ftbl_cam_cc_ife_0_clk_src
[] = {
1246 F(19200000, P_BI_TCXO
, 1, 0, 0),
1247 F(466000000, P_CAM_CC_PLL3_OUT_EVEN
, 1, 0, 0),
1248 F(594000000, P_CAM_CC_PLL3_OUT_EVEN
, 1, 0, 0),
1249 F(675000000, P_CAM_CC_PLL3_OUT_EVEN
, 1, 0, 0),
1250 F(785000000, P_CAM_CC_PLL3_OUT_EVEN
, 1, 0, 0),
1254 static struct clk_rcg2 cam_cc_ife_0_clk_src
= {
1255 .cmd_rcgr
= 0x11018,
1258 .parent_map
= cam_cc_parent_map_3
,
1259 .freq_tbl
= ftbl_cam_cc_ife_0_clk_src
,
1260 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1261 .name
= "cam_cc_ife_0_clk_src",
1262 .parent_data
= cam_cc_parent_data_3
,
1263 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_3
),
1264 .flags
= CLK_SET_RATE_PARENT
,
1265 .ops
= &clk_rcg2_shared_ops
,
1269 static const struct freq_tbl ftbl_cam_cc_ife_0_dsp_clk_src
[] = {
1270 F(466000000, P_CAM_CC_PLL10_OUT_EVEN
, 1, 0, 0),
1271 F(594000000, P_CAM_CC_PLL10_OUT_EVEN
, 1, 0, 0),
1272 F(675000000, P_CAM_CC_PLL10_OUT_EVEN
, 1, 0, 0),
1273 F(785000000, P_CAM_CC_PLL10_OUT_EVEN
, 1, 0, 0),
1277 static struct clk_rcg2 cam_cc_ife_0_dsp_clk_src
= {
1278 .cmd_rcgr
= 0x11154,
1281 .parent_map
= cam_cc_parent_map_4
,
1282 .freq_tbl
= ftbl_cam_cc_ife_0_dsp_clk_src
,
1283 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1284 .name
= "cam_cc_ife_0_dsp_clk_src",
1285 .parent_data
= cam_cc_parent_data_4
,
1286 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_4
),
1287 .flags
= CLK_SET_RATE_PARENT
,
1288 .ops
= &clk_rcg2_shared_ops
,
1292 static const struct freq_tbl ftbl_cam_cc_ife_1_clk_src
[] = {
1293 F(19200000, P_BI_TCXO
, 1, 0, 0),
1294 F(466000000, P_CAM_CC_PLL4_OUT_EVEN
, 1, 0, 0),
1295 F(594000000, P_CAM_CC_PLL4_OUT_EVEN
, 1, 0, 0),
1296 F(675000000, P_CAM_CC_PLL4_OUT_EVEN
, 1, 0, 0),
1297 F(785000000, P_CAM_CC_PLL4_OUT_EVEN
, 1, 0, 0),
1301 static struct clk_rcg2 cam_cc_ife_1_clk_src
= {
1302 .cmd_rcgr
= 0x12018,
1305 .parent_map
= cam_cc_parent_map_5
,
1306 .freq_tbl
= ftbl_cam_cc_ife_1_clk_src
,
1307 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1308 .name
= "cam_cc_ife_1_clk_src",
1309 .parent_data
= cam_cc_parent_data_5
,
1310 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_5
),
1311 .flags
= CLK_SET_RATE_PARENT
,
1312 .ops
= &clk_rcg2_shared_ops
,
1316 static const struct freq_tbl ftbl_cam_cc_ife_1_dsp_clk_src
[] = {
1317 F(466000000, P_CAM_CC_PLL11_OUT_EVEN
, 1, 0, 0),
1318 F(594000000, P_CAM_CC_PLL11_OUT_EVEN
, 1, 0, 0),
1319 F(675000000, P_CAM_CC_PLL11_OUT_EVEN
, 1, 0, 0),
1320 F(785000000, P_CAM_CC_PLL11_OUT_EVEN
, 1, 0, 0),
1324 static struct clk_rcg2 cam_cc_ife_1_dsp_clk_src
= {
1325 .cmd_rcgr
= 0x12154,
1328 .parent_map
= cam_cc_parent_map_6
,
1329 .freq_tbl
= ftbl_cam_cc_ife_1_dsp_clk_src
,
1330 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1331 .name
= "cam_cc_ife_1_dsp_clk_src",
1332 .parent_data
= cam_cc_parent_data_6
,
1333 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_6
),
1334 .flags
= CLK_SET_RATE_PARENT
,
1335 .ops
= &clk_rcg2_shared_ops
,
1339 static const struct freq_tbl ftbl_cam_cc_ife_2_clk_src
[] = {
1340 F(466000000, P_CAM_CC_PLL5_OUT_EVEN
, 1, 0, 0),
1341 F(594000000, P_CAM_CC_PLL5_OUT_EVEN
, 1, 0, 0),
1342 F(675000000, P_CAM_CC_PLL5_OUT_EVEN
, 1, 0, 0),
1343 F(785000000, P_CAM_CC_PLL5_OUT_EVEN
, 1, 0, 0),
1347 static struct clk_rcg2 cam_cc_ife_2_clk_src
= {
1348 .cmd_rcgr
= 0x122a8,
1351 .parent_map
= cam_cc_parent_map_7
,
1352 .freq_tbl
= ftbl_cam_cc_ife_2_clk_src
,
1353 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1354 .name
= "cam_cc_ife_2_clk_src",
1355 .parent_data
= cam_cc_parent_data_7
,
1356 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_7
),
1357 .flags
= CLK_SET_RATE_PARENT
,
1358 .ops
= &clk_rcg2_shared_ops
,
1362 static const struct freq_tbl ftbl_cam_cc_ife_2_dsp_clk_src
[] = {
1363 F(466000000, P_CAM_CC_PLL12_OUT_EVEN
, 1, 0, 0),
1364 F(594000000, P_CAM_CC_PLL12_OUT_EVEN
, 1, 0, 0),
1365 F(675000000, P_CAM_CC_PLL12_OUT_EVEN
, 1, 0, 0),
1366 F(785000000, P_CAM_CC_PLL12_OUT_EVEN
, 1, 0, 0),
1370 static struct clk_rcg2 cam_cc_ife_2_dsp_clk_src
= {
1371 .cmd_rcgr
= 0x123e4,
1374 .parent_map
= cam_cc_parent_map_8
,
1375 .freq_tbl
= ftbl_cam_cc_ife_2_dsp_clk_src
,
1376 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1377 .name
= "cam_cc_ife_2_dsp_clk_src",
1378 .parent_data
= cam_cc_parent_data_8
,
1379 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_8
),
1380 .flags
= CLK_SET_RATE_PARENT
,
1381 .ops
= &clk_rcg2_shared_ops
,
1385 static struct clk_rcg2 cam_cc_ife_lite_clk_src
= {
1386 .cmd_rcgr
= 0x13000,
1389 .parent_map
= cam_cc_parent_map_0
,
1390 .freq_tbl
= ftbl_cam_cc_csid_clk_src
,
1391 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1392 .name
= "cam_cc_ife_lite_clk_src",
1393 .parent_data
= cam_cc_parent_data_0
,
1394 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1395 .flags
= CLK_SET_RATE_PARENT
,
1396 .ops
= &clk_rcg2_shared_ops
,
1400 static struct clk_rcg2 cam_cc_ife_lite_csid_clk_src
= {
1401 .cmd_rcgr
= 0x1313c,
1404 .parent_map
= cam_cc_parent_map_0
,
1405 .freq_tbl
= ftbl_cam_cc_csid_clk_src
,
1406 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1407 .name
= "cam_cc_ife_lite_csid_clk_src",
1408 .parent_data
= cam_cc_parent_data_0
,
1409 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1410 .flags
= CLK_SET_RATE_PARENT
,
1411 .ops
= &clk_rcg2_shared_ops
,
1415 static const struct freq_tbl ftbl_cam_cc_ipe_nps_clk_src
[] = {
1416 F(455000000, P_CAM_CC_PLL1_OUT_EVEN
, 1, 0, 0),
1417 F(575000000, P_CAM_CC_PLL1_OUT_EVEN
, 1, 0, 0),
1418 F(675000000, P_CAM_CC_PLL1_OUT_EVEN
, 1, 0, 0),
1419 F(825000000, P_CAM_CC_PLL1_OUT_EVEN
, 1, 0, 0),
1423 static struct clk_rcg2 cam_cc_ipe_nps_clk_src
= {
1424 .cmd_rcgr
= 0x103cc,
1427 .parent_map
= cam_cc_parent_map_9
,
1428 .freq_tbl
= ftbl_cam_cc_ipe_nps_clk_src
,
1429 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1430 .name
= "cam_cc_ipe_nps_clk_src",
1431 .parent_data
= cam_cc_parent_data_9
,
1432 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_9
),
1433 .flags
= CLK_SET_RATE_PARENT
,
1434 .ops
= &clk_rcg2_shared_ops
,
1438 static const struct freq_tbl ftbl_cam_cc_jpeg_clk_src
[] = {
1439 F(19200000, P_BI_TCXO
, 1, 0, 0),
1440 F(200000000, P_CAM_CC_PLL0_OUT_ODD
, 2, 0, 0),
1441 F(400000000, P_CAM_CC_PLL0_OUT_ODD
, 1, 0, 0),
1442 F(480000000, P_CAM_CC_PLL9_OUT_EVEN
, 1, 0, 0),
1443 F(600000000, P_CAM_CC_PLL0_OUT_EVEN
, 1, 0, 0),
1447 static struct clk_rcg2 cam_cc_jpeg_clk_src
= {
1448 .cmd_rcgr
= 0x13674,
1451 .parent_map
= cam_cc_parent_map_0
,
1452 .freq_tbl
= ftbl_cam_cc_jpeg_clk_src
,
1453 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1454 .name
= "cam_cc_jpeg_clk_src",
1455 .parent_data
= cam_cc_parent_data_0
,
1456 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1457 .flags
= CLK_SET_RATE_PARENT
,
1458 .ops
= &clk_rcg2_shared_ops
,
1462 static const struct freq_tbl ftbl_cam_cc_mclk0_clk_src
[] = {
1463 F(19200000, P_BI_TCXO
, 1, 0, 0),
1464 F(24000000, P_CAM_CC_PLL2_OUT_MAIN
, 10, 1, 4),
1465 F(68571429, P_CAM_CC_PLL2_OUT_MAIN
, 14, 0, 0),
1469 static struct clk_rcg2 cam_cc_mclk0_clk_src
= {
1470 .cmd_rcgr
= 0x15000,
1473 .parent_map
= cam_cc_parent_map_1
,
1474 .freq_tbl
= ftbl_cam_cc_mclk0_clk_src
,
1475 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1476 .name
= "cam_cc_mclk0_clk_src",
1477 .parent_data
= cam_cc_parent_data_1
,
1478 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_1
),
1479 .flags
= CLK_SET_RATE_PARENT
,
1480 .ops
= &clk_rcg2_shared_ops
,
1484 static struct clk_rcg2 cam_cc_mclk1_clk_src
= {
1485 .cmd_rcgr
= 0x15130,
1488 .parent_map
= cam_cc_parent_map_1
,
1489 .freq_tbl
= ftbl_cam_cc_mclk0_clk_src
,
1490 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1491 .name
= "cam_cc_mclk1_clk_src",
1492 .parent_data
= cam_cc_parent_data_1
,
1493 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_1
),
1494 .flags
= CLK_SET_RATE_PARENT
,
1495 .ops
= &clk_rcg2_shared_ops
,
1499 static struct clk_rcg2 cam_cc_mclk2_clk_src
= {
1500 .cmd_rcgr
= 0x15260,
1503 .parent_map
= cam_cc_parent_map_1
,
1504 .freq_tbl
= ftbl_cam_cc_mclk0_clk_src
,
1505 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1506 .name
= "cam_cc_mclk2_clk_src",
1507 .parent_data
= cam_cc_parent_data_1
,
1508 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_1
),
1509 .flags
= CLK_SET_RATE_PARENT
,
1510 .ops
= &clk_rcg2_shared_ops
,
1514 static struct clk_rcg2 cam_cc_mclk3_clk_src
= {
1515 .cmd_rcgr
= 0x15390,
1518 .parent_map
= cam_cc_parent_map_1
,
1519 .freq_tbl
= ftbl_cam_cc_mclk0_clk_src
,
1520 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1521 .name
= "cam_cc_mclk3_clk_src",
1522 .parent_data
= cam_cc_parent_data_1
,
1523 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_1
),
1524 .flags
= CLK_SET_RATE_PARENT
,
1525 .ops
= &clk_rcg2_shared_ops
,
1529 static struct clk_rcg2 cam_cc_mclk4_clk_src
= {
1530 .cmd_rcgr
= 0x154c0,
1533 .parent_map
= cam_cc_parent_map_1
,
1534 .freq_tbl
= ftbl_cam_cc_mclk0_clk_src
,
1535 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1536 .name
= "cam_cc_mclk4_clk_src",
1537 .parent_data
= cam_cc_parent_data_1
,
1538 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_1
),
1539 .flags
= CLK_SET_RATE_PARENT
,
1540 .ops
= &clk_rcg2_shared_ops
,
1544 static struct clk_rcg2 cam_cc_mclk5_clk_src
= {
1545 .cmd_rcgr
= 0x155f0,
1548 .parent_map
= cam_cc_parent_map_1
,
1549 .freq_tbl
= ftbl_cam_cc_mclk0_clk_src
,
1550 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1551 .name
= "cam_cc_mclk5_clk_src",
1552 .parent_data
= cam_cc_parent_data_1
,
1553 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_1
),
1554 .flags
= CLK_SET_RATE_PARENT
,
1555 .ops
= &clk_rcg2_shared_ops
,
1559 static struct clk_rcg2 cam_cc_mclk6_clk_src
= {
1560 .cmd_rcgr
= 0x15720,
1563 .parent_map
= cam_cc_parent_map_1
,
1564 .freq_tbl
= ftbl_cam_cc_mclk0_clk_src
,
1565 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1566 .name
= "cam_cc_mclk6_clk_src",
1567 .parent_data
= cam_cc_parent_data_1
,
1568 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_1
),
1569 .flags
= CLK_SET_RATE_PARENT
,
1570 .ops
= &clk_rcg2_shared_ops
,
1574 static struct clk_rcg2 cam_cc_mclk7_clk_src
= {
1575 .cmd_rcgr
= 0x15850,
1578 .parent_map
= cam_cc_parent_map_1
,
1579 .freq_tbl
= ftbl_cam_cc_mclk0_clk_src
,
1580 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1581 .name
= "cam_cc_mclk7_clk_src",
1582 .parent_data
= cam_cc_parent_data_1
,
1583 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_1
),
1584 .flags
= CLK_SET_RATE_PARENT
,
1585 .ops
= &clk_rcg2_shared_ops
,
1589 static const struct freq_tbl ftbl_cam_cc_qdss_debug_clk_src
[] = {
1590 F(19200000, P_BI_TCXO
, 1, 0, 0),
1591 F(75000000, P_CAM_CC_PLL0_OUT_EVEN
, 8, 0, 0),
1592 F(150000000, P_CAM_CC_PLL0_OUT_EVEN
, 4, 0, 0),
1593 F(300000000, P_CAM_CC_PLL0_OUT_MAIN
, 4, 0, 0),
1597 static struct clk_rcg2 cam_cc_qdss_debug_clk_src
= {
1598 .cmd_rcgr
= 0x13f24,
1601 .parent_map
= cam_cc_parent_map_0
,
1602 .freq_tbl
= ftbl_cam_cc_qdss_debug_clk_src
,
1603 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1604 .name
= "cam_cc_qdss_debug_clk_src",
1605 .parent_data
= cam_cc_parent_data_0
,
1606 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1607 .flags
= CLK_SET_RATE_PARENT
,
1608 .ops
= &clk_rcg2_shared_ops
,
1612 static const struct freq_tbl ftbl_cam_cc_sfe_0_clk_src
[] = {
1613 F(466000000, P_CAM_CC_PLL6_OUT_EVEN
, 1, 0, 0),
1614 F(594000000, P_CAM_CC_PLL6_OUT_EVEN
, 1, 0, 0),
1615 F(675000000, P_CAM_CC_PLL6_OUT_EVEN
, 1, 0, 0),
1616 F(785000000, P_CAM_CC_PLL6_OUT_EVEN
, 1, 0, 0),
1620 static struct clk_rcg2 cam_cc_sfe_0_clk_src
= {
1621 .cmd_rcgr
= 0x13294,
1624 .parent_map
= cam_cc_parent_map_10
,
1625 .freq_tbl
= ftbl_cam_cc_sfe_0_clk_src
,
1626 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1627 .name
= "cam_cc_sfe_0_clk_src",
1628 .parent_data
= cam_cc_parent_data_10
,
1629 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_10
),
1630 .flags
= CLK_SET_RATE_PARENT
,
1631 .ops
= &clk_rcg2_shared_ops
,
1635 static const struct freq_tbl ftbl_cam_cc_sfe_1_clk_src
[] = {
1636 F(466000000, P_CAM_CC_PLL7_OUT_EVEN
, 1, 0, 0),
1637 F(594000000, P_CAM_CC_PLL7_OUT_EVEN
, 1, 0, 0),
1638 F(675000000, P_CAM_CC_PLL7_OUT_EVEN
, 1, 0, 0),
1639 F(785000000, P_CAM_CC_PLL7_OUT_EVEN
, 1, 0, 0),
1643 static struct clk_rcg2 cam_cc_sfe_1_clk_src
= {
1644 .cmd_rcgr
= 0x133f4,
1647 .parent_map
= cam_cc_parent_map_11
,
1648 .freq_tbl
= ftbl_cam_cc_sfe_1_clk_src
,
1649 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1650 .name
= "cam_cc_sfe_1_clk_src",
1651 .parent_data
= cam_cc_parent_data_11
,
1652 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_11
),
1653 .flags
= CLK_SET_RATE_PARENT
,
1654 .ops
= &clk_rcg2_shared_ops
,
1658 static const struct freq_tbl ftbl_cam_cc_sleep_clk_src
[] = {
1659 F(32000, P_SLEEP_CLK
, 1, 0, 0),
1663 static struct clk_rcg2 cam_cc_sleep_clk_src
= {
1664 .cmd_rcgr
= 0x141a0,
1667 .parent_map
= cam_cc_parent_map_12
,
1668 .freq_tbl
= ftbl_cam_cc_sleep_clk_src
,
1669 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1670 .name
= "cam_cc_sleep_clk_src",
1671 .parent_data
= cam_cc_parent_data_12
,
1672 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_12
),
1673 .flags
= CLK_SET_RATE_PARENT
,
1674 .ops
= &clk_rcg2_shared_ops
,
1678 static const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src
[] = {
1679 F(19200000, P_BI_TCXO
, 1, 0, 0),
1680 F(80000000, P_CAM_CC_PLL0_OUT_EVEN
, 7.5, 0, 0),
1684 static struct clk_rcg2 cam_cc_slow_ahb_clk_src
= {
1685 .cmd_rcgr
= 0x10148,
1688 .parent_map
= cam_cc_parent_map_0
,
1689 .freq_tbl
= ftbl_cam_cc_slow_ahb_clk_src
,
1690 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1691 .name
= "cam_cc_slow_ahb_clk_src",
1692 .parent_data
= cam_cc_parent_data_0
,
1693 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_0
),
1694 .flags
= CLK_SET_RATE_PARENT
,
1695 .ops
= &clk_rcg2_shared_ops
,
1699 static const struct freq_tbl ftbl_cam_cc_xo_clk_src
[] = {
1700 F(19200000, P_BI_TCXO_AO
, 1, 0, 0),
1704 static struct clk_rcg2 cam_cc_xo_clk_src
= {
1705 .cmd_rcgr
= 0x14070,
1708 .parent_map
= cam_cc_parent_map_13_ao
,
1709 .freq_tbl
= ftbl_cam_cc_xo_clk_src
,
1710 .clkr
.hw
.init
= &(const struct clk_init_data
) {
1711 .name
= "cam_cc_xo_clk_src",
1712 .parent_data
= cam_cc_parent_data_13_ao
,
1713 .num_parents
= ARRAY_SIZE(cam_cc_parent_data_13_ao
),
1714 .flags
= CLK_SET_RATE_PARENT
,
1715 .ops
= &clk_rcg2_shared_ops
,
1719 static struct clk_branch cam_cc_bps_ahb_clk
= {
1720 .halt_reg
= 0x10274,
1721 .halt_check
= BRANCH_HALT
,
1723 .enable_reg
= 0x10274,
1724 .enable_mask
= BIT(0),
1725 .hw
.init
= &(const struct clk_init_data
) {
1726 .name
= "cam_cc_bps_ahb_clk",
1727 .parent_hws
= (const struct clk_hw
*[]) {
1728 &cam_cc_slow_ahb_clk_src
.clkr
.hw
,
1731 .flags
= CLK_SET_RATE_PARENT
,
1732 .ops
= &clk_branch2_ops
,
1737 static struct clk_branch cam_cc_bps_clk
= {
1738 .halt_reg
= 0x103a4,
1739 .halt_check
= BRANCH_HALT
,
1741 .enable_reg
= 0x103a4,
1742 .enable_mask
= BIT(0),
1743 .hw
.init
= &(const struct clk_init_data
) {
1744 .name
= "cam_cc_bps_clk",
1745 .parent_hws
= (const struct clk_hw
*[]) {
1746 &cam_cc_bps_clk_src
.clkr
.hw
,
1749 .flags
= CLK_SET_RATE_PARENT
,
1750 .ops
= &clk_branch2_ops
,
1755 static struct clk_branch cam_cc_bps_fast_ahb_clk
= {
1756 .halt_reg
= 0x10144,
1757 .halt_check
= BRANCH_HALT
,
1759 .enable_reg
= 0x10144,
1760 .enable_mask
= BIT(0),
1761 .hw
.init
= &(const struct clk_init_data
) {
1762 .name
= "cam_cc_bps_fast_ahb_clk",
1763 .parent_hws
= (const struct clk_hw
*[]) {
1764 &cam_cc_fast_ahb_clk_src
.clkr
.hw
,
1767 .flags
= CLK_SET_RATE_PARENT
,
1768 .ops
= &clk_branch2_ops
,
1773 static struct clk_branch cam_cc_camnoc_axi_clk
= {
1774 .halt_reg
= 0x13f0c,
1775 .halt_check
= BRANCH_HALT
,
1777 .enable_reg
= 0x13f0c,
1778 .enable_mask
= BIT(0),
1779 .hw
.init
= &(const struct clk_init_data
) {
1780 .name
= "cam_cc_camnoc_axi_clk",
1781 .parent_hws
= (const struct clk_hw
*[]) {
1782 &cam_cc_camnoc_axi_clk_src
.clkr
.hw
,
1785 .flags
= CLK_SET_RATE_PARENT
,
1786 .ops
= &clk_branch2_ops
,
1791 static struct clk_branch cam_cc_camnoc_dcd_xo_clk
= {
1792 .halt_reg
= 0x13f18,
1793 .halt_check
= BRANCH_HALT
,
1795 .enable_reg
= 0x13f18,
1796 .enable_mask
= BIT(0),
1797 .hw
.init
= &(const struct clk_init_data
) {
1798 .name
= "cam_cc_camnoc_dcd_xo_clk",
1799 .parent_hws
= (const struct clk_hw
*[]) {
1800 &cam_cc_xo_clk_src
.clkr
.hw
,
1803 .flags
= CLK_SET_RATE_PARENT
,
1804 .ops
= &clk_branch2_ops
,
1809 static struct clk_branch cam_cc_camnoc_xo_clk
= {
1810 .halt_reg
= 0x13f1c,
1811 .halt_check
= BRANCH_HALT
,
1813 .enable_reg
= 0x13f1c,
1814 .enable_mask
= BIT(0),
1815 .hw
.init
= &(const struct clk_init_data
) {
1816 .name
= "cam_cc_camnoc_xo_clk",
1817 .parent_hws
= (const struct clk_hw
*[]) {
1818 &cam_cc_xo_clk_src
.clkr
.hw
,
1821 .flags
= CLK_SET_RATE_PARENT
,
1822 .ops
= &clk_branch2_ops
,
1827 static struct clk_branch cam_cc_cci_0_clk
= {
1828 .halt_reg
= 0x13a2c,
1829 .halt_check
= BRANCH_HALT
,
1831 .enable_reg
= 0x13a2c,
1832 .enable_mask
= BIT(0),
1833 .hw
.init
= &(const struct clk_init_data
) {
1834 .name
= "cam_cc_cci_0_clk",
1835 .parent_hws
= (const struct clk_hw
*[]) {
1836 &cam_cc_cci_0_clk_src
.clkr
.hw
,
1839 .flags
= CLK_SET_RATE_PARENT
,
1840 .ops
= &clk_branch2_ops
,
1845 static struct clk_branch cam_cc_cci_1_clk
= {
1846 .halt_reg
= 0x13b5c,
1847 .halt_check
= BRANCH_HALT
,
1849 .enable_reg
= 0x13b5c,
1850 .enable_mask
= BIT(0),
1851 .hw
.init
= &(const struct clk_init_data
) {
1852 .name
= "cam_cc_cci_1_clk",
1853 .parent_hws
= (const struct clk_hw
*[]) {
1854 &cam_cc_cci_1_clk_src
.clkr
.hw
,
1857 .flags
= CLK_SET_RATE_PARENT
,
1858 .ops
= &clk_branch2_ops
,
1863 static struct clk_branch cam_cc_cci_2_clk
= {
1864 .halt_reg
= 0x13c8c,
1865 .halt_check
= BRANCH_HALT
,
1867 .enable_reg
= 0x13c8c,
1868 .enable_mask
= BIT(0),
1869 .hw
.init
= &(const struct clk_init_data
) {
1870 .name
= "cam_cc_cci_2_clk",
1871 .parent_hws
= (const struct clk_hw
*[]) {
1872 &cam_cc_cci_2_clk_src
.clkr
.hw
,
1875 .flags
= CLK_SET_RATE_PARENT
,
1876 .ops
= &clk_branch2_ops
,
1881 static struct clk_branch cam_cc_core_ahb_clk
= {
1882 .halt_reg
= 0x1406c,
1883 .halt_check
= BRANCH_HALT_DELAY
,
1885 .enable_reg
= 0x1406c,
1886 .enable_mask
= BIT(0),
1887 .hw
.init
= &(const struct clk_init_data
) {
1888 .name
= "cam_cc_core_ahb_clk",
1889 .parent_hws
= (const struct clk_hw
*[]) {
1890 &cam_cc_slow_ahb_clk_src
.clkr
.hw
,
1893 .flags
= CLK_SET_RATE_PARENT
,
1894 .ops
= &clk_branch2_ops
,
1899 static struct clk_branch cam_cc_cpas_ahb_clk
= {
1900 .halt_reg
= 0x13c90,
1901 .halt_check
= BRANCH_HALT
,
1903 .enable_reg
= 0x13c90,
1904 .enable_mask
= BIT(0),
1905 .hw
.init
= &(const struct clk_init_data
) {
1906 .name
= "cam_cc_cpas_ahb_clk",
1907 .parent_hws
= (const struct clk_hw
*[]) {
1908 &cam_cc_slow_ahb_clk_src
.clkr
.hw
,
1911 .flags
= CLK_SET_RATE_PARENT
,
1912 .ops
= &clk_branch2_ops
,
1917 static struct clk_branch cam_cc_cpas_bps_clk
= {
1918 .halt_reg
= 0x103b0,
1919 .halt_check
= BRANCH_HALT
,
1921 .enable_reg
= 0x103b0,
1922 .enable_mask
= BIT(0),
1923 .hw
.init
= &(const struct clk_init_data
) {
1924 .name
= "cam_cc_cpas_bps_clk",
1925 .parent_hws
= (const struct clk_hw
*[]) {
1926 &cam_cc_bps_clk_src
.clkr
.hw
,
1929 .flags
= CLK_SET_RATE_PARENT
,
1930 .ops
= &clk_branch2_ops
,
1935 static struct clk_branch cam_cc_cpas_cre_clk
= {
1936 .halt_reg
= 0x1366c,
1937 .halt_check
= BRANCH_HALT
,
1939 .enable_reg
= 0x1366c,
1940 .enable_mask
= BIT(0),
1941 .hw
.init
= &(const struct clk_init_data
) {
1942 .name
= "cam_cc_cpas_cre_clk",
1943 .parent_hws
= (const struct clk_hw
*[]) {
1944 &cam_cc_cre_clk_src
.clkr
.hw
,
1947 .flags
= CLK_SET_RATE_PARENT
,
1948 .ops
= &clk_branch2_ops
,
1953 static struct clk_branch cam_cc_cpas_fast_ahb_clk
= {
1954 .halt_reg
= 0x13c9c,
1955 .halt_check
= BRANCH_HALT
,
1957 .enable_reg
= 0x13c9c,
1958 .enable_mask
= BIT(0),
1959 .hw
.init
= &(const struct clk_init_data
) {
1960 .name
= "cam_cc_cpas_fast_ahb_clk",
1961 .parent_hws
= (const struct clk_hw
*[]) {
1962 &cam_cc_fast_ahb_clk_src
.clkr
.hw
,
1965 .flags
= CLK_SET_RATE_PARENT
,
1966 .ops
= &clk_branch2_ops
,
1971 static struct clk_branch cam_cc_cpas_ife_0_clk
= {
1972 .halt_reg
= 0x11150,
1973 .halt_check
= BRANCH_HALT
,
1975 .enable_reg
= 0x11150,
1976 .enable_mask
= BIT(0),
1977 .hw
.init
= &(const struct clk_init_data
) {
1978 .name
= "cam_cc_cpas_ife_0_clk",
1979 .parent_hws
= (const struct clk_hw
*[]) {
1980 &cam_cc_ife_0_clk_src
.clkr
.hw
,
1983 .flags
= CLK_SET_RATE_PARENT
,
1984 .ops
= &clk_branch2_ops
,
1989 static struct clk_branch cam_cc_cpas_ife_1_clk
= {
1990 .halt_reg
= 0x12150,
1991 .halt_check
= BRANCH_HALT
,
1993 .enable_reg
= 0x12150,
1994 .enable_mask
= BIT(0),
1995 .hw
.init
= &(const struct clk_init_data
) {
1996 .name
= "cam_cc_cpas_ife_1_clk",
1997 .parent_hws
= (const struct clk_hw
*[]) {
1998 &cam_cc_ife_1_clk_src
.clkr
.hw
,
2001 .flags
= CLK_SET_RATE_PARENT
,
2002 .ops
= &clk_branch2_ops
,
2007 static struct clk_branch cam_cc_cpas_ife_2_clk
= {
2008 .halt_reg
= 0x123e0,
2009 .halt_check
= BRANCH_HALT
,
2011 .enable_reg
= 0x123e0,
2012 .enable_mask
= BIT(0),
2013 .hw
.init
= &(const struct clk_init_data
) {
2014 .name
= "cam_cc_cpas_ife_2_clk",
2015 .parent_hws
= (const struct clk_hw
*[]) {
2016 &cam_cc_ife_2_clk_src
.clkr
.hw
,
2019 .flags
= CLK_SET_RATE_PARENT
,
2020 .ops
= &clk_branch2_ops
,
2025 static struct clk_branch cam_cc_cpas_ife_lite_clk
= {
2026 .halt_reg
= 0x13138,
2027 .halt_check
= BRANCH_HALT
,
2029 .enable_reg
= 0x13138,
2030 .enable_mask
= BIT(0),
2031 .hw
.init
= &(const struct clk_init_data
) {
2032 .name
= "cam_cc_cpas_ife_lite_clk",
2033 .parent_hws
= (const struct clk_hw
*[]) {
2034 &cam_cc_ife_lite_clk_src
.clkr
.hw
,
2037 .flags
= CLK_SET_RATE_PARENT
,
2038 .ops
= &clk_branch2_ops
,
2043 static struct clk_branch cam_cc_cpas_ipe_nps_clk
= {
2044 .halt_reg
= 0x10504,
2045 .halt_check
= BRANCH_HALT
,
2047 .enable_reg
= 0x10504,
2048 .enable_mask
= BIT(0),
2049 .hw
.init
= &(const struct clk_init_data
) {
2050 .name
= "cam_cc_cpas_ipe_nps_clk",
2051 .parent_hws
= (const struct clk_hw
*[]) {
2052 &cam_cc_ipe_nps_clk_src
.clkr
.hw
,
2055 .flags
= CLK_SET_RATE_PARENT
,
2056 .ops
= &clk_branch2_ops
,
2061 static struct clk_branch cam_cc_cpas_sbi_clk
= {
2062 .halt_reg
= 0x1054c,
2063 .halt_check
= BRANCH_HALT
,
2065 .enable_reg
= 0x1054c,
2066 .enable_mask
= BIT(0),
2067 .hw
.init
= &(const struct clk_init_data
) {
2068 .name
= "cam_cc_cpas_sbi_clk",
2069 .parent_hws
= (const struct clk_hw
*[]) {
2070 &cam_cc_ife_0_clk_src
.clkr
.hw
,
2073 .flags
= CLK_SET_RATE_PARENT
,
2074 .ops
= &clk_branch2_ops
,
2079 static struct clk_branch cam_cc_cpas_sfe_0_clk
= {
2080 .halt_reg
= 0x133cc,
2081 .halt_check
= BRANCH_HALT
,
2083 .enable_reg
= 0x133cc,
2084 .enable_mask
= BIT(0),
2085 .hw
.init
= &(const struct clk_init_data
) {
2086 .name
= "cam_cc_cpas_sfe_0_clk",
2087 .parent_hws
= (const struct clk_hw
*[]) {
2088 &cam_cc_sfe_0_clk_src
.clkr
.hw
,
2091 .flags
= CLK_SET_RATE_PARENT
,
2092 .ops
= &clk_branch2_ops
,
2097 static struct clk_branch cam_cc_cpas_sfe_1_clk
= {
2098 .halt_reg
= 0x1352c,
2099 .halt_check
= BRANCH_HALT
,
2101 .enable_reg
= 0x1352c,
2102 .enable_mask
= BIT(0),
2103 .hw
.init
= &(const struct clk_init_data
) {
2104 .name
= "cam_cc_cpas_sfe_1_clk",
2105 .parent_hws
= (const struct clk_hw
*[]) {
2106 &cam_cc_sfe_1_clk_src
.clkr
.hw
,
2109 .flags
= CLK_SET_RATE_PARENT
,
2110 .ops
= &clk_branch2_ops
,
2115 static struct clk_branch cam_cc_cre_ahb_clk
= {
2116 .halt_reg
= 0x13670,
2117 .halt_check
= BRANCH_HALT
,
2119 .enable_reg
= 0x13670,
2120 .enable_mask
= BIT(0),
2121 .hw
.init
= &(const struct clk_init_data
) {
2122 .name
= "cam_cc_cre_ahb_clk",
2123 .parent_hws
= (const struct clk_hw
*[]) {
2124 &cam_cc_slow_ahb_clk_src
.clkr
.hw
,
2127 .flags
= CLK_SET_RATE_PARENT
,
2128 .ops
= &clk_branch2_ops
,
2133 static struct clk_branch cam_cc_cre_clk
= {
2134 .halt_reg
= 0x13668,
2135 .halt_check
= BRANCH_HALT
,
2137 .enable_reg
= 0x13668,
2138 .enable_mask
= BIT(0),
2139 .hw
.init
= &(const struct clk_init_data
) {
2140 .name
= "cam_cc_cre_clk",
2141 .parent_hws
= (const struct clk_hw
*[]) {
2142 &cam_cc_cre_clk_src
.clkr
.hw
,
2145 .flags
= CLK_SET_RATE_PARENT
,
2146 .ops
= &clk_branch2_ops
,
2151 static struct clk_branch cam_cc_csi0phytimer_clk
= {
2152 .halt_reg
= 0x15aac,
2153 .halt_check
= BRANCH_HALT
,
2155 .enable_reg
= 0x15aac,
2156 .enable_mask
= BIT(0),
2157 .hw
.init
= &(const struct clk_init_data
) {
2158 .name
= "cam_cc_csi0phytimer_clk",
2159 .parent_hws
= (const struct clk_hw
*[]) {
2160 &cam_cc_csi0phytimer_clk_src
.clkr
.hw
,
2163 .flags
= CLK_SET_RATE_PARENT
,
2164 .ops
= &clk_branch2_ops
,
2169 static struct clk_branch cam_cc_csi1phytimer_clk
= {
2170 .halt_reg
= 0x15be4,
2171 .halt_check
= BRANCH_HALT
,
2173 .enable_reg
= 0x15be4,
2174 .enable_mask
= BIT(0),
2175 .hw
.init
= &(const struct clk_init_data
) {
2176 .name
= "cam_cc_csi1phytimer_clk",
2177 .parent_hws
= (const struct clk_hw
*[]) {
2178 &cam_cc_csi1phytimer_clk_src
.clkr
.hw
,
2181 .flags
= CLK_SET_RATE_PARENT
,
2182 .ops
= &clk_branch2_ops
,
2187 static struct clk_branch cam_cc_csi2phytimer_clk
= {
2188 .halt_reg
= 0x15d18,
2189 .halt_check
= BRANCH_HALT
,
2191 .enable_reg
= 0x15d18,
2192 .enable_mask
= BIT(0),
2193 .hw
.init
= &(const struct clk_init_data
) {
2194 .name
= "cam_cc_csi2phytimer_clk",
2195 .parent_hws
= (const struct clk_hw
*[]) {
2196 &cam_cc_csi2phytimer_clk_src
.clkr
.hw
,
2199 .flags
= CLK_SET_RATE_PARENT
,
2200 .ops
= &clk_branch2_ops
,
2205 static struct clk_branch cam_cc_csi3phytimer_clk
= {
2206 .halt_reg
= 0x15e4c,
2207 .halt_check
= BRANCH_HALT
,
2209 .enable_reg
= 0x15e4c,
2210 .enable_mask
= BIT(0),
2211 .hw
.init
= &(const struct clk_init_data
) {
2212 .name
= "cam_cc_csi3phytimer_clk",
2213 .parent_hws
= (const struct clk_hw
*[]) {
2214 &cam_cc_csi3phytimer_clk_src
.clkr
.hw
,
2217 .flags
= CLK_SET_RATE_PARENT
,
2218 .ops
= &clk_branch2_ops
,
2223 static struct clk_branch cam_cc_csi4phytimer_clk
= {
2224 .halt_reg
= 0x15f80,
2225 .halt_check
= BRANCH_HALT
,
2227 .enable_reg
= 0x15f80,
2228 .enable_mask
= BIT(0),
2229 .hw
.init
= &(const struct clk_init_data
) {
2230 .name
= "cam_cc_csi4phytimer_clk",
2231 .parent_hws
= (const struct clk_hw
*[]) {
2232 &cam_cc_csi4phytimer_clk_src
.clkr
.hw
,
2235 .flags
= CLK_SET_RATE_PARENT
,
2236 .ops
= &clk_branch2_ops
,
2241 static struct clk_branch cam_cc_csi5phytimer_clk
= {
2242 .halt_reg
= 0x160b4,
2243 .halt_check
= BRANCH_HALT
,
2245 .enable_reg
= 0x160b4,
2246 .enable_mask
= BIT(0),
2247 .hw
.init
= &(const struct clk_init_data
) {
2248 .name
= "cam_cc_csi5phytimer_clk",
2249 .parent_hws
= (const struct clk_hw
*[]) {
2250 &cam_cc_csi5phytimer_clk_src
.clkr
.hw
,
2253 .flags
= CLK_SET_RATE_PARENT
,
2254 .ops
= &clk_branch2_ops
,
2259 static struct clk_branch cam_cc_csi6phytimer_clk
= {
2260 .halt_reg
= 0x161e8,
2261 .halt_check
= BRANCH_HALT
,
2263 .enable_reg
= 0x161e8,
2264 .enable_mask
= BIT(0),
2265 .hw
.init
= &(const struct clk_init_data
) {
2266 .name
= "cam_cc_csi6phytimer_clk",
2267 .parent_hws
= (const struct clk_hw
*[]) {
2268 &cam_cc_csi6phytimer_clk_src
.clkr
.hw
,
2271 .flags
= CLK_SET_RATE_PARENT
,
2272 .ops
= &clk_branch2_ops
,
2277 static struct clk_branch cam_cc_csi7phytimer_clk
= {
2278 .halt_reg
= 0x1631c,
2279 .halt_check
= BRANCH_HALT
,
2281 .enable_reg
= 0x1631c,
2282 .enable_mask
= BIT(0),
2283 .hw
.init
= &(const struct clk_init_data
) {
2284 .name
= "cam_cc_csi7phytimer_clk",
2285 .parent_hws
= (const struct clk_hw
*[]) {
2286 &cam_cc_csi7phytimer_clk_src
.clkr
.hw
,
2289 .flags
= CLK_SET_RATE_PARENT
,
2290 .ops
= &clk_branch2_ops
,
2295 static struct clk_branch cam_cc_csid_clk
= {
2296 .halt_reg
= 0x13dd4,
2297 .halt_check
= BRANCH_HALT
,
2299 .enable_reg
= 0x13dd4,
2300 .enable_mask
= BIT(0),
2301 .hw
.init
= &(const struct clk_init_data
) {
2302 .name
= "cam_cc_csid_clk",
2303 .parent_hws
= (const struct clk_hw
*[]) {
2304 &cam_cc_csid_clk_src
.clkr
.hw
,
2307 .flags
= CLK_SET_RATE_PARENT
,
2308 .ops
= &clk_branch2_ops
,
2313 static struct clk_branch cam_cc_csid_csiphy_rx_clk
= {
2314 .halt_reg
= 0x15ab4,
2315 .halt_check
= BRANCH_HALT
,
2317 .enable_reg
= 0x15ab4,
2318 .enable_mask
= BIT(0),
2319 .hw
.init
= &(const struct clk_init_data
) {
2320 .name
= "cam_cc_csid_csiphy_rx_clk",
2321 .parent_hws
= (const struct clk_hw
*[]) {
2322 &cam_cc_cphy_rx_clk_src
.clkr
.hw
,
2325 .flags
= CLK_SET_RATE_PARENT
,
2326 .ops
= &clk_branch2_ops
,
2331 static struct clk_branch cam_cc_csiphy0_clk
= {
2332 .halt_reg
= 0x15ab0,
2333 .halt_check
= BRANCH_HALT
,
2335 .enable_reg
= 0x15ab0,
2336 .enable_mask
= BIT(0),
2337 .hw
.init
= &(const struct clk_init_data
) {
2338 .name
= "cam_cc_csiphy0_clk",
2339 .parent_hws
= (const struct clk_hw
*[]) {
2340 &cam_cc_cphy_rx_clk_src
.clkr
.hw
,
2343 .flags
= CLK_SET_RATE_PARENT
,
2344 .ops
= &clk_branch2_ops
,
2349 static struct clk_branch cam_cc_csiphy1_clk
= {
2350 .halt_reg
= 0x15be8,
2351 .halt_check
= BRANCH_HALT
,
2353 .enable_reg
= 0x15be8,
2354 .enable_mask
= BIT(0),
2355 .hw
.init
= &(const struct clk_init_data
) {
2356 .name
= "cam_cc_csiphy1_clk",
2357 .parent_hws
= (const struct clk_hw
*[]) {
2358 &cam_cc_cphy_rx_clk_src
.clkr
.hw
,
2361 .flags
= CLK_SET_RATE_PARENT
,
2362 .ops
= &clk_branch2_ops
,
2367 static struct clk_branch cam_cc_csiphy2_clk
= {
2368 .halt_reg
= 0x15d1c,
2369 .halt_check
= BRANCH_HALT
,
2371 .enable_reg
= 0x15d1c,
2372 .enable_mask
= BIT(0),
2373 .hw
.init
= &(const struct clk_init_data
) {
2374 .name
= "cam_cc_csiphy2_clk",
2375 .parent_hws
= (const struct clk_hw
*[]) {
2376 &cam_cc_cphy_rx_clk_src
.clkr
.hw
,
2379 .flags
= CLK_SET_RATE_PARENT
,
2380 .ops
= &clk_branch2_ops
,
2385 static struct clk_branch cam_cc_csiphy3_clk
= {
2386 .halt_reg
= 0x15e50,
2387 .halt_check
= BRANCH_HALT
,
2389 .enable_reg
= 0x15e50,
2390 .enable_mask
= BIT(0),
2391 .hw
.init
= &(const struct clk_init_data
) {
2392 .name
= "cam_cc_csiphy3_clk",
2393 .parent_hws
= (const struct clk_hw
*[]) {
2394 &cam_cc_cphy_rx_clk_src
.clkr
.hw
,
2397 .flags
= CLK_SET_RATE_PARENT
,
2398 .ops
= &clk_branch2_ops
,
2403 static struct clk_branch cam_cc_csiphy4_clk
= {
2404 .halt_reg
= 0x15f84,
2405 .halt_check
= BRANCH_HALT
,
2407 .enable_reg
= 0x15f84,
2408 .enable_mask
= BIT(0),
2409 .hw
.init
= &(const struct clk_init_data
) {
2410 .name
= "cam_cc_csiphy4_clk",
2411 .parent_hws
= (const struct clk_hw
*[]) {
2412 &cam_cc_cphy_rx_clk_src
.clkr
.hw
,
2415 .flags
= CLK_SET_RATE_PARENT
,
2416 .ops
= &clk_branch2_ops
,
2421 static struct clk_branch cam_cc_csiphy5_clk
= {
2422 .halt_reg
= 0x160b8,
2423 .halt_check
= BRANCH_HALT
,
2425 .enable_reg
= 0x160b8,
2426 .enable_mask
= BIT(0),
2427 .hw
.init
= &(const struct clk_init_data
) {
2428 .name
= "cam_cc_csiphy5_clk",
2429 .parent_hws
= (const struct clk_hw
*[]) {
2430 &cam_cc_cphy_rx_clk_src
.clkr
.hw
,
2433 .flags
= CLK_SET_RATE_PARENT
,
2434 .ops
= &clk_branch2_ops
,
2439 static struct clk_branch cam_cc_csiphy6_clk
= {
2440 .halt_reg
= 0x161ec,
2441 .halt_check
= BRANCH_HALT
,
2443 .enable_reg
= 0x161ec,
2444 .enable_mask
= BIT(0),
2445 .hw
.init
= &(const struct clk_init_data
) {
2446 .name
= "cam_cc_csiphy6_clk",
2447 .parent_hws
= (const struct clk_hw
*[]) {
2448 &cam_cc_cphy_rx_clk_src
.clkr
.hw
,
2451 .flags
= CLK_SET_RATE_PARENT
,
2452 .ops
= &clk_branch2_ops
,
2457 static struct clk_branch cam_cc_csiphy7_clk
= {
2458 .halt_reg
= 0x16320,
2459 .halt_check
= BRANCH_HALT
,
2461 .enable_reg
= 0x16320,
2462 .enable_mask
= BIT(0),
2463 .hw
.init
= &(const struct clk_init_data
) {
2464 .name
= "cam_cc_csiphy7_clk",
2465 .parent_hws
= (const struct clk_hw
*[]) {
2466 &cam_cc_cphy_rx_clk_src
.clkr
.hw
,
2469 .flags
= CLK_SET_RATE_PARENT
,
2470 .ops
= &clk_branch2_ops
,
2475 static struct clk_branch cam_cc_drv_ahb_clk
= {
2476 .halt_reg
= 0x142d8,
2477 .halt_check
= BRANCH_HALT
,
2479 .enable_reg
= 0x142d8,
2480 .enable_mask
= BIT(0),
2481 .hw
.init
= &(const struct clk_init_data
) {
2482 .name
= "cam_cc_drv_ahb_clk",
2483 .parent_hws
= (const struct clk_hw
*[]) {
2484 &cam_cc_slow_ahb_clk_src
.clkr
.hw
,
2487 .flags
= CLK_SET_RATE_PARENT
,
2488 .ops
= &clk_branch2_ops
,
2493 static struct clk_branch cam_cc_drv_xo_clk
= {
2494 .halt_reg
= 0x142d4,
2495 .halt_check
= BRANCH_HALT
,
2497 .enable_reg
= 0x142d4,
2498 .enable_mask
= BIT(0),
2499 .hw
.init
= &(const struct clk_init_data
) {
2500 .name
= "cam_cc_drv_xo_clk",
2501 .parent_hws
= (const struct clk_hw
*[]) {
2502 &cam_cc_xo_clk_src
.clkr
.hw
,
2505 .flags
= CLK_SET_RATE_PARENT
,
2506 .ops
= &clk_branch2_ops
,
2511 static struct clk_branch cam_cc_icp_ahb_clk
= {
2512 .halt_reg
= 0x138fc,
2513 .halt_check
= BRANCH_HALT
,
2515 .enable_reg
= 0x138fc,
2516 .enable_mask
= BIT(0),
2517 .hw
.init
= &(const struct clk_init_data
) {
2518 .name
= "cam_cc_icp_ahb_clk",
2519 .parent_hws
= (const struct clk_hw
*[]) {
2520 &cam_cc_slow_ahb_clk_src
.clkr
.hw
,
2523 .flags
= CLK_SET_RATE_PARENT
,
2524 .ops
= &clk_branch2_ops
,
2529 static struct clk_branch cam_cc_icp_clk
= {
2530 .halt_reg
= 0x138f0,
2531 .halt_check
= BRANCH_HALT
,
2533 .enable_reg
= 0x138f0,
2534 .enable_mask
= BIT(0),
2535 .hw
.init
= &(const struct clk_init_data
) {
2536 .name
= "cam_cc_icp_clk",
2537 .parent_hws
= (const struct clk_hw
*[]) {
2538 &cam_cc_icp_clk_src
.clkr
.hw
,
2541 .flags
= CLK_SET_RATE_PARENT
,
2542 .ops
= &clk_branch2_ops
,
2547 static struct clk_branch cam_cc_ife_0_clk
= {
2548 .halt_reg
= 0x11144,
2549 .halt_check
= BRANCH_HALT
,
2551 .enable_reg
= 0x11144,
2552 .enable_mask
= BIT(0),
2553 .hw
.init
= &(const struct clk_init_data
) {
2554 .name
= "cam_cc_ife_0_clk",
2555 .parent_hws
= (const struct clk_hw
*[]) {
2556 &cam_cc_ife_0_clk_src
.clkr
.hw
,
2559 .flags
= CLK_SET_RATE_PARENT
,
2560 .ops
= &clk_branch2_ops
,
2565 static struct clk_branch cam_cc_ife_0_dsp_clk
= {
2566 .halt_reg
= 0x11280,
2567 .halt_check
= BRANCH_HALT
,
2569 .enable_reg
= 0x11280,
2570 .enable_mask
= BIT(0),
2571 .hw
.init
= &(const struct clk_init_data
) {
2572 .name
= "cam_cc_ife_0_dsp_clk",
2573 .parent_hws
= (const struct clk_hw
*[]) {
2574 &cam_cc_ife_0_dsp_clk_src
.clkr
.hw
,
2577 .flags
= CLK_SET_RATE_PARENT
,
2578 .ops
= &clk_branch2_ops
,
2583 static struct clk_branch cam_cc_ife_0_fast_ahb_clk
= {
2584 .halt_reg
= 0x1128c,
2585 .halt_check
= BRANCH_HALT
,
2587 .enable_reg
= 0x1128c,
2588 .enable_mask
= BIT(0),
2589 .hw
.init
= &(const struct clk_init_data
) {
2590 .name
= "cam_cc_ife_0_fast_ahb_clk",
2591 .parent_hws
= (const struct clk_hw
*[]) {
2592 &cam_cc_fast_ahb_clk_src
.clkr
.hw
,
2595 .flags
= CLK_SET_RATE_PARENT
,
2596 .ops
= &clk_branch2_ops
,
2601 static struct clk_branch cam_cc_ife_1_clk
= {
2602 .halt_reg
= 0x12144,
2603 .halt_check
= BRANCH_HALT
,
2605 .enable_reg
= 0x12144,
2606 .enable_mask
= BIT(0),
2607 .hw
.init
= &(const struct clk_init_data
) {
2608 .name
= "cam_cc_ife_1_clk",
2609 .parent_hws
= (const struct clk_hw
*[]) {
2610 &cam_cc_ife_1_clk_src
.clkr
.hw
,
2613 .flags
= CLK_SET_RATE_PARENT
,
2614 .ops
= &clk_branch2_ops
,
2619 static struct clk_branch cam_cc_ife_1_dsp_clk
= {
2620 .halt_reg
= 0x12280,
2621 .halt_check
= BRANCH_HALT
,
2623 .enable_reg
= 0x12280,
2624 .enable_mask
= BIT(0),
2625 .hw
.init
= &(const struct clk_init_data
) {
2626 .name
= "cam_cc_ife_1_dsp_clk",
2627 .parent_hws
= (const struct clk_hw
*[]) {
2628 &cam_cc_ife_1_dsp_clk_src
.clkr
.hw
,
2631 .flags
= CLK_SET_RATE_PARENT
,
2632 .ops
= &clk_branch2_ops
,
2637 static struct clk_branch cam_cc_ife_1_fast_ahb_clk
= {
2638 .halt_reg
= 0x1228c,
2639 .halt_check
= BRANCH_HALT
,
2641 .enable_reg
= 0x1228c,
2642 .enable_mask
= BIT(0),
2643 .hw
.init
= &(const struct clk_init_data
) {
2644 .name
= "cam_cc_ife_1_fast_ahb_clk",
2645 .parent_hws
= (const struct clk_hw
*[]) {
2646 &cam_cc_fast_ahb_clk_src
.clkr
.hw
,
2649 .flags
= CLK_SET_RATE_PARENT
,
2650 .ops
= &clk_branch2_ops
,
2655 static struct clk_branch cam_cc_ife_2_clk
= {
2656 .halt_reg
= 0x123d4,
2657 .halt_check
= BRANCH_HALT
,
2659 .enable_reg
= 0x123d4,
2660 .enable_mask
= BIT(0),
2661 .hw
.init
= &(const struct clk_init_data
) {
2662 .name
= "cam_cc_ife_2_clk",
2663 .parent_hws
= (const struct clk_hw
*[]) {
2664 &cam_cc_ife_2_clk_src
.clkr
.hw
,
2667 .flags
= CLK_SET_RATE_PARENT
,
2668 .ops
= &clk_branch2_ops
,
2673 static struct clk_branch cam_cc_ife_2_dsp_clk
= {
2674 .halt_reg
= 0x12510,
2675 .halt_check
= BRANCH_HALT
,
2677 .enable_reg
= 0x12510,
2678 .enable_mask
= BIT(0),
2679 .hw
.init
= &(const struct clk_init_data
) {
2680 .name
= "cam_cc_ife_2_dsp_clk",
2681 .parent_hws
= (const struct clk_hw
*[]) {
2682 &cam_cc_ife_2_dsp_clk_src
.clkr
.hw
,
2685 .flags
= CLK_SET_RATE_PARENT
,
2686 .ops
= &clk_branch2_ops
,
2691 static struct clk_branch cam_cc_ife_2_fast_ahb_clk
= {
2692 .halt_reg
= 0x1251c,
2693 .halt_check
= BRANCH_HALT
,
2695 .enable_reg
= 0x1251c,
2696 .enable_mask
= BIT(0),
2697 .hw
.init
= &(const struct clk_init_data
) {
2698 .name
= "cam_cc_ife_2_fast_ahb_clk",
2699 .parent_hws
= (const struct clk_hw
*[]) {
2700 &cam_cc_fast_ahb_clk_src
.clkr
.hw
,
2703 .flags
= CLK_SET_RATE_PARENT
,
2704 .ops
= &clk_branch2_ops
,
2709 static struct clk_branch cam_cc_ife_lite_ahb_clk
= {
2710 .halt_reg
= 0x13278,
2711 .halt_check
= BRANCH_HALT
,
2713 .enable_reg
= 0x13278,
2714 .enable_mask
= BIT(0),
2715 .hw
.init
= &(const struct clk_init_data
) {
2716 .name
= "cam_cc_ife_lite_ahb_clk",
2717 .parent_hws
= (const struct clk_hw
*[]) {
2718 &cam_cc_slow_ahb_clk_src
.clkr
.hw
,
2721 .flags
= CLK_SET_RATE_PARENT
,
2722 .ops
= &clk_branch2_ops
,
2727 static struct clk_branch cam_cc_ife_lite_clk
= {
2728 .halt_reg
= 0x1312c,
2729 .halt_check
= BRANCH_HALT
,
2731 .enable_reg
= 0x1312c,
2732 .enable_mask
= BIT(0),
2733 .hw
.init
= &(const struct clk_init_data
) {
2734 .name
= "cam_cc_ife_lite_clk",
2735 .parent_hws
= (const struct clk_hw
*[]) {
2736 &cam_cc_ife_lite_clk_src
.clkr
.hw
,
2739 .flags
= CLK_SET_RATE_PARENT
,
2740 .ops
= &clk_branch2_ops
,
2745 static struct clk_branch cam_cc_ife_lite_cphy_rx_clk
= {
2746 .halt_reg
= 0x13274,
2747 .halt_check
= BRANCH_HALT
,
2749 .enable_reg
= 0x13274,
2750 .enable_mask
= BIT(0),
2751 .hw
.init
= &(const struct clk_init_data
) {
2752 .name
= "cam_cc_ife_lite_cphy_rx_clk",
2753 .parent_hws
= (const struct clk_hw
*[]) {
2754 &cam_cc_cphy_rx_clk_src
.clkr
.hw
,
2757 .flags
= CLK_SET_RATE_PARENT
,
2758 .ops
= &clk_branch2_ops
,
2763 static struct clk_branch cam_cc_ife_lite_csid_clk
= {
2764 .halt_reg
= 0x13268,
2765 .halt_check
= BRANCH_HALT
,
2767 .enable_reg
= 0x13268,
2768 .enable_mask
= BIT(0),
2769 .hw
.init
= &(const struct clk_init_data
) {
2770 .name
= "cam_cc_ife_lite_csid_clk",
2771 .parent_hws
= (const struct clk_hw
*[]) {
2772 &cam_cc_ife_lite_csid_clk_src
.clkr
.hw
,
2775 .flags
= CLK_SET_RATE_PARENT
,
2776 .ops
= &clk_branch2_ops
,
2781 static struct clk_branch cam_cc_ipe_nps_ahb_clk
= {
2782 .halt_reg
= 0x1051c,
2783 .halt_check
= BRANCH_HALT
,
2785 .enable_reg
= 0x1051c,
2786 .enable_mask
= BIT(0),
2787 .hw
.init
= &(const struct clk_init_data
) {
2788 .name
= "cam_cc_ipe_nps_ahb_clk",
2789 .parent_hws
= (const struct clk_hw
*[]) {
2790 &cam_cc_slow_ahb_clk_src
.clkr
.hw
,
2793 .flags
= CLK_SET_RATE_PARENT
,
2794 .ops
= &clk_branch2_ops
,
2799 static struct clk_branch cam_cc_ipe_nps_clk
= {
2800 .halt_reg
= 0x104f8,
2801 .halt_check
= BRANCH_HALT
,
2803 .enable_reg
= 0x104f8,
2804 .enable_mask
= BIT(0),
2805 .hw
.init
= &(const struct clk_init_data
) {
2806 .name
= "cam_cc_ipe_nps_clk",
2807 .parent_hws
= (const struct clk_hw
*[]) {
2808 &cam_cc_ipe_nps_clk_src
.clkr
.hw
,
2811 .flags
= CLK_SET_RATE_PARENT
,
2812 .ops
= &clk_branch2_ops
,
2817 static struct clk_branch cam_cc_ipe_nps_fast_ahb_clk
= {
2818 .halt_reg
= 0x10520,
2819 .halt_check
= BRANCH_HALT
,
2821 .enable_reg
= 0x10520,
2822 .enable_mask
= BIT(0),
2823 .hw
.init
= &(const struct clk_init_data
) {
2824 .name
= "cam_cc_ipe_nps_fast_ahb_clk",
2825 .parent_hws
= (const struct clk_hw
*[]) {
2826 &cam_cc_fast_ahb_clk_src
.clkr
.hw
,
2829 .flags
= CLK_SET_RATE_PARENT
,
2830 .ops
= &clk_branch2_ops
,
2835 static struct clk_branch cam_cc_ipe_pps_clk
= {
2836 .halt_reg
= 0x10508,
2837 .halt_check
= BRANCH_HALT
,
2839 .enable_reg
= 0x10508,
2840 .enable_mask
= BIT(0),
2841 .hw
.init
= &(const struct clk_init_data
) {
2842 .name
= "cam_cc_ipe_pps_clk",
2843 .parent_hws
= (const struct clk_hw
*[]) {
2844 &cam_cc_ipe_nps_clk_src
.clkr
.hw
,
2847 .flags
= CLK_SET_RATE_PARENT
,
2848 .ops
= &clk_branch2_ops
,
2853 static struct clk_branch cam_cc_ipe_pps_fast_ahb_clk
= {
2854 .halt_reg
= 0x10524,
2855 .halt_check
= BRANCH_HALT
,
2857 .enable_reg
= 0x10524,
2858 .enable_mask
= BIT(0),
2859 .hw
.init
= &(const struct clk_init_data
) {
2860 .name
= "cam_cc_ipe_pps_fast_ahb_clk",
2861 .parent_hws
= (const struct clk_hw
*[]) {
2862 &cam_cc_fast_ahb_clk_src
.clkr
.hw
,
2865 .flags
= CLK_SET_RATE_PARENT
,
2866 .ops
= &clk_branch2_ops
,
2871 static struct clk_branch cam_cc_jpeg_1_clk
= {
2872 .halt_reg
= 0x137ac,
2873 .halt_check
= BRANCH_HALT
,
2875 .enable_reg
= 0x137ac,
2876 .enable_mask
= BIT(0),
2877 .hw
.init
= &(const struct clk_init_data
) {
2878 .name
= "cam_cc_jpeg_1_clk",
2879 .parent_hws
= (const struct clk_hw
*[]) {
2880 &cam_cc_jpeg_clk_src
.clkr
.hw
,
2883 .flags
= CLK_SET_RATE_PARENT
,
2884 .ops
= &clk_branch2_ops
,
2889 static struct clk_branch cam_cc_jpeg_clk
= {
2890 .halt_reg
= 0x137a0,
2891 .halt_check
= BRANCH_HALT
,
2893 .enable_reg
= 0x137a0,
2894 .enable_mask
= BIT(0),
2895 .hw
.init
= &(const struct clk_init_data
) {
2896 .name
= "cam_cc_jpeg_clk",
2897 .parent_hws
= (const struct clk_hw
*[]) {
2898 &cam_cc_jpeg_clk_src
.clkr
.hw
,
2901 .flags
= CLK_SET_RATE_PARENT
,
2902 .ops
= &clk_branch2_ops
,
2907 static struct clk_branch cam_cc_mclk0_clk
= {
2908 .halt_reg
= 0x1512c,
2909 .halt_check
= BRANCH_HALT
,
2911 .enable_reg
= 0x1512c,
2912 .enable_mask
= BIT(0),
2913 .hw
.init
= &(const struct clk_init_data
) {
2914 .name
= "cam_cc_mclk0_clk",
2915 .parent_hws
= (const struct clk_hw
*[]) {
2916 &cam_cc_mclk0_clk_src
.clkr
.hw
,
2919 .flags
= CLK_SET_RATE_PARENT
,
2920 .ops
= &clk_branch2_ops
,
2925 static struct clk_branch cam_cc_mclk1_clk
= {
2926 .halt_reg
= 0x1525c,
2927 .halt_check
= BRANCH_HALT
,
2929 .enable_reg
= 0x1525c,
2930 .enable_mask
= BIT(0),
2931 .hw
.init
= &(const struct clk_init_data
) {
2932 .name
= "cam_cc_mclk1_clk",
2933 .parent_hws
= (const struct clk_hw
*[]) {
2934 &cam_cc_mclk1_clk_src
.clkr
.hw
,
2937 .flags
= CLK_SET_RATE_PARENT
,
2938 .ops
= &clk_branch2_ops
,
2943 static struct clk_branch cam_cc_mclk2_clk
= {
2944 .halt_reg
= 0x1538c,
2945 .halt_check
= BRANCH_HALT
,
2947 .enable_reg
= 0x1538c,
2948 .enable_mask
= BIT(0),
2949 .hw
.init
= &(const struct clk_init_data
) {
2950 .name
= "cam_cc_mclk2_clk",
2951 .parent_hws
= (const struct clk_hw
*[]) {
2952 &cam_cc_mclk2_clk_src
.clkr
.hw
,
2955 .flags
= CLK_SET_RATE_PARENT
,
2956 .ops
= &clk_branch2_ops
,
2961 static struct clk_branch cam_cc_mclk3_clk
= {
2962 .halt_reg
= 0x154bc,
2963 .halt_check
= BRANCH_HALT
,
2965 .enable_reg
= 0x154bc,
2966 .enable_mask
= BIT(0),
2967 .hw
.init
= &(const struct clk_init_data
) {
2968 .name
= "cam_cc_mclk3_clk",
2969 .parent_hws
= (const struct clk_hw
*[]) {
2970 &cam_cc_mclk3_clk_src
.clkr
.hw
,
2973 .flags
= CLK_SET_RATE_PARENT
,
2974 .ops
= &clk_branch2_ops
,
2979 static struct clk_branch cam_cc_mclk4_clk
= {
2980 .halt_reg
= 0x155ec,
2981 .halt_check
= BRANCH_HALT
,
2983 .enable_reg
= 0x155ec,
2984 .enable_mask
= BIT(0),
2985 .hw
.init
= &(const struct clk_init_data
) {
2986 .name
= "cam_cc_mclk4_clk",
2987 .parent_hws
= (const struct clk_hw
*[]) {
2988 &cam_cc_mclk4_clk_src
.clkr
.hw
,
2991 .flags
= CLK_SET_RATE_PARENT
,
2992 .ops
= &clk_branch2_ops
,
2997 static struct clk_branch cam_cc_mclk5_clk
= {
2998 .halt_reg
= 0x1571c,
2999 .halt_check
= BRANCH_HALT
,
3001 .enable_reg
= 0x1571c,
3002 .enable_mask
= BIT(0),
3003 .hw
.init
= &(const struct clk_init_data
) {
3004 .name
= "cam_cc_mclk5_clk",
3005 .parent_hws
= (const struct clk_hw
*[]) {
3006 &cam_cc_mclk5_clk_src
.clkr
.hw
,
3009 .flags
= CLK_SET_RATE_PARENT
,
3010 .ops
= &clk_branch2_ops
,
3015 static struct clk_branch cam_cc_mclk6_clk
= {
3016 .halt_reg
= 0x1584c,
3017 .halt_check
= BRANCH_HALT
,
3019 .enable_reg
= 0x1584c,
3020 .enable_mask
= BIT(0),
3021 .hw
.init
= &(const struct clk_init_data
) {
3022 .name
= "cam_cc_mclk6_clk",
3023 .parent_hws
= (const struct clk_hw
*[]) {
3024 &cam_cc_mclk6_clk_src
.clkr
.hw
,
3027 .flags
= CLK_SET_RATE_PARENT
,
3028 .ops
= &clk_branch2_ops
,
3033 static struct clk_branch cam_cc_mclk7_clk
= {
3034 .halt_reg
= 0x1597c,
3035 .halt_check
= BRANCH_HALT
,
3037 .enable_reg
= 0x1597c,
3038 .enable_mask
= BIT(0),
3039 .hw
.init
= &(const struct clk_init_data
) {
3040 .name
= "cam_cc_mclk7_clk",
3041 .parent_hws
= (const struct clk_hw
*[]) {
3042 &cam_cc_mclk7_clk_src
.clkr
.hw
,
3045 .flags
= CLK_SET_RATE_PARENT
,
3046 .ops
= &clk_branch2_ops
,
3051 static struct clk_branch cam_cc_qdss_debug_clk
= {
3052 .halt_reg
= 0x14050,
3053 .halt_check
= BRANCH_HALT
,
3055 .enable_reg
= 0x14050,
3056 .enable_mask
= BIT(0),
3057 .hw
.init
= &(const struct clk_init_data
) {
3058 .name
= "cam_cc_qdss_debug_clk",
3059 .parent_hws
= (const struct clk_hw
*[]) {
3060 &cam_cc_qdss_debug_clk_src
.clkr
.hw
,
3063 .flags
= CLK_SET_RATE_PARENT
,
3064 .ops
= &clk_branch2_ops
,
3069 static struct clk_branch cam_cc_qdss_debug_xo_clk
= {
3070 .halt_reg
= 0x14054,
3071 .halt_check
= BRANCH_HALT
,
3073 .enable_reg
= 0x14054,
3074 .enable_mask
= BIT(0),
3075 .hw
.init
= &(const struct clk_init_data
) {
3076 .name
= "cam_cc_qdss_debug_xo_clk",
3077 .parent_hws
= (const struct clk_hw
*[]) {
3078 &cam_cc_xo_clk_src
.clkr
.hw
,
3081 .flags
= CLK_SET_RATE_PARENT
,
3082 .ops
= &clk_branch2_ops
,
3087 static struct clk_branch cam_cc_sbi_clk
= {
3088 .halt_reg
= 0x10540,
3089 .halt_check
= BRANCH_HALT
,
3091 .enable_reg
= 0x10540,
3092 .enable_mask
= BIT(0),
3093 .hw
.init
= &(const struct clk_init_data
) {
3094 .name
= "cam_cc_sbi_clk",
3095 .parent_hws
= (const struct clk_hw
*[]) {
3096 &cam_cc_ife_0_clk_src
.clkr
.hw
,
3099 .flags
= CLK_SET_RATE_PARENT
,
3100 .ops
= &clk_branch2_ops
,
3105 static struct clk_branch cam_cc_sbi_fast_ahb_clk
= {
3106 .halt_reg
= 0x10550,
3107 .halt_check
= BRANCH_HALT
,
3109 .enable_reg
= 0x10550,
3110 .enable_mask
= BIT(0),
3111 .hw
.init
= &(const struct clk_init_data
) {
3112 .name
= "cam_cc_sbi_fast_ahb_clk",
3113 .parent_hws
= (const struct clk_hw
*[]) {
3114 &cam_cc_fast_ahb_clk_src
.clkr
.hw
,
3117 .flags
= CLK_SET_RATE_PARENT
,
3118 .ops
= &clk_branch2_ops
,
3123 static struct clk_branch cam_cc_sfe_0_clk
= {
3124 .halt_reg
= 0x133c0,
3125 .halt_check
= BRANCH_HALT
,
3127 .enable_reg
= 0x133c0,
3128 .enable_mask
= BIT(0),
3129 .hw
.init
= &(const struct clk_init_data
) {
3130 .name
= "cam_cc_sfe_0_clk",
3131 .parent_hws
= (const struct clk_hw
*[]) {
3132 &cam_cc_sfe_0_clk_src
.clkr
.hw
,
3135 .flags
= CLK_SET_RATE_PARENT
,
3136 .ops
= &clk_branch2_ops
,
3141 static struct clk_branch cam_cc_sfe_0_fast_ahb_clk
= {
3142 .halt_reg
= 0x133d8,
3143 .halt_check
= BRANCH_HALT
,
3145 .enable_reg
= 0x133d8,
3146 .enable_mask
= BIT(0),
3147 .hw
.init
= &(const struct clk_init_data
) {
3148 .name
= "cam_cc_sfe_0_fast_ahb_clk",
3149 .parent_hws
= (const struct clk_hw
*[]) {
3150 &cam_cc_fast_ahb_clk_src
.clkr
.hw
,
3153 .flags
= CLK_SET_RATE_PARENT
,
3154 .ops
= &clk_branch2_ops
,
3159 static struct clk_branch cam_cc_sfe_1_clk
= {
3160 .halt_reg
= 0x13520,
3161 .halt_check
= BRANCH_HALT
,
3163 .enable_reg
= 0x13520,
3164 .enable_mask
= BIT(0),
3165 .hw
.init
= &(const struct clk_init_data
) {
3166 .name
= "cam_cc_sfe_1_clk",
3167 .parent_hws
= (const struct clk_hw
*[]) {
3168 &cam_cc_sfe_1_clk_src
.clkr
.hw
,
3171 .flags
= CLK_SET_RATE_PARENT
,
3172 .ops
= &clk_branch2_ops
,
3177 static struct clk_branch cam_cc_sfe_1_fast_ahb_clk
= {
3178 .halt_reg
= 0x13538,
3179 .halt_check
= BRANCH_HALT
,
3181 .enable_reg
= 0x13538,
3182 .enable_mask
= BIT(0),
3183 .hw
.init
= &(const struct clk_init_data
) {
3184 .name
= "cam_cc_sfe_1_fast_ahb_clk",
3185 .parent_hws
= (const struct clk_hw
*[]) {
3186 &cam_cc_fast_ahb_clk_src
.clkr
.hw
,
3189 .flags
= CLK_SET_RATE_PARENT
,
3190 .ops
= &clk_branch2_ops
,
3195 static struct gdsc cam_cc_bps_gdsc
= {
3197 .en_rest_wait_val
= 0x2,
3198 .en_few_wait_val
= 0x2,
3199 .clk_dis_wait_val
= 0xf,
3201 .name
= "cam_cc_bps_gdsc",
3203 .pwrsts
= PWRSTS_OFF_ON
,
3204 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3207 static struct gdsc cam_cc_ife_0_gdsc
= {
3209 .en_rest_wait_val
= 0x2,
3210 .en_few_wait_val
= 0x2,
3211 .clk_dis_wait_val
= 0xf,
3213 .name
= "cam_cc_ife_0_gdsc",
3215 .pwrsts
= PWRSTS_OFF_ON
,
3216 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3219 static struct gdsc cam_cc_ife_1_gdsc
= {
3221 .en_rest_wait_val
= 0x2,
3222 .en_few_wait_val
= 0x2,
3223 .clk_dis_wait_val
= 0xf,
3225 .name
= "cam_cc_ife_1_gdsc",
3227 .pwrsts
= PWRSTS_OFF_ON
,
3228 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3231 static struct gdsc cam_cc_ife_2_gdsc
= {
3233 .en_rest_wait_val
= 0x2,
3234 .en_few_wait_val
= 0x2,
3235 .clk_dis_wait_val
= 0xf,
3237 .name
= "cam_cc_ife_2_gdsc",
3239 .pwrsts
= PWRSTS_OFF_ON
,
3240 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3243 static struct gdsc cam_cc_ipe_0_gdsc
= {
3245 .en_rest_wait_val
= 0x2,
3246 .en_few_wait_val
= 0x2,
3247 .clk_dis_wait_val
= 0xf,
3249 .name
= "cam_cc_ipe_0_gdsc",
3251 .pwrsts
= PWRSTS_OFF_ON
,
3252 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3255 static struct gdsc cam_cc_sbi_gdsc
= {
3257 .en_rest_wait_val
= 0x2,
3258 .en_few_wait_val
= 0x2,
3259 .clk_dis_wait_val
= 0xf,
3261 .name
= "cam_cc_sbi_gdsc",
3263 .pwrsts
= PWRSTS_OFF_ON
,
3264 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3267 static struct gdsc cam_cc_sfe_0_gdsc
= {
3269 .en_rest_wait_val
= 0x2,
3270 .en_few_wait_val
= 0x2,
3271 .clk_dis_wait_val
= 0xf,
3273 .name
= "cam_cc_sfe_0_gdsc",
3275 .pwrsts
= PWRSTS_OFF_ON
,
3276 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3279 static struct gdsc cam_cc_sfe_1_gdsc
= {
3281 .en_rest_wait_val
= 0x2,
3282 .en_few_wait_val
= 0x2,
3283 .clk_dis_wait_val
= 0xf,
3285 .name
= "cam_cc_sfe_1_gdsc",
3287 .pwrsts
= PWRSTS_OFF_ON
,
3288 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3291 static struct gdsc cam_cc_titan_top_gdsc
= {
3293 .en_rest_wait_val
= 0x2,
3294 .en_few_wait_val
= 0x2,
3295 .clk_dis_wait_val
= 0xf,
3297 .name
= "cam_cc_titan_top_gdsc",
3299 .pwrsts
= PWRSTS_OFF_ON
,
3300 .flags
= POLL_CFG_GDSCR
| RETAIN_FF_ENABLE
,
3303 static struct clk_regmap
*cam_cc_sm8550_clocks
[] = {
3304 [CAM_CC_BPS_AHB_CLK
] = &cam_cc_bps_ahb_clk
.clkr
,
3305 [CAM_CC_BPS_CLK
] = &cam_cc_bps_clk
.clkr
,
3306 [CAM_CC_BPS_CLK_SRC
] = &cam_cc_bps_clk_src
.clkr
,
3307 [CAM_CC_BPS_FAST_AHB_CLK
] = &cam_cc_bps_fast_ahb_clk
.clkr
,
3308 [CAM_CC_CAMNOC_AXI_CLK
] = &cam_cc_camnoc_axi_clk
.clkr
,
3309 [CAM_CC_CAMNOC_AXI_CLK_SRC
] = &cam_cc_camnoc_axi_clk_src
.clkr
,
3310 [CAM_CC_CAMNOC_DCD_XO_CLK
] = &cam_cc_camnoc_dcd_xo_clk
.clkr
,
3311 [CAM_CC_CAMNOC_XO_CLK
] = &cam_cc_camnoc_xo_clk
.clkr
,
3312 [CAM_CC_CCI_0_CLK
] = &cam_cc_cci_0_clk
.clkr
,
3313 [CAM_CC_CCI_0_CLK_SRC
] = &cam_cc_cci_0_clk_src
.clkr
,
3314 [CAM_CC_CCI_1_CLK
] = &cam_cc_cci_1_clk
.clkr
,
3315 [CAM_CC_CCI_1_CLK_SRC
] = &cam_cc_cci_1_clk_src
.clkr
,
3316 [CAM_CC_CCI_2_CLK
] = &cam_cc_cci_2_clk
.clkr
,
3317 [CAM_CC_CCI_2_CLK_SRC
] = &cam_cc_cci_2_clk_src
.clkr
,
3318 [CAM_CC_CORE_AHB_CLK
] = &cam_cc_core_ahb_clk
.clkr
,
3319 [CAM_CC_CPAS_AHB_CLK
] = &cam_cc_cpas_ahb_clk
.clkr
,
3320 [CAM_CC_CPAS_BPS_CLK
] = &cam_cc_cpas_bps_clk
.clkr
,
3321 [CAM_CC_CPAS_CRE_CLK
] = &cam_cc_cpas_cre_clk
.clkr
,
3322 [CAM_CC_CPAS_FAST_AHB_CLK
] = &cam_cc_cpas_fast_ahb_clk
.clkr
,
3323 [CAM_CC_CPAS_IFE_0_CLK
] = &cam_cc_cpas_ife_0_clk
.clkr
,
3324 [CAM_CC_CPAS_IFE_1_CLK
] = &cam_cc_cpas_ife_1_clk
.clkr
,
3325 [CAM_CC_CPAS_IFE_2_CLK
] = &cam_cc_cpas_ife_2_clk
.clkr
,
3326 [CAM_CC_CPAS_IFE_LITE_CLK
] = &cam_cc_cpas_ife_lite_clk
.clkr
,
3327 [CAM_CC_CPAS_IPE_NPS_CLK
] = &cam_cc_cpas_ipe_nps_clk
.clkr
,
3328 [CAM_CC_CPAS_SBI_CLK
] = &cam_cc_cpas_sbi_clk
.clkr
,
3329 [CAM_CC_CPAS_SFE_0_CLK
] = &cam_cc_cpas_sfe_0_clk
.clkr
,
3330 [CAM_CC_CPAS_SFE_1_CLK
] = &cam_cc_cpas_sfe_1_clk
.clkr
,
3331 [CAM_CC_CPHY_RX_CLK_SRC
] = &cam_cc_cphy_rx_clk_src
.clkr
,
3332 [CAM_CC_CRE_AHB_CLK
] = &cam_cc_cre_ahb_clk
.clkr
,
3333 [CAM_CC_CRE_CLK
] = &cam_cc_cre_clk
.clkr
,
3334 [CAM_CC_CRE_CLK_SRC
] = &cam_cc_cre_clk_src
.clkr
,
3335 [CAM_CC_CSI0PHYTIMER_CLK
] = &cam_cc_csi0phytimer_clk
.clkr
,
3336 [CAM_CC_CSI0PHYTIMER_CLK_SRC
] = &cam_cc_csi0phytimer_clk_src
.clkr
,
3337 [CAM_CC_CSI1PHYTIMER_CLK
] = &cam_cc_csi1phytimer_clk
.clkr
,
3338 [CAM_CC_CSI1PHYTIMER_CLK_SRC
] = &cam_cc_csi1phytimer_clk_src
.clkr
,
3339 [CAM_CC_CSI2PHYTIMER_CLK
] = &cam_cc_csi2phytimer_clk
.clkr
,
3340 [CAM_CC_CSI2PHYTIMER_CLK_SRC
] = &cam_cc_csi2phytimer_clk_src
.clkr
,
3341 [CAM_CC_CSI3PHYTIMER_CLK
] = &cam_cc_csi3phytimer_clk
.clkr
,
3342 [CAM_CC_CSI3PHYTIMER_CLK_SRC
] = &cam_cc_csi3phytimer_clk_src
.clkr
,
3343 [CAM_CC_CSI4PHYTIMER_CLK
] = &cam_cc_csi4phytimer_clk
.clkr
,
3344 [CAM_CC_CSI4PHYTIMER_CLK_SRC
] = &cam_cc_csi4phytimer_clk_src
.clkr
,
3345 [CAM_CC_CSI5PHYTIMER_CLK
] = &cam_cc_csi5phytimer_clk
.clkr
,
3346 [CAM_CC_CSI5PHYTIMER_CLK_SRC
] = &cam_cc_csi5phytimer_clk_src
.clkr
,
3347 [CAM_CC_CSI6PHYTIMER_CLK
] = &cam_cc_csi6phytimer_clk
.clkr
,
3348 [CAM_CC_CSI6PHYTIMER_CLK_SRC
] = &cam_cc_csi6phytimer_clk_src
.clkr
,
3349 [CAM_CC_CSI7PHYTIMER_CLK
] = &cam_cc_csi7phytimer_clk
.clkr
,
3350 [CAM_CC_CSI7PHYTIMER_CLK_SRC
] = &cam_cc_csi7phytimer_clk_src
.clkr
,
3351 [CAM_CC_CSID_CLK
] = &cam_cc_csid_clk
.clkr
,
3352 [CAM_CC_CSID_CLK_SRC
] = &cam_cc_csid_clk_src
.clkr
,
3353 [CAM_CC_CSID_CSIPHY_RX_CLK
] = &cam_cc_csid_csiphy_rx_clk
.clkr
,
3354 [CAM_CC_CSIPHY0_CLK
] = &cam_cc_csiphy0_clk
.clkr
,
3355 [CAM_CC_CSIPHY1_CLK
] = &cam_cc_csiphy1_clk
.clkr
,
3356 [CAM_CC_CSIPHY2_CLK
] = &cam_cc_csiphy2_clk
.clkr
,
3357 [CAM_CC_CSIPHY3_CLK
] = &cam_cc_csiphy3_clk
.clkr
,
3358 [CAM_CC_CSIPHY4_CLK
] = &cam_cc_csiphy4_clk
.clkr
,
3359 [CAM_CC_CSIPHY5_CLK
] = &cam_cc_csiphy5_clk
.clkr
,
3360 [CAM_CC_CSIPHY6_CLK
] = &cam_cc_csiphy6_clk
.clkr
,
3361 [CAM_CC_CSIPHY7_CLK
] = &cam_cc_csiphy7_clk
.clkr
,
3362 [CAM_CC_DRV_AHB_CLK
] = &cam_cc_drv_ahb_clk
.clkr
,
3363 [CAM_CC_DRV_XO_CLK
] = &cam_cc_drv_xo_clk
.clkr
,
3364 [CAM_CC_FAST_AHB_CLK_SRC
] = &cam_cc_fast_ahb_clk_src
.clkr
,
3365 [CAM_CC_ICP_AHB_CLK
] = &cam_cc_icp_ahb_clk
.clkr
,
3366 [CAM_CC_ICP_CLK
] = &cam_cc_icp_clk
.clkr
,
3367 [CAM_CC_ICP_CLK_SRC
] = &cam_cc_icp_clk_src
.clkr
,
3368 [CAM_CC_IFE_0_CLK
] = &cam_cc_ife_0_clk
.clkr
,
3369 [CAM_CC_IFE_0_CLK_SRC
] = &cam_cc_ife_0_clk_src
.clkr
,
3370 [CAM_CC_IFE_0_DSP_CLK
] = &cam_cc_ife_0_dsp_clk
.clkr
,
3371 [CAM_CC_IFE_0_DSP_CLK_SRC
] = &cam_cc_ife_0_dsp_clk_src
.clkr
,
3372 [CAM_CC_IFE_0_FAST_AHB_CLK
] = &cam_cc_ife_0_fast_ahb_clk
.clkr
,
3373 [CAM_CC_IFE_1_CLK
] = &cam_cc_ife_1_clk
.clkr
,
3374 [CAM_CC_IFE_1_CLK_SRC
] = &cam_cc_ife_1_clk_src
.clkr
,
3375 [CAM_CC_IFE_1_DSP_CLK
] = &cam_cc_ife_1_dsp_clk
.clkr
,
3376 [CAM_CC_IFE_1_DSP_CLK_SRC
] = &cam_cc_ife_1_dsp_clk_src
.clkr
,
3377 [CAM_CC_IFE_1_FAST_AHB_CLK
] = &cam_cc_ife_1_fast_ahb_clk
.clkr
,
3378 [CAM_CC_IFE_2_CLK
] = &cam_cc_ife_2_clk
.clkr
,
3379 [CAM_CC_IFE_2_CLK_SRC
] = &cam_cc_ife_2_clk_src
.clkr
,
3380 [CAM_CC_IFE_2_DSP_CLK
] = &cam_cc_ife_2_dsp_clk
.clkr
,
3381 [CAM_CC_IFE_2_DSP_CLK_SRC
] = &cam_cc_ife_2_dsp_clk_src
.clkr
,
3382 [CAM_CC_IFE_2_FAST_AHB_CLK
] = &cam_cc_ife_2_fast_ahb_clk
.clkr
,
3383 [CAM_CC_IFE_LITE_AHB_CLK
] = &cam_cc_ife_lite_ahb_clk
.clkr
,
3384 [CAM_CC_IFE_LITE_CLK
] = &cam_cc_ife_lite_clk
.clkr
,
3385 [CAM_CC_IFE_LITE_CLK_SRC
] = &cam_cc_ife_lite_clk_src
.clkr
,
3386 [CAM_CC_IFE_LITE_CPHY_RX_CLK
] = &cam_cc_ife_lite_cphy_rx_clk
.clkr
,
3387 [CAM_CC_IFE_LITE_CSID_CLK
] = &cam_cc_ife_lite_csid_clk
.clkr
,
3388 [CAM_CC_IFE_LITE_CSID_CLK_SRC
] = &cam_cc_ife_lite_csid_clk_src
.clkr
,
3389 [CAM_CC_IPE_NPS_AHB_CLK
] = &cam_cc_ipe_nps_ahb_clk
.clkr
,
3390 [CAM_CC_IPE_NPS_CLK
] = &cam_cc_ipe_nps_clk
.clkr
,
3391 [CAM_CC_IPE_NPS_CLK_SRC
] = &cam_cc_ipe_nps_clk_src
.clkr
,
3392 [CAM_CC_IPE_NPS_FAST_AHB_CLK
] = &cam_cc_ipe_nps_fast_ahb_clk
.clkr
,
3393 [CAM_CC_IPE_PPS_CLK
] = &cam_cc_ipe_pps_clk
.clkr
,
3394 [CAM_CC_IPE_PPS_FAST_AHB_CLK
] = &cam_cc_ipe_pps_fast_ahb_clk
.clkr
,
3395 [CAM_CC_JPEG_1_CLK
] = &cam_cc_jpeg_1_clk
.clkr
,
3396 [CAM_CC_JPEG_CLK
] = &cam_cc_jpeg_clk
.clkr
,
3397 [CAM_CC_JPEG_CLK_SRC
] = &cam_cc_jpeg_clk_src
.clkr
,
3398 [CAM_CC_MCLK0_CLK
] = &cam_cc_mclk0_clk
.clkr
,
3399 [CAM_CC_MCLK0_CLK_SRC
] = &cam_cc_mclk0_clk_src
.clkr
,
3400 [CAM_CC_MCLK1_CLK
] = &cam_cc_mclk1_clk
.clkr
,
3401 [CAM_CC_MCLK1_CLK_SRC
] = &cam_cc_mclk1_clk_src
.clkr
,
3402 [CAM_CC_MCLK2_CLK
] = &cam_cc_mclk2_clk
.clkr
,
3403 [CAM_CC_MCLK2_CLK_SRC
] = &cam_cc_mclk2_clk_src
.clkr
,
3404 [CAM_CC_MCLK3_CLK
] = &cam_cc_mclk3_clk
.clkr
,
3405 [CAM_CC_MCLK3_CLK_SRC
] = &cam_cc_mclk3_clk_src
.clkr
,
3406 [CAM_CC_MCLK4_CLK
] = &cam_cc_mclk4_clk
.clkr
,
3407 [CAM_CC_MCLK4_CLK_SRC
] = &cam_cc_mclk4_clk_src
.clkr
,
3408 [CAM_CC_MCLK5_CLK
] = &cam_cc_mclk5_clk
.clkr
,
3409 [CAM_CC_MCLK5_CLK_SRC
] = &cam_cc_mclk5_clk_src
.clkr
,
3410 [CAM_CC_MCLK6_CLK
] = &cam_cc_mclk6_clk
.clkr
,
3411 [CAM_CC_MCLK6_CLK_SRC
] = &cam_cc_mclk6_clk_src
.clkr
,
3412 [CAM_CC_MCLK7_CLK
] = &cam_cc_mclk7_clk
.clkr
,
3413 [CAM_CC_MCLK7_CLK_SRC
] = &cam_cc_mclk7_clk_src
.clkr
,
3414 [CAM_CC_PLL0
] = &cam_cc_pll0
.clkr
,
3415 [CAM_CC_PLL0_OUT_EVEN
] = &cam_cc_pll0_out_even
.clkr
,
3416 [CAM_CC_PLL0_OUT_ODD
] = &cam_cc_pll0_out_odd
.clkr
,
3417 [CAM_CC_PLL1
] = &cam_cc_pll1
.clkr
,
3418 [CAM_CC_PLL1_OUT_EVEN
] = &cam_cc_pll1_out_even
.clkr
,
3419 [CAM_CC_PLL2
] = &cam_cc_pll2
.clkr
,
3420 [CAM_CC_PLL3
] = &cam_cc_pll3
.clkr
,
3421 [CAM_CC_PLL3_OUT_EVEN
] = &cam_cc_pll3_out_even
.clkr
,
3422 [CAM_CC_PLL4
] = &cam_cc_pll4
.clkr
,
3423 [CAM_CC_PLL4_OUT_EVEN
] = &cam_cc_pll4_out_even
.clkr
,
3424 [CAM_CC_PLL5
] = &cam_cc_pll5
.clkr
,
3425 [CAM_CC_PLL5_OUT_EVEN
] = &cam_cc_pll5_out_even
.clkr
,
3426 [CAM_CC_PLL6
] = &cam_cc_pll6
.clkr
,
3427 [CAM_CC_PLL6_OUT_EVEN
] = &cam_cc_pll6_out_even
.clkr
,
3428 [CAM_CC_PLL7
] = &cam_cc_pll7
.clkr
,
3429 [CAM_CC_PLL7_OUT_EVEN
] = &cam_cc_pll7_out_even
.clkr
,
3430 [CAM_CC_PLL8
] = &cam_cc_pll8
.clkr
,
3431 [CAM_CC_PLL8_OUT_EVEN
] = &cam_cc_pll8_out_even
.clkr
,
3432 [CAM_CC_PLL9
] = &cam_cc_pll9
.clkr
,
3433 [CAM_CC_PLL9_OUT_EVEN
] = &cam_cc_pll9_out_even
.clkr
,
3434 [CAM_CC_PLL10
] = &cam_cc_pll10
.clkr
,
3435 [CAM_CC_PLL10_OUT_EVEN
] = &cam_cc_pll10_out_even
.clkr
,
3436 [CAM_CC_PLL11
] = &cam_cc_pll11
.clkr
,
3437 [CAM_CC_PLL11_OUT_EVEN
] = &cam_cc_pll11_out_even
.clkr
,
3438 [CAM_CC_PLL12
] = &cam_cc_pll12
.clkr
,
3439 [CAM_CC_PLL12_OUT_EVEN
] = &cam_cc_pll12_out_even
.clkr
,
3440 [CAM_CC_QDSS_DEBUG_CLK
] = &cam_cc_qdss_debug_clk
.clkr
,
3441 [CAM_CC_QDSS_DEBUG_CLK_SRC
] = &cam_cc_qdss_debug_clk_src
.clkr
,
3442 [CAM_CC_QDSS_DEBUG_XO_CLK
] = &cam_cc_qdss_debug_xo_clk
.clkr
,
3443 [CAM_CC_SBI_CLK
] = &cam_cc_sbi_clk
.clkr
,
3444 [CAM_CC_SBI_FAST_AHB_CLK
] = &cam_cc_sbi_fast_ahb_clk
.clkr
,
3445 [CAM_CC_SFE_0_CLK
] = &cam_cc_sfe_0_clk
.clkr
,
3446 [CAM_CC_SFE_0_CLK_SRC
] = &cam_cc_sfe_0_clk_src
.clkr
,
3447 [CAM_CC_SFE_0_FAST_AHB_CLK
] = &cam_cc_sfe_0_fast_ahb_clk
.clkr
,
3448 [CAM_CC_SFE_1_CLK
] = &cam_cc_sfe_1_clk
.clkr
,
3449 [CAM_CC_SFE_1_CLK_SRC
] = &cam_cc_sfe_1_clk_src
.clkr
,
3450 [CAM_CC_SFE_1_FAST_AHB_CLK
] = &cam_cc_sfe_1_fast_ahb_clk
.clkr
,
3451 [CAM_CC_SLEEP_CLK_SRC
] = &cam_cc_sleep_clk_src
.clkr
,
3452 [CAM_CC_SLOW_AHB_CLK_SRC
] = &cam_cc_slow_ahb_clk_src
.clkr
,
3453 [CAM_CC_XO_CLK_SRC
] = &cam_cc_xo_clk_src
.clkr
,
3456 static struct gdsc
*cam_cc_sm8550_gdscs
[] = {
3457 [CAM_CC_BPS_GDSC
] = &cam_cc_bps_gdsc
,
3458 [CAM_CC_IFE_0_GDSC
] = &cam_cc_ife_0_gdsc
,
3459 [CAM_CC_IFE_1_GDSC
] = &cam_cc_ife_1_gdsc
,
3460 [CAM_CC_IFE_2_GDSC
] = &cam_cc_ife_2_gdsc
,
3461 [CAM_CC_IPE_0_GDSC
] = &cam_cc_ipe_0_gdsc
,
3462 [CAM_CC_SBI_GDSC
] = &cam_cc_sbi_gdsc
,
3463 [CAM_CC_SFE_0_GDSC
] = &cam_cc_sfe_0_gdsc
,
3464 [CAM_CC_SFE_1_GDSC
] = &cam_cc_sfe_1_gdsc
,
3465 [CAM_CC_TITAN_TOP_GDSC
] = &cam_cc_titan_top_gdsc
,
3468 static const struct qcom_reset_map cam_cc_sm8550_resets
[] = {
3469 [CAM_CC_BPS_BCR
] = { 0x10000 },
3470 [CAM_CC_DRV_BCR
] = { 0x142d0 },
3471 [CAM_CC_ICP_BCR
] = { 0x137c0 },
3472 [CAM_CC_IFE_0_BCR
] = { 0x11000 },
3473 [CAM_CC_IFE_1_BCR
] = { 0x12000 },
3474 [CAM_CC_IFE_2_BCR
] = { 0x12290 },
3475 [CAM_CC_IPE_0_BCR
] = { 0x103b4 },
3476 [CAM_CC_QDSS_DEBUG_BCR
] = { 0x13f20 },
3477 [CAM_CC_SBI_BCR
] = { 0x10528 },
3478 [CAM_CC_SFE_0_BCR
] = { 0x1327c },
3479 [CAM_CC_SFE_1_BCR
] = { 0x133dc },
3482 static const struct regmap_config cam_cc_sm8550_regmap_config
= {
3486 .max_register
= 0x16320,
3490 static struct qcom_cc_desc cam_cc_sm8550_desc
= {
3491 .config
= &cam_cc_sm8550_regmap_config
,
3492 .clks
= cam_cc_sm8550_clocks
,
3493 .num_clks
= ARRAY_SIZE(cam_cc_sm8550_clocks
),
3494 .resets
= cam_cc_sm8550_resets
,
3495 .num_resets
= ARRAY_SIZE(cam_cc_sm8550_resets
),
3496 .gdscs
= cam_cc_sm8550_gdscs
,
3497 .num_gdscs
= ARRAY_SIZE(cam_cc_sm8550_gdscs
),
3500 static const struct of_device_id cam_cc_sm8550_match_table
[] = {
3501 { .compatible
= "qcom,sm8550-camcc" },
3504 MODULE_DEVICE_TABLE(of
, cam_cc_sm8550_match_table
);
3506 static int cam_cc_sm8550_probe(struct platform_device
*pdev
)
3508 struct regmap
*regmap
;
3511 ret
= devm_pm_runtime_enable(&pdev
->dev
);
3515 ret
= pm_runtime_resume_and_get(&pdev
->dev
);
3519 regmap
= qcom_cc_map(pdev
, &cam_cc_sm8550_desc
);
3520 if (IS_ERR(regmap
)) {
3521 pm_runtime_put(&pdev
->dev
);
3522 return PTR_ERR(regmap
);
3525 clk_lucid_ole_pll_configure(&cam_cc_pll0
, regmap
, &cam_cc_pll0_config
);
3526 clk_lucid_ole_pll_configure(&cam_cc_pll1
, regmap
, &cam_cc_pll1_config
);
3527 clk_rivian_evo_pll_configure(&cam_cc_pll2
, regmap
, &cam_cc_pll2_config
);
3528 clk_lucid_ole_pll_configure(&cam_cc_pll3
, regmap
, &cam_cc_pll3_config
);
3529 clk_lucid_ole_pll_configure(&cam_cc_pll4
, regmap
, &cam_cc_pll4_config
);
3530 clk_lucid_ole_pll_configure(&cam_cc_pll5
, regmap
, &cam_cc_pll5_config
);
3531 clk_lucid_ole_pll_configure(&cam_cc_pll6
, regmap
, &cam_cc_pll6_config
);
3532 clk_lucid_ole_pll_configure(&cam_cc_pll7
, regmap
, &cam_cc_pll7_config
);
3533 clk_lucid_ole_pll_configure(&cam_cc_pll8
, regmap
, &cam_cc_pll8_config
);
3534 clk_lucid_ole_pll_configure(&cam_cc_pll9
, regmap
, &cam_cc_pll9_config
);
3535 clk_lucid_ole_pll_configure(&cam_cc_pll10
, regmap
, &cam_cc_pll10_config
);
3536 clk_lucid_ole_pll_configure(&cam_cc_pll11
, regmap
, &cam_cc_pll11_config
);
3537 clk_lucid_ole_pll_configure(&cam_cc_pll12
, regmap
, &cam_cc_pll12_config
);
3539 /* Keep some clocks always-on */
3540 qcom_branch_set_clk_en(regmap
, 0x1419c); /* CAM_CC_GDSC_CLK */
3541 qcom_branch_set_clk_en(regmap
, 0x142cc); /* CAM_CC_SLEEP_CLK */
3543 ret
= qcom_cc_really_probe(&pdev
->dev
, &cam_cc_sm8550_desc
, regmap
);
3545 pm_runtime_put(&pdev
->dev
);
3550 static struct platform_driver cam_cc_sm8550_driver
= {
3551 .probe
= cam_cc_sm8550_probe
,
3553 .name
= "cam_cc-sm8550",
3554 .of_match_table
= cam_cc_sm8550_match_table
,
3558 module_platform_driver(cam_cc_sm8550_driver
);
3560 MODULE_DESCRIPTION("QTI CAMCC SM8550 Driver");
3561 MODULE_LICENSE("GPL");