1 // SPDX-License-Identifier: GPL-2.0-only
2 // Copyright (c) 2021, The Linux Foundation. All rights reserved.
4 #include <linux/kernel.h>
5 #include <linux/bitops.h>
7 #include <linux/module.h>
8 #include <linux/platform_device.h>
10 #include <linux/clk-provider.h>
11 #include <linux/regmap.h>
12 #include <linux/reset-controller.h>
14 #include <dt-bindings/clock/qcom,gcc-msm8953.h>
16 #include "clk-alpha-pll.h"
17 #include "clk-branch.h"
39 static struct clk_alpha_pll gpll0_early
= {
41 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
43 .enable_reg
= 0x45000,
44 .enable_mask
= BIT(0),
45 .hw
.init
= &(struct clk_init_data
) {
46 .name
= "gpll0_early",
47 .parent_data
= &(const struct clk_parent_data
) {
51 .ops
= &clk_alpha_pll_fixed_ops
,
56 static struct clk_fixed_factor gpll0_early_div
= {
59 .hw
.init
= &(struct clk_init_data
){
60 .name
= "gpll0_early_div",
61 .parent_hws
= (const struct clk_hw
*[]){
65 .ops
= &clk_fixed_factor_ops
,
69 static struct clk_alpha_pll_postdiv gpll0
= {
71 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
72 .clkr
.hw
.init
= &(struct clk_init_data
){
74 .parent_hws
= (const struct clk_hw
*[]){
78 .ops
= &clk_alpha_pll_postdiv_ro_ops
,
82 static struct clk_alpha_pll gpll2_early
= {
84 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
86 .enable_reg
= 0x45000,
87 .enable_mask
= BIT(2),
88 .hw
.init
= &(struct clk_init_data
){
89 .name
= "gpll2_early",
90 .parent_data
= &(const struct clk_parent_data
) {
94 .ops
= &clk_alpha_pll_fixed_ops
,
99 static struct clk_alpha_pll_postdiv gpll2
= {
101 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
102 .clkr
.hw
.init
= &(struct clk_init_data
){
104 .parent_hws
= (const struct clk_hw
*[]){
105 &gpll2_early
.clkr
.hw
,
108 .ops
= &clk_alpha_pll_postdiv_ro_ops
,
112 static const struct pll_vco gpll3_p_vco
[] = {
113 { 1000000000, 2000000000, 0 },
116 static const struct alpha_pll_config gpll3_early_config
= {
118 .config_ctl_val
= 0x4001055b,
119 .early_output_mask
= 0,
120 .post_div_mask
= GENMASK(11, 8),
121 .post_div_val
= BIT(8),
124 static struct clk_alpha_pll gpll3_early
= {
126 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
127 .vco_table
= gpll3_p_vco
,
128 .num_vco
= ARRAY_SIZE(gpll3_p_vco
),
129 .flags
= SUPPORTS_DYNAMIC_UPDATE
,
131 .hw
.init
= &(struct clk_init_data
){
132 .name
= "gpll3_early",
133 .parent_data
= &(const struct clk_parent_data
) {
137 .ops
= &clk_alpha_pll_ops
,
142 static struct clk_alpha_pll_postdiv gpll3
= {
144 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
145 .clkr
.hw
.init
= &(struct clk_init_data
){
147 .parent_hws
= (const struct clk_hw
*[]){
148 &gpll3_early
.clkr
.hw
,
151 .ops
= &clk_alpha_pll_postdiv_ops
,
152 .flags
= CLK_SET_RATE_PARENT
,
156 static struct clk_alpha_pll gpll4_early
= {
158 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
160 .enable_reg
= 0x45000,
161 .enable_mask
= BIT(5),
162 .hw
.init
= &(struct clk_init_data
){
163 .name
= "gpll4_early",
164 .parent_data
= &(const struct clk_parent_data
) {
168 .ops
= &clk_alpha_pll_fixed_ops
,
173 static struct clk_alpha_pll_postdiv gpll4
= {
175 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
176 .clkr
.hw
.init
= &(struct clk_init_data
){
178 .parent_hws
= (const struct clk_hw
*[]){
179 &gpll4_early
.clkr
.hw
,
182 .ops
= &clk_alpha_pll_postdiv_ro_ops
,
186 static struct clk_alpha_pll gpll6_early
= {
188 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
190 .enable_reg
= 0x45000,
191 .enable_mask
= BIT(7),
192 .hw
.init
= &(struct clk_init_data
){
193 .name
= "gpll6_early",
194 .parent_data
= &(const struct clk_parent_data
) {
198 .ops
= &clk_alpha_pll_fixed_ops
,
203 static struct clk_fixed_factor gpll6_early_div
= {
206 .hw
.init
= &(struct clk_init_data
){
207 .name
= "gpll6_early_div",
208 .parent_hws
= (const struct clk_hw
*[]){
209 &gpll6_early
.clkr
.hw
,
212 .ops
= &clk_fixed_factor_ops
,
216 static struct clk_alpha_pll_postdiv gpll6
= {
218 .regs
= clk_alpha_pll_regs
[CLK_ALPHA_PLL_TYPE_DEFAULT
],
219 .clkr
.hw
.init
= &(struct clk_init_data
){
221 .parent_hws
= (const struct clk_hw
*[]){
222 &gpll6_early
.clkr
.hw
,
225 .ops
= &clk_alpha_pll_postdiv_ro_ops
,
229 static const struct parent_map gcc_xo_gpll0_gpll0div2_2_map
[] = {
235 static const struct parent_map gcc_xo_gpll0_gpll0div2_4_map
[] = {
241 static const struct clk_parent_data gcc_xo_gpll0_gpll0div2_data
[] = {
243 { .hw
= &gpll0
.clkr
.hw
},
244 { .hw
= &gpll0_early_div
.hw
},
247 static const struct parent_map gcc_apc_droop_detector_map
[] = {
253 static const struct clk_parent_data gcc_apc_droop_detector_data
[] = {
255 { .hw
= &gpll0
.clkr
.hw
},
256 { .hw
= &gpll4
.clkr
.hw
},
259 static const struct freq_tbl ftbl_apc_droop_detector_clk_src
[] = {
260 F(19200000, P_XO
, 1, 0, 0),
261 F(400000000, P_GPLL0
, 2, 0, 0),
262 F(576000000, P_GPLL4
, 2, 0, 0),
266 static struct clk_rcg2 apc0_droop_detector_clk_src
= {
269 .freq_tbl
= ftbl_apc_droop_detector_clk_src
,
270 .parent_map
= gcc_apc_droop_detector_map
,
271 .clkr
.hw
.init
= &(struct clk_init_data
) {
272 .name
= "apc0_droop_detector_clk_src",
273 .parent_data
= gcc_apc_droop_detector_data
,
274 .num_parents
= ARRAY_SIZE(gcc_apc_droop_detector_data
),
275 .ops
= &clk_rcg2_ops
,
278 static struct clk_rcg2 apc1_droop_detector_clk_src
= {
281 .freq_tbl
= ftbl_apc_droop_detector_clk_src
,
282 .parent_map
= gcc_apc_droop_detector_map
,
283 .clkr
.hw
.init
= &(struct clk_init_data
) {
284 .name
= "apc1_droop_detector_clk_src",
285 .parent_data
= gcc_apc_droop_detector_data
,
286 .num_parents
= ARRAY_SIZE(gcc_apc_droop_detector_data
),
287 .ops
= &clk_rcg2_ops
,
291 static const struct freq_tbl ftbl_apss_ahb_clk_src
[] = {
292 F(19200000, P_XO
, 1, 0, 0),
293 F(25000000, P_GPLL0_DIV2
, 16, 0, 0),
294 F(50000000, P_GPLL0
, 16, 0, 0),
295 F(100000000, P_GPLL0
, 8, 0, 0),
296 F(133330000, P_GPLL0
, 6, 0, 0),
300 static struct clk_rcg2 apss_ahb_clk_src
= {
303 .freq_tbl
= ftbl_apss_ahb_clk_src
,
304 .parent_map
= gcc_xo_gpll0_gpll0div2_4_map
,
305 .clkr
.hw
.init
= &(struct clk_init_data
) {
306 .name
= "apss_ahb_clk_src",
307 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
308 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
309 .ops
= &clk_rcg2_ops
,
313 static const struct freq_tbl ftbl_blsp_i2c_apps_clk_src
[] = {
314 F(19200000, P_XO
, 1, 0, 0),
315 F(25000000, P_GPLL0_DIV2
, 16, 0, 0),
316 F(50000000, P_GPLL0
, 16, 0, 0),
320 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src
= {
323 .freq_tbl
= ftbl_blsp_i2c_apps_clk_src
,
324 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
325 .clkr
.hw
.init
= &(struct clk_init_data
) {
326 .name
= "blsp1_qup1_i2c_apps_clk_src",
327 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
328 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
329 .ops
= &clk_rcg2_ops
,
333 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src
= {
336 .freq_tbl
= ftbl_blsp_i2c_apps_clk_src
,
337 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
338 .clkr
.hw
.init
= &(struct clk_init_data
) {
339 .name
= "blsp1_qup2_i2c_apps_clk_src",
340 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
341 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
342 .ops
= &clk_rcg2_ops
,
346 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src
= {
349 .freq_tbl
= ftbl_blsp_i2c_apps_clk_src
,
350 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
351 .clkr
.hw
.init
= &(struct clk_init_data
) {
352 .name
= "blsp1_qup3_i2c_apps_clk_src",
353 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
354 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
355 .ops
= &clk_rcg2_ops
,
359 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src
= {
362 .freq_tbl
= ftbl_blsp_i2c_apps_clk_src
,
363 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
364 .clkr
.hw
.init
= &(struct clk_init_data
) {
365 .name
= "blsp1_qup4_i2c_apps_clk_src",
366 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
367 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
368 .ops
= &clk_rcg2_ops
,
372 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src
= {
375 .freq_tbl
= ftbl_blsp_i2c_apps_clk_src
,
376 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
377 .clkr
.hw
.init
= &(struct clk_init_data
) {
378 .name
= "blsp2_qup1_i2c_apps_clk_src",
379 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
380 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
381 .ops
= &clk_rcg2_ops
,
385 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src
= {
388 .freq_tbl
= ftbl_blsp_i2c_apps_clk_src
,
389 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
390 .clkr
.hw
.init
= &(struct clk_init_data
) {
391 .name
= "blsp2_qup2_i2c_apps_clk_src",
392 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
393 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
394 .ops
= &clk_rcg2_ops
,
398 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src
= {
401 .freq_tbl
= ftbl_blsp_i2c_apps_clk_src
,
402 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
403 .clkr
.hw
.init
= &(struct clk_init_data
) {
404 .name
= "blsp2_qup3_i2c_apps_clk_src",
405 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
406 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
407 .ops
= &clk_rcg2_ops
,
411 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src
= {
414 .freq_tbl
= ftbl_blsp_i2c_apps_clk_src
,
415 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
416 .clkr
.hw
.init
= &(struct clk_init_data
) {
417 .name
= "blsp2_qup4_i2c_apps_clk_src",
418 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
419 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
420 .ops
= &clk_rcg2_ops
,
424 static const struct freq_tbl ftbl_blsp_spi_apps_clk_src
[] = {
425 F(960000, P_XO
, 10, 1, 2),
426 F(4800000, P_XO
, 4, 0, 0),
427 F(9600000, P_XO
, 2, 0, 0),
428 F(12500000, P_GPLL0_DIV2
, 16, 1, 2),
429 F(16000000, P_GPLL0
, 10, 1, 5),
430 F(19200000, P_XO
, 1, 0, 0),
431 F(25000000, P_GPLL0
, 16, 1, 2),
432 F(50000000, P_GPLL0
, 16, 0, 0),
436 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src
= {
440 .freq_tbl
= ftbl_blsp_spi_apps_clk_src
,
441 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
442 .clkr
.hw
.init
= &(struct clk_init_data
) {
443 .name
= "blsp1_qup1_spi_apps_clk_src",
444 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
445 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
446 .ops
= &clk_rcg2_ops
,
450 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src
= {
454 .freq_tbl
= ftbl_blsp_spi_apps_clk_src
,
455 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
456 .clkr
.hw
.init
= &(struct clk_init_data
) {
457 .name
= "blsp1_qup2_spi_apps_clk_src",
458 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
459 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
460 .ops
= &clk_rcg2_ops
,
464 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src
= {
468 .freq_tbl
= ftbl_blsp_spi_apps_clk_src
,
469 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
470 .clkr
.hw
.init
= &(struct clk_init_data
) {
471 .name
= "blsp1_qup3_spi_apps_clk_src",
472 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
473 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
474 .ops
= &clk_rcg2_ops
,
478 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src
= {
482 .freq_tbl
= ftbl_blsp_spi_apps_clk_src
,
483 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
484 .clkr
.hw
.init
= &(struct clk_init_data
) {
485 .name
= "blsp1_qup4_spi_apps_clk_src",
486 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
487 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
488 .ops
= &clk_rcg2_ops
,
492 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src
= {
496 .freq_tbl
= ftbl_blsp_spi_apps_clk_src
,
497 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
498 .clkr
.hw
.init
= &(struct clk_init_data
) {
499 .name
= "blsp2_qup1_spi_apps_clk_src",
500 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
501 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
502 .ops
= &clk_rcg2_ops
,
506 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src
= {
510 .freq_tbl
= ftbl_blsp_spi_apps_clk_src
,
511 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
512 .clkr
.hw
.init
= &(struct clk_init_data
) {
513 .name
= "blsp2_qup2_spi_apps_clk_src",
514 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
515 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
516 .ops
= &clk_rcg2_ops
,
520 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src
= {
524 .freq_tbl
= ftbl_blsp_spi_apps_clk_src
,
525 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
526 .clkr
.hw
.init
= &(struct clk_init_data
) {
527 .name
= "blsp2_qup3_spi_apps_clk_src",
528 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
529 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
530 .ops
= &clk_rcg2_ops
,
534 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src
= {
538 .freq_tbl
= ftbl_blsp_spi_apps_clk_src
,
539 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
540 .clkr
.hw
.init
= &(struct clk_init_data
) {
541 .name
= "blsp2_qup4_spi_apps_clk_src",
542 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
543 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
544 .ops
= &clk_rcg2_ops
,
548 static const struct freq_tbl ftbl_blsp_uart_apps_clk_src
[] = {
549 F(3686400, P_GPLL0_DIV2
, 1, 144, 15625),
550 F(7372800, P_GPLL0_DIV2
, 1, 288, 15625),
551 F(14745600, P_GPLL0_DIV2
, 1, 576, 15625),
552 F(16000000, P_GPLL0_DIV2
, 5, 1, 5),
553 F(19200000, P_XO
, 1, 0, 0),
554 F(24000000, P_GPLL0
, 1, 3, 100),
555 F(25000000, P_GPLL0
, 16, 1, 2),
556 F(32000000, P_GPLL0
, 1, 1, 25),
557 F(40000000, P_GPLL0
, 1, 1, 20),
558 F(46400000, P_GPLL0
, 1, 29, 500),
559 F(48000000, P_GPLL0
, 1, 3, 50),
560 F(51200000, P_GPLL0
, 1, 8, 125),
561 F(56000000, P_GPLL0
, 1, 7, 100),
562 F(58982400, P_GPLL0
, 1, 1152, 15625),
563 F(60000000, P_GPLL0
, 1, 3, 40),
564 F(64000000, P_GPLL0
, 1, 2, 25),
568 static struct clk_rcg2 blsp1_uart1_apps_clk_src
= {
572 .freq_tbl
= ftbl_blsp_uart_apps_clk_src
,
573 .parent_map
= gcc_xo_gpll0_gpll0div2_4_map
,
574 .clkr
.hw
.init
= &(struct clk_init_data
) {
575 .name
= "blsp1_uart1_apps_clk_src",
576 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
577 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
578 .ops
= &clk_rcg2_ops
,
582 static struct clk_rcg2 blsp1_uart2_apps_clk_src
= {
586 .freq_tbl
= ftbl_blsp_uart_apps_clk_src
,
587 .parent_map
= gcc_xo_gpll0_gpll0div2_4_map
,
588 .clkr
.hw
.init
= &(struct clk_init_data
) {
589 .name
= "blsp1_uart2_apps_clk_src",
590 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
591 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
592 .ops
= &clk_rcg2_ops
,
596 static struct clk_rcg2 blsp2_uart1_apps_clk_src
= {
600 .freq_tbl
= ftbl_blsp_uart_apps_clk_src
,
601 .parent_map
= gcc_xo_gpll0_gpll0div2_4_map
,
602 .clkr
.hw
.init
= &(struct clk_init_data
) {
603 .name
= "blsp2_uart1_apps_clk_src",
604 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
605 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
606 .ops
= &clk_rcg2_ops
,
610 static struct clk_rcg2 blsp2_uart2_apps_clk_src
= {
614 .freq_tbl
= ftbl_blsp_uart_apps_clk_src
,
615 .parent_map
= gcc_xo_gpll0_gpll0div2_4_map
,
616 .clkr
.hw
.init
= &(struct clk_init_data
) {
617 .name
= "blsp2_uart2_apps_clk_src",
618 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
619 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
620 .ops
= &clk_rcg2_ops
,
624 static const struct parent_map gcc_byte0_map
[] = {
626 { P_DSI0PLL_BYTE
, 1 },
627 { P_DSI1PLL_BYTE
, 3 },
630 static const struct parent_map gcc_byte1_map
[] = {
632 { P_DSI0PLL_BYTE
, 3 },
633 { P_DSI1PLL_BYTE
, 1 },
636 static const struct clk_parent_data gcc_byte_data
[] = {
638 { .fw_name
= "dsi0pllbyte", .name
= "dsi0pllbyte" },
639 { .fw_name
= "dsi1pllbyte", .name
= "dsi1pllbyte" },
642 static struct clk_rcg2 byte0_clk_src
= {
645 .parent_map
= gcc_byte0_map
,
646 .clkr
.hw
.init
= &(struct clk_init_data
) {
647 .name
= "byte0_clk_src",
648 .parent_data
= gcc_byte_data
,
649 .num_parents
= ARRAY_SIZE(gcc_byte_data
),
650 .ops
= &clk_byte2_ops
,
651 .flags
= CLK_SET_RATE_PARENT
,
655 static struct clk_rcg2 byte1_clk_src
= {
658 .parent_map
= gcc_byte1_map
,
659 .clkr
.hw
.init
= &(struct clk_init_data
) {
660 .name
= "byte1_clk_src",
661 .parent_data
= gcc_byte_data
,
662 .num_parents
= ARRAY_SIZE(gcc_byte_data
),
663 .ops
= &clk_byte2_ops
,
664 .flags
= CLK_SET_RATE_PARENT
,
668 static const struct parent_map gcc_gp_map
[] = {
676 static const struct clk_parent_data gcc_gp_data
[] = {
678 { .hw
= &gpll0
.clkr
.hw
},
679 { .hw
= &gpll6
.clkr
.hw
},
680 { .hw
= &gpll0_early_div
.hw
},
681 { .fw_name
= "sleep", .name
= "sleep" },
684 static const struct freq_tbl ftbl_camss_gp_clk_src
[] = {
685 F(50000000, P_GPLL0_DIV2
, 8, 0, 0),
686 F(100000000, P_GPLL0
, 8, 0, 0),
687 F(200000000, P_GPLL0
, 4, 0, 0),
688 F(266670000, P_GPLL0
, 3, 0, 0),
692 static struct clk_rcg2 camss_gp0_clk_src
= {
696 .freq_tbl
= ftbl_camss_gp_clk_src
,
697 .parent_map
= gcc_gp_map
,
698 .clkr
.hw
.init
= &(struct clk_init_data
) {
699 .name
= "camss_gp0_clk_src",
700 .parent_data
= gcc_gp_data
,
701 .num_parents
= ARRAY_SIZE(gcc_gp_data
),
702 .ops
= &clk_rcg2_ops
,
706 static struct clk_rcg2 camss_gp1_clk_src
= {
710 .freq_tbl
= ftbl_camss_gp_clk_src
,
711 .parent_map
= gcc_gp_map
,
712 .clkr
.hw
.init
= &(struct clk_init_data
) {
713 .name
= "camss_gp1_clk_src",
714 .parent_data
= gcc_gp_data
,
715 .num_parents
= ARRAY_SIZE(gcc_gp_data
),
716 .ops
= &clk_rcg2_ops
,
720 static const struct freq_tbl ftbl_camss_top_ahb_clk_src
[] = {
721 F(40000000, P_GPLL0_DIV2
, 10, 0, 0),
722 F(80000000, P_GPLL0
, 10, 0, 0),
726 static struct clk_rcg2 camss_top_ahb_clk_src
= {
729 .freq_tbl
= ftbl_camss_top_ahb_clk_src
,
730 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
731 .clkr
.hw
.init
= &(struct clk_init_data
) {
732 .name
= "camss_top_ahb_clk_src",
733 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
734 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
735 .ops
= &clk_rcg2_ops
,
739 static const struct parent_map gcc_cci_map
[] = {
746 static const struct clk_parent_data gcc_cci_data
[] = {
748 { .hw
= &gpll0
.clkr
.hw
},
749 { .hw
= &gpll0_early_div
.hw
},
750 { .fw_name
= "sleep", .name
= "sleep" },
753 static const struct freq_tbl ftbl_cci_clk_src
[] = {
754 F(19200000, P_XO
, 1, 0, 0),
755 F(37500000, P_GPLL0_DIV2
, 1, 3, 32),
759 static struct clk_rcg2 cci_clk_src
= {
763 .freq_tbl
= ftbl_cci_clk_src
,
764 .parent_map
= gcc_cci_map
,
765 .clkr
.hw
.init
= &(struct clk_init_data
) {
766 .name
= "cci_clk_src",
767 .parent_data
= gcc_cci_data
,
768 .num_parents
= ARRAY_SIZE(gcc_cci_data
),
769 .ops
= &clk_rcg2_ops
,
773 static const struct parent_map gcc_cpp_map
[] = {
781 static const struct clk_parent_data gcc_cpp_data
[] = {
783 { .hw
= &gpll0
.clkr
.hw
},
784 { .hw
= &gpll6
.clkr
.hw
},
785 { .hw
= &gpll2
.clkr
.hw
},
786 { .hw
= &gpll0_early_div
.hw
},
789 static const struct freq_tbl ftbl_cpp_clk_src
[] = {
790 F(100000000, P_GPLL0_DIV2
, 4, 0, 0),
791 F(200000000, P_GPLL0
, 4, 0, 0),
792 F(266670000, P_GPLL0
, 3, 0, 0),
793 F(320000000, P_GPLL0
, 2.5, 0, 0),
794 F(400000000, P_GPLL0
, 2, 0, 0),
795 F(465000000, P_GPLL2
, 2, 0, 0),
799 static struct clk_rcg2 cpp_clk_src
= {
802 .freq_tbl
= ftbl_cpp_clk_src
,
803 .parent_map
= gcc_cpp_map
,
804 .clkr
.hw
.init
= &(struct clk_init_data
) {
805 .name
= "cpp_clk_src",
806 .parent_data
= gcc_cpp_data
,
807 .num_parents
= ARRAY_SIZE(gcc_cpp_data
),
808 .ops
= &clk_rcg2_ops
,
812 static const struct freq_tbl ftbl_crypto_clk_src
[] = {
813 F(40000000, P_GPLL0_DIV2
, 10, 0, 0),
814 F(80000000, P_GPLL0
, 10, 0, 0),
815 F(100000000, P_GPLL0
, 8, 0, 0),
816 F(160000000, P_GPLL0
, 5, 0, 0),
820 static struct clk_rcg2 crypto_clk_src
= {
823 .freq_tbl
= ftbl_crypto_clk_src
,
824 .parent_map
= gcc_xo_gpll0_gpll0div2_4_map
,
825 .clkr
.hw
.init
= &(struct clk_init_data
) {
826 .name
= "crypto_clk_src",
827 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
828 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
829 .ops
= &clk_rcg2_ops
,
833 static const struct parent_map gcc_csi0_map
[] = {
840 static const struct parent_map gcc_csi12_map
[] = {
847 static const struct clk_parent_data gcc_csi_data
[] = {
849 { .hw
= &gpll0
.clkr
.hw
},
850 { .hw
= &gpll2
.clkr
.hw
},
851 { .hw
= &gpll0_early_div
.hw
},
854 static const struct freq_tbl ftbl_csi_clk_src
[] = {
855 F(100000000, P_GPLL0_DIV2
, 4, 0, 0),
856 F(200000000, P_GPLL0
, 4, 0, 0),
857 F(310000000, P_GPLL2
, 3, 0, 0),
858 F(400000000, P_GPLL0
, 2, 0, 0),
859 F(465000000, P_GPLL2
, 2, 0, 0),
863 static struct clk_rcg2 csi0_clk_src
= {
866 .freq_tbl
= ftbl_csi_clk_src
,
867 .parent_map
= gcc_csi0_map
,
868 .clkr
.hw
.init
= &(struct clk_init_data
) {
869 .name
= "csi0_clk_src",
870 .parent_data
= gcc_csi_data
,
871 .num_parents
= ARRAY_SIZE(gcc_csi_data
),
872 .ops
= &clk_rcg2_ops
,
876 static struct clk_rcg2 csi1_clk_src
= {
879 .freq_tbl
= ftbl_csi_clk_src
,
880 .parent_map
= gcc_csi12_map
,
881 .clkr
.hw
.init
= &(struct clk_init_data
) {
882 .name
= "csi1_clk_src",
883 .parent_data
= gcc_csi_data
,
884 .num_parents
= ARRAY_SIZE(gcc_csi_data
),
885 .ops
= &clk_rcg2_ops
,
889 static struct clk_rcg2 csi2_clk_src
= {
892 .freq_tbl
= ftbl_csi_clk_src
,
893 .parent_map
= gcc_csi12_map
,
894 .clkr
.hw
.init
= &(struct clk_init_data
) {
895 .name
= "csi2_clk_src",
896 .parent_data
= gcc_csi_data
,
897 .num_parents
= ARRAY_SIZE(gcc_csi_data
),
898 .ops
= &clk_rcg2_ops
,
902 static const struct parent_map gcc_csip_map
[] = {
910 static const struct clk_parent_data gcc_csip_data
[] = {
912 { .hw
= &gpll0
.clkr
.hw
},
913 { .hw
= &gpll4
.clkr
.hw
},
914 { .hw
= &gpll2
.clkr
.hw
},
915 { .hw
= &gpll0_early_div
.hw
},
918 static const struct freq_tbl ftbl_csi_p_clk_src
[] = {
919 F(66670000, P_GPLL0_DIV2
, 6, 0, 0),
920 F(133330000, P_GPLL0
, 6, 0, 0),
921 F(200000000, P_GPLL0
, 4, 0, 0),
922 F(266670000, P_GPLL0
, 3, 0, 0),
923 F(310000000, P_GPLL2
, 3, 0, 0),
927 static struct clk_rcg2 csi0p_clk_src
= {
930 .freq_tbl
= ftbl_csi_p_clk_src
,
931 .parent_map
= gcc_csip_map
,
932 .clkr
.hw
.init
= &(struct clk_init_data
) {
933 .name
= "csi0p_clk_src",
934 .parent_data
= gcc_csip_data
,
935 .num_parents
= ARRAY_SIZE(gcc_csip_data
),
936 .ops
= &clk_rcg2_ops
,
940 static struct clk_rcg2 csi1p_clk_src
= {
943 .freq_tbl
= ftbl_csi_p_clk_src
,
944 .parent_map
= gcc_csip_map
,
945 .clkr
.hw
.init
= &(struct clk_init_data
) {
946 .name
= "csi1p_clk_src",
947 .parent_data
= gcc_csip_data
,
948 .num_parents
= ARRAY_SIZE(gcc_csip_data
),
949 .ops
= &clk_rcg2_ops
,
953 static struct clk_rcg2 csi2p_clk_src
= {
956 .freq_tbl
= ftbl_csi_p_clk_src
,
957 .parent_map
= gcc_csip_map
,
958 .clkr
.hw
.init
= &(struct clk_init_data
) {
959 .name
= "csi2p_clk_src",
960 .parent_data
= gcc_csip_data
,
961 .num_parents
= ARRAY_SIZE(gcc_csip_data
),
962 .ops
= &clk_rcg2_ops
,
966 static const struct freq_tbl ftbl_csi_phytimer_clk_src
[] = {
967 F(100000000, P_GPLL0_DIV2
, 4, 0, 0),
968 F(200000000, P_GPLL0
, 4, 0, 0),
969 F(266670000, P_GPLL0
, 3, 0, 0),
973 static struct clk_rcg2 csi0phytimer_clk_src
= {
976 .freq_tbl
= ftbl_csi_phytimer_clk_src
,
977 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
978 .clkr
.hw
.init
= &(struct clk_init_data
) {
979 .name
= "csi0phytimer_clk_src",
980 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
981 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
982 .ops
= &clk_rcg2_ops
,
986 static struct clk_rcg2 csi1phytimer_clk_src
= {
989 .freq_tbl
= ftbl_csi_phytimer_clk_src
,
990 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
991 .clkr
.hw
.init
= &(struct clk_init_data
) {
992 .name
= "csi1phytimer_clk_src",
993 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
994 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
995 .ops
= &clk_rcg2_ops
,
999 static struct clk_rcg2 csi2phytimer_clk_src
= {
1000 .cmd_rcgr
= 0x4f05c,
1002 .freq_tbl
= ftbl_csi_phytimer_clk_src
,
1003 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
1004 .clkr
.hw
.init
= &(struct clk_init_data
) {
1005 .name
= "csi2phytimer_clk_src",
1006 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
1007 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
1008 .ops
= &clk_rcg2_ops
,
1012 static const struct parent_map gcc_esc_map
[] = {
1017 static const struct clk_parent_data gcc_esc_vsync_data
[] = {
1018 { .fw_name
= "xo" },
1019 { .hw
= &gpll0
.clkr
.hw
},
1022 static const struct freq_tbl ftbl_esc0_1_clk_src
[] = {
1023 F(19200000, P_XO
, 1, 0, 0),
1027 static struct clk_rcg2 esc0_clk_src
= {
1028 .cmd_rcgr
= 0x4d05c,
1030 .freq_tbl
= ftbl_esc0_1_clk_src
,
1031 .parent_map
= gcc_esc_map
,
1032 .clkr
.hw
.init
= &(struct clk_init_data
) {
1033 .name
= "esc0_clk_src",
1034 .parent_data
= gcc_esc_vsync_data
,
1035 .num_parents
= ARRAY_SIZE(gcc_esc_vsync_data
),
1036 .ops
= &clk_rcg2_ops
,
1040 static struct clk_rcg2 esc1_clk_src
= {
1041 .cmd_rcgr
= 0x4d0a8,
1043 .freq_tbl
= ftbl_esc0_1_clk_src
,
1044 .parent_map
= gcc_esc_map
,
1045 .clkr
.hw
.init
= &(struct clk_init_data
) {
1046 .name
= "esc1_clk_src",
1047 .parent_data
= gcc_esc_vsync_data
,
1048 .num_parents
= ARRAY_SIZE(gcc_esc_vsync_data
),
1049 .ops
= &clk_rcg2_ops
,
1053 static const struct parent_map gcc_gfx3d_map
[] = {
1059 { P_GPLL0_DIV2
, 5 },
1060 { P_GPLL6_DIV2
, 6 },
1063 static const struct clk_parent_data gcc_gfx3d_data
[] = {
1064 { .fw_name
= "xo" },
1065 { .hw
= &gpll0
.clkr
.hw
},
1066 { .hw
= &gpll3
.clkr
.hw
},
1067 { .hw
= &gpll6
.clkr
.hw
},
1068 { .hw
= &gpll4
.clkr
.hw
},
1069 { .hw
= &gpll0_early_div
.hw
},
1070 { .hw
= &gpll6_early_div
.hw
},
1073 static const struct freq_tbl ftbl_gfx3d_clk_src
[] = {
1074 F(19200000, P_XO
, 1, 0, 0),
1075 F(50000000, P_GPLL0_DIV2
, 8, 0, 0),
1076 F(80000000, P_GPLL0_DIV2
, 5, 0, 0),
1077 F(100000000, P_GPLL0_DIV2
, 4, 0, 0),
1078 F(133330000, P_GPLL0_DIV2
, 3, 0, 0),
1079 F(160000000, P_GPLL0_DIV2
, 2.5, 0, 0),
1080 F(200000000, P_GPLL0_DIV2
, 2, 0, 0),
1081 F(266670000, P_GPLL0
, 3.0, 0, 0),
1082 F(320000000, P_GPLL0
, 2.5, 0, 0),
1083 F(400000000, P_GPLL0
, 2, 0, 0),
1084 F(460800000, P_GPLL4
, 2.5, 0, 0),
1085 F(510000000, P_GPLL3
, 2, 0, 0),
1086 F(560000000, P_GPLL3
, 2, 0, 0),
1087 F(600000000, P_GPLL3
, 2, 0, 0),
1088 F(650000000, P_GPLL3
, 2, 0, 0),
1089 F(685000000, P_GPLL3
, 2, 0, 0),
1090 F(725000000, P_GPLL3
, 2, 0, 0),
1094 static struct clk_rcg2 gfx3d_clk_src
= {
1095 .cmd_rcgr
= 0x59000,
1097 .freq_tbl
= ftbl_gfx3d_clk_src
,
1098 .parent_map
= gcc_gfx3d_map
,
1099 .clkr
.hw
.init
= &(struct clk_init_data
) {
1100 .name
= "gfx3d_clk_src",
1101 .parent_data
= gcc_gfx3d_data
,
1102 .num_parents
= ARRAY_SIZE(gcc_gfx3d_data
),
1103 .ops
= &clk_rcg2_floor_ops
,
1104 .flags
= CLK_SET_RATE_PARENT
,
1108 static const struct freq_tbl ftbl_gp_clk_src
[] = {
1109 F(19200000, P_XO
, 1, 0, 0),
1113 static struct clk_rcg2 gp1_clk_src
= {
1114 .cmd_rcgr
= 0x08004,
1117 .freq_tbl
= ftbl_gp_clk_src
,
1118 .parent_map
= gcc_gp_map
,
1119 .clkr
.hw
.init
= &(struct clk_init_data
) {
1120 .name
= "gp1_clk_src",
1121 .parent_data
= gcc_gp_data
,
1122 .num_parents
= ARRAY_SIZE(gcc_gp_data
),
1123 .ops
= &clk_rcg2_ops
,
1127 static struct clk_rcg2 gp2_clk_src
= {
1128 .cmd_rcgr
= 0x09004,
1131 .freq_tbl
= ftbl_gp_clk_src
,
1132 .parent_map
= gcc_gp_map
,
1133 .clkr
.hw
.init
= &(struct clk_init_data
) {
1134 .name
= "gp2_clk_src",
1135 .parent_data
= gcc_gp_data
,
1136 .num_parents
= ARRAY_SIZE(gcc_gp_data
),
1137 .ops
= &clk_rcg2_ops
,
1141 static struct clk_rcg2 gp3_clk_src
= {
1142 .cmd_rcgr
= 0x0a004,
1145 .freq_tbl
= ftbl_gp_clk_src
,
1146 .parent_map
= gcc_gp_map
,
1147 .clkr
.hw
.init
= &(struct clk_init_data
) {
1148 .name
= "gp3_clk_src",
1149 .parent_data
= gcc_gp_data
,
1150 .num_parents
= ARRAY_SIZE(gcc_gp_data
),
1151 .ops
= &clk_rcg2_ops
,
1155 static const struct parent_map gcc_jpeg0_map
[] = {
1159 { P_GPLL0_DIV2
, 4 },
1163 static const struct clk_parent_data gcc_jpeg0_data
[] = {
1164 { .fw_name
= "xo" },
1165 { .hw
= &gpll0
.clkr
.hw
},
1166 { .hw
= &gpll6
.clkr
.hw
},
1167 { .hw
= &gpll0_early_div
.hw
},
1168 { .hw
= &gpll2
.clkr
.hw
},
1171 static const struct freq_tbl ftbl_jpeg0_clk_src
[] = {
1172 F(66670000, P_GPLL0_DIV2
, 6, 0, 0),
1173 F(133330000, P_GPLL0
, 6, 0, 0),
1174 F(200000000, P_GPLL0
, 4, 0, 0),
1175 F(266670000, P_GPLL0
, 3, 0, 0),
1176 F(310000000, P_GPLL2
, 3, 0, 0),
1177 F(320000000, P_GPLL0
, 2.5, 0, 0),
1181 static struct clk_rcg2 jpeg0_clk_src
= {
1182 .cmd_rcgr
= 0x57000,
1184 .freq_tbl
= ftbl_jpeg0_clk_src
,
1185 .parent_map
= gcc_jpeg0_map
,
1186 .clkr
.hw
.init
= &(struct clk_init_data
) {
1187 .name
= "jpeg0_clk_src",
1188 .parent_data
= gcc_jpeg0_data
,
1189 .num_parents
= ARRAY_SIZE(gcc_jpeg0_data
),
1190 .ops
= &clk_rcg2_ops
,
1194 static const struct parent_map gcc_mclk_map
[] = {
1198 { P_GPLL0_DIV2
, 4 },
1199 { P_GPLL6_DIV2
, 5 },
1203 static const struct clk_parent_data gcc_mclk_data
[] = {
1204 { .fw_name
= "xo" },
1205 { .hw
= &gpll0
.clkr
.hw
},
1206 { .hw
= &gpll6
.clkr
.hw
},
1207 { .hw
= &gpll0_early_div
.hw
},
1208 { .hw
= &gpll6_early_div
.hw
},
1209 { .fw_name
= "sleep", .name
= "sleep" },
1212 static const struct freq_tbl ftbl_mclk_clk_src
[] = {
1213 F(19200000, P_GPLL6
, 5, 4, 45),
1214 F(24000000, P_GPLL6_DIV2
, 1, 2, 45),
1215 F(26000000, P_GPLL0
, 1, 4, 123),
1216 F(33330000, P_GPLL0_DIV2
, 12, 0, 0),
1217 F(36610000, P_GPLL6
, 1, 2, 59),
1218 F(66667000, P_GPLL0
, 12, 0, 0),
1222 static struct clk_rcg2 mclk0_clk_src
= {
1223 .cmd_rcgr
= 0x52000,
1226 .freq_tbl
= ftbl_mclk_clk_src
,
1227 .parent_map
= gcc_mclk_map
,
1228 .clkr
.hw
.init
= &(struct clk_init_data
) {
1229 .name
= "mclk0_clk_src",
1230 .parent_data
= gcc_mclk_data
,
1231 .num_parents
= ARRAY_SIZE(gcc_mclk_data
),
1232 .ops
= &clk_rcg2_ops
,
1236 static struct clk_rcg2 mclk1_clk_src
= {
1237 .cmd_rcgr
= 0x53000,
1240 .freq_tbl
= ftbl_mclk_clk_src
,
1241 .parent_map
= gcc_mclk_map
,
1242 .clkr
.hw
.init
= &(struct clk_init_data
) {
1243 .name
= "mclk1_clk_src",
1244 .parent_data
= gcc_mclk_data
,
1245 .num_parents
= ARRAY_SIZE(gcc_mclk_data
),
1246 .ops
= &clk_rcg2_ops
,
1250 static struct clk_rcg2 mclk2_clk_src
= {
1251 .cmd_rcgr
= 0x5c000,
1254 .freq_tbl
= ftbl_mclk_clk_src
,
1255 .parent_map
= gcc_mclk_map
,
1256 .clkr
.hw
.init
= &(struct clk_init_data
) {
1257 .name
= "mclk2_clk_src",
1258 .parent_data
= gcc_mclk_data
,
1259 .num_parents
= ARRAY_SIZE(gcc_mclk_data
),
1260 .ops
= &clk_rcg2_ops
,
1264 static struct clk_rcg2 mclk3_clk_src
= {
1265 .cmd_rcgr
= 0x5e000,
1268 .freq_tbl
= ftbl_mclk_clk_src
,
1269 .parent_map
= gcc_mclk_map
,
1270 .clkr
.hw
.init
= &(struct clk_init_data
) {
1271 .name
= "mclk3_clk_src",
1272 .parent_data
= gcc_mclk_data
,
1273 .num_parents
= ARRAY_SIZE(gcc_mclk_data
),
1274 .ops
= &clk_rcg2_ops
,
1278 static const struct parent_map gcc_mdp_map
[] = {
1282 { P_GPLL0_DIV2
, 4 },
1285 static const struct clk_parent_data gcc_mdp_data
[] = {
1286 { .fw_name
= "xo" },
1287 { .hw
= &gpll0
.clkr
.hw
},
1288 { .hw
= &gpll6
.clkr
.hw
},
1289 { .hw
= &gpll0_early_div
.hw
},
1292 static const struct freq_tbl ftbl_mdp_clk_src
[] = {
1293 F(50000000, P_GPLL0_DIV2
, 8, 0, 0),
1294 F(80000000, P_GPLL0_DIV2
, 5, 0, 0),
1295 F(160000000, P_GPLL0_DIV2
, 2.5, 0, 0),
1296 F(200000000, P_GPLL0
, 4, 0, 0),
1297 F(266670000, P_GPLL0
, 3, 0, 0),
1298 F(320000000, P_GPLL0
, 2.5, 0, 0),
1299 F(400000000, P_GPLL0
, 2, 0, 0),
1303 static struct clk_rcg2 mdp_clk_src
= {
1304 .cmd_rcgr
= 0x4d014,
1306 .freq_tbl
= ftbl_mdp_clk_src
,
1307 .parent_map
= gcc_mdp_map
,
1308 .clkr
.hw
.init
= &(struct clk_init_data
) {
1309 .name
= "mdp_clk_src",
1310 .parent_data
= gcc_mdp_data
,
1311 .num_parents
= ARRAY_SIZE(gcc_mdp_data
),
1312 .ops
= &clk_rcg2_ops
,
1316 static const struct parent_map gcc_pclk0_map
[] = {
1322 static const struct parent_map gcc_pclk1_map
[] = {
1328 static const struct clk_parent_data gcc_pclk_data
[] = {
1329 { .fw_name
= "xo" },
1330 { .fw_name
= "dsi0pll", .name
= "dsi0pll" },
1331 { .fw_name
= "dsi1pll", .name
= "dsi1pll" },
1334 static struct clk_rcg2 pclk0_clk_src
= {
1335 .cmd_rcgr
= 0x4d000,
1338 .parent_map
= gcc_pclk0_map
,
1339 .clkr
.hw
.init
= &(struct clk_init_data
) {
1340 .name
= "pclk0_clk_src",
1341 .parent_data
= gcc_pclk_data
,
1342 .num_parents
= ARRAY_SIZE(gcc_pclk_data
),
1343 .ops
= &clk_pixel_ops
,
1344 .flags
= CLK_SET_RATE_PARENT
,
1348 static struct clk_rcg2 pclk1_clk_src
= {
1349 .cmd_rcgr
= 0x4d0b8,
1352 .parent_map
= gcc_pclk1_map
,
1353 .clkr
.hw
.init
= &(struct clk_init_data
) {
1354 .name
= "pclk1_clk_src",
1355 .parent_data
= gcc_pclk_data
,
1356 .num_parents
= ARRAY_SIZE(gcc_pclk_data
),
1357 .ops
= &clk_pixel_ops
,
1358 .flags
= CLK_SET_RATE_PARENT
,
1362 static const struct freq_tbl ftbl_pdm2_clk_src
[] = {
1363 F(32000000, P_GPLL0_DIV2
, 12.5, 0, 0),
1364 F(64000000, P_GPLL0
, 12.5, 0, 0),
1368 static struct clk_rcg2 pdm2_clk_src
= {
1369 .cmd_rcgr
= 0x44010,
1371 .freq_tbl
= ftbl_pdm2_clk_src
,
1372 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
1373 .clkr
.hw
.init
= &(struct clk_init_data
) {
1374 .name
= "pdm2_clk_src",
1375 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
1376 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
1377 .ops
= &clk_rcg2_ops
,
1381 static const struct freq_tbl ftbl_rbcpr_gfx_clk_src
[] = {
1382 F(19200000, P_XO
, 1, 0, 0),
1383 F(50000000, P_GPLL0
, 16, 0, 0),
1387 static struct clk_rcg2 rbcpr_gfx_clk_src
= {
1388 .cmd_rcgr
= 0x3a00c,
1390 .freq_tbl
= ftbl_rbcpr_gfx_clk_src
,
1391 .parent_map
= gcc_xo_gpll0_gpll0div2_4_map
,
1392 .clkr
.hw
.init
= &(struct clk_init_data
) {
1393 .name
= "rbcpr_gfx_clk_src",
1394 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
1395 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
1396 .ops
= &clk_rcg2_ops
,
1400 static const struct parent_map gcc_sdcc1_ice_core_map
[] = {
1404 { P_GPLL0_DIV2
, 4 },
1407 static const struct clk_parent_data gcc_sdcc1_ice_core_data
[] = {
1408 { .fw_name
= "xo" },
1409 { .hw
= &gpll0
.clkr
.hw
},
1410 { .hw
= &gpll6
.clkr
.hw
},
1411 { .hw
= &gpll0_early_div
.hw
},
1414 static const struct freq_tbl ftbl_sdcc1_ice_core_clk_src
[] = {
1415 F(80000000, P_GPLL0_DIV2
, 5, 0, 0),
1416 F(160000000, P_GPLL0
, 5, 0, 0),
1417 F(270000000, P_GPLL6
, 4, 0, 0),
1421 static struct clk_rcg2 sdcc1_ice_core_clk_src
= {
1422 .cmd_rcgr
= 0x5d000,
1424 .freq_tbl
= ftbl_sdcc1_ice_core_clk_src
,
1425 .parent_map
= gcc_sdcc1_ice_core_map
,
1426 .clkr
.hw
.init
= &(struct clk_init_data
) {
1427 .name
= "sdcc1_ice_core_clk_src",
1428 .parent_data
= gcc_sdcc1_ice_core_data
,
1429 .num_parents
= ARRAY_SIZE(gcc_sdcc1_ice_core_data
),
1430 .ops
= &clk_rcg2_ops
,
1434 static const struct parent_map gcc_sdcc_apps_map
[] = {
1438 { P_GPLL0_DIV2
, 4 },
1441 static const struct clk_parent_data gcc_sdcc_apss_data
[] = {
1442 { .fw_name
= "xo" },
1443 { .hw
= &gpll0
.clkr
.hw
},
1444 { .hw
= &gpll4
.clkr
.hw
},
1445 { .hw
= &gpll0_early_div
.hw
},
1448 static const struct freq_tbl ftbl_sdcc1_apps_clk_src
[] = {
1449 F(144000, P_XO
, 16, 3, 25),
1450 F(400000, P_XO
, 12, 1, 4),
1451 F(20000000, P_GPLL0_DIV2
, 5, 1, 4),
1452 F(25000000, P_GPLL0_DIV2
, 16, 0, 0),
1453 F(50000000, P_GPLL0
, 16, 0, 0),
1454 F(100000000, P_GPLL0
, 8, 0, 0),
1455 F(177770000, P_GPLL0
, 4.5, 0, 0),
1456 F(192000000, P_GPLL4
, 6, 0, 0),
1457 F(384000000, P_GPLL4
, 3, 0, 0),
1461 static struct clk_rcg2 sdcc1_apps_clk_src
= {
1462 .cmd_rcgr
= 0x42004,
1465 .freq_tbl
= ftbl_sdcc1_apps_clk_src
,
1466 .parent_map
= gcc_sdcc_apps_map
,
1467 .clkr
.hw
.init
= &(struct clk_init_data
) {
1468 .name
= "sdcc1_apps_clk_src",
1469 .parent_data
= gcc_sdcc_apss_data
,
1470 .num_parents
= ARRAY_SIZE(gcc_sdcc_apss_data
),
1471 .ops
= &clk_rcg2_floor_ops
,
1475 static const struct freq_tbl ftbl_sdcc2_apps_clk_src
[] = {
1476 F(144000, P_XO
, 16, 3, 25),
1477 F(400000, P_XO
, 12, 1, 4),
1478 F(20000000, P_GPLL0_DIV2
, 5, 1, 4),
1479 F(25000000, P_GPLL0_DIV2
, 16, 0, 0),
1480 F(50000000, P_GPLL0
, 16, 0, 0),
1481 F(100000000, P_GPLL0
, 8, 0, 0),
1482 F(177770000, P_GPLL0
, 4.5, 0, 0),
1483 F(192000000, P_GPLL4
, 6, 0, 0),
1484 F(200000000, P_GPLL0
, 4, 0, 0),
1488 static struct clk_rcg2 sdcc2_apps_clk_src
= {
1489 .cmd_rcgr
= 0x43004,
1492 .freq_tbl
= ftbl_sdcc2_apps_clk_src
,
1493 .parent_map
= gcc_sdcc_apps_map
,
1494 .clkr
.hw
.init
= &(struct clk_init_data
) {
1495 .name
= "sdcc2_apps_clk_src",
1496 .parent_data
= gcc_sdcc_apss_data
,
1497 .num_parents
= ARRAY_SIZE(gcc_sdcc_apss_data
),
1498 .ops
= &clk_rcg2_floor_ops
,
1502 static const struct freq_tbl ftbl_usb30_master_clk_src
[] = {
1503 F(80000000, P_GPLL0_DIV2
, 5, 0, 0),
1504 F(100000000, P_GPLL0
, 8, 0, 0),
1505 F(133330000, P_GPLL0
, 6, 0, 0),
1509 static struct clk_rcg2 usb30_master_clk_src
= {
1510 .cmd_rcgr
= 0x3f00c,
1512 .freq_tbl
= ftbl_usb30_master_clk_src
,
1513 .parent_map
= gcc_xo_gpll0_gpll0div2_2_map
,
1514 .clkr
.hw
.init
= &(struct clk_init_data
) {
1515 .name
= "usb30_master_clk_src",
1516 .parent_data
= gcc_xo_gpll0_gpll0div2_data
,
1517 .num_parents
= ARRAY_SIZE(gcc_xo_gpll0_gpll0div2_data
),
1518 .ops
= &clk_rcg2_ops
,
1522 static const struct parent_map gcc_usb30_mock_utmi_map
[] = {
1525 { P_GPLL6_DIV2
, 2 },
1527 { P_GPLL0_DIV2
, 4 },
1530 static const struct clk_parent_data gcc_usb30_mock_utmi_data
[] = {
1531 { .fw_name
= "xo" },
1532 { .hw
= &gpll6
.clkr
.hw
},
1533 { .hw
= &gpll6_early_div
.hw
},
1534 { .hw
= &gpll0
.clkr
.hw
},
1535 { .hw
= &gpll0_early_div
.hw
},
1538 static const struct freq_tbl ftbl_usb30_mock_utmi_clk_src
[] = {
1539 F(19200000, P_XO
, 1, 0, 0),
1540 F(60000000, P_GPLL6_DIV2
, 9, 1, 1),
1544 static struct clk_rcg2 usb30_mock_utmi_clk_src
= {
1545 .cmd_rcgr
= 0x3f020,
1548 .freq_tbl
= ftbl_usb30_mock_utmi_clk_src
,
1549 .parent_map
= gcc_usb30_mock_utmi_map
,
1550 .clkr
.hw
.init
= &(struct clk_init_data
) {
1551 .name
= "usb30_mock_utmi_clk_src",
1552 .parent_data
= gcc_usb30_mock_utmi_data
,
1553 .num_parents
= ARRAY_SIZE(gcc_usb30_mock_utmi_data
),
1554 .ops
= &clk_rcg2_ops
,
1558 static const struct parent_map gcc_usb3_aux_map
[] = {
1563 static const struct clk_parent_data gcc_usb3_aux_data
[] = {
1564 { .fw_name
= "xo" },
1565 { .fw_name
= "sleep", .name
= "sleep" },
1568 static const struct freq_tbl ftbl_usb3_aux_clk_src
[] = {
1569 F(19200000, P_XO
, 1, 0, 0),
1573 static struct clk_rcg2 usb3_aux_clk_src
= {
1574 .cmd_rcgr
= 0x3f05c,
1577 .freq_tbl
= ftbl_usb3_aux_clk_src
,
1578 .parent_map
= gcc_usb3_aux_map
,
1579 .clkr
.hw
.init
= &(struct clk_init_data
) {
1580 .name
= "usb3_aux_clk_src",
1581 .parent_data
= gcc_usb3_aux_data
,
1582 .num_parents
= ARRAY_SIZE(gcc_usb3_aux_data
),
1583 .ops
= &clk_rcg2_ops
,
1587 static const struct parent_map gcc_vcodec0_map
[] = {
1592 { P_GPLL0_DIV2
, 4 },
1595 static const struct clk_parent_data gcc_vcodec0_data
[] = {
1596 { .fw_name
= "xo" },
1597 { .hw
= &gpll0
.clkr
.hw
},
1598 { .hw
= &gpll6
.clkr
.hw
},
1599 { .hw
= &gpll2
.clkr
.hw
},
1600 { .hw
= &gpll0_early_div
.hw
},
1603 static const struct freq_tbl ftbl_vcodec0_clk_src
[] = {
1604 F(114290000, P_GPLL0_DIV2
, 3.5, 0, 0),
1605 F(228570000, P_GPLL0
, 3.5, 0, 0),
1606 F(310000000, P_GPLL2
, 3, 0, 0),
1607 F(360000000, P_GPLL6
, 3, 0, 0),
1608 F(400000000, P_GPLL0
, 2, 0, 0),
1609 F(465000000, P_GPLL2
, 2, 0, 0),
1610 F(540000000, P_GPLL6
, 2, 0, 0),
1614 static struct clk_rcg2 vcodec0_clk_src
= {
1615 .cmd_rcgr
= 0x4c000,
1617 .freq_tbl
= ftbl_vcodec0_clk_src
,
1618 .parent_map
= gcc_vcodec0_map
,
1619 .clkr
.hw
.init
= &(struct clk_init_data
) {
1620 .name
= "vcodec0_clk_src",
1621 .parent_data
= gcc_vcodec0_data
,
1622 .num_parents
= ARRAY_SIZE(gcc_vcodec0_data
),
1623 .ops
= &clk_rcg2_ops
,
1627 static const struct parent_map gcc_vfe_map
[] = {
1633 { P_GPLL0_DIV2
, 5 },
1636 static const struct clk_parent_data gcc_vfe_data
[] = {
1637 { .fw_name
= "xo" },
1638 { .hw
= &gpll0
.clkr
.hw
},
1639 { .hw
= &gpll6
.clkr
.hw
},
1640 { .hw
= &gpll4
.clkr
.hw
},
1641 { .hw
= &gpll2
.clkr
.hw
},
1642 { .hw
= &gpll0_early_div
.hw
},
1645 static const struct freq_tbl ftbl_vfe_clk_src
[] = {
1646 F(50000000, P_GPLL0_DIV2
, 8, 0, 0),
1647 F(100000000, P_GPLL0_DIV2
, 4, 0, 0),
1648 F(133330000, P_GPLL0
, 6, 0, 0),
1649 F(160000000, P_GPLL0
, 5, 0, 0),
1650 F(200000000, P_GPLL0
, 4, 0, 0),
1651 F(266670000, P_GPLL0
, 3, 0, 0),
1652 F(310000000, P_GPLL2
, 3, 0, 0),
1653 F(400000000, P_GPLL0
, 2, 0, 0),
1654 F(465000000, P_GPLL2
, 2, 0, 0),
1658 static struct clk_rcg2 vfe0_clk_src
= {
1659 .cmd_rcgr
= 0x58000,
1661 .freq_tbl
= ftbl_vfe_clk_src
,
1662 .parent_map
= gcc_vfe_map
,
1663 .clkr
.hw
.init
= &(struct clk_init_data
) {
1664 .name
= "vfe0_clk_src",
1665 .parent_data
= gcc_vfe_data
,
1666 .num_parents
= ARRAY_SIZE(gcc_vfe_data
),
1667 .ops
= &clk_rcg2_ops
,
1671 static struct clk_rcg2 vfe1_clk_src
= {
1672 .cmd_rcgr
= 0x58054,
1674 .freq_tbl
= ftbl_vfe_clk_src
,
1675 .parent_map
= gcc_vfe_map
,
1676 .clkr
.hw
.init
= &(struct clk_init_data
) {
1677 .name
= "vfe1_clk_src",
1678 .parent_data
= gcc_vfe_data
,
1679 .num_parents
= ARRAY_SIZE(gcc_vfe_data
),
1680 .ops
= &clk_rcg2_ops
,
1684 static const struct parent_map gcc_vsync_map
[] = {
1689 static const struct freq_tbl ftbl_vsync_clk_src
[] = {
1690 F(19200000, P_XO
, 1, 0, 0),
1694 static struct clk_rcg2 vsync_clk_src
= {
1695 .cmd_rcgr
= 0x4d02c,
1697 .freq_tbl
= ftbl_vsync_clk_src
,
1698 .parent_map
= gcc_vsync_map
,
1699 .clkr
.hw
.init
= &(struct clk_init_data
) {
1700 .name
= "vsync_clk_src",
1701 .parent_data
= gcc_esc_vsync_data
,
1702 .num_parents
= ARRAY_SIZE(gcc_esc_vsync_data
),
1703 .ops
= &clk_rcg2_ops
,
1707 static struct clk_branch gcc_apc0_droop_detector_gpll0_clk
= {
1708 .halt_reg
= 0x78004,
1709 .halt_check
= BRANCH_HALT
,
1711 .enable_reg
= 0x78004,
1712 .enable_mask
= BIT(0),
1713 .hw
.init
= &(struct clk_init_data
) {
1714 .name
= "gcc_apc0_droop_detector_gpll0_clk",
1715 .parent_hws
= (const struct clk_hw
*[]){
1716 &apc0_droop_detector_clk_src
.clkr
.hw
,
1719 .ops
= &clk_branch2_ops
,
1720 .flags
= CLK_SET_RATE_PARENT
,
1725 static struct clk_branch gcc_apc1_droop_detector_gpll0_clk
= {
1726 .halt_reg
= 0x79004,
1727 .halt_check
= BRANCH_HALT
,
1729 .enable_reg
= 0x79004,
1730 .enable_mask
= BIT(0),
1731 .hw
.init
= &(struct clk_init_data
) {
1732 .name
= "gcc_apc1_droop_detector_gpll0_clk",
1733 .parent_hws
= (const struct clk_hw
*[]){
1734 &apc1_droop_detector_clk_src
.clkr
.hw
,
1737 .ops
= &clk_branch2_ops
,
1738 .flags
= CLK_SET_RATE_PARENT
,
1743 static struct clk_branch gcc_apss_ahb_clk
= {
1744 .halt_reg
= 0x4601c,
1745 .halt_check
= BRANCH_HALT_VOTED
,
1747 .enable_reg
= 0x45004,
1748 .enable_mask
= BIT(14),
1749 .hw
.init
= &(struct clk_init_data
) {
1750 .name
= "gcc_apss_ahb_clk",
1751 .parent_hws
= (const struct clk_hw
*[]){
1752 &apss_ahb_clk_src
.clkr
.hw
,
1755 .ops
= &clk_branch2_ops
,
1756 .flags
= CLK_SET_RATE_PARENT
,
1761 static struct clk_branch gcc_apss_axi_clk
= {
1762 .halt_reg
= 0x46020,
1763 .halt_check
= BRANCH_HALT_VOTED
,
1765 .enable_reg
= 0x45004,
1766 .enable_mask
= BIT(13),
1767 .hw
.init
= &(struct clk_init_data
) {
1768 .name
= "gcc_apss_axi_clk",
1769 .ops
= &clk_branch2_ops
,
1774 static struct clk_branch gcc_apss_tcu_async_clk
= {
1775 .halt_reg
= 0x12018,
1776 .halt_check
= BRANCH_HALT_VOTED
,
1778 .enable_reg
= 0x4500c,
1779 .enable_mask
= BIT(1),
1780 .hw
.init
= &(struct clk_init_data
) {
1781 .name
= "gcc_apss_tcu_async_clk",
1782 .ops
= &clk_branch2_ops
,
1787 static struct clk_branch gcc_bimc_gfx_clk
= {
1788 .halt_reg
= 0x59034,
1789 .halt_check
= BRANCH_HALT
,
1791 .enable_reg
= 0x59034,
1792 .enable_mask
= BIT(0),
1793 .hw
.init
= &(struct clk_init_data
) {
1794 .name
= "gcc_bimc_gfx_clk",
1795 .ops
= &clk_branch2_ops
,
1800 static struct clk_branch gcc_bimc_gpu_clk
= {
1801 .halt_reg
= 0x59030,
1802 .halt_check
= BRANCH_HALT
,
1804 .enable_reg
= 0x59030,
1805 .enable_mask
= BIT(0),
1806 .hw
.init
= &(struct clk_init_data
) {
1807 .name
= "gcc_bimc_gpu_clk",
1808 .ops
= &clk_branch2_ops
,
1813 static struct clk_branch gcc_blsp1_ahb_clk
= {
1814 .halt_reg
= 0x01008,
1815 .halt_check
= BRANCH_HALT_VOTED
,
1817 .enable_reg
= 0x45004,
1818 .enable_mask
= BIT(10),
1819 .hw
.init
= &(struct clk_init_data
) {
1820 .name
= "gcc_blsp1_ahb_clk",
1821 .ops
= &clk_branch2_ops
,
1826 static struct clk_branch gcc_blsp2_ahb_clk
= {
1827 .halt_reg
= 0x0b008,
1828 .halt_check
= BRANCH_HALT_VOTED
,
1830 .enable_reg
= 0x45004,
1831 .enable_mask
= BIT(20),
1832 .hw
.init
= &(struct clk_init_data
) {
1833 .name
= "gcc_blsp2_ahb_clk",
1834 .ops
= &clk_branch2_ops
,
1839 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk
= {
1840 .halt_reg
= 0x02008,
1841 .halt_check
= BRANCH_HALT
,
1843 .enable_reg
= 0x02008,
1844 .enable_mask
= BIT(0),
1845 .hw
.init
= &(struct clk_init_data
) {
1846 .name
= "gcc_blsp1_qup1_i2c_apps_clk",
1847 .parent_hws
= (const struct clk_hw
*[]){
1848 &blsp1_qup1_i2c_apps_clk_src
.clkr
.hw
,
1851 .ops
= &clk_branch2_ops
,
1852 .flags
= CLK_SET_RATE_PARENT
,
1857 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk
= {
1858 .halt_reg
= 0x03010,
1859 .halt_check
= BRANCH_HALT
,
1861 .enable_reg
= 0x03010,
1862 .enable_mask
= BIT(0),
1863 .hw
.init
= &(struct clk_init_data
) {
1864 .name
= "gcc_blsp1_qup2_i2c_apps_clk",
1865 .parent_hws
= (const struct clk_hw
*[]){
1866 &blsp1_qup2_i2c_apps_clk_src
.clkr
.hw
,
1869 .ops
= &clk_branch2_ops
,
1870 .flags
= CLK_SET_RATE_PARENT
,
1875 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk
= {
1876 .halt_reg
= 0x04020,
1877 .halt_check
= BRANCH_HALT
,
1879 .enable_reg
= 0x04020,
1880 .enable_mask
= BIT(0),
1881 .hw
.init
= &(struct clk_init_data
) {
1882 .name
= "gcc_blsp1_qup3_i2c_apps_clk",
1883 .parent_hws
= (const struct clk_hw
*[]){
1884 &blsp1_qup3_i2c_apps_clk_src
.clkr
.hw
,
1887 .ops
= &clk_branch2_ops
,
1888 .flags
= CLK_SET_RATE_PARENT
,
1893 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk
= {
1894 .halt_reg
= 0x05020,
1895 .halt_check
= BRANCH_HALT
,
1897 .enable_reg
= 0x05020,
1898 .enable_mask
= BIT(0),
1899 .hw
.init
= &(struct clk_init_data
) {
1900 .name
= "gcc_blsp1_qup4_i2c_apps_clk",
1901 .parent_hws
= (const struct clk_hw
*[]){
1902 &blsp1_qup4_i2c_apps_clk_src
.clkr
.hw
,
1905 .ops
= &clk_branch2_ops
,
1906 .flags
= CLK_SET_RATE_PARENT
,
1911 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk
= {
1912 .halt_reg
= 0x0c008,
1913 .halt_check
= BRANCH_HALT
,
1915 .enable_reg
= 0x0c008,
1916 .enable_mask
= BIT(0),
1917 .hw
.init
= &(struct clk_init_data
) {
1918 .name
= "gcc_blsp2_qup1_i2c_apps_clk",
1919 .parent_hws
= (const struct clk_hw
*[]){
1920 &blsp2_qup1_i2c_apps_clk_src
.clkr
.hw
,
1923 .ops
= &clk_branch2_ops
,
1924 .flags
= CLK_SET_RATE_PARENT
,
1929 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk
= {
1930 .halt_reg
= 0x0d010,
1931 .halt_check
= BRANCH_HALT
,
1933 .enable_reg
= 0x0d010,
1934 .enable_mask
= BIT(0),
1935 .hw
.init
= &(struct clk_init_data
) {
1936 .name
= "gcc_blsp2_qup2_i2c_apps_clk",
1937 .parent_hws
= (const struct clk_hw
*[]){
1938 &blsp2_qup2_i2c_apps_clk_src
.clkr
.hw
,
1941 .ops
= &clk_branch2_ops
,
1942 .flags
= CLK_SET_RATE_PARENT
,
1947 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk
= {
1948 .halt_reg
= 0x0f020,
1949 .halt_check
= BRANCH_HALT
,
1951 .enable_reg
= 0x0f020,
1952 .enable_mask
= BIT(0),
1953 .hw
.init
= &(struct clk_init_data
) {
1954 .name
= "gcc_blsp2_qup3_i2c_apps_clk",
1955 .parent_hws
= (const struct clk_hw
*[]){
1956 &blsp2_qup3_i2c_apps_clk_src
.clkr
.hw
,
1959 .ops
= &clk_branch2_ops
,
1960 .flags
= CLK_SET_RATE_PARENT
,
1965 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk
= {
1966 .halt_reg
= 0x18020,
1967 .halt_check
= BRANCH_HALT
,
1969 .enable_reg
= 0x18020,
1970 .enable_mask
= BIT(0),
1971 .hw
.init
= &(struct clk_init_data
) {
1972 .name
= "gcc_blsp2_qup4_i2c_apps_clk",
1973 .parent_hws
= (const struct clk_hw
*[]){
1974 &blsp2_qup4_i2c_apps_clk_src
.clkr
.hw
,
1977 .ops
= &clk_branch2_ops
,
1978 .flags
= CLK_SET_RATE_PARENT
,
1983 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk
= {
1984 .halt_reg
= 0x02004,
1985 .halt_check
= BRANCH_HALT
,
1987 .enable_reg
= 0x02004,
1988 .enable_mask
= BIT(0),
1989 .hw
.init
= &(struct clk_init_data
) {
1990 .name
= "gcc_blsp1_qup1_spi_apps_clk",
1991 .parent_hws
= (const struct clk_hw
*[]){
1992 &blsp1_qup1_spi_apps_clk_src
.clkr
.hw
,
1995 .ops
= &clk_branch2_ops
,
1996 .flags
= CLK_SET_RATE_PARENT
,
2001 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk
= {
2002 .halt_reg
= 0x0300c,
2003 .halt_check
= BRANCH_HALT
,
2005 .enable_reg
= 0x0300c,
2006 .enable_mask
= BIT(0),
2007 .hw
.init
= &(struct clk_init_data
) {
2008 .name
= "gcc_blsp1_qup2_spi_apps_clk",
2009 .parent_hws
= (const struct clk_hw
*[]){
2010 &blsp1_qup2_spi_apps_clk_src
.clkr
.hw
,
2013 .ops
= &clk_branch2_ops
,
2014 .flags
= CLK_SET_RATE_PARENT
,
2019 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk
= {
2020 .halt_reg
= 0x0401c,
2021 .halt_check
= BRANCH_HALT
,
2023 .enable_reg
= 0x0401c,
2024 .enable_mask
= BIT(0),
2025 .hw
.init
= &(struct clk_init_data
) {
2026 .name
= "gcc_blsp1_qup3_spi_apps_clk",
2027 .parent_hws
= (const struct clk_hw
*[]){
2028 &blsp1_qup3_spi_apps_clk_src
.clkr
.hw
,
2031 .ops
= &clk_branch2_ops
,
2032 .flags
= CLK_SET_RATE_PARENT
,
2037 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk
= {
2038 .halt_reg
= 0x0501c,
2039 .halt_check
= BRANCH_HALT
,
2041 .enable_reg
= 0x0501c,
2042 .enable_mask
= BIT(0),
2043 .hw
.init
= &(struct clk_init_data
) {
2044 .name
= "gcc_blsp1_qup4_spi_apps_clk",
2045 .parent_hws
= (const struct clk_hw
*[]){
2046 &blsp1_qup4_spi_apps_clk_src
.clkr
.hw
,
2049 .ops
= &clk_branch2_ops
,
2050 .flags
= CLK_SET_RATE_PARENT
,
2055 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk
= {
2056 .halt_reg
= 0x0c004,
2057 .halt_check
= BRANCH_HALT
,
2059 .enable_reg
= 0x0c004,
2060 .enable_mask
= BIT(0),
2061 .hw
.init
= &(struct clk_init_data
) {
2062 .name
= "gcc_blsp2_qup1_spi_apps_clk",
2063 .parent_hws
= (const struct clk_hw
*[]){
2064 &blsp2_qup1_spi_apps_clk_src
.clkr
.hw
,
2067 .ops
= &clk_branch2_ops
,
2068 .flags
= CLK_SET_RATE_PARENT
,
2073 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk
= {
2074 .halt_reg
= 0x0d00c,
2075 .halt_check
= BRANCH_HALT
,
2077 .enable_reg
= 0x0d00c,
2078 .enable_mask
= BIT(0),
2079 .hw
.init
= &(struct clk_init_data
) {
2080 .name
= "gcc_blsp2_qup2_spi_apps_clk",
2081 .parent_hws
= (const struct clk_hw
*[]){
2082 &blsp2_qup2_spi_apps_clk_src
.clkr
.hw
,
2085 .ops
= &clk_branch2_ops
,
2086 .flags
= CLK_SET_RATE_PARENT
,
2091 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk
= {
2092 .halt_reg
= 0x0f01c,
2093 .halt_check
= BRANCH_HALT
,
2095 .enable_reg
= 0x0f01c,
2096 .enable_mask
= BIT(0),
2097 .hw
.init
= &(struct clk_init_data
) {
2098 .name
= "gcc_blsp2_qup3_spi_apps_clk",
2099 .parent_hws
= (const struct clk_hw
*[]){
2100 &blsp2_qup3_spi_apps_clk_src
.clkr
.hw
,
2103 .ops
= &clk_branch2_ops
,
2104 .flags
= CLK_SET_RATE_PARENT
,
2109 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk
= {
2110 .halt_reg
= 0x1801c,
2111 .halt_check
= BRANCH_HALT
,
2113 .enable_reg
= 0x1801c,
2114 .enable_mask
= BIT(0),
2115 .hw
.init
= &(struct clk_init_data
) {
2116 .name
= "gcc_blsp2_qup4_spi_apps_clk",
2117 .parent_hws
= (const struct clk_hw
*[]){
2118 &blsp2_qup4_spi_apps_clk_src
.clkr
.hw
,
2121 .ops
= &clk_branch2_ops
,
2122 .flags
= CLK_SET_RATE_PARENT
,
2127 static struct clk_branch gcc_blsp1_uart1_apps_clk
= {
2128 .halt_reg
= 0x0203c,
2129 .halt_check
= BRANCH_HALT
,
2131 .enable_reg
= 0x0203c,
2132 .enable_mask
= BIT(0),
2133 .hw
.init
= &(struct clk_init_data
) {
2134 .name
= "gcc_blsp1_uart1_apps_clk",
2135 .parent_hws
= (const struct clk_hw
*[]){
2136 &blsp1_uart1_apps_clk_src
.clkr
.hw
,
2139 .ops
= &clk_branch2_ops
,
2140 .flags
= CLK_SET_RATE_PARENT
,
2145 static struct clk_branch gcc_blsp1_uart2_apps_clk
= {
2146 .halt_reg
= 0x0302c,
2147 .halt_check
= BRANCH_HALT
,
2149 .enable_reg
= 0x0302c,
2150 .enable_mask
= BIT(0),
2151 .hw
.init
= &(struct clk_init_data
) {
2152 .name
= "gcc_blsp1_uart2_apps_clk",
2153 .parent_hws
= (const struct clk_hw
*[]){
2154 &blsp1_uart2_apps_clk_src
.clkr
.hw
,
2157 .ops
= &clk_branch2_ops
,
2158 .flags
= CLK_SET_RATE_PARENT
,
2163 static struct clk_branch gcc_blsp2_uart1_apps_clk
= {
2164 .halt_reg
= 0x0c03c,
2165 .halt_check
= BRANCH_HALT
,
2167 .enable_reg
= 0x0c03c,
2168 .enable_mask
= BIT(0),
2169 .hw
.init
= &(struct clk_init_data
) {
2170 .name
= "gcc_blsp2_uart1_apps_clk",
2171 .parent_hws
= (const struct clk_hw
*[]){
2172 &blsp2_uart1_apps_clk_src
.clkr
.hw
,
2175 .ops
= &clk_branch2_ops
,
2176 .flags
= CLK_SET_RATE_PARENT
,
2181 static struct clk_branch gcc_blsp2_uart2_apps_clk
= {
2182 .halt_reg
= 0x0d02c,
2183 .halt_check
= BRANCH_HALT
,
2185 .enable_reg
= 0x0d02c,
2186 .enable_mask
= BIT(0),
2187 .hw
.init
= &(struct clk_init_data
) {
2188 .name
= "gcc_blsp2_uart2_apps_clk",
2189 .parent_hws
= (const struct clk_hw
*[]){
2190 &blsp2_uart2_apps_clk_src
.clkr
.hw
,
2193 .ops
= &clk_branch2_ops
,
2194 .flags
= CLK_SET_RATE_PARENT
,
2199 static struct clk_branch gcc_boot_rom_ahb_clk
= {
2200 .halt_reg
= 0x1300c,
2201 .halt_check
= BRANCH_HALT_VOTED
,
2203 .enable_reg
= 0x45004,
2204 .enable_mask
= BIT(7),
2205 .hw
.init
= &(struct clk_init_data
) {
2206 .name
= "gcc_boot_rom_ahb_clk",
2207 .ops
= &clk_branch2_ops
,
2212 static struct clk_branch gcc_camss_ahb_clk
= {
2213 .halt_reg
= 0x56004,
2214 .halt_check
= BRANCH_HALT
,
2216 .enable_reg
= 0x56004,
2217 .enable_mask
= BIT(0),
2218 .hw
.init
= &(struct clk_init_data
) {
2219 .name
= "gcc_camss_ahb_clk",
2220 .ops
= &clk_branch2_ops
,
2225 static struct clk_branch gcc_camss_cci_ahb_clk
= {
2226 .halt_reg
= 0x5101c,
2227 .halt_check
= BRANCH_HALT
,
2229 .enable_reg
= 0x5101c,
2230 .enable_mask
= BIT(0),
2231 .hw
.init
= &(struct clk_init_data
) {
2232 .name
= "gcc_camss_cci_ahb_clk",
2233 .parent_hws
= (const struct clk_hw
*[]){
2234 &camss_top_ahb_clk_src
.clkr
.hw
,
2237 .ops
= &clk_branch2_ops
,
2238 .flags
= CLK_SET_RATE_PARENT
,
2243 static struct clk_branch gcc_camss_cci_clk
= {
2244 .halt_reg
= 0x51018,
2245 .halt_check
= BRANCH_HALT
,
2247 .enable_reg
= 0x51018,
2248 .enable_mask
= BIT(0),
2249 .hw
.init
= &(struct clk_init_data
) {
2250 .name
= "gcc_camss_cci_clk",
2251 .parent_hws
= (const struct clk_hw
*[]){
2252 &cci_clk_src
.clkr
.hw
,
2255 .ops
= &clk_branch2_ops
,
2256 .flags
= CLK_SET_RATE_PARENT
,
2261 static struct clk_branch gcc_camss_cpp_ahb_clk
= {
2262 .halt_reg
= 0x58040,
2263 .halt_check
= BRANCH_HALT
,
2265 .enable_reg
= 0x58040,
2266 .enable_mask
= BIT(0),
2267 .hw
.init
= &(struct clk_init_data
) {
2268 .name
= "gcc_camss_cpp_ahb_clk",
2269 .parent_hws
= (const struct clk_hw
*[]){
2270 &camss_top_ahb_clk_src
.clkr
.hw
,
2273 .ops
= &clk_branch2_ops
,
2274 .flags
= CLK_SET_RATE_PARENT
,
2279 static struct clk_branch gcc_camss_cpp_axi_clk
= {
2280 .halt_reg
= 0x58064,
2281 .halt_check
= BRANCH_HALT
,
2283 .enable_reg
= 0x58064,
2284 .enable_mask
= BIT(0),
2285 .hw
.init
= &(struct clk_init_data
) {
2286 .name
= "gcc_camss_cpp_axi_clk",
2287 .ops
= &clk_branch2_ops
,
2292 static struct clk_branch gcc_camss_cpp_clk
= {
2293 .halt_reg
= 0x5803c,
2294 .halt_check
= BRANCH_HALT
,
2296 .enable_reg
= 0x5803c,
2297 .enable_mask
= BIT(0),
2298 .hw
.init
= &(struct clk_init_data
) {
2299 .name
= "gcc_camss_cpp_clk",
2300 .parent_hws
= (const struct clk_hw
*[]){
2301 &cpp_clk_src
.clkr
.hw
,
2304 .ops
= &clk_branch2_ops
,
2305 .flags
= CLK_SET_RATE_PARENT
,
2310 static struct clk_branch gcc_camss_csi0_ahb_clk
= {
2311 .halt_reg
= 0x4e040,
2312 .halt_check
= BRANCH_HALT
,
2314 .enable_reg
= 0x4e040,
2315 .enable_mask
= BIT(0),
2316 .hw
.init
= &(struct clk_init_data
) {
2317 .name
= "gcc_camss_csi0_ahb_clk",
2318 .parent_hws
= (const struct clk_hw
*[]){
2319 &camss_top_ahb_clk_src
.clkr
.hw
,
2322 .ops
= &clk_branch2_ops
,
2323 .flags
= CLK_SET_RATE_PARENT
,
2328 static struct clk_branch gcc_camss_csi1_ahb_clk
= {
2329 .halt_reg
= 0x4f040,
2330 .halt_check
= BRANCH_HALT
,
2332 .enable_reg
= 0x4f040,
2333 .enable_mask
= BIT(0),
2334 .hw
.init
= &(struct clk_init_data
) {
2335 .name
= "gcc_camss_csi1_ahb_clk",
2336 .parent_hws
= (const struct clk_hw
*[]){
2337 &camss_top_ahb_clk_src
.clkr
.hw
,
2340 .ops
= &clk_branch2_ops
,
2341 .flags
= CLK_SET_RATE_PARENT
,
2346 static struct clk_branch gcc_camss_csi2_ahb_clk
= {
2347 .halt_reg
= 0x3c040,
2348 .halt_check
= BRANCH_HALT
,
2350 .enable_reg
= 0x3c040,
2351 .enable_mask
= BIT(0),
2352 .hw
.init
= &(struct clk_init_data
) {
2353 .name
= "gcc_camss_csi2_ahb_clk",
2354 .parent_hws
= (const struct clk_hw
*[]){
2355 &camss_top_ahb_clk_src
.clkr
.hw
,
2358 .ops
= &clk_branch2_ops
,
2359 .flags
= CLK_SET_RATE_PARENT
,
2364 static struct clk_branch gcc_camss_csi0_clk
= {
2365 .halt_reg
= 0x4e03c,
2366 .halt_check
= BRANCH_HALT
,
2368 .enable_reg
= 0x4e03c,
2369 .enable_mask
= BIT(0),
2370 .hw
.init
= &(struct clk_init_data
) {
2371 .name
= "gcc_camss_csi0_clk",
2372 .parent_hws
= (const struct clk_hw
*[]){
2373 &csi0_clk_src
.clkr
.hw
,
2376 .ops
= &clk_branch2_ops
,
2377 .flags
= CLK_SET_RATE_PARENT
,
2382 static struct clk_branch gcc_camss_csi1_clk
= {
2383 .halt_reg
= 0x4f03c,
2384 .halt_check
= BRANCH_HALT
,
2386 .enable_reg
= 0x4f03c,
2387 .enable_mask
= BIT(0),
2388 .hw
.init
= &(struct clk_init_data
) {
2389 .name
= "gcc_camss_csi1_clk",
2390 .parent_hws
= (const struct clk_hw
*[]){
2391 &csi1_clk_src
.clkr
.hw
,
2394 .ops
= &clk_branch2_ops
,
2395 .flags
= CLK_SET_RATE_PARENT
,
2400 static struct clk_branch gcc_camss_csi2_clk
= {
2401 .halt_reg
= 0x3c03c,
2402 .halt_check
= BRANCH_HALT
,
2404 .enable_reg
= 0x3c03c,
2405 .enable_mask
= BIT(0),
2406 .hw
.init
= &(struct clk_init_data
) {
2407 .name
= "gcc_camss_csi2_clk",
2408 .parent_hws
= (const struct clk_hw
*[]){
2409 &csi2_clk_src
.clkr
.hw
,
2412 .ops
= &clk_branch2_ops
,
2413 .flags
= CLK_SET_RATE_PARENT
,
2418 static struct clk_branch gcc_camss_csi0_csiphy_3p_clk
= {
2419 .halt_reg
= 0x58090,
2420 .halt_check
= BRANCH_HALT
,
2422 .enable_reg
= 0x58090,
2423 .enable_mask
= BIT(0),
2424 .hw
.init
= &(struct clk_init_data
) {
2425 .name
= "gcc_camss_csi0_csiphy_3p_clk",
2426 .parent_hws
= (const struct clk_hw
*[]){
2427 &csi0p_clk_src
.clkr
.hw
,
2430 .ops
= &clk_branch2_ops
,
2431 .flags
= CLK_SET_RATE_PARENT
,
2436 static struct clk_branch gcc_camss_csi1_csiphy_3p_clk
= {
2437 .halt_reg
= 0x580a0,
2438 .halt_check
= BRANCH_HALT
,
2440 .enable_reg
= 0x580a0,
2441 .enable_mask
= BIT(0),
2442 .hw
.init
= &(struct clk_init_data
) {
2443 .name
= "gcc_camss_csi1_csiphy_3p_clk",
2444 .parent_hws
= (const struct clk_hw
*[]){
2445 &csi1p_clk_src
.clkr
.hw
,
2448 .ops
= &clk_branch2_ops
,
2449 .flags
= CLK_SET_RATE_PARENT
,
2454 static struct clk_branch gcc_camss_csi2_csiphy_3p_clk
= {
2455 .halt_reg
= 0x580b0,
2456 .halt_check
= BRANCH_HALT
,
2458 .enable_reg
= 0x580b0,
2459 .enable_mask
= BIT(0),
2460 .hw
.init
= &(struct clk_init_data
) {
2461 .name
= "gcc_camss_csi2_csiphy_3p_clk",
2462 .parent_hws
= (const struct clk_hw
*[]){
2463 &csi2p_clk_src
.clkr
.hw
,
2466 .ops
= &clk_branch2_ops
,
2467 .flags
= CLK_SET_RATE_PARENT
,
2472 static struct clk_branch gcc_camss_csi0phy_clk
= {
2473 .halt_reg
= 0x4e048,
2474 .halt_check
= BRANCH_HALT
,
2476 .enable_reg
= 0x4e048,
2477 .enable_mask
= BIT(0),
2478 .hw
.init
= &(struct clk_init_data
) {
2479 .name
= "gcc_camss_csi0phy_clk",
2480 .parent_hws
= (const struct clk_hw
*[]){
2481 &csi0_clk_src
.clkr
.hw
,
2484 .ops
= &clk_branch2_ops
,
2485 .flags
= CLK_SET_RATE_PARENT
,
2490 static struct clk_branch gcc_camss_csi1phy_clk
= {
2491 .halt_reg
= 0x4f048,
2492 .halt_check
= BRANCH_HALT
,
2494 .enable_reg
= 0x4f048,
2495 .enable_mask
= BIT(0),
2496 .hw
.init
= &(struct clk_init_data
) {
2497 .name
= "gcc_camss_csi1phy_clk",
2498 .parent_hws
= (const struct clk_hw
*[]){
2499 &csi1_clk_src
.clkr
.hw
,
2502 .ops
= &clk_branch2_ops
,
2503 .flags
= CLK_SET_RATE_PARENT
,
2508 static struct clk_branch gcc_camss_csi2phy_clk
= {
2509 .halt_reg
= 0x3c048,
2510 .halt_check
= BRANCH_HALT
,
2512 .enable_reg
= 0x3c048,
2513 .enable_mask
= BIT(0),
2514 .hw
.init
= &(struct clk_init_data
) {
2515 .name
= "gcc_camss_csi2phy_clk",
2516 .parent_hws
= (const struct clk_hw
*[]){
2517 &csi2_clk_src
.clkr
.hw
,
2520 .ops
= &clk_branch2_ops
,
2521 .flags
= CLK_SET_RATE_PARENT
,
2526 static struct clk_branch gcc_camss_csi0phytimer_clk
= {
2527 .halt_reg
= 0x4e01c,
2528 .halt_check
= BRANCH_HALT
,
2530 .enable_reg
= 0x4e01c,
2531 .enable_mask
= BIT(0),
2532 .hw
.init
= &(struct clk_init_data
) {
2533 .name
= "gcc_camss_csi0phytimer_clk",
2534 .parent_hws
= (const struct clk_hw
*[]){
2535 &csi0phytimer_clk_src
.clkr
.hw
,
2538 .ops
= &clk_branch2_ops
,
2539 .flags
= CLK_SET_RATE_PARENT
,
2544 static struct clk_branch gcc_camss_csi1phytimer_clk
= {
2545 .halt_reg
= 0x4f01c,
2546 .halt_check
= BRANCH_HALT
,
2548 .enable_reg
= 0x4f01c,
2549 .enable_mask
= BIT(0),
2550 .hw
.init
= &(struct clk_init_data
) {
2551 .name
= "gcc_camss_csi1phytimer_clk",
2552 .parent_hws
= (const struct clk_hw
*[]){
2553 &csi1phytimer_clk_src
.clkr
.hw
,
2556 .ops
= &clk_branch2_ops
,
2557 .flags
= CLK_SET_RATE_PARENT
,
2562 static struct clk_branch gcc_camss_csi2phytimer_clk
= {
2563 .halt_reg
= 0x4f068,
2564 .halt_check
= BRANCH_HALT
,
2566 .enable_reg
= 0x4f068,
2567 .enable_mask
= BIT(0),
2568 .hw
.init
= &(struct clk_init_data
) {
2569 .name
= "gcc_camss_csi2phytimer_clk",
2570 .parent_hws
= (const struct clk_hw
*[]){
2571 &csi2phytimer_clk_src
.clkr
.hw
,
2574 .ops
= &clk_branch2_ops
,
2575 .flags
= CLK_SET_RATE_PARENT
,
2580 static struct clk_branch gcc_camss_csi0pix_clk
= {
2581 .halt_reg
= 0x4e058,
2582 .halt_check
= BRANCH_HALT
,
2584 .enable_reg
= 0x4e058,
2585 .enable_mask
= BIT(0),
2586 .hw
.init
= &(struct clk_init_data
) {
2587 .name
= "gcc_camss_csi0pix_clk",
2588 .parent_hws
= (const struct clk_hw
*[]){
2589 &csi0_clk_src
.clkr
.hw
,
2592 .ops
= &clk_branch2_ops
,
2593 .flags
= CLK_SET_RATE_PARENT
,
2598 static struct clk_branch gcc_camss_csi1pix_clk
= {
2599 .halt_reg
= 0x4f058,
2600 .halt_check
= BRANCH_HALT
,
2602 .enable_reg
= 0x4f058,
2603 .enable_mask
= BIT(0),
2604 .hw
.init
= &(struct clk_init_data
) {
2605 .name
= "gcc_camss_csi1pix_clk",
2606 .parent_hws
= (const struct clk_hw
*[]){
2607 &csi1_clk_src
.clkr
.hw
,
2610 .ops
= &clk_branch2_ops
,
2611 .flags
= CLK_SET_RATE_PARENT
,
2616 static struct clk_branch gcc_camss_csi2pix_clk
= {
2617 .halt_reg
= 0x3c058,
2618 .halt_check
= BRANCH_HALT
,
2620 .enable_reg
= 0x3c058,
2621 .enable_mask
= BIT(0),
2622 .hw
.init
= &(struct clk_init_data
) {
2623 .name
= "gcc_camss_csi2pix_clk",
2624 .parent_hws
= (const struct clk_hw
*[]){
2625 &csi2_clk_src
.clkr
.hw
,
2628 .ops
= &clk_branch2_ops
,
2629 .flags
= CLK_SET_RATE_PARENT
,
2634 static struct clk_branch gcc_camss_csi0rdi_clk
= {
2635 .halt_reg
= 0x4e050,
2636 .halt_check
= BRANCH_HALT
,
2638 .enable_reg
= 0x4e050,
2639 .enable_mask
= BIT(0),
2640 .hw
.init
= &(struct clk_init_data
) {
2641 .name
= "gcc_camss_csi0rdi_clk",
2642 .parent_hws
= (const struct clk_hw
*[]){
2643 &csi0_clk_src
.clkr
.hw
,
2646 .ops
= &clk_branch2_ops
,
2647 .flags
= CLK_SET_RATE_PARENT
,
2652 static struct clk_branch gcc_camss_csi1rdi_clk
= {
2653 .halt_reg
= 0x4f050,
2654 .halt_check
= BRANCH_HALT
,
2656 .enable_reg
= 0x4f050,
2657 .enable_mask
= BIT(0),
2658 .hw
.init
= &(struct clk_init_data
) {
2659 .name
= "gcc_camss_csi1rdi_clk",
2660 .parent_hws
= (const struct clk_hw
*[]){
2661 &csi1_clk_src
.clkr
.hw
,
2664 .ops
= &clk_branch2_ops
,
2665 .flags
= CLK_SET_RATE_PARENT
,
2670 static struct clk_branch gcc_camss_csi2rdi_clk
= {
2671 .halt_reg
= 0x3c050,
2672 .halt_check
= BRANCH_HALT
,
2674 .enable_reg
= 0x3c050,
2675 .enable_mask
= BIT(0),
2676 .hw
.init
= &(struct clk_init_data
) {
2677 .name
= "gcc_camss_csi2rdi_clk",
2678 .parent_hws
= (const struct clk_hw
*[]){
2679 &csi2_clk_src
.clkr
.hw
,
2682 .ops
= &clk_branch2_ops
,
2683 .flags
= CLK_SET_RATE_PARENT
,
2688 static struct clk_branch gcc_camss_csi_vfe0_clk
= {
2689 .halt_reg
= 0x58050,
2690 .halt_check
= BRANCH_HALT
,
2692 .enable_reg
= 0x58050,
2693 .enable_mask
= BIT(0),
2694 .hw
.init
= &(struct clk_init_data
) {
2695 .name
= "gcc_camss_csi_vfe0_clk",
2696 .parent_hws
= (const struct clk_hw
*[]){
2697 &vfe0_clk_src
.clkr
.hw
,
2700 .ops
= &clk_branch2_ops
,
2701 .flags
= CLK_SET_RATE_PARENT
,
2706 static struct clk_branch gcc_camss_csi_vfe1_clk
= {
2707 .halt_reg
= 0x58074,
2708 .halt_check
= BRANCH_HALT
,
2710 .enable_reg
= 0x58074,
2711 .enable_mask
= BIT(0),
2712 .hw
.init
= &(struct clk_init_data
) {
2713 .name
= "gcc_camss_csi_vfe1_clk",
2714 .parent_hws
= (const struct clk_hw
*[]){
2715 &vfe1_clk_src
.clkr
.hw
,
2718 .ops
= &clk_branch2_ops
,
2719 .flags
= CLK_SET_RATE_PARENT
,
2724 static struct clk_branch gcc_camss_gp0_clk
= {
2725 .halt_reg
= 0x54018,
2726 .halt_check
= BRANCH_HALT
,
2728 .enable_reg
= 0x54018,
2729 .enable_mask
= BIT(0),
2730 .hw
.init
= &(struct clk_init_data
) {
2731 .name
= "gcc_camss_gp0_clk",
2732 .parent_hws
= (const struct clk_hw
*[]){
2733 &camss_gp0_clk_src
.clkr
.hw
,
2736 .ops
= &clk_branch2_ops
,
2737 .flags
= CLK_SET_RATE_PARENT
,
2742 static struct clk_branch gcc_camss_gp1_clk
= {
2743 .halt_reg
= 0x55018,
2744 .halt_check
= BRANCH_HALT
,
2746 .enable_reg
= 0x55018,
2747 .enable_mask
= BIT(0),
2748 .hw
.init
= &(struct clk_init_data
) {
2749 .name
= "gcc_camss_gp1_clk",
2750 .parent_hws
= (const struct clk_hw
*[]){
2751 &camss_gp1_clk_src
.clkr
.hw
,
2754 .ops
= &clk_branch2_ops
,
2755 .flags
= CLK_SET_RATE_PARENT
,
2760 static struct clk_branch gcc_camss_ispif_ahb_clk
= {
2761 .halt_reg
= 0x50004,
2762 .halt_check
= BRANCH_HALT
,
2764 .enable_reg
= 0x50004,
2765 .enable_mask
= BIT(0),
2766 .hw
.init
= &(struct clk_init_data
) {
2767 .name
= "gcc_camss_ispif_ahb_clk",
2768 .parent_hws
= (const struct clk_hw
*[]){
2769 &camss_top_ahb_clk_src
.clkr
.hw
,
2772 .ops
= &clk_branch2_ops
,
2773 .flags
= CLK_SET_RATE_PARENT
,
2778 static struct clk_branch gcc_camss_jpeg0_clk
= {
2779 .halt_reg
= 0x57020,
2780 .halt_check
= BRANCH_HALT
,
2782 .enable_reg
= 0x57020,
2783 .enable_mask
= BIT(0),
2784 .hw
.init
= &(struct clk_init_data
) {
2785 .name
= "gcc_camss_jpeg0_clk",
2786 .parent_hws
= (const struct clk_hw
*[]){
2787 &jpeg0_clk_src
.clkr
.hw
,
2790 .ops
= &clk_branch2_ops
,
2791 .flags
= CLK_SET_RATE_PARENT
,
2796 static struct clk_branch gcc_camss_jpeg_ahb_clk
= {
2797 .halt_reg
= 0x57024,
2798 .halt_check
= BRANCH_HALT
,
2800 .enable_reg
= 0x57024,
2801 .enable_mask
= BIT(0),
2802 .hw
.init
= &(struct clk_init_data
) {
2803 .name
= "gcc_camss_jpeg_ahb_clk",
2804 .parent_hws
= (const struct clk_hw
*[]){
2805 &camss_top_ahb_clk_src
.clkr
.hw
,
2808 .ops
= &clk_branch2_ops
,
2809 .flags
= CLK_SET_RATE_PARENT
,
2814 static struct clk_branch gcc_camss_jpeg_axi_clk
= {
2815 .halt_reg
= 0x57028,
2816 .halt_check
= BRANCH_HALT
,
2818 .enable_reg
= 0x57028,
2819 .enable_mask
= BIT(0),
2820 .hw
.init
= &(struct clk_init_data
) {
2821 .name
= "gcc_camss_jpeg_axi_clk",
2822 .ops
= &clk_branch2_ops
,
2827 static struct clk_branch gcc_camss_mclk0_clk
= {
2828 .halt_reg
= 0x52018,
2829 .halt_check
= BRANCH_HALT
,
2831 .enable_reg
= 0x52018,
2832 .enable_mask
= BIT(0),
2833 .hw
.init
= &(struct clk_init_data
) {
2834 .name
= "gcc_camss_mclk0_clk",
2835 .parent_hws
= (const struct clk_hw
*[]){
2836 &mclk0_clk_src
.clkr
.hw
,
2839 .ops
= &clk_branch2_ops
,
2840 .flags
= CLK_SET_RATE_PARENT
,
2845 static struct clk_branch gcc_camss_mclk1_clk
= {
2846 .halt_reg
= 0x53018,
2847 .halt_check
= BRANCH_HALT
,
2849 .enable_reg
= 0x53018,
2850 .enable_mask
= BIT(0),
2851 .hw
.init
= &(struct clk_init_data
) {
2852 .name
= "gcc_camss_mclk1_clk",
2853 .parent_hws
= (const struct clk_hw
*[]){
2854 &mclk1_clk_src
.clkr
.hw
,
2857 .ops
= &clk_branch2_ops
,
2858 .flags
= CLK_SET_RATE_PARENT
,
2863 static struct clk_branch gcc_camss_mclk2_clk
= {
2864 .halt_reg
= 0x5c018,
2865 .halt_check
= BRANCH_HALT
,
2867 .enable_reg
= 0x5c018,
2868 .enable_mask
= BIT(0),
2869 .hw
.init
= &(struct clk_init_data
) {
2870 .name
= "gcc_camss_mclk2_clk",
2871 .parent_hws
= (const struct clk_hw
*[]){
2872 &mclk2_clk_src
.clkr
.hw
,
2875 .ops
= &clk_branch2_ops
,
2876 .flags
= CLK_SET_RATE_PARENT
,
2881 static struct clk_branch gcc_camss_mclk3_clk
= {
2882 .halt_reg
= 0x5e018,
2883 .halt_check
= BRANCH_HALT
,
2885 .enable_reg
= 0x5e018,
2886 .enable_mask
= BIT(0),
2887 .hw
.init
= &(struct clk_init_data
) {
2888 .name
= "gcc_camss_mclk3_clk",
2889 .parent_hws
= (const struct clk_hw
*[]){
2890 &mclk3_clk_src
.clkr
.hw
,
2893 .ops
= &clk_branch2_ops
,
2894 .flags
= CLK_SET_RATE_PARENT
,
2899 static struct clk_branch gcc_camss_micro_ahb_clk
= {
2900 .halt_reg
= 0x5600c,
2901 .halt_check
= BRANCH_HALT
,
2903 .enable_reg
= 0x5600c,
2904 .enable_mask
= BIT(0),
2905 .hw
.init
= &(struct clk_init_data
) {
2906 .name
= "gcc_camss_micro_ahb_clk",
2907 .parent_hws
= (const struct clk_hw
*[]){
2908 &camss_top_ahb_clk_src
.clkr
.hw
,
2911 .ops
= &clk_branch2_ops
,
2912 .flags
= CLK_SET_RATE_PARENT
,
2917 static struct clk_branch gcc_camss_top_ahb_clk
= {
2918 .halt_reg
= 0x5a014,
2919 .halt_check
= BRANCH_HALT
,
2921 .enable_reg
= 0x5a014,
2922 .enable_mask
= BIT(0),
2923 .hw
.init
= &(struct clk_init_data
) {
2924 .name
= "gcc_camss_top_ahb_clk",
2925 .parent_hws
= (const struct clk_hw
*[]){
2926 &camss_top_ahb_clk_src
.clkr
.hw
,
2929 .ops
= &clk_branch2_ops
,
2930 .flags
= CLK_SET_RATE_PARENT
,
2935 static struct clk_branch gcc_camss_vfe0_ahb_clk
= {
2936 .halt_reg
= 0x58044,
2937 .halt_check
= BRANCH_HALT
,
2939 .enable_reg
= 0x58044,
2940 .enable_mask
= BIT(0),
2941 .hw
.init
= &(struct clk_init_data
) {
2942 .name
= "gcc_camss_vfe0_ahb_clk",
2943 .parent_hws
= (const struct clk_hw
*[]){
2944 &camss_top_ahb_clk_src
.clkr
.hw
,
2947 .ops
= &clk_branch2_ops
,
2948 .flags
= CLK_SET_RATE_PARENT
,
2953 static struct clk_branch gcc_camss_vfe0_axi_clk
= {
2954 .halt_reg
= 0x58048,
2955 .halt_check
= BRANCH_HALT
,
2957 .enable_reg
= 0x58048,
2958 .enable_mask
= BIT(0),
2959 .hw
.init
= &(struct clk_init_data
) {
2960 .name
= "gcc_camss_vfe0_axi_clk",
2961 .ops
= &clk_branch2_ops
,
2966 static struct clk_branch gcc_camss_vfe0_clk
= {
2967 .halt_reg
= 0x58038,
2968 .halt_check
= BRANCH_HALT
,
2970 .enable_reg
= 0x58038,
2971 .enable_mask
= BIT(0),
2972 .hw
.init
= &(struct clk_init_data
) {
2973 .name
= "gcc_camss_vfe0_clk",
2974 .parent_hws
= (const struct clk_hw
*[]){
2975 &vfe0_clk_src
.clkr
.hw
,
2978 .ops
= &clk_branch2_ops
,
2979 .flags
= CLK_SET_RATE_PARENT
,
2984 static struct clk_branch gcc_camss_vfe1_ahb_clk
= {
2985 .halt_reg
= 0x58060,
2986 .halt_check
= BRANCH_HALT
,
2988 .enable_reg
= 0x58060,
2989 .enable_mask
= BIT(0),
2990 .hw
.init
= &(struct clk_init_data
) {
2991 .name
= "gcc_camss_vfe1_ahb_clk",
2992 .parent_hws
= (const struct clk_hw
*[]){
2993 &camss_top_ahb_clk_src
.clkr
.hw
,
2996 .ops
= &clk_branch2_ops
,
2997 .flags
= CLK_SET_RATE_PARENT
,
3002 static struct clk_branch gcc_camss_vfe1_axi_clk
= {
3003 .halt_reg
= 0x58068,
3004 .halt_check
= BRANCH_HALT
,
3006 .enable_reg
= 0x58068,
3007 .enable_mask
= BIT(0),
3008 .hw
.init
= &(struct clk_init_data
) {
3009 .name
= "gcc_camss_vfe1_axi_clk",
3010 .ops
= &clk_branch2_ops
,
3015 static struct clk_branch gcc_camss_vfe1_clk
= {
3016 .halt_reg
= 0x5805c,
3017 .halt_check
= BRANCH_HALT
,
3019 .enable_reg
= 0x5805c,
3020 .enable_mask
= BIT(0),
3021 .hw
.init
= &(struct clk_init_data
) {
3022 .name
= "gcc_camss_vfe1_clk",
3023 .parent_hws
= (const struct clk_hw
*[]){
3024 &vfe1_clk_src
.clkr
.hw
,
3027 .ops
= &clk_branch2_ops
,
3028 .flags
= CLK_SET_RATE_PARENT
,
3033 static struct clk_branch gcc_cpp_tbu_clk
= {
3034 .halt_reg
= 0x12040,
3035 .halt_check
= BRANCH_HALT_VOTED
,
3037 .enable_reg
= 0x4500c,
3038 .enable_mask
= BIT(14),
3039 .hw
.init
= &(struct clk_init_data
) {
3040 .name
= "gcc_cpp_tbu_clk",
3041 .ops
= &clk_branch2_ops
,
3046 static struct clk_branch gcc_crypto_ahb_clk
= {
3047 .halt_reg
= 0x16024,
3048 .halt_check
= BRANCH_HALT_VOTED
,
3050 .enable_reg
= 0x45004,
3051 .enable_mask
= BIT(0),
3052 .hw
.init
= &(struct clk_init_data
) {
3053 .name
= "gcc_crypto_ahb_clk",
3054 .ops
= &clk_branch2_ops
,
3059 static struct clk_branch gcc_crypto_axi_clk
= {
3060 .halt_reg
= 0x16020,
3061 .halt_check
= BRANCH_HALT_VOTED
,
3063 .enable_reg
= 0x45004,
3064 .enable_mask
= BIT(1),
3065 .hw
.init
= &(struct clk_init_data
) {
3066 .name
= "gcc_crypto_axi_clk",
3067 .ops
= &clk_branch2_ops
,
3072 static struct clk_branch gcc_crypto_clk
= {
3073 .halt_reg
= 0x1601c,
3074 .halt_check
= BRANCH_HALT_VOTED
,
3076 .enable_reg
= 0x45004,
3077 .enable_mask
= BIT(2),
3078 .hw
.init
= &(struct clk_init_data
) {
3079 .name
= "gcc_crypto_clk",
3080 .parent_hws
= (const struct clk_hw
*[]){
3081 &crypto_clk_src
.clkr
.hw
,
3084 .ops
= &clk_branch2_ops
,
3085 .flags
= CLK_SET_RATE_PARENT
,
3090 static struct clk_branch gcc_dcc_clk
= {
3091 .halt_reg
= 0x77004,
3092 .halt_check
= BRANCH_HALT
,
3094 .enable_reg
= 0x77004,
3095 .enable_mask
= BIT(0),
3096 .hw
.init
= &(struct clk_init_data
) {
3097 .name
= "gcc_dcc_clk",
3098 .ops
= &clk_branch2_ops
,
3103 static struct clk_branch gcc_gp1_clk
= {
3104 .halt_reg
= 0x08000,
3105 .halt_check
= BRANCH_HALT
,
3107 .enable_reg
= 0x08000,
3108 .enable_mask
= BIT(0),
3109 .hw
.init
= &(struct clk_init_data
) {
3110 .name
= "gcc_gp1_clk",
3111 .parent_hws
= (const struct clk_hw
*[]){
3112 &gp1_clk_src
.clkr
.hw
,
3115 .ops
= &clk_branch2_ops
,
3116 .flags
= CLK_SET_RATE_PARENT
,
3121 static struct clk_branch gcc_gp2_clk
= {
3122 .halt_reg
= 0x09000,
3123 .halt_check
= BRANCH_HALT
,
3125 .enable_reg
= 0x09000,
3126 .enable_mask
= BIT(0),
3127 .hw
.init
= &(struct clk_init_data
) {
3128 .name
= "gcc_gp2_clk",
3129 .parent_hws
= (const struct clk_hw
*[]){
3130 &gp2_clk_src
.clkr
.hw
,
3133 .ops
= &clk_branch2_ops
,
3134 .flags
= CLK_SET_RATE_PARENT
,
3139 static struct clk_branch gcc_gp3_clk
= {
3140 .halt_reg
= 0x0a000,
3141 .halt_check
= BRANCH_HALT
,
3143 .enable_reg
= 0x0a000,
3144 .enable_mask
= BIT(0),
3145 .hw
.init
= &(struct clk_init_data
) {
3146 .name
= "gcc_gp3_clk",
3147 .parent_hws
= (const struct clk_hw
*[]){
3148 &gp3_clk_src
.clkr
.hw
,
3151 .ops
= &clk_branch2_ops
,
3152 .flags
= CLK_SET_RATE_PARENT
,
3157 static struct clk_branch gcc_jpeg_tbu_clk
= {
3158 .halt_reg
= 0x12034,
3159 .halt_check
= BRANCH_HALT_VOTED
,
3161 .enable_reg
= 0x4500c,
3162 .enable_mask
= BIT(10),
3163 .hw
.init
= &(struct clk_init_data
) {
3164 .name
= "gcc_jpeg_tbu_clk",
3165 .ops
= &clk_branch2_ops
,
3170 static struct clk_branch gcc_mdp_tbu_clk
= {
3171 .halt_reg
= 0x1201c,
3172 .halt_check
= BRANCH_HALT_VOTED
,
3174 .enable_reg
= 0x4500c,
3175 .enable_mask
= BIT(4),
3176 .hw
.init
= &(struct clk_init_data
) {
3177 .name
= "gcc_mdp_tbu_clk",
3178 .ops
= &clk_branch2_ops
,
3183 static struct clk_branch gcc_mdss_ahb_clk
= {
3184 .halt_reg
= 0x4d07c,
3185 .halt_check
= BRANCH_HALT
,
3187 .enable_reg
= 0x4d07c,
3188 .enable_mask
= BIT(0),
3189 .hw
.init
= &(struct clk_init_data
) {
3190 .name
= "gcc_mdss_ahb_clk",
3191 .ops
= &clk_branch2_ops
,
3196 static struct clk_branch gcc_mdss_axi_clk
= {
3197 .halt_reg
= 0x4d080,
3198 .halt_check
= BRANCH_HALT
,
3200 .enable_reg
= 0x4d080,
3201 .enable_mask
= BIT(0),
3202 .hw
.init
= &(struct clk_init_data
) {
3203 .name
= "gcc_mdss_axi_clk",
3204 .ops
= &clk_branch2_ops
,
3209 static struct clk_branch gcc_mdss_byte0_clk
= {
3210 .halt_reg
= 0x4d094,
3211 .halt_check
= BRANCH_HALT
,
3213 .enable_reg
= 0x4d094,
3214 .enable_mask
= BIT(0),
3215 .hw
.init
= &(struct clk_init_data
) {
3216 .name
= "gcc_mdss_byte0_clk",
3217 .parent_hws
= (const struct clk_hw
*[]){
3218 &byte0_clk_src
.clkr
.hw
,
3221 .ops
= &clk_branch2_ops
,
3222 .flags
= CLK_SET_RATE_PARENT
,
3227 static struct clk_branch gcc_mdss_byte1_clk
= {
3228 .halt_reg
= 0x4d0a0,
3229 .halt_check
= BRANCH_HALT
,
3231 .enable_reg
= 0x4d0a0,
3232 .enable_mask
= BIT(0),
3233 .hw
.init
= &(struct clk_init_data
) {
3234 .name
= "gcc_mdss_byte1_clk",
3235 .parent_hws
= (const struct clk_hw
*[]){
3236 &byte1_clk_src
.clkr
.hw
,
3239 .ops
= &clk_branch2_ops
,
3240 .flags
= CLK_SET_RATE_PARENT
,
3245 static struct clk_branch gcc_mdss_esc0_clk
= {
3246 .halt_reg
= 0x4d098,
3247 .halt_check
= BRANCH_HALT
,
3249 .enable_reg
= 0x4d098,
3250 .enable_mask
= BIT(0),
3251 .hw
.init
= &(struct clk_init_data
) {
3252 .name
= "gcc_mdss_esc0_clk",
3253 .parent_hws
= (const struct clk_hw
*[]){
3254 &esc0_clk_src
.clkr
.hw
,
3257 .ops
= &clk_branch2_ops
,
3258 .flags
= CLK_SET_RATE_PARENT
,
3263 static struct clk_branch gcc_mdss_esc1_clk
= {
3264 .halt_reg
= 0x4d09c,
3265 .halt_check
= BRANCH_HALT
,
3267 .enable_reg
= 0x4d09c,
3268 .enable_mask
= BIT(0),
3269 .hw
.init
= &(struct clk_init_data
) {
3270 .name
= "gcc_mdss_esc1_clk",
3271 .parent_hws
= (const struct clk_hw
*[]){
3272 &esc1_clk_src
.clkr
.hw
,
3275 .ops
= &clk_branch2_ops
,
3276 .flags
= CLK_SET_RATE_PARENT
,
3281 static struct clk_branch gcc_mdss_mdp_clk
= {
3282 .halt_reg
= 0x4d088,
3283 .halt_check
= BRANCH_HALT
,
3285 .enable_reg
= 0x4d088,
3286 .enable_mask
= BIT(0),
3287 .hw
.init
= &(struct clk_init_data
) {
3288 .name
= "gcc_mdss_mdp_clk",
3289 .parent_hws
= (const struct clk_hw
*[]){
3290 &mdp_clk_src
.clkr
.hw
,
3293 .ops
= &clk_branch2_ops
,
3294 .flags
= CLK_SET_RATE_PARENT
,
3299 static struct clk_branch gcc_mdss_pclk0_clk
= {
3300 .halt_reg
= 0x4d084,
3301 .halt_check
= BRANCH_HALT
,
3303 .enable_reg
= 0x4d084,
3304 .enable_mask
= BIT(0),
3305 .hw
.init
= &(struct clk_init_data
) {
3306 .name
= "gcc_mdss_pclk0_clk",
3307 .parent_hws
= (const struct clk_hw
*[]){
3308 &pclk0_clk_src
.clkr
.hw
,
3311 .ops
= &clk_branch2_ops
,
3312 .flags
= CLK_SET_RATE_PARENT
,
3317 static struct clk_branch gcc_mdss_pclk1_clk
= {
3318 .halt_reg
= 0x4d0a4,
3319 .halt_check
= BRANCH_HALT
,
3321 .enable_reg
= 0x4d0a4,
3322 .enable_mask
= BIT(0),
3323 .hw
.init
= &(struct clk_init_data
) {
3324 .name
= "gcc_mdss_pclk1_clk",
3325 .parent_hws
= (const struct clk_hw
*[]){
3326 &pclk1_clk_src
.clkr
.hw
,
3329 .ops
= &clk_branch2_ops
,
3330 .flags
= CLK_SET_RATE_PARENT
,
3335 static struct clk_branch gcc_mdss_vsync_clk
= {
3336 .halt_reg
= 0x4d090,
3337 .halt_check
= BRANCH_HALT
,
3339 .enable_reg
= 0x4d090,
3340 .enable_mask
= BIT(0),
3341 .hw
.init
= &(struct clk_init_data
) {
3342 .name
= "gcc_mdss_vsync_clk",
3343 .parent_hws
= (const struct clk_hw
*[]){
3344 &vsync_clk_src
.clkr
.hw
,
3347 .ops
= &clk_branch2_ops
,
3348 .flags
= CLK_SET_RATE_PARENT
,
3353 static struct clk_branch gcc_mss_cfg_ahb_clk
= {
3354 .halt_reg
= 0x49000,
3355 .halt_check
= BRANCH_HALT
,
3357 .enable_reg
= 0x49000,
3358 .enable_mask
= BIT(0),
3359 .hw
.init
= &(struct clk_init_data
) {
3360 .name
= "gcc_mss_cfg_ahb_clk",
3361 .ops
= &clk_branch2_ops
,
3366 static struct clk_branch gcc_mss_q6_bimc_axi_clk
= {
3367 .halt_reg
= 0x49004,
3368 .halt_check
= BRANCH_HALT
,
3370 .enable_reg
= 0x49004,
3371 .enable_mask
= BIT(0),
3372 .hw
.init
= &(struct clk_init_data
) {
3373 .name
= "gcc_mss_q6_bimc_axi_clk",
3374 .ops
= &clk_branch2_ops
,
3379 static struct clk_branch gcc_oxili_ahb_clk
= {
3380 .halt_reg
= 0x59028,
3381 .halt_check
= BRANCH_HALT
,
3383 .enable_reg
= 0x59028,
3384 .enable_mask
= BIT(0),
3385 .hw
.init
= &(struct clk_init_data
) {
3386 .name
= "gcc_oxili_ahb_clk",
3387 .ops
= &clk_branch2_ops
,
3392 static struct clk_branch gcc_oxili_aon_clk
= {
3393 .halt_reg
= 0x59044,
3394 .halt_check
= BRANCH_HALT
,
3396 .enable_reg
= 0x59044,
3397 .enable_mask
= BIT(0),
3398 .hw
.init
= &(struct clk_init_data
) {
3399 .name
= "gcc_oxili_aon_clk",
3400 .parent_hws
= (const struct clk_hw
*[]){
3401 &gfx3d_clk_src
.clkr
.hw
,
3404 .ops
= &clk_branch2_ops
,
3409 static struct clk_branch gcc_oxili_gfx3d_clk
= {
3410 .halt_reg
= 0x59020,
3411 .halt_check
= BRANCH_HALT
,
3413 .enable_reg
= 0x59020,
3414 .enable_mask
= BIT(0),
3415 .hw
.init
= &(struct clk_init_data
) {
3416 .name
= "gcc_oxili_gfx3d_clk",
3417 .parent_hws
= (const struct clk_hw
*[]){
3418 &gfx3d_clk_src
.clkr
.hw
,
3421 .ops
= &clk_branch2_ops
,
3422 .flags
= CLK_SET_RATE_PARENT
,
3427 static struct clk_branch gcc_oxili_timer_clk
= {
3428 .halt_reg
= 0x59040,
3429 .halt_check
= BRANCH_HALT
,
3431 .enable_reg
= 0x59040,
3432 .enable_mask
= BIT(0),
3433 .hw
.init
= &(struct clk_init_data
) {
3434 .name
= "gcc_oxili_timer_clk",
3435 .ops
= &clk_branch2_ops
,
3440 static struct clk_branch gcc_pcnoc_usb3_axi_clk
= {
3441 .halt_reg
= 0x3f038,
3442 .halt_check
= BRANCH_HALT
,
3444 .enable_reg
= 0x3f038,
3445 .enable_mask
= BIT(0),
3446 .hw
.init
= &(struct clk_init_data
) {
3447 .name
= "gcc_pcnoc_usb3_axi_clk",
3448 .parent_hws
= (const struct clk_hw
*[]){
3449 &usb30_master_clk_src
.clkr
.hw
,
3452 .ops
= &clk_branch2_ops
,
3453 .flags
= CLK_SET_RATE_PARENT
,
3458 static struct clk_branch gcc_pdm2_clk
= {
3459 .halt_reg
= 0x4400c,
3460 .halt_check
= BRANCH_HALT
,
3462 .enable_reg
= 0x4400c,
3463 .enable_mask
= BIT(0),
3464 .hw
.init
= &(struct clk_init_data
) {
3465 .name
= "gcc_pdm2_clk",
3466 .parent_hws
= (const struct clk_hw
*[]){
3467 &pdm2_clk_src
.clkr
.hw
,
3470 .ops
= &clk_branch2_ops
,
3471 .flags
= CLK_SET_RATE_PARENT
,
3476 static struct clk_branch gcc_pdm_ahb_clk
= {
3477 .halt_reg
= 0x44004,
3478 .halt_check
= BRANCH_HALT
,
3480 .enable_reg
= 0x44004,
3481 .enable_mask
= BIT(0),
3482 .hw
.init
= &(struct clk_init_data
) {
3483 .name
= "gcc_pdm_ahb_clk",
3484 .ops
= &clk_branch2_ops
,
3489 static struct clk_branch gcc_prng_ahb_clk
= {
3490 .halt_reg
= 0x13004,
3491 .halt_check
= BRANCH_HALT_VOTED
,
3493 .enable_reg
= 0x45004,
3494 .enable_mask
= BIT(8),
3495 .hw
.init
= &(struct clk_init_data
) {
3496 .name
= "gcc_prng_ahb_clk",
3497 .ops
= &clk_branch2_ops
,
3502 static struct clk_branch gcc_qdss_dap_clk
= {
3503 .halt_reg
= 0x29084,
3504 .halt_check
= BRANCH_HALT_VOTED
,
3506 .enable_reg
= 0x45004,
3507 .enable_mask
= BIT(11),
3508 .hw
.init
= &(struct clk_init_data
) {
3509 .name
= "gcc_qdss_dap_clk",
3510 .ops
= &clk_branch2_ops
,
3515 static struct clk_branch gcc_qusb_ref_clk
= {
3517 .halt_check
= BRANCH_HALT_SKIP
,
3519 .enable_reg
= 0x41030,
3520 .enable_mask
= BIT(0),
3521 .hw
.init
= &(struct clk_init_data
) {
3522 .name
= "gcc_qusb_ref_clk",
3523 .ops
= &clk_branch2_ops
,
3528 static struct clk_branch gcc_rbcpr_gfx_clk
= {
3529 .halt_reg
= 0x3a004,
3530 .halt_check
= BRANCH_HALT
,
3532 .enable_reg
= 0x3a004,
3533 .enable_mask
= BIT(0),
3534 .hw
.init
= &(struct clk_init_data
) {
3535 .name
= "gcc_rbcpr_gfx_clk",
3536 .parent_hws
= (const struct clk_hw
*[]){
3537 &rbcpr_gfx_clk_src
.clkr
.hw
,
3540 .ops
= &clk_branch2_ops
,
3541 .flags
= CLK_SET_RATE_PARENT
,
3546 static struct clk_branch gcc_sdcc1_ice_core_clk
= {
3547 .halt_reg
= 0x5d014,
3548 .halt_check
= BRANCH_HALT
,
3550 .enable_reg
= 0x5d014,
3551 .enable_mask
= BIT(0),
3552 .hw
.init
= &(struct clk_init_data
) {
3553 .name
= "gcc_sdcc1_ice_core_clk",
3554 .parent_hws
= (const struct clk_hw
*[]){
3555 &sdcc1_ice_core_clk_src
.clkr
.hw
,
3558 .ops
= &clk_branch2_ops
,
3559 .flags
= CLK_SET_RATE_PARENT
,
3564 static struct clk_branch gcc_sdcc1_ahb_clk
= {
3565 .halt_reg
= 0x4201c,
3566 .halt_check
= BRANCH_HALT
,
3568 .enable_reg
= 0x4201c,
3569 .enable_mask
= BIT(0),
3570 .hw
.init
= &(struct clk_init_data
) {
3571 .name
= "gcc_sdcc1_ahb_clk",
3572 .ops
= &clk_branch2_ops
,
3577 static struct clk_branch gcc_sdcc2_ahb_clk
= {
3578 .halt_reg
= 0x4301c,
3579 .halt_check
= BRANCH_HALT
,
3581 .enable_reg
= 0x4301c,
3582 .enable_mask
= BIT(0),
3583 .hw
.init
= &(struct clk_init_data
) {
3584 .name
= "gcc_sdcc2_ahb_clk",
3585 .ops
= &clk_branch2_ops
,
3590 static struct clk_branch gcc_sdcc1_apps_clk
= {
3591 .halt_reg
= 0x42018,
3592 .halt_check
= BRANCH_HALT
,
3594 .enable_reg
= 0x42018,
3595 .enable_mask
= BIT(0),
3596 .hw
.init
= &(struct clk_init_data
) {
3597 .name
= "gcc_sdcc1_apps_clk",
3598 .parent_hws
= (const struct clk_hw
*[]){
3599 &sdcc1_apps_clk_src
.clkr
.hw
,
3602 .ops
= &clk_branch2_ops
,
3603 .flags
= CLK_SET_RATE_PARENT
,
3608 static struct clk_branch gcc_sdcc2_apps_clk
= {
3609 .halt_reg
= 0x43018,
3610 .halt_check
= BRANCH_HALT
,
3612 .enable_reg
= 0x43018,
3613 .enable_mask
= BIT(0),
3614 .hw
.init
= &(struct clk_init_data
) {
3615 .name
= "gcc_sdcc2_apps_clk",
3616 .parent_hws
= (const struct clk_hw
*[]){
3617 &sdcc2_apps_clk_src
.clkr
.hw
,
3620 .ops
= &clk_branch2_ops
,
3621 .flags
= CLK_SET_RATE_PARENT
,
3626 static struct clk_branch gcc_smmu_cfg_clk
= {
3627 .halt_reg
= 0x12038,
3628 .halt_check
= BRANCH_HALT_VOTED
,
3630 .enable_reg
= 0x4500c,
3631 .enable_mask
= BIT(12),
3632 .hw
.init
= &(struct clk_init_data
) {
3633 .name
= "gcc_smmu_cfg_clk",
3634 .ops
= &clk_branch2_ops
,
3639 static struct clk_branch gcc_usb30_master_clk
= {
3640 .halt_reg
= 0x3f000,
3641 .halt_check
= BRANCH_HALT
,
3643 .enable_reg
= 0x3f000,
3644 .enable_mask
= BIT(0),
3645 .hw
.init
= &(struct clk_init_data
) {
3646 .name
= "gcc_usb30_master_clk",
3647 .parent_hws
= (const struct clk_hw
*[]){
3648 &usb30_master_clk_src
.clkr
.hw
,
3651 .ops
= &clk_branch2_ops
,
3652 .flags
= CLK_SET_RATE_PARENT
,
3657 static struct clk_branch gcc_usb30_mock_utmi_clk
= {
3658 .halt_reg
= 0x3f008,
3659 .halt_check
= BRANCH_HALT
,
3661 .enable_reg
= 0x3f008,
3662 .enable_mask
= BIT(0),
3663 .hw
.init
= &(struct clk_init_data
) {
3664 .name
= "gcc_usb30_mock_utmi_clk",
3665 .parent_hws
= (const struct clk_hw
*[]){
3666 &usb30_mock_utmi_clk_src
.clkr
.hw
,
3669 .ops
= &clk_branch2_ops
,
3670 .flags
= CLK_SET_RATE_PARENT
,
3675 static struct clk_branch gcc_usb30_sleep_clk
= {
3676 .halt_reg
= 0x3f004,
3677 .halt_check
= BRANCH_HALT
,
3679 .enable_reg
= 0x3f004,
3680 .enable_mask
= BIT(0),
3681 .hw
.init
= &(struct clk_init_data
) {
3682 .name
= "gcc_usb30_sleep_clk",
3683 .ops
= &clk_branch2_ops
,
3688 static struct clk_branch gcc_usb3_aux_clk
= {
3689 .halt_reg
= 0x3f044,
3690 .halt_check
= BRANCH_HALT
,
3692 .enable_reg
= 0x3f044,
3693 .enable_mask
= BIT(0),
3694 .hw
.init
= &(struct clk_init_data
) {
3695 .name
= "gcc_usb3_aux_clk",
3696 .parent_hws
= (const struct clk_hw
*[]){
3697 &usb3_aux_clk_src
.clkr
.hw
,
3700 .ops
= &clk_branch2_ops
,
3701 .flags
= CLK_SET_RATE_PARENT
,
3706 static struct clk_branch gcc_usb3_pipe_clk
= {
3708 .halt_check
= BRANCH_HALT_DELAY
,
3710 .enable_reg
= 0x3f040,
3711 .enable_mask
= BIT(0),
3712 .hw
.init
= &(struct clk_init_data
) {
3713 .name
= "gcc_usb3_pipe_clk",
3714 .ops
= &clk_branch2_ops
,
3719 static struct clk_branch gcc_usb_phy_cfg_ahb_clk
= {
3720 .halt_reg
= 0x3f080,
3721 .halt_check
= BRANCH_VOTED
,
3723 .enable_reg
= 0x3f080,
3724 .enable_mask
= BIT(0),
3725 .hw
.init
= &(struct clk_init_data
) {
3726 .name
= "gcc_usb_phy_cfg_ahb_clk",
3727 .ops
= &clk_branch2_ops
,
3732 static struct clk_branch gcc_usb_ss_ref_clk
= {
3734 .halt_check
= BRANCH_HALT_SKIP
,
3736 .enable_reg
= 0x3f07c,
3737 .enable_mask
= BIT(0),
3738 .hw
.init
= &(struct clk_init_data
) {
3739 .name
= "gcc_usb_ss_ref_clk",
3740 .ops
= &clk_branch2_ops
,
3745 static struct clk_branch gcc_venus0_ahb_clk
= {
3746 .halt_reg
= 0x4c020,
3747 .halt_check
= BRANCH_HALT
,
3749 .enable_reg
= 0x4c020,
3750 .enable_mask
= BIT(0),
3751 .hw
.init
= &(struct clk_init_data
) {
3752 .name
= "gcc_venus0_ahb_clk",
3753 .ops
= &clk_branch2_ops
,
3758 static struct clk_branch gcc_venus0_axi_clk
= {
3759 .halt_reg
= 0x4c024,
3760 .halt_check
= BRANCH_HALT
,
3762 .enable_reg
= 0x4c024,
3763 .enable_mask
= BIT(0),
3764 .hw
.init
= &(struct clk_init_data
) {
3765 .name
= "gcc_venus0_axi_clk",
3766 .ops
= &clk_branch2_ops
,
3771 static struct clk_branch gcc_venus0_core0_vcodec0_clk
= {
3772 .halt_reg
= 0x4c02c,
3773 .halt_check
= BRANCH_HALT
,
3775 .enable_reg
= 0x4c02c,
3776 .enable_mask
= BIT(0),
3777 .hw
.init
= &(struct clk_init_data
) {
3778 .name
= "gcc_venus0_core0_vcodec0_clk",
3779 .parent_hws
= (const struct clk_hw
*[]){
3780 &vcodec0_clk_src
.clkr
.hw
,
3783 .ops
= &clk_branch2_ops
,
3784 .flags
= CLK_SET_RATE_PARENT
,
3789 static struct clk_branch gcc_venus0_vcodec0_clk
= {
3790 .halt_reg
= 0x4c01c,
3791 .halt_check
= BRANCH_HALT
,
3793 .enable_reg
= 0x4c01c,
3794 .enable_mask
= BIT(0),
3795 .hw
.init
= &(struct clk_init_data
) {
3796 .name
= "gcc_venus0_vcodec0_clk",
3797 .parent_hws
= (const struct clk_hw
*[]){
3798 &vcodec0_clk_src
.clkr
.hw
,
3801 .ops
= &clk_branch2_ops
,
3802 .flags
= CLK_SET_RATE_PARENT
,
3807 static struct clk_branch gcc_venus_tbu_clk
= {
3808 .halt_reg
= 0x12014,
3809 .halt_check
= BRANCH_HALT_VOTED
,
3811 .enable_reg
= 0x4500c,
3812 .enable_mask
= BIT(5),
3813 .hw
.init
= &(struct clk_init_data
) {
3814 .name
= "gcc_venus_tbu_clk",
3815 .ops
= &clk_branch2_ops
,
3820 static struct clk_branch gcc_vfe1_tbu_clk
= {
3821 .halt_reg
= 0x12090,
3822 .halt_check
= BRANCH_HALT_VOTED
,
3824 .enable_reg
= 0x4500c,
3825 .enable_mask
= BIT(17),
3826 .hw
.init
= &(struct clk_init_data
) {
3827 .name
= "gcc_vfe1_tbu_clk",
3828 .ops
= &clk_branch2_ops
,
3833 static struct clk_branch gcc_vfe_tbu_clk
= {
3834 .halt_reg
= 0x1203c,
3835 .halt_check
= BRANCH_HALT_VOTED
,
3837 .enable_reg
= 0x4500c,
3838 .enable_mask
= BIT(9),
3839 .hw
.init
= &(struct clk_init_data
) {
3840 .name
= "gcc_vfe_tbu_clk",
3841 .ops
= &clk_branch2_ops
,
3846 static struct gdsc usb30_gdsc
= {
3849 .name
= "usb30_gdsc",
3851 .pwrsts
= PWRSTS_OFF_ON
,
3853 * FIXME: dwc3 usb gadget cannot resume after GDSC power off
3854 * dwc3 7000000.dwc3: failed to enable ep0out
3859 static struct gdsc venus_gdsc
= {
3861 .cxcs
= (unsigned int []){ 0x4c024, 0x4c01c },
3864 .name
= "venus_gdsc",
3866 .pwrsts
= PWRSTS_OFF_ON
,
3869 static struct gdsc venus_core0_gdsc
= {
3871 .cxcs
= (unsigned int []){ 0x4c02c },
3874 .name
= "venus_core0",
3877 .pwrsts
= PWRSTS_OFF_ON
,
3880 static struct gdsc mdss_gdsc
= {
3882 .cxcs
= (unsigned int []){ 0x4d080, 0x4d088 },
3885 .name
= "mdss_gdsc",
3887 .pwrsts
= PWRSTS_OFF_ON
,
3890 static struct gdsc jpeg_gdsc
= {
3892 .cxcs
= (unsigned int []){ 0x57020, 0x57028 },
3895 .name
= "jpeg_gdsc",
3897 .pwrsts
= PWRSTS_OFF_ON
,
3900 static struct gdsc vfe0_gdsc
= {
3902 .cxcs
= (unsigned int []){ 0x58038, 0x58048, 0x5600c, 0x58050 },
3905 .name
= "vfe0_gdsc",
3907 .pwrsts
= PWRSTS_OFF_ON
,
3910 static struct gdsc vfe1_gdsc
= {
3912 .cxcs
= (unsigned int []){ 0x5805c, 0x58068, 0x5600c, 0x58074 },
3915 .name
= "vfe1_gdsc",
3917 .pwrsts
= PWRSTS_OFF_ON
,
3920 static struct gdsc oxili_gx_gdsc
= {
3922 .clamp_io_ctrl
= 0x5b00c,
3923 .cxcs
= (unsigned int []){ 0x59000, 0x59024 },
3926 .name
= "oxili_gx_gdsc",
3928 .pwrsts
= PWRSTS_OFF_ON
,
3932 static struct gdsc oxili_cx_gdsc
= {
3934 .cxcs
= (unsigned int []){ 0x59020 },
3937 .name
= "oxili_cx_gdsc",
3939 .pwrsts
= PWRSTS_OFF_ON
,
3942 static struct gdsc cpp_gdsc
= {
3944 .cxcs
= (unsigned int []){ 0x5803c, 0x58064 },
3950 .pwrsts
= PWRSTS_OFF_ON
,
3953 static struct clk_hw
*gcc_msm8953_hws
[] = {
3954 &gpll0_early_div
.hw
,
3955 &gpll6_early_div
.hw
,
3958 static struct clk_regmap
*gcc_msm8953_clocks
[] = {
3959 [GPLL0
] = &gpll0
.clkr
,
3960 [GPLL0_EARLY
] = &gpll0_early
.clkr
,
3961 [GPLL2
] = &gpll2
.clkr
,
3962 [GPLL2_EARLY
] = &gpll2_early
.clkr
,
3963 [GPLL3
] = &gpll3
.clkr
,
3964 [GPLL3_EARLY
] = &gpll3_early
.clkr
,
3965 [GPLL4
] = &gpll4
.clkr
,
3966 [GPLL4_EARLY
] = &gpll4_early
.clkr
,
3967 [GPLL6
] = &gpll6
.clkr
,
3968 [GPLL6_EARLY
] = &gpll6_early
.clkr
,
3969 [GCC_APSS_AHB_CLK
] = &gcc_apss_ahb_clk
.clkr
,
3970 [GCC_APSS_AXI_CLK
] = &gcc_apss_axi_clk
.clkr
,
3971 [GCC_BLSP1_AHB_CLK
] = &gcc_blsp1_ahb_clk
.clkr
,
3972 [GCC_BLSP2_AHB_CLK
] = &gcc_blsp2_ahb_clk
.clkr
,
3973 [GCC_BOOT_ROM_AHB_CLK
] = &gcc_boot_rom_ahb_clk
.clkr
,
3974 [GCC_CRYPTO_AHB_CLK
] = &gcc_crypto_ahb_clk
.clkr
,
3975 [GCC_CRYPTO_AXI_CLK
] = &gcc_crypto_axi_clk
.clkr
,
3976 [GCC_CRYPTO_CLK
] = &gcc_crypto_clk
.clkr
,
3977 [GCC_PRNG_AHB_CLK
] = &gcc_prng_ahb_clk
.clkr
,
3978 [GCC_QDSS_DAP_CLK
] = &gcc_qdss_dap_clk
.clkr
,
3979 [GCC_APSS_TCU_ASYNC_CLK
] = &gcc_apss_tcu_async_clk
.clkr
,
3980 [GCC_CPP_TBU_CLK
] = &gcc_cpp_tbu_clk
.clkr
,
3981 [GCC_JPEG_TBU_CLK
] = &gcc_jpeg_tbu_clk
.clkr
,
3982 [GCC_MDP_TBU_CLK
] = &gcc_mdp_tbu_clk
.clkr
,
3983 [GCC_SMMU_CFG_CLK
] = &gcc_smmu_cfg_clk
.clkr
,
3984 [GCC_VENUS_TBU_CLK
] = &gcc_venus_tbu_clk
.clkr
,
3985 [GCC_VFE1_TBU_CLK
] = &gcc_vfe1_tbu_clk
.clkr
,
3986 [GCC_VFE_TBU_CLK
] = &gcc_vfe_tbu_clk
.clkr
,
3987 [CAMSS_TOP_AHB_CLK_SRC
] = &camss_top_ahb_clk_src
.clkr
,
3988 [CSI0_CLK_SRC
] = &csi0_clk_src
.clkr
,
3989 [APSS_AHB_CLK_SRC
] = &apss_ahb_clk_src
.clkr
,
3990 [CSI1_CLK_SRC
] = &csi1_clk_src
.clkr
,
3991 [CSI2_CLK_SRC
] = &csi2_clk_src
.clkr
,
3992 [VFE0_CLK_SRC
] = &vfe0_clk_src
.clkr
,
3993 [VCODEC0_CLK_SRC
] = &vcodec0_clk_src
.clkr
,
3994 [CPP_CLK_SRC
] = &cpp_clk_src
.clkr
,
3995 [JPEG0_CLK_SRC
] = &jpeg0_clk_src
.clkr
,
3996 [USB30_MASTER_CLK_SRC
] = &usb30_master_clk_src
.clkr
,
3997 [VFE1_CLK_SRC
] = &vfe1_clk_src
.clkr
,
3998 [APC0_DROOP_DETECTOR_CLK_SRC
] = &apc0_droop_detector_clk_src
.clkr
,
3999 [APC1_DROOP_DETECTOR_CLK_SRC
] = &apc1_droop_detector_clk_src
.clkr
,
4000 [BLSP1_QUP1_I2C_APPS_CLK_SRC
] = &blsp1_qup1_i2c_apps_clk_src
.clkr
,
4001 [BLSP1_QUP1_SPI_APPS_CLK_SRC
] = &blsp1_qup1_spi_apps_clk_src
.clkr
,
4002 [BLSP1_QUP2_I2C_APPS_CLK_SRC
] = &blsp1_qup2_i2c_apps_clk_src
.clkr
,
4003 [BLSP1_QUP2_SPI_APPS_CLK_SRC
] = &blsp1_qup2_spi_apps_clk_src
.clkr
,
4004 [BLSP1_QUP3_I2C_APPS_CLK_SRC
] = &blsp1_qup3_i2c_apps_clk_src
.clkr
,
4005 [BLSP1_QUP3_SPI_APPS_CLK_SRC
] = &blsp1_qup3_spi_apps_clk_src
.clkr
,
4006 [BLSP1_QUP4_I2C_APPS_CLK_SRC
] = &blsp1_qup4_i2c_apps_clk_src
.clkr
,
4007 [BLSP1_QUP4_SPI_APPS_CLK_SRC
] = &blsp1_qup4_spi_apps_clk_src
.clkr
,
4008 [BLSP1_UART1_APPS_CLK_SRC
] = &blsp1_uart1_apps_clk_src
.clkr
,
4009 [BLSP1_UART2_APPS_CLK_SRC
] = &blsp1_uart2_apps_clk_src
.clkr
,
4010 [BLSP2_QUP1_I2C_APPS_CLK_SRC
] = &blsp2_qup1_i2c_apps_clk_src
.clkr
,
4011 [BLSP2_QUP1_SPI_APPS_CLK_SRC
] = &blsp2_qup1_spi_apps_clk_src
.clkr
,
4012 [BLSP2_QUP2_I2C_APPS_CLK_SRC
] = &blsp2_qup2_i2c_apps_clk_src
.clkr
,
4013 [BLSP2_QUP2_SPI_APPS_CLK_SRC
] = &blsp2_qup2_spi_apps_clk_src
.clkr
,
4014 [BLSP2_QUP3_I2C_APPS_CLK_SRC
] = &blsp2_qup3_i2c_apps_clk_src
.clkr
,
4015 [BLSP2_QUP3_SPI_APPS_CLK_SRC
] = &blsp2_qup3_spi_apps_clk_src
.clkr
,
4016 [BLSP2_QUP4_I2C_APPS_CLK_SRC
] = &blsp2_qup4_i2c_apps_clk_src
.clkr
,
4017 [BLSP2_QUP4_SPI_APPS_CLK_SRC
] = &blsp2_qup4_spi_apps_clk_src
.clkr
,
4018 [BLSP2_UART1_APPS_CLK_SRC
] = &blsp2_uart1_apps_clk_src
.clkr
,
4019 [BLSP2_UART2_APPS_CLK_SRC
] = &blsp2_uart2_apps_clk_src
.clkr
,
4020 [CCI_CLK_SRC
] = &cci_clk_src
.clkr
,
4021 [CSI0P_CLK_SRC
] = &csi0p_clk_src
.clkr
,
4022 [CSI1P_CLK_SRC
] = &csi1p_clk_src
.clkr
,
4023 [CSI2P_CLK_SRC
] = &csi2p_clk_src
.clkr
,
4024 [CAMSS_GP0_CLK_SRC
] = &camss_gp0_clk_src
.clkr
,
4025 [CAMSS_GP1_CLK_SRC
] = &camss_gp1_clk_src
.clkr
,
4026 [MCLK0_CLK_SRC
] = &mclk0_clk_src
.clkr
,
4027 [MCLK1_CLK_SRC
] = &mclk1_clk_src
.clkr
,
4028 [MCLK2_CLK_SRC
] = &mclk2_clk_src
.clkr
,
4029 [MCLK3_CLK_SRC
] = &mclk3_clk_src
.clkr
,
4030 [CSI0PHYTIMER_CLK_SRC
] = &csi0phytimer_clk_src
.clkr
,
4031 [CSI1PHYTIMER_CLK_SRC
] = &csi1phytimer_clk_src
.clkr
,
4032 [CSI2PHYTIMER_CLK_SRC
] = &csi2phytimer_clk_src
.clkr
,
4033 [CRYPTO_CLK_SRC
] = &crypto_clk_src
.clkr
,
4034 [GP1_CLK_SRC
] = &gp1_clk_src
.clkr
,
4035 [GP2_CLK_SRC
] = &gp2_clk_src
.clkr
,
4036 [GP3_CLK_SRC
] = &gp3_clk_src
.clkr
,
4037 [PDM2_CLK_SRC
] = &pdm2_clk_src
.clkr
,
4038 [RBCPR_GFX_CLK_SRC
] = &rbcpr_gfx_clk_src
.clkr
,
4039 [SDCC1_APPS_CLK_SRC
] = &sdcc1_apps_clk_src
.clkr
,
4040 [SDCC1_ICE_CORE_CLK_SRC
] = &sdcc1_ice_core_clk_src
.clkr
,
4041 [SDCC2_APPS_CLK_SRC
] = &sdcc2_apps_clk_src
.clkr
,
4042 [USB30_MOCK_UTMI_CLK_SRC
] = &usb30_mock_utmi_clk_src
.clkr
,
4043 [USB3_AUX_CLK_SRC
] = &usb3_aux_clk_src
.clkr
,
4044 [GCC_APC0_DROOP_DETECTOR_GPLL0_CLK
] = &gcc_apc0_droop_detector_gpll0_clk
.clkr
,
4045 [GCC_APC1_DROOP_DETECTOR_GPLL0_CLK
] = &gcc_apc1_droop_detector_gpll0_clk
.clkr
,
4046 [GCC_BLSP1_QUP1_I2C_APPS_CLK
] = &gcc_blsp1_qup1_i2c_apps_clk
.clkr
,
4047 [GCC_BLSP1_QUP1_SPI_APPS_CLK
] = &gcc_blsp1_qup1_spi_apps_clk
.clkr
,
4048 [GCC_BLSP1_QUP2_I2C_APPS_CLK
] = &gcc_blsp1_qup2_i2c_apps_clk
.clkr
,
4049 [GCC_BLSP1_QUP2_SPI_APPS_CLK
] = &gcc_blsp1_qup2_spi_apps_clk
.clkr
,
4050 [GCC_BLSP1_QUP3_I2C_APPS_CLK
] = &gcc_blsp1_qup3_i2c_apps_clk
.clkr
,
4051 [GCC_BLSP1_QUP3_SPI_APPS_CLK
] = &gcc_blsp1_qup3_spi_apps_clk
.clkr
,
4052 [GCC_BLSP1_QUP4_I2C_APPS_CLK
] = &gcc_blsp1_qup4_i2c_apps_clk
.clkr
,
4053 [GCC_BLSP1_QUP4_SPI_APPS_CLK
] = &gcc_blsp1_qup4_spi_apps_clk
.clkr
,
4054 [GCC_BLSP1_UART1_APPS_CLK
] = &gcc_blsp1_uart1_apps_clk
.clkr
,
4055 [GCC_BLSP1_UART2_APPS_CLK
] = &gcc_blsp1_uart2_apps_clk
.clkr
,
4056 [GCC_BLSP2_QUP1_I2C_APPS_CLK
] = &gcc_blsp2_qup1_i2c_apps_clk
.clkr
,
4057 [GCC_BLSP2_QUP1_SPI_APPS_CLK
] = &gcc_blsp2_qup1_spi_apps_clk
.clkr
,
4058 [GCC_BLSP2_QUP2_I2C_APPS_CLK
] = &gcc_blsp2_qup2_i2c_apps_clk
.clkr
,
4059 [GCC_BLSP2_QUP2_SPI_APPS_CLK
] = &gcc_blsp2_qup2_spi_apps_clk
.clkr
,
4060 [GCC_BLSP2_QUP3_I2C_APPS_CLK
] = &gcc_blsp2_qup3_i2c_apps_clk
.clkr
,
4061 [GCC_BLSP2_QUP3_SPI_APPS_CLK
] = &gcc_blsp2_qup3_spi_apps_clk
.clkr
,
4062 [GCC_BLSP2_QUP4_I2C_APPS_CLK
] = &gcc_blsp2_qup4_i2c_apps_clk
.clkr
,
4063 [GCC_BLSP2_QUP4_SPI_APPS_CLK
] = &gcc_blsp2_qup4_spi_apps_clk
.clkr
,
4064 [GCC_BLSP2_UART1_APPS_CLK
] = &gcc_blsp2_uart1_apps_clk
.clkr
,
4065 [GCC_BLSP2_UART2_APPS_CLK
] = &gcc_blsp2_uart2_apps_clk
.clkr
,
4066 [GCC_CAMSS_CCI_AHB_CLK
] = &gcc_camss_cci_ahb_clk
.clkr
,
4067 [GCC_CAMSS_CCI_CLK
] = &gcc_camss_cci_clk
.clkr
,
4068 [GCC_CAMSS_CPP_AHB_CLK
] = &gcc_camss_cpp_ahb_clk
.clkr
,
4069 [GCC_CAMSS_CPP_AXI_CLK
] = &gcc_camss_cpp_axi_clk
.clkr
,
4070 [GCC_CAMSS_CPP_CLK
] = &gcc_camss_cpp_clk
.clkr
,
4071 [GCC_CAMSS_CSI0_AHB_CLK
] = &gcc_camss_csi0_ahb_clk
.clkr
,
4072 [GCC_CAMSS_CSI0_CLK
] = &gcc_camss_csi0_clk
.clkr
,
4073 [GCC_CAMSS_CSI0_CSIPHY_3P_CLK
] = &gcc_camss_csi0_csiphy_3p_clk
.clkr
,
4074 [GCC_CAMSS_CSI0PHY_CLK
] = &gcc_camss_csi0phy_clk
.clkr
,
4075 [GCC_CAMSS_CSI0PIX_CLK
] = &gcc_camss_csi0pix_clk
.clkr
,
4076 [GCC_CAMSS_CSI0RDI_CLK
] = &gcc_camss_csi0rdi_clk
.clkr
,
4077 [GCC_CAMSS_CSI1_AHB_CLK
] = &gcc_camss_csi1_ahb_clk
.clkr
,
4078 [GCC_CAMSS_CSI1_CLK
] = &gcc_camss_csi1_clk
.clkr
,
4079 [GCC_CAMSS_CSI1_CSIPHY_3P_CLK
] = &gcc_camss_csi1_csiphy_3p_clk
.clkr
,
4080 [GCC_CAMSS_CSI1PHY_CLK
] = &gcc_camss_csi1phy_clk
.clkr
,
4081 [GCC_CAMSS_CSI1PIX_CLK
] = &gcc_camss_csi1pix_clk
.clkr
,
4082 [GCC_CAMSS_CSI1RDI_CLK
] = &gcc_camss_csi1rdi_clk
.clkr
,
4083 [GCC_CAMSS_CSI2_AHB_CLK
] = &gcc_camss_csi2_ahb_clk
.clkr
,
4084 [GCC_CAMSS_CSI2_CLK
] = &gcc_camss_csi2_clk
.clkr
,
4085 [GCC_CAMSS_CSI2_CSIPHY_3P_CLK
] = &gcc_camss_csi2_csiphy_3p_clk
.clkr
,
4086 [GCC_CAMSS_CSI2PHY_CLK
] = &gcc_camss_csi2phy_clk
.clkr
,
4087 [GCC_CAMSS_CSI2PIX_CLK
] = &gcc_camss_csi2pix_clk
.clkr
,
4088 [GCC_CAMSS_CSI2RDI_CLK
] = &gcc_camss_csi2rdi_clk
.clkr
,
4089 [GCC_CAMSS_CSI_VFE0_CLK
] = &gcc_camss_csi_vfe0_clk
.clkr
,
4090 [GCC_CAMSS_CSI_VFE1_CLK
] = &gcc_camss_csi_vfe1_clk
.clkr
,
4091 [GCC_CAMSS_GP0_CLK
] = &gcc_camss_gp0_clk
.clkr
,
4092 [GCC_CAMSS_GP1_CLK
] = &gcc_camss_gp1_clk
.clkr
,
4093 [GCC_CAMSS_ISPIF_AHB_CLK
] = &gcc_camss_ispif_ahb_clk
.clkr
,
4094 [GCC_CAMSS_JPEG0_CLK
] = &gcc_camss_jpeg0_clk
.clkr
,
4095 [GCC_CAMSS_JPEG_AHB_CLK
] = &gcc_camss_jpeg_ahb_clk
.clkr
,
4096 [GCC_CAMSS_JPEG_AXI_CLK
] = &gcc_camss_jpeg_axi_clk
.clkr
,
4097 [GCC_CAMSS_MCLK0_CLK
] = &gcc_camss_mclk0_clk
.clkr
,
4098 [GCC_CAMSS_MCLK1_CLK
] = &gcc_camss_mclk1_clk
.clkr
,
4099 [GCC_CAMSS_MCLK2_CLK
] = &gcc_camss_mclk2_clk
.clkr
,
4100 [GCC_CAMSS_MCLK3_CLK
] = &gcc_camss_mclk3_clk
.clkr
,
4101 [GCC_CAMSS_MICRO_AHB_CLK
] = &gcc_camss_micro_ahb_clk
.clkr
,
4102 [GCC_CAMSS_CSI0PHYTIMER_CLK
] = &gcc_camss_csi0phytimer_clk
.clkr
,
4103 [GCC_CAMSS_CSI1PHYTIMER_CLK
] = &gcc_camss_csi1phytimer_clk
.clkr
,
4104 [GCC_CAMSS_CSI2PHYTIMER_CLK
] = &gcc_camss_csi2phytimer_clk
.clkr
,
4105 [GCC_CAMSS_AHB_CLK
] = &gcc_camss_ahb_clk
.clkr
,
4106 [GCC_CAMSS_TOP_AHB_CLK
] = &gcc_camss_top_ahb_clk
.clkr
,
4107 [GCC_CAMSS_VFE0_CLK
] = &gcc_camss_vfe0_clk
.clkr
,
4108 [GCC_CAMSS_VFE0_AHB_CLK
] = &gcc_camss_vfe0_ahb_clk
.clkr
,
4109 [GCC_CAMSS_VFE0_AXI_CLK
] = &gcc_camss_vfe0_axi_clk
.clkr
,
4110 [GCC_CAMSS_VFE1_AHB_CLK
] = &gcc_camss_vfe1_ahb_clk
.clkr
,
4111 [GCC_CAMSS_VFE1_AXI_CLK
] = &gcc_camss_vfe1_axi_clk
.clkr
,
4112 [GCC_CAMSS_VFE1_CLK
] = &gcc_camss_vfe1_clk
.clkr
,
4113 [GCC_DCC_CLK
] = &gcc_dcc_clk
.clkr
,
4114 [GCC_GP1_CLK
] = &gcc_gp1_clk
.clkr
,
4115 [GCC_GP2_CLK
] = &gcc_gp2_clk
.clkr
,
4116 [GCC_GP3_CLK
] = &gcc_gp3_clk
.clkr
,
4117 [GCC_MSS_CFG_AHB_CLK
] = &gcc_mss_cfg_ahb_clk
.clkr
,
4118 [GCC_MSS_Q6_BIMC_AXI_CLK
] = &gcc_mss_q6_bimc_axi_clk
.clkr
,
4119 [GCC_PCNOC_USB3_AXI_CLK
] = &gcc_pcnoc_usb3_axi_clk
.clkr
,
4120 [GCC_PDM2_CLK
] = &gcc_pdm2_clk
.clkr
,
4121 [GCC_PDM_AHB_CLK
] = &gcc_pdm_ahb_clk
.clkr
,
4122 [GCC_RBCPR_GFX_CLK
] = &gcc_rbcpr_gfx_clk
.clkr
,
4123 [GCC_SDCC1_AHB_CLK
] = &gcc_sdcc1_ahb_clk
.clkr
,
4124 [GCC_SDCC1_APPS_CLK
] = &gcc_sdcc1_apps_clk
.clkr
,
4125 [GCC_SDCC1_ICE_CORE_CLK
] = &gcc_sdcc1_ice_core_clk
.clkr
,
4126 [GCC_SDCC2_AHB_CLK
] = &gcc_sdcc2_ahb_clk
.clkr
,
4127 [GCC_SDCC2_APPS_CLK
] = &gcc_sdcc2_apps_clk
.clkr
,
4128 [GCC_USB30_MASTER_CLK
] = &gcc_usb30_master_clk
.clkr
,
4129 [GCC_USB30_MOCK_UTMI_CLK
] = &gcc_usb30_mock_utmi_clk
.clkr
,
4130 [GCC_USB30_SLEEP_CLK
] = &gcc_usb30_sleep_clk
.clkr
,
4131 [GCC_USB3_AUX_CLK
] = &gcc_usb3_aux_clk
.clkr
,
4132 [GCC_USB_PHY_CFG_AHB_CLK
] = &gcc_usb_phy_cfg_ahb_clk
.clkr
,
4133 [GCC_VENUS0_AHB_CLK
] = &gcc_venus0_ahb_clk
.clkr
,
4134 [GCC_VENUS0_AXI_CLK
] = &gcc_venus0_axi_clk
.clkr
,
4135 [GCC_VENUS0_CORE0_VCODEC0_CLK
] = &gcc_venus0_core0_vcodec0_clk
.clkr
,
4136 [GCC_VENUS0_VCODEC0_CLK
] = &gcc_venus0_vcodec0_clk
.clkr
,
4137 [GCC_QUSB_REF_CLK
] = &gcc_qusb_ref_clk
.clkr
,
4138 [GCC_USB_SS_REF_CLK
] = &gcc_usb_ss_ref_clk
.clkr
,
4139 [GCC_USB3_PIPE_CLK
] = &gcc_usb3_pipe_clk
.clkr
,
4140 [MDP_CLK_SRC
] = &mdp_clk_src
.clkr
,
4141 [PCLK0_CLK_SRC
] = &pclk0_clk_src
.clkr
,
4142 [BYTE0_CLK_SRC
] = &byte0_clk_src
.clkr
,
4143 [ESC0_CLK_SRC
] = &esc0_clk_src
.clkr
,
4144 [PCLK1_CLK_SRC
] = &pclk1_clk_src
.clkr
,
4145 [BYTE1_CLK_SRC
] = &byte1_clk_src
.clkr
,
4146 [ESC1_CLK_SRC
] = &esc1_clk_src
.clkr
,
4147 [VSYNC_CLK_SRC
] = &vsync_clk_src
.clkr
,
4148 [GCC_MDSS_AHB_CLK
] = &gcc_mdss_ahb_clk
.clkr
,
4149 [GCC_MDSS_AXI_CLK
] = &gcc_mdss_axi_clk
.clkr
,
4150 [GCC_MDSS_PCLK0_CLK
] = &gcc_mdss_pclk0_clk
.clkr
,
4151 [GCC_MDSS_BYTE0_CLK
] = &gcc_mdss_byte0_clk
.clkr
,
4152 [GCC_MDSS_ESC0_CLK
] = &gcc_mdss_esc0_clk
.clkr
,
4153 [GCC_MDSS_PCLK1_CLK
] = &gcc_mdss_pclk1_clk
.clkr
,
4154 [GCC_MDSS_BYTE1_CLK
] = &gcc_mdss_byte1_clk
.clkr
,
4155 [GCC_MDSS_ESC1_CLK
] = &gcc_mdss_esc1_clk
.clkr
,
4156 [GCC_MDSS_MDP_CLK
] = &gcc_mdss_mdp_clk
.clkr
,
4157 [GCC_MDSS_VSYNC_CLK
] = &gcc_mdss_vsync_clk
.clkr
,
4158 [GCC_OXILI_TIMER_CLK
] = &gcc_oxili_timer_clk
.clkr
,
4159 [GCC_OXILI_GFX3D_CLK
] = &gcc_oxili_gfx3d_clk
.clkr
,
4160 [GCC_OXILI_AON_CLK
] = &gcc_oxili_aon_clk
.clkr
,
4161 [GCC_OXILI_AHB_CLK
] = &gcc_oxili_ahb_clk
.clkr
,
4162 [GCC_BIMC_GFX_CLK
] = &gcc_bimc_gfx_clk
.clkr
,
4163 [GCC_BIMC_GPU_CLK
] = &gcc_bimc_gpu_clk
.clkr
,
4164 [GFX3D_CLK_SRC
] = &gfx3d_clk_src
.clkr
,
4167 static const struct qcom_reset_map gcc_msm8953_resets
[] = {
4168 [GCC_CAMSS_MICRO_BCR
] = { 0x56008 },
4169 [GCC_MSS_BCR
] = { 0x71000 },
4170 [GCC_QUSB2_PHY_BCR
] = { 0x4103c },
4171 [GCC_USB3PHY_PHY_BCR
] = { 0x3f03c },
4172 [GCC_USB3_PHY_BCR
] = { 0x3f034 },
4173 [GCC_USB_30_BCR
] = { 0x3f070 },
4174 [GCC_MDSS_BCR
] = { 0x4d074 },
4175 [GCC_CRYPTO_BCR
] = { 0x16000 },
4176 [GCC_SDCC1_BCR
] = { 0x42000 },
4177 [GCC_SDCC2_BCR
] = { 0x43000 },
4180 static const struct regmap_config gcc_msm8953_regmap_config
= {
4184 .max_register
= 0x80000,
4188 static struct gdsc
*gcc_msm8953_gdscs
[] = {
4189 [CPP_GDSC
] = &cpp_gdsc
,
4190 [JPEG_GDSC
] = &jpeg_gdsc
,
4191 [MDSS_GDSC
] = &mdss_gdsc
,
4192 [OXILI_CX_GDSC
] = &oxili_cx_gdsc
,
4193 [OXILI_GX_GDSC
] = &oxili_gx_gdsc
,
4194 [USB30_GDSC
] = &usb30_gdsc
,
4195 [VENUS_CORE0_GDSC
] = &venus_core0_gdsc
,
4196 [VENUS_GDSC
] = &venus_gdsc
,
4197 [VFE0_GDSC
] = &vfe0_gdsc
,
4198 [VFE1_GDSC
] = &vfe1_gdsc
,
4201 static const struct qcom_cc_desc gcc_msm8953_desc
= {
4202 .config
= &gcc_msm8953_regmap_config
,
4203 .clks
= gcc_msm8953_clocks
,
4204 .num_clks
= ARRAY_SIZE(gcc_msm8953_clocks
),
4205 .resets
= gcc_msm8953_resets
,
4206 .num_resets
= ARRAY_SIZE(gcc_msm8953_resets
),
4207 .gdscs
= gcc_msm8953_gdscs
,
4208 .num_gdscs
= ARRAY_SIZE(gcc_msm8953_gdscs
),
4209 .clk_hws
= gcc_msm8953_hws
,
4210 .num_clk_hws
= ARRAY_SIZE(gcc_msm8953_hws
),
4213 static int gcc_msm8953_probe(struct platform_device
*pdev
)
4215 struct regmap
*regmap
;
4217 regmap
= qcom_cc_map(pdev
, &gcc_msm8953_desc
);
4219 return PTR_ERR(regmap
);
4221 clk_alpha_pll_configure(&gpll3_early
, regmap
, &gpll3_early_config
);
4223 return qcom_cc_really_probe(&pdev
->dev
, &gcc_msm8953_desc
, regmap
);
4226 static const struct of_device_id gcc_msm8953_match_table
[] = {
4227 { .compatible
= "qcom,gcc-msm8953" },
4230 MODULE_DEVICE_TABLE(of
, gcc_msm8953_match_table
);
4232 static struct platform_driver gcc_msm8953_driver
= {
4233 .probe
= gcc_msm8953_probe
,
4235 .name
= "gcc-msm8953",
4236 .of_match_table
= gcc_msm8953_match_table
,
4240 static int __init
gcc_msm8953_init(void)
4242 return platform_driver_register(&gcc_msm8953_driver
);
4244 core_initcall(gcc_msm8953_init
);
4246 static void __exit
gcc_msm8953_exit(void)
4248 platform_driver_unregister(&gcc_msm8953_driver
);
4250 module_exit(gcc_msm8953_exit
);
4252 MODULE_DESCRIPTION("Qualcomm GCC MSM8953 Driver");
4253 MODULE_LICENSE("GPL v2");