1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
6 #include <linux/clk-provider.h>
7 #include <linux/mod_devicetable.h>
8 #include <linux/module.h>
9 #include <linux/platform_device.h>
10 #include <linux/regmap.h>
12 #include <dt-bindings/clock/qcom,ipq5332-gcc.h>
14 #include "clk-alpha-pll.h"
15 #include "clk-branch.h"
17 #include "clk-regmap.h"
18 #include "clk-regmap-divider.h"
19 #include "clk-regmap-mux.h"
20 #include "clk-regmap-phy-mux.h"
26 DT_PCIE_2LANE_PHY_PIPE_CLK,
27 DT_PCIE_2LANE_PHY_PIPE_CLK_X1,
28 DT_USB_PCIE_WRAPPER_PIPE_CLK,
36 P_CORE_BI_PLL_TEST_SE,
37 P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC,
48 static const struct clk_parent_data gcc_parent_data_xo = { .index = DT_XO };
50 static struct clk_alpha_pll gpll0_main = {
52 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
55 .enable_mask = BIT(0),
56 .hw.init = &(const struct clk_init_data) {
58 .parent_data = &gcc_parent_data_xo,
60 .ops = &clk_alpha_pll_stromer_ops,
65 static struct clk_fixed_factor gpll0_div2 = {
68 .hw.init = &(struct clk_init_data) {
70 .parent_hws = (const struct clk_hw *[]) {
71 &gpll0_main.clkr.hw },
73 .ops = &clk_fixed_factor_ops,
77 static struct clk_alpha_pll_postdiv gpll0 = {
79 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
81 .clkr.hw.init = &(struct clk_init_data) {
83 .parent_hws = (const struct clk_hw *[]) {
84 &gpll0_main.clkr.hw },
86 .ops = &clk_alpha_pll_postdiv_ro_ops,
90 static struct clk_alpha_pll gpll2_main = {
92 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
95 .enable_mask = BIT(1),
96 .hw.init = &(const struct clk_init_data) {
98 .parent_data = &gcc_parent_data_xo,
100 .ops = &clk_alpha_pll_stromer_ops,
105 static struct clk_alpha_pll_postdiv gpll2 = {
107 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
109 .clkr.hw.init = &(struct clk_init_data) {
110 .name = "gpll2_main",
111 .parent_hws = (const struct clk_hw *[]) {
112 &gpll2_main.clkr.hw },
114 .ops = &clk_alpha_pll_postdiv_ro_ops,
118 static struct clk_alpha_pll gpll4_main = {
120 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
122 .enable_reg = 0xb000,
123 .enable_mask = BIT(2),
124 .hw.init = &(const struct clk_init_data) {
125 .name = "gpll4_main",
126 .parent_data = &gcc_parent_data_xo,
128 .ops = &clk_alpha_pll_stromer_ops,
130 * There are no consumers for this GPLL in kernel yet,
131 * (will be added soon), so the clock framework
132 * disables this source. But some of the clocks
133 * initialized by boot loaders uses this source. So we
134 * need to keep this clock ON. Add the
135 * CLK_IGNORE_UNUSED flag so the clock will not be
136 * disabled. Once the consumer in kernel is added, we
137 * can get rid of this flag.
139 .flags = CLK_IGNORE_UNUSED,
144 static struct clk_alpha_pll_postdiv gpll4 = {
146 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
148 .clkr.hw.init = &(struct clk_init_data) {
150 .parent_hws = (const struct clk_hw *[]) {
151 &gpll4_main.clkr.hw },
153 .ops = &clk_alpha_pll_postdiv_ro_ops,
157 static const struct parent_map gcc_parent_map_xo[] = {
161 static const struct parent_map gcc_parent_map_0[] = {
163 { P_GPLL0_OUT_MAIN, 1 },
164 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
167 static const struct clk_parent_data gcc_parent_data_0[] = {
169 { .hw = &gpll0.clkr.hw },
170 { .hw = &gpll0_div2.hw },
173 static const struct parent_map gcc_parent_map_1[] = {
175 { P_GPLL0_OUT_MAIN, 1 },
178 static const struct clk_parent_data gcc_parent_data_1[] = {
180 { .hw = &gpll0.clkr.hw },
183 static const struct parent_map gcc_parent_map_2[] = {
185 { P_GPLL0_OUT_MAIN, 1 },
186 { P_GPLL4_OUT_MAIN, 2 },
189 static const struct clk_parent_data gcc_parent_data_2[] = {
191 { .hw = &gpll0.clkr.hw },
192 { .hw = &gpll4.clkr.hw },
195 static const struct parent_map gcc_parent_map_3[] = {
197 { P_GPLL0_OUT_MAIN, 1 },
198 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
202 static const struct clk_parent_data gcc_parent_data_3[] = {
204 { .hw = &gpll0.clkr.hw },
205 { .hw = &gpll0_div2.hw },
206 { .index = DT_SLEEP_CLK },
209 static const struct parent_map gcc_parent_map_4[] = {
211 { P_GPLL4_OUT_MAIN, 1 },
212 { P_GPLL0_OUT_AUX, 2 },
213 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
216 static const struct clk_parent_data gcc_parent_data_4[] = {
218 { .hw = &gpll4.clkr.hw },
219 { .hw = &gpll0.clkr.hw },
220 { .hw = &gpll0_div2.hw },
223 static const struct parent_map gcc_parent_map_5[] = {
225 { P_GPLL0_OUT_MAIN, 1 },
226 { P_GPLL0_OUT_AUX, 2 },
230 static const struct clk_parent_data gcc_parent_data_5[] = {
232 { .hw = &gpll0.clkr.hw },
233 { .hw = &gpll0.clkr.hw },
234 { .index = DT_SLEEP_CLK },
237 static const struct parent_map gcc_parent_map_6[] = {
239 { P_GPLL0_OUT_MAIN, 1 },
240 { P_GPLL2_OUT_AUX, 2 },
241 { P_GPLL4_OUT_AUX, 3 },
245 static const struct clk_parent_data gcc_parent_data_6[] = {
247 { .hw = &gpll0.clkr.hw },
248 { .hw = &gpll2.clkr.hw },
249 { .hw = &gpll4.clkr.hw },
250 { .index = DT_SLEEP_CLK },
253 static const struct parent_map gcc_parent_map_7[] = {
255 { P_GPLL0_OUT_MAIN, 1 },
256 { P_GPLL2_OUT_AUX, 2 },
259 static const struct clk_parent_data gcc_parent_data_7[] = {
261 { .hw = &gpll0.clkr.hw },
262 { .hw = &gpll2.clkr.hw },
265 static const struct parent_map gcc_parent_map_8[] = {
267 { P_GPLL0_OUT_MAIN, 1 },
268 { P_GPLL2_OUT_MAIN, 2 },
269 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
272 static const struct clk_parent_data gcc_parent_data_8[] = {
274 { .hw = &gpll0.clkr.hw },
275 { .hw = &gpll2.clkr.hw },
276 { .hw = &gpll0_div2.hw },
279 static const struct parent_map gcc_parent_map_9[] = {
283 static const struct clk_parent_data gcc_parent_data_9[] = {
284 { .index = DT_SLEEP_CLK },
287 static const struct parent_map gcc_parent_map_10[] = {
289 { P_GPLL0_OUT_MAIN, 1 },
290 { P_GPLL4_OUT_MAIN, 2 },
291 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 3 },
294 static const struct clk_parent_data gcc_parent_data_10[] = {
296 { .hw = &gpll0.clkr.hw },
297 { .hw = &gpll4.clkr.hw },
298 { .hw = &gpll0_div2.hw },
301 static const struct parent_map gcc_parent_map_11[] = {
303 { P_GPLL0_OUT_AUX, 2 },
307 static const struct clk_parent_data gcc_parent_data_11[] = {
309 { .hw = &gpll0.clkr.hw },
310 { .index = DT_SLEEP_CLK },
313 static const struct parent_map gcc_parent_map_12[] = {
315 { P_GPLL4_OUT_AUX, 1 },
316 { P_GPLL0_OUT_MAIN, 3 },
317 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
320 static const struct clk_parent_data gcc_parent_data_12[] = {
322 { .hw = &gpll4.clkr.hw },
323 { .hw = &gpll0.clkr.hw },
324 { .hw = &gpll0_div2.hw },
327 static const struct freq_tbl ftbl_gcc_adss_pwm_clk_src[] = {
328 F(24000000, P_XO, 1, 0, 0),
329 F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
333 static struct clk_rcg2 gcc_adss_pwm_clk_src = {
337 .parent_map = gcc_parent_map_1,
338 .freq_tbl = ftbl_gcc_adss_pwm_clk_src,
339 .clkr.hw.init = &(const struct clk_init_data) {
340 .name = "gcc_adss_pwm_clk_src",
341 .parent_data = gcc_parent_data_1,
342 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
343 .ops = &clk_rcg2_ops,
347 static const struct freq_tbl ftbl_gcc_apss_axi_clk_src[] = {
348 F(480000000, P_GPLL4_OUT_AUX, 2.5, 0, 0),
349 F(533333333, P_GPLL0_OUT_MAIN, 1.5, 0, 0),
353 static const struct freq_tbl ftbl_gcc_blsp1_qup1_spi_apps_clk_src[] = {
354 F(960000, P_XO, 1, 1, 25),
355 F(4800000, P_XO, 5, 0, 0),
356 F(9600000, P_XO, 2.5, 0, 0),
357 F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5),
358 F(24000000, P_XO, 1, 0, 0),
359 F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
360 F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
364 static struct clk_rcg2 gcc_blsp1_qup1_spi_apps_clk_src = {
368 .parent_map = gcc_parent_map_0,
369 .freq_tbl = ftbl_gcc_blsp1_qup1_spi_apps_clk_src,
370 .clkr.hw.init = &(const struct clk_init_data) {
371 .name = "gcc_blsp1_qup1_spi_apps_clk_src",
372 .parent_data = gcc_parent_data_0,
373 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
374 .ops = &clk_rcg2_ops,
378 static struct clk_rcg2 gcc_blsp1_qup2_spi_apps_clk_src = {
382 .parent_map = gcc_parent_map_0,
383 .freq_tbl = ftbl_gcc_blsp1_qup1_spi_apps_clk_src,
384 .clkr.hw.init = &(const struct clk_init_data) {
385 .name = "gcc_blsp1_qup2_spi_apps_clk_src",
386 .parent_data = gcc_parent_data_0,
387 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
388 .ops = &clk_rcg2_ops,
392 static struct clk_rcg2 gcc_blsp1_qup3_spi_apps_clk_src = {
396 .parent_map = gcc_parent_map_0,
397 .freq_tbl = ftbl_gcc_blsp1_qup1_spi_apps_clk_src,
398 .clkr.hw.init = &(const struct clk_init_data) {
399 .name = "gcc_blsp1_qup3_spi_apps_clk_src",
400 .parent_data = gcc_parent_data_0,
401 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
402 .ops = &clk_rcg2_ops,
406 static const struct freq_tbl ftbl_gcc_blsp1_uart1_apps_clk_src[] = {
407 F(3686400, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 144, 15625),
408 F(7372800, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 288, 15625),
409 F(14745600, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 576, 15625),
410 F(24000000, P_XO, 1, 0, 0),
411 F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
412 F(32000000, P_GPLL0_OUT_MAIN, 1, 1, 25),
413 F(40000000, P_GPLL0_OUT_MAIN, 1, 1, 20),
414 F(46400000, P_GPLL0_OUT_MAIN, 1, 29, 500),
415 F(48000000, P_GPLL0_OUT_MAIN, 1, 3, 50),
416 F(51200000, P_GPLL0_OUT_MAIN, 1, 8, 125),
417 F(56000000, P_GPLL0_OUT_MAIN, 1, 7, 100),
418 F(58982400, P_GPLL0_OUT_MAIN, 1, 1152, 15625),
419 F(60000000, P_GPLL0_OUT_MAIN, 1, 3, 40),
420 F(64000000, P_GPLL0_OUT_MAIN, 12.5, 0, 0),
424 static struct clk_rcg2 gcc_blsp1_uart1_apps_clk_src = {
428 .parent_map = gcc_parent_map_0,
429 .freq_tbl = ftbl_gcc_blsp1_uart1_apps_clk_src,
430 .clkr.hw.init = &(const struct clk_init_data) {
431 .name = "gcc_blsp1_uart1_apps_clk_src",
432 .parent_data = gcc_parent_data_0,
433 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
434 .ops = &clk_rcg2_ops,
438 static struct clk_rcg2 gcc_blsp1_uart2_apps_clk_src = {
442 .parent_map = gcc_parent_map_0,
443 .freq_tbl = ftbl_gcc_blsp1_uart1_apps_clk_src,
444 .clkr.hw.init = &(const struct clk_init_data) {
445 .name = "gcc_blsp1_uart2_apps_clk_src",
446 .parent_data = gcc_parent_data_0,
447 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
448 .ops = &clk_rcg2_ops,
452 static struct clk_rcg2 gcc_blsp1_uart3_apps_clk_src = {
456 .parent_map = gcc_parent_map_0,
457 .freq_tbl = ftbl_gcc_blsp1_uart1_apps_clk_src,
458 .clkr.hw.init = &(const struct clk_init_data) {
459 .name = "gcc_blsp1_uart3_apps_clk_src",
460 .parent_data = gcc_parent_data_0,
461 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
462 .ops = &clk_rcg2_ops,
466 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
467 F(24000000, P_XO, 1, 0, 0),
468 F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
472 static struct clk_rcg2 gcc_gp1_clk_src = {
476 .parent_map = gcc_parent_map_3,
477 .freq_tbl = ftbl_gcc_gp1_clk_src,
478 .clkr.hw.init = &(const struct clk_init_data) {
479 .name = "gcc_gp1_clk_src",
480 .parent_data = gcc_parent_data_3,
481 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
482 .ops = &clk_rcg2_ops,
486 static struct clk_rcg2 gcc_gp2_clk_src = {
490 .parent_map = gcc_parent_map_3,
491 .freq_tbl = ftbl_gcc_gp1_clk_src,
492 .clkr.hw.init = &(const struct clk_init_data) {
493 .name = "gcc_gp2_clk_src",
494 .parent_data = gcc_parent_data_3,
495 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
496 .ops = &clk_rcg2_ops,
500 static const struct freq_tbl ftbl_gcc_lpass_sway_clk_src[] = {
501 F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0),
505 static struct clk_rcg2 gcc_lpass_sway_clk_src = {
509 .parent_map = gcc_parent_map_1,
510 .freq_tbl = ftbl_gcc_lpass_sway_clk_src,
511 .clkr.hw.init = &(const struct clk_init_data) {
512 .name = "gcc_lpass_sway_clk_src",
513 .parent_data = gcc_parent_data_1,
514 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
515 .ops = &clk_rcg2_ops,
519 static const struct freq_tbl ftbl_gcc_nss_ts_clk_src[] = {
520 F(24000000, P_XO, 1, 0, 0),
524 static struct clk_rcg2 gcc_nss_ts_clk_src = {
528 .parent_map = gcc_parent_map_xo,
529 .freq_tbl = ftbl_gcc_nss_ts_clk_src,
530 .clkr.hw.init = &(const struct clk_init_data) {
531 .name = "gcc_nss_ts_clk_src",
532 .parent_data = &gcc_parent_data_xo,
534 .ops = &clk_rcg2_ops,
538 static const struct freq_tbl ftbl_gcc_pcie3x1_0_axi_clk_src[] = {
539 F(240000000, P_GPLL4_OUT_MAIN, 5, 0, 0),
543 static struct clk_rcg2 gcc_pcie3x1_0_axi_clk_src = {
547 .parent_map = gcc_parent_map_2,
548 .freq_tbl = ftbl_gcc_pcie3x1_0_axi_clk_src,
549 .clkr.hw.init = &(const struct clk_init_data) {
550 .name = "gcc_pcie3x1_0_axi_clk_src",
551 .parent_data = gcc_parent_data_2,
552 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
553 .ops = &clk_rcg2_ops,
557 static struct clk_rcg2 gcc_pcie3x1_0_rchg_clk_src = {
560 .parent_map = gcc_parent_map_0,
561 .freq_tbl = ftbl_gcc_adss_pwm_clk_src,
562 .clkr.hw.init = &(const struct clk_init_data) {
563 .name = "gcc_pcie3x1_0_rchg_clk_src",
564 .parent_data = gcc_parent_data_0,
565 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
566 .ops = &clk_rcg2_ops,
570 static struct clk_branch gcc_pcie3x1_0_rchg_clk = {
573 .enable_reg = 0x2907c,
574 .enable_mask = BIT(1),
575 .hw.init = &(struct clk_init_data) {
576 .name = "gcc_pcie3x1_0_rchg_clk",
577 .parent_hws = (const struct clk_hw *[]) {
578 &gcc_pcie3x1_0_rchg_clk_src.clkr.hw },
580 .flags = CLK_SET_RATE_PARENT,
581 .ops = &clk_branch2_ops,
586 static struct clk_rcg2 gcc_pcie3x1_1_axi_clk_src = {
590 .parent_map = gcc_parent_map_2,
591 .freq_tbl = ftbl_gcc_pcie3x1_0_axi_clk_src,
592 .clkr.hw.init = &(const struct clk_init_data) {
593 .name = "gcc_pcie3x1_1_axi_clk_src",
594 .parent_data = gcc_parent_data_2,
595 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
596 .ops = &clk_rcg2_ops,
600 static struct clk_rcg2 gcc_pcie3x1_1_rchg_clk_src = {
603 .parent_map = gcc_parent_map_0,
604 .freq_tbl = ftbl_gcc_adss_pwm_clk_src,
605 .clkr.hw.init = &(const struct clk_init_data) {
606 .name = "gcc_pcie3x1_1_rchg_clk_src",
607 .parent_data = gcc_parent_data_0,
608 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
609 .ops = &clk_rcg2_ops,
613 static struct clk_branch gcc_pcie3x1_1_rchg_clk = {
616 .enable_reg = 0x2a078,
617 .enable_mask = BIT(1),
618 .hw.init = &(struct clk_init_data) {
619 .name = "gcc_pcie3x1_1_rchg_clk",
620 .parent_hws = (const struct clk_hw *[]) {
621 &gcc_pcie3x1_1_rchg_clk_src.clkr.hw },
623 .flags = CLK_SET_RATE_PARENT,
624 .ops = &clk_branch2_ops,
629 static const struct freq_tbl ftbl_gcc_pcie3x2_axi_m_clk_src[] = {
630 F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0),
634 static struct clk_rcg2 gcc_pcie3x2_axi_m_clk_src = {
638 .parent_map = gcc_parent_map_2,
639 .freq_tbl = ftbl_gcc_pcie3x2_axi_m_clk_src,
640 .clkr.hw.init = &(const struct clk_init_data) {
641 .name = "gcc_pcie3x2_axi_m_clk_src",
642 .parent_data = gcc_parent_data_2,
643 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
644 .ops = &clk_rcg2_ops,
648 static struct clk_rcg2 gcc_pcie3x2_axi_s_clk_src = {
652 .parent_map = gcc_parent_map_2,
653 .freq_tbl = ftbl_gcc_pcie3x1_0_axi_clk_src,
654 .clkr.hw.init = &(const struct clk_init_data) {
655 .name = "gcc_pcie3x2_axi_s_clk_src",
656 .parent_data = gcc_parent_data_2,
657 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
658 .ops = &clk_rcg2_ops,
662 static struct clk_rcg2 gcc_pcie3x2_rchg_clk_src = {
666 .parent_map = gcc_parent_map_0,
667 .freq_tbl = ftbl_gcc_adss_pwm_clk_src,
668 .clkr.hw.init = &(const struct clk_init_data) {
669 .name = "gcc_pcie3x2_rchg_clk_src",
670 .parent_data = gcc_parent_data_0,
671 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
672 .ops = &clk_rcg2_ops,
676 static struct clk_branch gcc_pcie3x2_rchg_clk = {
679 .enable_reg = 0x28078,
680 .enable_mask = BIT(1),
681 .hw.init = &(struct clk_init_data) {
682 .name = "gcc_pcie3x2_rchg_clk",
683 .parent_hws = (const struct clk_hw *[]) {
684 &gcc_pcie3x2_rchg_clk_src.clkr.hw },
686 .flags = CLK_SET_RATE_PARENT,
687 .ops = &clk_branch2_ops,
692 static const struct freq_tbl ftbl_gcc_pcie_aux_clk_src[] = {
693 F(2000000, P_XO, 12, 0, 0),
697 static struct clk_rcg2 gcc_pcie_aux_clk_src = {
701 .parent_map = gcc_parent_map_5,
702 .freq_tbl = ftbl_gcc_pcie_aux_clk_src,
703 .clkr.hw.init = &(const struct clk_init_data) {
704 .name = "gcc_pcie_aux_clk_src",
705 .parent_data = gcc_parent_data_5,
706 .num_parents = ARRAY_SIZE(gcc_parent_data_5),
707 .ops = &clk_rcg2_ops,
711 static struct clk_regmap_phy_mux gcc_pcie3x2_pipe_clk_src = {
714 .hw.init = &(struct clk_init_data) {
715 .name = "gcc_pcie3x2_pipe_clk_src",
716 .parent_data = &(const struct clk_parent_data) {
717 .index = DT_PCIE_2LANE_PHY_PIPE_CLK,
720 .ops = &clk_regmap_phy_mux_ops,
725 static struct clk_regmap_phy_mux gcc_pcie3x1_0_pipe_clk_src = {
728 .hw.init = &(struct clk_init_data) {
729 .name = "gcc_pcie3x1_0_pipe_clk_src",
730 .parent_data = &(const struct clk_parent_data) {
731 .index = DT_USB_PCIE_WRAPPER_PIPE_CLK,
734 .ops = &clk_regmap_phy_mux_ops,
739 static struct clk_regmap_phy_mux gcc_pcie3x1_1_pipe_clk_src = {
742 .hw.init = &(struct clk_init_data) {
743 .name = "gcc_pcie3x1_1_pipe_clk_src",
744 .parent_data = &(const struct clk_parent_data) {
745 .index = DT_PCIE_2LANE_PHY_PIPE_CLK_X1,
748 .ops = &clk_regmap_phy_mux_ops,
753 static const struct freq_tbl ftbl_gcc_pcnoc_bfdcd_clk_src[] = {
754 F(24000000, P_XO, 1, 0, 0),
755 F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
756 F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
760 static struct clk_rcg2 gcc_pcnoc_bfdcd_clk_src = {
764 .parent_map = gcc_parent_map_0,
765 .freq_tbl = ftbl_gcc_pcnoc_bfdcd_clk_src,
766 .clkr.hw.init = &(const struct clk_init_data) {
767 .name = "gcc_pcnoc_bfdcd_clk_src",
768 .parent_data = gcc_parent_data_0,
769 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
770 .ops = &clk_rcg2_ops,
774 static struct clk_rcg2 gcc_q6_axim_clk_src = {
778 .parent_map = gcc_parent_map_6,
779 .freq_tbl = ftbl_gcc_apss_axi_clk_src,
780 .clkr.hw.init = &(const struct clk_init_data) {
781 .name = "gcc_q6_axim_clk_src",
782 .parent_data = gcc_parent_data_6,
783 .num_parents = ARRAY_SIZE(gcc_parent_data_6),
784 .ops = &clk_rcg2_ops,
788 static const struct freq_tbl ftbl_gcc_qdss_at_clk_src[] = {
789 F(240000000, P_GPLL4_OUT_MAIN, 5, 0, 0),
793 static struct clk_rcg2 gcc_qdss_at_clk_src = {
797 .parent_map = gcc_parent_map_4,
798 .freq_tbl = ftbl_gcc_qdss_at_clk_src,
799 .clkr.hw.init = &(const struct clk_init_data) {
800 .name = "gcc_qdss_at_clk_src",
801 .parent_data = gcc_parent_data_4,
802 .num_parents = ARRAY_SIZE(gcc_parent_data_4),
803 .ops = &clk_rcg2_ops,
807 static const struct freq_tbl ftbl_gcc_qdss_tsctr_clk_src[] = {
808 F(600000000, P_GPLL4_OUT_MAIN, 2, 0, 0),
812 static struct clk_rcg2 gcc_qdss_tsctr_clk_src = {
816 .parent_map = gcc_parent_map_4,
817 .freq_tbl = ftbl_gcc_qdss_tsctr_clk_src,
818 .clkr.hw.init = &(const struct clk_init_data) {
819 .name = "gcc_qdss_tsctr_clk_src",
820 .parent_data = gcc_parent_data_4,
821 .num_parents = ARRAY_SIZE(gcc_parent_data_4),
822 .ops = &clk_rcg2_ops,
826 static struct clk_fixed_factor gcc_qdss_tsctr_div2_clk_src = {
829 .hw.init = &(struct clk_init_data) {
830 .name = "gcc_qdss_tsctr_div2_clk_src",
831 .parent_hws = (const struct clk_hw *[]) {
832 &gcc_qdss_tsctr_clk_src.clkr.hw },
834 .flags = CLK_SET_RATE_PARENT,
835 .ops = &clk_fixed_factor_ops,
839 static struct clk_fixed_factor gcc_qdss_tsctr_div3_clk_src = {
842 .hw.init = &(struct clk_init_data) {
843 .name = "gcc_qdss_tsctr_div3_clk_src",
844 .parent_hws = (const struct clk_hw *[]) {
845 &gcc_qdss_tsctr_clk_src.clkr.hw },
847 .ops = &clk_fixed_factor_ops,
851 static struct clk_fixed_factor gcc_qdss_tsctr_div4_clk_src = {
854 .hw.init = &(struct clk_init_data) {
855 .name = "gcc_qdss_tsctr_div4_clk_src",
856 .parent_hws = (const struct clk_hw *[]) {
857 &gcc_qdss_tsctr_clk_src.clkr.hw },
859 .ops = &clk_fixed_factor_ops,
863 static struct clk_fixed_factor gcc_qdss_tsctr_div8_clk_src = {
866 .hw.init = &(struct clk_init_data) {
867 .name = "gcc_qdss_tsctr_div8_clk_src",
868 .parent_hws = (const struct clk_hw *[]) {
869 &gcc_qdss_tsctr_clk_src.clkr.hw },
871 .ops = &clk_fixed_factor_ops,
875 static struct clk_fixed_factor gcc_qdss_tsctr_div16_clk_src = {
878 .hw.init = &(struct clk_init_data) {
879 .name = "gcc_qdss_tsctr_div16_clk_src",
880 .parent_hws = (const struct clk_hw *[]) {
881 &gcc_qdss_tsctr_clk_src.clkr.hw },
883 .ops = &clk_fixed_factor_ops,
887 static const struct freq_tbl ftbl_gcc_qpic_io_macro_clk_src[] = {
888 F(24000000, P_XO, 1, 0, 0),
889 F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
890 F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
891 F(320000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
895 static struct clk_rcg2 gcc_qpic_io_macro_clk_src = {
899 .parent_map = gcc_parent_map_7,
900 .freq_tbl = ftbl_gcc_qpic_io_macro_clk_src,
901 .clkr.hw.init = &(const struct clk_init_data) {
902 .name = "gcc_qpic_io_macro_clk_src",
903 .parent_data = gcc_parent_data_7,
904 .num_parents = ARRAY_SIZE(gcc_parent_data_7),
905 .ops = &clk_rcg2_ops,
909 static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
910 F(143713, P_XO, 1, 1, 167),
911 F(400000, P_XO, 1, 1, 60),
912 F(24000000, P_XO, 1, 0, 0),
913 F(48000000, P_GPLL2_OUT_MAIN, 12, 1, 2),
914 F(96000000, P_GPLL2_OUT_MAIN, 12, 0, 0),
915 F(177777778, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
916 F(192000000, P_GPLL2_OUT_MAIN, 6, 0, 0),
917 F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
921 static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
925 .parent_map = gcc_parent_map_8,
926 .freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
927 .clkr.hw.init = &(const struct clk_init_data) {
928 .name = "gcc_sdcc1_apps_clk_src",
929 .parent_data = gcc_parent_data_8,
930 .num_parents = ARRAY_SIZE(gcc_parent_data_8),
931 .ops = &clk_rcg2_floor_ops,
935 static const struct freq_tbl ftbl_gcc_sleep_clk_src[] = {
936 F(32000, P_SLEEP_CLK, 1, 0, 0),
940 static struct clk_rcg2 gcc_sleep_clk_src = {
944 .parent_map = gcc_parent_map_9,
945 .freq_tbl = ftbl_gcc_sleep_clk_src,
946 .clkr.hw.init = &(const struct clk_init_data) {
947 .name = "gcc_sleep_clk_src",
948 .parent_data = gcc_parent_data_9,
949 .num_parents = ARRAY_SIZE(gcc_parent_data_9),
950 .ops = &clk_rcg2_ops,
954 static const struct freq_tbl ftbl_gcc_system_noc_bfdcd_clk_src[] = {
955 F(24000000, P_XO, 1, 0, 0),
956 F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0),
957 F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
958 F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0),
962 static struct clk_rcg2 gcc_system_noc_bfdcd_clk_src = {
966 .parent_map = gcc_parent_map_10,
967 .freq_tbl = ftbl_gcc_system_noc_bfdcd_clk_src,
968 .clkr.hw.init = &(const struct clk_init_data) {
969 .name = "gcc_system_noc_bfdcd_clk_src",
970 .parent_data = gcc_parent_data_10,
971 .num_parents = ARRAY_SIZE(gcc_parent_data_10),
972 .ops = &clk_rcg2_ops,
976 static struct clk_fixed_factor gcc_system_noc_bfdcd_div2_clk_src = {
979 .hw.init = &(struct clk_init_data) {
980 .name = "gcc_system_noc_bfdcd_div2_clk_src",
981 .parent_hws = (const struct clk_hw *[]) {
982 &gcc_system_noc_bfdcd_clk_src.clkr.hw },
984 .ops = &clk_fixed_factor_ops,
985 .flags = CLK_SET_RATE_PARENT,
989 static struct clk_rcg2 gcc_uniphy_sys_clk_src = {
993 .parent_map = gcc_parent_map_xo,
994 .freq_tbl = ftbl_gcc_nss_ts_clk_src,
995 .clkr.hw.init = &(const struct clk_init_data) {
996 .name = "gcc_uniphy_sys_clk_src",
997 .parent_data = &gcc_parent_data_xo,
999 .ops = &clk_rcg2_ops,
1003 static struct clk_rcg2 gcc_usb0_aux_clk_src = {
1004 .cmd_rcgr = 0x2c018,
1007 .parent_map = gcc_parent_map_11,
1008 .freq_tbl = ftbl_gcc_pcie_aux_clk_src,
1009 .clkr.hw.init = &(const struct clk_init_data) {
1010 .name = "gcc_usb0_aux_clk_src",
1011 .parent_data = gcc_parent_data_11,
1012 .num_parents = ARRAY_SIZE(gcc_parent_data_11),
1013 .ops = &clk_rcg2_ops,
1017 static const struct freq_tbl ftbl_gcc_usb0_lfps_clk_src[] = {
1018 F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
1022 static struct clk_rcg2 gcc_usb0_lfps_clk_src = {
1023 .cmd_rcgr = 0x2c07c,
1026 .parent_map = gcc_parent_map_1,
1027 .freq_tbl = ftbl_gcc_usb0_lfps_clk_src,
1028 .clkr.hw.init = &(const struct clk_init_data) {
1029 .name = "gcc_usb0_lfps_clk_src",
1030 .parent_data = gcc_parent_data_1,
1031 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1032 .ops = &clk_rcg2_ops,
1036 static struct clk_rcg2 gcc_usb0_master_clk_src = {
1037 .cmd_rcgr = 0x2c004,
1040 .parent_map = gcc_parent_map_0,
1041 .freq_tbl = ftbl_gcc_gp1_clk_src,
1042 .clkr.hw.init = &(const struct clk_init_data) {
1043 .name = "gcc_usb0_master_clk_src",
1044 .parent_data = gcc_parent_data_0,
1045 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1046 .ops = &clk_rcg2_ops,
1050 static const struct freq_tbl ftbl_gcc_usb0_mock_utmi_clk_src[] = {
1051 F(60000000, P_GPLL4_OUT_AUX, 10, 1, 2),
1055 static struct clk_rcg2 gcc_usb0_mock_utmi_clk_src = {
1056 .cmd_rcgr = 0x2c02c,
1059 .parent_map = gcc_parent_map_12,
1060 .freq_tbl = ftbl_gcc_usb0_mock_utmi_clk_src,
1061 .clkr.hw.init = &(const struct clk_init_data) {
1062 .name = "gcc_usb0_mock_utmi_clk_src",
1063 .parent_data = gcc_parent_data_12,
1064 .num_parents = ARRAY_SIZE(gcc_parent_data_12),
1065 .ops = &clk_rcg2_ops,
1069 static struct clk_regmap_phy_mux gcc_usb0_pipe_clk_src = {
1072 .hw.init = &(struct clk_init_data) {
1073 .name = "gcc_usb0_pipe_clk_src",
1074 .parent_data = &(const struct clk_parent_data) {
1075 .index = DT_USB_PCIE_WRAPPER_PIPE_CLK,
1078 .ops = &clk_regmap_phy_mux_ops,
1083 static struct clk_rcg2 gcc_wcss_ahb_clk_src = {
1084 .cmd_rcgr = 0x25030,
1087 .parent_map = gcc_parent_map_1,
1088 .freq_tbl = ftbl_gcc_lpass_sway_clk_src,
1089 .clkr.hw.init = &(const struct clk_init_data) {
1090 .name = "gcc_wcss_ahb_clk_src",
1091 .parent_data = gcc_parent_data_1,
1092 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1093 .ops = &clk_rcg2_ops,
1097 static struct clk_rcg2 gcc_xo_clk_src = {
1098 .cmd_rcgr = 0x34004,
1101 .parent_map = gcc_parent_map_xo,
1102 .freq_tbl = ftbl_gcc_nss_ts_clk_src,
1103 .clkr.hw.init = &(const struct clk_init_data) {
1104 .name = "gcc_xo_clk_src",
1105 .parent_data = &gcc_parent_data_xo,
1107 .ops = &clk_rcg2_ops,
1111 static struct clk_fixed_factor gcc_xo_div4_clk_src = {
1114 .hw.init = &(struct clk_init_data) {
1115 .name = "gcc_xo_div4_clk_src",
1116 .parent_hws = (const struct clk_hw *[]) {
1117 &gcc_xo_clk_src.clkr.hw },
1119 .ops = &clk_fixed_factor_ops,
1120 .flags = CLK_SET_RATE_PARENT,
1124 static struct clk_regmap_div gcc_qdss_dap_div_clk_src = {
1128 .clkr.hw.init = &(const struct clk_init_data) {
1129 .name = "gcc_qdss_dap_div_clk_src",
1130 .parent_hws = (const struct clk_hw*[]) {
1131 &gcc_qdss_tsctr_clk_src.clkr.hw,
1134 .ops = &clk_regmap_div_ro_ops,
1138 static struct clk_regmap_div gcc_usb0_mock_utmi_div_clk_src = {
1142 .clkr.hw.init = &(const struct clk_init_data) {
1143 .name = "gcc_usb0_mock_utmi_div_clk_src",
1144 .parent_hws = (const struct clk_hw*[]) {
1145 &gcc_usb0_mock_utmi_clk_src.clkr.hw,
1148 .flags = CLK_SET_RATE_PARENT,
1149 .ops = &clk_regmap_div_ro_ops,
1153 static struct clk_branch gcc_adss_pwm_clk = {
1154 .halt_reg = 0x1c00c,
1155 .halt_check = BRANCH_HALT,
1157 .enable_reg = 0x1c00c,
1158 .enable_mask = BIT(0),
1159 .hw.init = &(const struct clk_init_data) {
1160 .name = "gcc_adss_pwm_clk",
1161 .parent_hws = (const struct clk_hw*[]) {
1162 &gcc_adss_pwm_clk_src.clkr.hw,
1165 .flags = CLK_SET_RATE_PARENT,
1166 .ops = &clk_branch2_ops,
1171 static struct clk_branch gcc_ahb_clk = {
1172 .halt_reg = 0x34024,
1173 .halt_check = BRANCH_HALT_VOTED,
1175 .enable_reg = 0x34024,
1176 .enable_mask = BIT(0),
1177 .hw.init = &(const struct clk_init_data) {
1178 .name = "gcc_ahb_clk",
1179 .parent_hws = (const struct clk_hw*[]) {
1180 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1183 .flags = CLK_SET_RATE_PARENT,
1184 .ops = &clk_branch2_ops,
1189 static struct clk_branch gcc_blsp1_ahb_clk = {
1191 .halt_check = BRANCH_HALT_VOTED,
1193 .enable_reg = 0xb004,
1194 .enable_mask = BIT(4),
1195 .hw.init = &(const struct clk_init_data) {
1196 .name = "gcc_blsp1_ahb_clk",
1197 .parent_hws = (const struct clk_hw*[]) {
1198 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1201 .flags = CLK_SET_RATE_PARENT,
1202 .ops = &clk_branch2_ops,
1207 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1209 .halt_check = BRANCH_HALT,
1211 .enable_reg = 0x2024,
1212 .enable_mask = BIT(0),
1213 .hw.init = &(const struct clk_init_data) {
1214 .name = "gcc_blsp1_qup1_i2c_apps_clk",
1215 .parent_hws = (const struct clk_hw*[]) {
1216 &gcc_blsp1_qup1_spi_apps_clk_src.clkr.hw,
1219 .flags = CLK_SET_RATE_PARENT,
1220 .ops = &clk_branch2_ops,
1225 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1227 .halt_check = BRANCH_HALT,
1229 .enable_reg = 0x2020,
1230 .enable_mask = BIT(0),
1231 .hw.init = &(const struct clk_init_data) {
1232 .name = "gcc_blsp1_qup1_spi_apps_clk",
1233 .parent_hws = (const struct clk_hw*[]) {
1234 &gcc_blsp1_qup1_spi_apps_clk_src.clkr.hw,
1237 .flags = CLK_SET_RATE_PARENT,
1238 .ops = &clk_branch2_ops,
1243 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1245 .halt_check = BRANCH_HALT,
1247 .enable_reg = 0x3024,
1248 .enable_mask = BIT(0),
1249 .hw.init = &(const struct clk_init_data) {
1250 .name = "gcc_blsp1_qup2_i2c_apps_clk",
1251 .parent_hws = (const struct clk_hw*[]) {
1252 &gcc_blsp1_qup2_spi_apps_clk_src.clkr.hw,
1255 .flags = CLK_SET_RATE_PARENT,
1256 .ops = &clk_branch2_ops,
1261 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1263 .halt_check = BRANCH_HALT,
1265 .enable_reg = 0x3020,
1266 .enable_mask = BIT(0),
1267 .hw.init = &(const struct clk_init_data) {
1268 .name = "gcc_blsp1_qup2_spi_apps_clk",
1269 .parent_hws = (const struct clk_hw*[]) {
1270 &gcc_blsp1_qup2_spi_apps_clk_src.clkr.hw,
1273 .flags = CLK_SET_RATE_PARENT,
1274 .ops = &clk_branch2_ops,
1279 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1281 .halt_check = BRANCH_HALT,
1283 .enable_reg = 0x4024,
1284 .enable_mask = BIT(0),
1285 .hw.init = &(const struct clk_init_data) {
1286 .name = "gcc_blsp1_qup3_i2c_apps_clk",
1287 .parent_hws = (const struct clk_hw*[]) {
1288 &gcc_blsp1_qup3_spi_apps_clk_src.clkr.hw,
1291 .flags = CLK_SET_RATE_PARENT,
1292 .ops = &clk_branch2_ops,
1297 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1299 .halt_check = BRANCH_HALT,
1301 .enable_reg = 0x4020,
1302 .enable_mask = BIT(0),
1303 .hw.init = &(const struct clk_init_data) {
1304 .name = "gcc_blsp1_qup3_spi_apps_clk",
1305 .parent_hws = (const struct clk_hw*[]) {
1306 &gcc_blsp1_qup3_spi_apps_clk_src.clkr.hw,
1309 .flags = CLK_SET_RATE_PARENT,
1310 .ops = &clk_branch2_ops,
1315 static struct clk_branch gcc_blsp1_sleep_clk = {
1317 .halt_check = BRANCH_HALT_VOTED,
1319 .enable_reg = 0xb004,
1320 .enable_mask = BIT(5),
1321 .hw.init = &(const struct clk_init_data) {
1322 .name = "gcc_blsp1_sleep_clk",
1323 .parent_hws = (const struct clk_hw*[]) {
1324 &gcc_sleep_clk_src.clkr.hw,
1327 .flags = CLK_SET_RATE_PARENT,
1328 .ops = &clk_branch2_ops,
1333 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1335 .halt_check = BRANCH_HALT,
1337 .enable_reg = 0x2040,
1338 .enable_mask = BIT(0),
1339 .hw.init = &(const struct clk_init_data) {
1340 .name = "gcc_blsp1_uart1_apps_clk",
1341 .parent_hws = (const struct clk_hw*[]) {
1342 &gcc_blsp1_uart1_apps_clk_src.clkr.hw,
1345 .flags = CLK_SET_RATE_PARENT,
1346 .ops = &clk_branch2_ops,
1351 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1353 .halt_check = BRANCH_HALT,
1355 .enable_reg = 0x3040,
1356 .enable_mask = BIT(0),
1357 .hw.init = &(const struct clk_init_data) {
1358 .name = "gcc_blsp1_uart2_apps_clk",
1359 .parent_hws = (const struct clk_hw*[]) {
1360 &gcc_blsp1_uart2_apps_clk_src.clkr.hw,
1363 .flags = CLK_SET_RATE_PARENT,
1364 .ops = &clk_branch2_ops,
1369 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1371 .halt_check = BRANCH_HALT,
1373 .enable_reg = 0x4054,
1374 .enable_mask = BIT(0),
1375 .hw.init = &(const struct clk_init_data) {
1376 .name = "gcc_blsp1_uart3_apps_clk",
1377 .parent_hws = (const struct clk_hw*[]) {
1378 &gcc_blsp1_uart3_apps_clk_src.clkr.hw,
1381 .flags = CLK_SET_RATE_PARENT,
1382 .ops = &clk_branch2_ops,
1387 static struct clk_branch gcc_ce_ahb_clk = {
1388 .halt_reg = 0x25074,
1389 .halt_check = BRANCH_HALT,
1391 .enable_reg = 0x25074,
1392 .enable_mask = BIT(0),
1393 .hw.init = &(const struct clk_init_data) {
1394 .name = "gcc_ce_ahb_clk",
1395 .parent_hws = (const struct clk_hw*[]) {
1396 &gcc_system_noc_bfdcd_div2_clk_src.hw,
1399 .flags = CLK_SET_RATE_PARENT,
1400 .ops = &clk_branch2_ops,
1405 static struct clk_branch gcc_ce_axi_clk = {
1406 .halt_reg = 0x25068,
1407 .halt_check = BRANCH_HALT,
1409 .enable_reg = 0x25068,
1410 .enable_mask = BIT(0),
1411 .hw.init = &(const struct clk_init_data) {
1412 .name = "gcc_ce_axi_clk",
1413 .parent_hws = (const struct clk_hw*[]) {
1414 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
1417 .flags = CLK_SET_RATE_PARENT,
1418 .ops = &clk_branch2_ops,
1423 static struct clk_branch gcc_ce_pcnoc_ahb_clk = {
1424 .halt_reg = 0x25070,
1425 .halt_check = BRANCH_HALT,
1427 .enable_reg = 0x25070,
1428 .enable_mask = BIT(0),
1429 .hw.init = &(const struct clk_init_data) {
1430 .name = "gcc_ce_pcnoc_ahb_clk",
1431 .parent_hws = (const struct clk_hw*[]) {
1432 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1435 .flags = CLK_SET_RATE_PARENT,
1436 .ops = &clk_branch2_ops,
1441 static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
1442 .halt_reg = 0x3a004,
1443 .halt_check = BRANCH_HALT,
1445 .enable_reg = 0x3a004,
1446 .enable_mask = BIT(0),
1447 .hw.init = &(const struct clk_init_data) {
1448 .name = "gcc_cmn_12gpll_ahb_clk",
1449 .parent_hws = (const struct clk_hw*[]) {
1450 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1453 .flags = CLK_SET_RATE_PARENT,
1454 .ops = &clk_branch2_ops,
1459 static struct clk_branch gcc_cmn_12gpll_apu_clk = {
1460 .halt_reg = 0x3a00c,
1461 .halt_check = BRANCH_HALT,
1463 .enable_reg = 0x3a00c,
1464 .enable_mask = BIT(0),
1465 .hw.init = &(const struct clk_init_data) {
1466 .name = "gcc_cmn_12gpll_apu_clk",
1467 .parent_hws = (const struct clk_hw*[]) {
1468 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1471 .flags = CLK_SET_RATE_PARENT,
1472 .ops = &clk_branch2_ops,
1477 static struct clk_branch gcc_cmn_12gpll_sys_clk = {
1478 .halt_reg = 0x3a008,
1479 .halt_check = BRANCH_HALT,
1481 .enable_reg = 0x3a008,
1482 .enable_mask = BIT(0),
1483 .hw.init = &(const struct clk_init_data) {
1484 .name = "gcc_cmn_12gpll_sys_clk",
1485 .parent_hws = (const struct clk_hw*[]) {
1486 &gcc_uniphy_sys_clk_src.clkr.hw,
1489 .flags = CLK_SET_RATE_PARENT,
1490 .ops = &clk_branch2_ops,
1495 static struct clk_branch gcc_gp1_clk = {
1497 .halt_check = BRANCH_HALT,
1499 .enable_reg = 0x8018,
1500 .enable_mask = BIT(0),
1501 .hw.init = &(const struct clk_init_data) {
1502 .name = "gcc_gp1_clk",
1503 .parent_hws = (const struct clk_hw*[]) {
1504 &gcc_gp1_clk_src.clkr.hw,
1507 .flags = CLK_SET_RATE_PARENT,
1508 .ops = &clk_branch2_ops,
1513 static struct clk_branch gcc_gp2_clk = {
1515 .halt_check = BRANCH_HALT,
1517 .enable_reg = 0x9018,
1518 .enable_mask = BIT(0),
1519 .hw.init = &(const struct clk_init_data) {
1520 .name = "gcc_gp2_clk",
1521 .parent_hws = (const struct clk_hw*[]) {
1522 &gcc_gp2_clk_src.clkr.hw,
1525 .flags = CLK_SET_RATE_PARENT,
1526 .ops = &clk_branch2_ops,
1531 static struct clk_branch gcc_lpass_core_axim_clk = {
1532 .halt_reg = 0x27018,
1533 .halt_check = BRANCH_HALT_VOTED,
1535 .enable_reg = 0x27018,
1536 .enable_mask = BIT(0),
1537 .hw.init = &(const struct clk_init_data) {
1538 .name = "gcc_lpass_core_axim_clk",
1539 .parent_hws = (const struct clk_hw*[]) {
1540 &gcc_lpass_sway_clk_src.clkr.hw,
1543 .flags = CLK_SET_RATE_PARENT,
1544 .ops = &clk_branch2_ops,
1549 static struct clk_branch gcc_lpass_sway_clk = {
1550 .halt_reg = 0x27014,
1551 .halt_check = BRANCH_HALT,
1553 .enable_reg = 0x27014,
1554 .enable_mask = BIT(0),
1555 .hw.init = &(const struct clk_init_data) {
1556 .name = "gcc_lpass_sway_clk",
1557 .parent_hws = (const struct clk_hw*[]) {
1558 &gcc_lpass_sway_clk_src.clkr.hw,
1561 .flags = CLK_SET_RATE_PARENT,
1562 .ops = &clk_branch2_ops,
1567 static struct clk_branch gcc_mdio_ahb_clk = {
1568 .halt_reg = 0x12004,
1569 .halt_check = BRANCH_HALT,
1571 .enable_reg = 0x12004,
1572 .enable_mask = BIT(0),
1573 .hw.init = &(const struct clk_init_data) {
1574 .name = "gcc_mdio_ahb_clk",
1575 .parent_hws = (const struct clk_hw*[]) {
1576 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1579 .flags = CLK_SET_RATE_PARENT,
1580 .ops = &clk_branch2_ops,
1585 static struct clk_branch gcc_mdio_slave_ahb_clk = {
1586 .halt_reg = 0x1200c,
1587 .halt_check = BRANCH_HALT,
1589 .enable_reg = 0x1200c,
1590 .enable_mask = BIT(0),
1591 .hw.init = &(const struct clk_init_data) {
1592 .name = "gcc_mdio_slave_ahb_clk",
1593 .parent_hws = (const struct clk_hw*[]) {
1594 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1597 .flags = CLK_SET_RATE_PARENT,
1598 .ops = &clk_branch2_ops,
1603 static struct clk_branch gcc_nss_ts_clk = {
1604 .halt_reg = 0x17018,
1605 .halt_check = BRANCH_HALT_VOTED,
1607 .enable_reg = 0x17018,
1608 .enable_mask = BIT(0),
1609 .hw.init = &(const struct clk_init_data) {
1610 .name = "gcc_nss_ts_clk",
1611 .parent_hws = (const struct clk_hw*[]) {
1612 &gcc_nss_ts_clk_src.clkr.hw,
1615 .flags = CLK_SET_RATE_PARENT,
1616 .ops = &clk_branch2_ops,
1621 static struct clk_branch gcc_nsscc_clk = {
1622 .halt_reg = 0x17034,
1623 .halt_check = BRANCH_HALT,
1625 .enable_reg = 0x17034,
1626 .enable_mask = BIT(0),
1627 .hw.init = &(const struct clk_init_data) {
1628 .name = "gcc_nsscc_clk",
1629 .parent_hws = (const struct clk_hw*[]) {
1630 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1633 .flags = CLK_SET_RATE_PARENT,
1634 .ops = &clk_branch2_ops,
1639 static struct clk_branch gcc_nsscfg_clk = {
1640 .halt_reg = 0x1702c,
1641 .halt_check = BRANCH_HALT,
1643 .enable_reg = 0x1702c,
1644 .enable_mask = BIT(0),
1645 .hw.init = &(const struct clk_init_data) {
1646 .name = "gcc_nsscfg_clk",
1647 .parent_hws = (const struct clk_hw*[]) {
1648 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1651 .flags = CLK_SET_RATE_PARENT,
1652 .ops = &clk_branch2_ops,
1657 static struct clk_branch gcc_nssnoc_atb_clk = {
1658 .halt_reg = 0x17014,
1659 .halt_check = BRANCH_HALT,
1661 .enable_reg = 0x17014,
1662 .enable_mask = BIT(0),
1663 .hw.init = &(const struct clk_init_data) {
1664 .name = "gcc_nssnoc_atb_clk",
1665 .parent_hws = (const struct clk_hw*[]) {
1666 &gcc_qdss_at_clk_src.clkr.hw,
1669 .flags = CLK_SET_RATE_PARENT,
1670 .ops = &clk_branch2_ops,
1675 static struct clk_branch gcc_nssnoc_nsscc_clk = {
1676 .halt_reg = 0x17030,
1677 .halt_check = BRANCH_HALT,
1679 .enable_reg = 0x17030,
1680 .enable_mask = BIT(0),
1681 .hw.init = &(const struct clk_init_data) {
1682 .name = "gcc_nssnoc_nsscc_clk",
1683 .parent_hws = (const struct clk_hw*[]) {
1684 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1687 .flags = CLK_SET_RATE_PARENT,
1688 .ops = &clk_branch2_ops,
1693 static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
1694 .halt_reg = 0x1701c,
1695 .halt_check = BRANCH_HALT,
1697 .enable_reg = 0x1701c,
1698 .enable_mask = BIT(0),
1699 .hw.init = &(const struct clk_init_data) {
1700 .name = "gcc_nssnoc_qosgen_ref_clk",
1701 .parent_hws = (const struct clk_hw*[]) {
1702 &gcc_xo_div4_clk_src.hw,
1705 .flags = CLK_SET_RATE_PARENT,
1706 .ops = &clk_branch2_ops,
1711 static struct clk_branch gcc_nssnoc_snoc_1_clk = {
1712 .halt_reg = 0x1707c,
1713 .halt_check = BRANCH_HALT,
1715 .enable_reg = 0x1707c,
1716 .enable_mask = BIT(0),
1717 .hw.init = &(const struct clk_init_data) {
1718 .name = "gcc_nssnoc_snoc_1_clk",
1719 .parent_hws = (const struct clk_hw*[]) {
1720 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
1723 .flags = CLK_SET_RATE_PARENT,
1724 .ops = &clk_branch2_ops,
1729 static struct clk_branch gcc_nssnoc_snoc_clk = {
1730 .halt_reg = 0x17028,
1731 .halt_check = BRANCH_HALT,
1733 .enable_reg = 0x17028,
1734 .enable_mask = BIT(0),
1735 .hw.init = &(const struct clk_init_data) {
1736 .name = "gcc_nssnoc_snoc_clk",
1737 .parent_hws = (const struct clk_hw*[]) {
1738 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
1741 .flags = CLK_SET_RATE_PARENT,
1742 .ops = &clk_branch2_ops,
1747 static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
1748 .halt_reg = 0x17020,
1749 .halt_check = BRANCH_HALT,
1751 .enable_reg = 0x17020,
1752 .enable_mask = BIT(0),
1753 .hw.init = &(const struct clk_init_data) {
1754 .name = "gcc_nssnoc_timeout_ref_clk",
1755 .parent_hws = (const struct clk_hw*[]) {
1756 &gcc_xo_div4_clk_src.hw,
1759 .flags = CLK_SET_RATE_PARENT,
1760 .ops = &clk_branch2_ops,
1765 static struct clk_branch gcc_nssnoc_xo_dcd_clk = {
1766 .halt_reg = 0x17074,
1767 .halt_check = BRANCH_HALT,
1769 .enable_reg = 0x17074,
1770 .enable_mask = BIT(0),
1771 .hw.init = &(const struct clk_init_data) {
1772 .name = "gcc_nssnoc_xo_dcd_clk",
1773 .parent_hws = (const struct clk_hw*[]) {
1774 &gcc_xo_clk_src.clkr.hw,
1777 .flags = CLK_SET_RATE_PARENT,
1778 .ops = &clk_branch2_ops,
1783 static struct clk_branch gcc_pcie3x1_0_ahb_clk = {
1784 .halt_reg = 0x29030,
1785 .halt_check = BRANCH_HALT,
1787 .enable_reg = 0x29030,
1788 .enable_mask = BIT(0),
1789 .hw.init = &(const struct clk_init_data) {
1790 .name = "gcc_pcie3x1_0_ahb_clk",
1791 .parent_hws = (const struct clk_hw*[]) {
1792 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1795 .flags = CLK_SET_RATE_PARENT,
1796 .ops = &clk_branch2_ops,
1801 static struct clk_branch gcc_pcie3x1_0_aux_clk = {
1802 .halt_reg = 0x29070,
1803 .halt_check = BRANCH_HALT,
1805 .enable_reg = 0x29070,
1806 .enable_mask = BIT(0),
1807 .hw.init = &(const struct clk_init_data) {
1808 .name = "gcc_pcie3x1_0_aux_clk",
1809 .parent_hws = (const struct clk_hw*[]) {
1810 &gcc_pcie_aux_clk_src.clkr.hw,
1813 .flags = CLK_SET_RATE_PARENT,
1814 .ops = &clk_branch2_ops,
1819 static struct clk_branch gcc_pcie3x1_0_axi_m_clk = {
1820 .halt_reg = 0x29038,
1821 .halt_check = BRANCH_HALT,
1823 .enable_reg = 0x29038,
1824 .enable_mask = BIT(0),
1825 .hw.init = &(const struct clk_init_data) {
1826 .name = "gcc_pcie3x1_0_axi_m_clk",
1827 .parent_hws = (const struct clk_hw*[]) {
1828 &gcc_pcie3x1_0_axi_clk_src.clkr.hw,
1831 .flags = CLK_SET_RATE_PARENT,
1832 .ops = &clk_branch2_ops,
1837 static struct clk_branch gcc_pcie3x1_0_axi_s_bridge_clk = {
1838 .halt_reg = 0x29048,
1839 .halt_check = BRANCH_HALT,
1841 .enable_reg = 0x29048,
1842 .enable_mask = BIT(0),
1843 .hw.init = &(const struct clk_init_data) {
1844 .name = "gcc_pcie3x1_0_axi_s_bridge_clk",
1845 .parent_hws = (const struct clk_hw*[]) {
1846 &gcc_pcie3x1_0_axi_clk_src.clkr.hw,
1849 .flags = CLK_SET_RATE_PARENT,
1850 .ops = &clk_branch2_ops,
1855 static struct clk_branch gcc_pcie3x1_0_axi_s_clk = {
1856 .halt_reg = 0x29040,
1857 .halt_check = BRANCH_HALT,
1859 .enable_reg = 0x29040,
1860 .enable_mask = BIT(0),
1861 .hw.init = &(const struct clk_init_data) {
1862 .name = "gcc_pcie3x1_0_axi_s_clk",
1863 .parent_hws = (const struct clk_hw*[]) {
1864 &gcc_pcie3x1_0_axi_clk_src.clkr.hw,
1867 .flags = CLK_SET_RATE_PARENT,
1868 .ops = &clk_branch2_ops,
1873 static struct clk_branch gcc_pcie3x1_0_pipe_clk = {
1874 .halt_reg = 0x29068,
1875 .halt_check = BRANCH_HALT_DELAY,
1877 .enable_reg = 0x29068,
1878 .enable_mask = BIT(0),
1879 .hw.init = &(const struct clk_init_data) {
1880 .name = "gcc_pcie3x1_0_pipe_clk",
1881 .parent_hws = (const struct clk_hw*[]) {
1882 &gcc_pcie3x1_0_pipe_clk_src.clkr.hw,
1885 .flags = CLK_SET_RATE_PARENT,
1886 .ops = &clk_branch2_ops,
1891 static struct clk_branch gcc_pcie3x1_1_ahb_clk = {
1892 .halt_reg = 0x2a00c,
1893 .halt_check = BRANCH_HALT,
1895 .enable_reg = 0x2a00c,
1896 .enable_mask = BIT(0),
1897 .hw.init = &(const struct clk_init_data) {
1898 .name = "gcc_pcie3x1_1_ahb_clk",
1899 .parent_hws = (const struct clk_hw*[]) {
1900 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1903 .flags = CLK_SET_RATE_PARENT,
1904 .ops = &clk_branch2_ops,
1909 static struct clk_branch gcc_pcie3x1_1_aux_clk = {
1910 .halt_reg = 0x2a070,
1911 .halt_check = BRANCH_HALT,
1913 .enable_reg = 0x2a070,
1914 .enable_mask = BIT(0),
1915 .hw.init = &(const struct clk_init_data) {
1916 .name = "gcc_pcie3x1_1_aux_clk",
1917 .parent_hws = (const struct clk_hw*[]) {
1918 &gcc_pcie_aux_clk_src.clkr.hw,
1921 .flags = CLK_SET_RATE_PARENT,
1922 .ops = &clk_branch2_ops,
1927 static struct clk_branch gcc_pcie3x1_1_axi_m_clk = {
1928 .halt_reg = 0x2a014,
1929 .halt_check = BRANCH_HALT,
1931 .enable_reg = 0x2a014,
1932 .enable_mask = BIT(0),
1933 .hw.init = &(const struct clk_init_data) {
1934 .name = "gcc_pcie3x1_1_axi_m_clk",
1935 .parent_hws = (const struct clk_hw*[]) {
1936 &gcc_pcie3x1_1_axi_clk_src.clkr.hw,
1939 .flags = CLK_SET_RATE_PARENT,
1940 .ops = &clk_branch2_ops,
1945 static struct clk_branch gcc_pcie3x1_1_axi_s_bridge_clk = {
1946 .halt_reg = 0x2a024,
1947 .halt_check = BRANCH_HALT,
1949 .enable_reg = 0x2a024,
1950 .enable_mask = BIT(0),
1951 .hw.init = &(const struct clk_init_data) {
1952 .name = "gcc_pcie3x1_1_axi_s_bridge_clk",
1953 .parent_hws = (const struct clk_hw*[]) {
1954 &gcc_pcie3x1_1_axi_clk_src.clkr.hw,
1957 .flags = CLK_SET_RATE_PARENT,
1958 .ops = &clk_branch2_ops,
1963 static struct clk_branch gcc_pcie3x1_1_axi_s_clk = {
1964 .halt_reg = 0x2a01c,
1965 .halt_check = BRANCH_HALT,
1967 .enable_reg = 0x2a01c,
1968 .enable_mask = BIT(0),
1969 .hw.init = &(const struct clk_init_data) {
1970 .name = "gcc_pcie3x1_1_axi_s_clk",
1971 .parent_hws = (const struct clk_hw*[]) {
1972 &gcc_pcie3x1_1_axi_clk_src.clkr.hw,
1975 .flags = CLK_SET_RATE_PARENT,
1976 .ops = &clk_branch2_ops,
1981 static struct clk_branch gcc_pcie3x1_1_pipe_clk = {
1982 .halt_reg = 0x2a068,
1983 .halt_check = BRANCH_HALT_DELAY,
1985 .enable_reg = 0x2a068,
1986 .enable_mask = BIT(0),
1987 .hw.init = &(const struct clk_init_data) {
1988 .name = "gcc_pcie3x1_1_pipe_clk",
1989 .parent_hws = (const struct clk_hw*[]) {
1990 &gcc_pcie3x1_1_pipe_clk_src.clkr.hw,
1993 .flags = CLK_SET_RATE_PARENT,
1994 .ops = &clk_branch2_ops,
1999 static struct clk_branch gcc_pcie3x1_phy_ahb_clk = {
2000 .halt_reg = 0x29078,
2001 .halt_check = BRANCH_HALT,
2003 .enable_reg = 0x29078,
2004 .enable_mask = BIT(0),
2005 .hw.init = &(const struct clk_init_data) {
2006 .name = "gcc_pcie3x1_phy_ahb_clk",
2007 .parent_hws = (const struct clk_hw*[]) {
2008 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2011 .flags = CLK_SET_RATE_PARENT,
2012 .ops = &clk_branch2_ops,
2017 static struct clk_branch gcc_pcie3x2_ahb_clk = {
2018 .halt_reg = 0x28030,
2019 .halt_check = BRANCH_HALT,
2021 .enable_reg = 0x28030,
2022 .enable_mask = BIT(0),
2023 .hw.init = &(const struct clk_init_data) {
2024 .name = "gcc_pcie3x2_ahb_clk",
2025 .parent_hws = (const struct clk_hw*[]) {
2026 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2029 .flags = CLK_SET_RATE_PARENT,
2030 .ops = &clk_branch2_ops,
2035 static struct clk_branch gcc_pcie3x2_aux_clk = {
2036 .halt_reg = 0x28070,
2037 .halt_check = BRANCH_HALT,
2039 .enable_reg = 0x28070,
2040 .enable_mask = BIT(0),
2041 .hw.init = &(const struct clk_init_data) {
2042 .name = "gcc_pcie3x2_aux_clk",
2043 .parent_hws = (const struct clk_hw*[]) {
2044 &gcc_pcie_aux_clk_src.clkr.hw,
2047 .flags = CLK_SET_RATE_PARENT,
2048 .ops = &clk_branch2_ops,
2053 static struct clk_branch gcc_pcie3x2_axi_m_clk = {
2054 .halt_reg = 0x28038,
2055 .halt_check = BRANCH_HALT,
2057 .enable_reg = 0x28038,
2058 .enable_mask = BIT(0),
2059 .hw.init = &(const struct clk_init_data) {
2060 .name = "gcc_pcie3x2_axi_m_clk",
2061 .parent_hws = (const struct clk_hw*[]) {
2062 &gcc_pcie3x2_axi_m_clk_src.clkr.hw,
2065 .flags = CLK_SET_RATE_PARENT,
2066 .ops = &clk_branch2_ops,
2071 static struct clk_branch gcc_pcie3x2_axi_s_bridge_clk = {
2072 .halt_reg = 0x28048,
2073 .halt_check = BRANCH_HALT,
2075 .enable_reg = 0x28048,
2076 .enable_mask = BIT(0),
2077 .hw.init = &(const struct clk_init_data) {
2078 .name = "gcc_pcie3x2_axi_s_bridge_clk",
2079 .parent_hws = (const struct clk_hw*[]) {
2080 &gcc_pcie3x2_axi_s_clk_src.clkr.hw,
2083 .flags = CLK_SET_RATE_PARENT,
2084 .ops = &clk_branch2_ops,
2089 static struct clk_branch gcc_pcie3x2_axi_s_clk = {
2090 .halt_reg = 0x28040,
2091 .halt_check = BRANCH_HALT,
2093 .enable_reg = 0x28040,
2094 .enable_mask = BIT(0),
2095 .hw.init = &(const struct clk_init_data) {
2096 .name = "gcc_pcie3x2_axi_s_clk",
2097 .parent_hws = (const struct clk_hw*[]) {
2098 &gcc_pcie3x2_axi_s_clk_src.clkr.hw,
2101 .flags = CLK_SET_RATE_PARENT,
2102 .ops = &clk_branch2_ops,
2107 static struct clk_branch gcc_pcie3x2_phy_ahb_clk = {
2108 .halt_reg = 0x28080,
2109 .halt_check = BRANCH_HALT,
2111 .enable_reg = 0x28080,
2112 .enable_mask = BIT(0),
2113 .hw.init = &(const struct clk_init_data) {
2114 .name = "gcc_pcie3x2_phy_ahb_clk",
2115 .parent_hws = (const struct clk_hw*[]) {
2116 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2119 .flags = CLK_SET_RATE_PARENT,
2120 .ops = &clk_branch2_ops,
2125 static struct clk_branch gcc_pcie3x2_pipe_clk = {
2126 .halt_reg = 0x28068,
2127 .halt_check = BRANCH_HALT_DELAY,
2129 .enable_reg = 0x28068,
2130 .enable_mask = BIT(0),
2131 .hw.init = &(const struct clk_init_data) {
2132 .name = "gcc_pcie3x2_pipe_clk",
2133 .parent_hws = (const struct clk_hw*[]) {
2134 &gcc_pcie3x2_pipe_clk_src.clkr.hw,
2137 .flags = CLK_SET_RATE_PARENT,
2138 .ops = &clk_branch2_ops,
2143 static struct clk_branch gcc_pcnoc_at_clk = {
2144 .halt_reg = 0x31024,
2145 .halt_check = BRANCH_HALT_VOTED,
2147 .enable_reg = 0x31024,
2148 .enable_mask = BIT(0),
2149 .hw.init = &(const struct clk_init_data) {
2150 .name = "gcc_pcnoc_at_clk",
2151 .parent_hws = (const struct clk_hw*[]) {
2152 &gcc_qdss_at_clk_src.clkr.hw,
2155 .flags = CLK_SET_RATE_PARENT,
2156 .ops = &clk_branch2_ops,
2161 static struct clk_branch gcc_pcnoc_lpass_clk = {
2162 .halt_reg = 0x31020,
2163 .halt_check = BRANCH_HALT,
2165 .enable_reg = 0x31020,
2166 .enable_mask = BIT(0),
2167 .hw.init = &(const struct clk_init_data) {
2168 .name = "gcc_pcnoc_lpass_clk",
2169 .parent_hws = (const struct clk_hw*[]) {
2170 &gcc_lpass_sway_clk_src.clkr.hw,
2173 .flags = CLK_SET_RATE_PARENT,
2174 .ops = &clk_branch2_ops,
2179 static struct clk_branch gcc_prng_ahb_clk = {
2180 .halt_reg = 0x13024,
2181 .halt_check = BRANCH_HALT_VOTED,
2183 .enable_reg = 0xb004,
2184 .enable_mask = BIT(10),
2185 .hw.init = &(const struct clk_init_data) {
2186 .name = "gcc_prng_ahb_clk",
2187 .parent_hws = (const struct clk_hw*[]) {
2188 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2191 .flags = CLK_SET_RATE_PARENT,
2192 .ops = &clk_branch2_ops,
2197 static struct clk_branch gcc_q6_ahb_clk = {
2198 .halt_reg = 0x25014,
2199 .halt_check = BRANCH_HALT_VOTED,
2201 .enable_reg = 0x25014,
2202 .enable_mask = BIT(0),
2203 .hw.init = &(const struct clk_init_data) {
2204 .name = "gcc_q6_ahb_clk",
2205 .parent_hws = (const struct clk_hw*[]) {
2206 &gcc_wcss_ahb_clk_src.clkr.hw,
2209 .flags = CLK_SET_RATE_PARENT,
2210 .ops = &clk_branch2_ops,
2215 static struct clk_branch gcc_q6_ahb_s_clk = {
2216 .halt_reg = 0x25018,
2217 .halt_check = BRANCH_HALT_VOTED,
2219 .enable_reg = 0x25018,
2220 .enable_mask = BIT(0),
2221 .hw.init = &(const struct clk_init_data) {
2222 .name = "gcc_q6_ahb_s_clk",
2223 .parent_hws = (const struct clk_hw*[]) {
2224 &gcc_wcss_ahb_clk_src.clkr.hw,
2227 .flags = CLK_SET_RATE_PARENT,
2228 .ops = &clk_branch2_ops,
2233 static struct clk_branch gcc_q6_axim_clk = {
2234 .halt_reg = 0x2500c,
2235 .halt_check = BRANCH_HALT_VOTED,
2237 .enable_reg = 0x2500c,
2238 .enable_mask = BIT(0),
2239 .hw.init = &(const struct clk_init_data) {
2240 .name = "gcc_q6_axim_clk",
2241 .parent_hws = (const struct clk_hw*[]) {
2242 &gcc_q6_axim_clk_src.clkr.hw,
2245 .flags = CLK_SET_RATE_PARENT,
2246 .ops = &clk_branch2_ops,
2251 static struct clk_branch gcc_q6_axis_clk = {
2252 .halt_reg = 0x25010,
2253 .halt_check = BRANCH_HALT_VOTED,
2255 .enable_reg = 0x25010,
2256 .enable_mask = BIT(0),
2257 .hw.init = &(const struct clk_init_data) {
2258 .name = "gcc_q6_axis_clk",
2259 .parent_hws = (const struct clk_hw*[]) {
2260 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
2263 .flags = CLK_SET_RATE_PARENT,
2264 .ops = &clk_branch2_ops,
2269 static struct clk_branch gcc_q6_tsctr_1to2_clk = {
2270 .halt_reg = 0x25020,
2271 .halt_check = BRANCH_HALT_VOTED,
2273 .enable_reg = 0x25020,
2274 .enable_mask = BIT(0),
2275 .hw.init = &(const struct clk_init_data) {
2276 .name = "gcc_q6_tsctr_1to2_clk",
2277 .parent_hws = (const struct clk_hw*[]) {
2278 &gcc_qdss_tsctr_div2_clk_src.hw,
2281 .flags = CLK_SET_RATE_PARENT,
2282 .ops = &clk_branch2_ops,
2287 static struct clk_branch gcc_q6ss_atbm_clk = {
2288 .halt_reg = 0x2501c,
2289 .halt_check = BRANCH_HALT_VOTED,
2291 .enable_reg = 0x2501c,
2292 .enable_mask = BIT(0),
2293 .hw.init = &(const struct clk_init_data) {
2294 .name = "gcc_q6ss_atbm_clk",
2295 .parent_hws = (const struct clk_hw*[]) {
2296 &gcc_qdss_at_clk_src.clkr.hw,
2299 .flags = CLK_SET_RATE_PARENT,
2300 .ops = &clk_branch2_ops,
2305 static struct clk_branch gcc_q6ss_pclkdbg_clk = {
2306 .halt_reg = 0x25024,
2307 .halt_check = BRANCH_HALT_VOTED,
2309 .enable_reg = 0x25024,
2310 .enable_mask = BIT(0),
2311 .hw.init = &(const struct clk_init_data) {
2312 .name = "gcc_q6ss_pclkdbg_clk",
2313 .parent_hws = (const struct clk_hw*[]) {
2314 &gcc_qdss_dap_div_clk_src.clkr.hw,
2317 .flags = CLK_SET_RATE_PARENT,
2318 .ops = &clk_branch2_ops,
2323 static struct clk_branch gcc_q6ss_trig_clk = {
2324 .halt_reg = 0x250a0,
2325 .halt_check = BRANCH_HALT_VOTED,
2327 .enable_reg = 0x250a0,
2328 .enable_mask = BIT(0),
2329 .hw.init = &(const struct clk_init_data) {
2330 .name = "gcc_q6ss_trig_clk",
2331 .parent_hws = (const struct clk_hw*[]) {
2332 &gcc_qdss_dap_div_clk_src.clkr.hw,
2335 .flags = CLK_SET_RATE_PARENT,
2336 .ops = &clk_branch2_ops,
2341 static struct clk_branch gcc_qdss_at_clk = {
2342 .halt_reg = 0x2d038,
2343 .halt_check = BRANCH_HALT_VOTED,
2345 .enable_reg = 0x2d038,
2346 .enable_mask = BIT(0),
2347 .hw.init = &(const struct clk_init_data) {
2348 .name = "gcc_qdss_at_clk",
2349 .parent_hws = (const struct clk_hw*[]) {
2350 &gcc_qdss_at_clk_src.clkr.hw,
2353 .flags = CLK_SET_RATE_PARENT,
2354 .ops = &clk_branch2_ops,
2359 static struct clk_branch gcc_qdss_cfg_ahb_clk = {
2360 .halt_reg = 0x2d06c,
2361 .halt_check = BRANCH_HALT_VOTED,
2363 .enable_reg = 0x2d06c,
2364 .enable_mask = BIT(0),
2365 .hw.init = &(const struct clk_init_data) {
2366 .name = "gcc_qdss_cfg_ahb_clk",
2367 .parent_hws = (const struct clk_hw*[]) {
2368 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2371 .flags = CLK_SET_RATE_PARENT,
2372 .ops = &clk_branch2_ops,
2377 static struct clk_branch gcc_qdss_dap_ahb_clk = {
2378 .halt_reg = 0x2d068,
2379 .halt_check = BRANCH_HALT_VOTED,
2381 .enable_reg = 0x2d068,
2382 .enable_mask = BIT(0),
2383 .hw.init = &(const struct clk_init_data) {
2384 .name = "gcc_qdss_dap_ahb_clk",
2385 .parent_hws = (const struct clk_hw*[]) {
2386 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2389 .flags = CLK_SET_RATE_PARENT,
2390 .ops = &clk_branch2_ops,
2395 static struct clk_branch gcc_qdss_dap_clk = {
2396 .halt_reg = 0x2d05c,
2397 .halt_check = BRANCH_HALT_VOTED,
2399 .enable_reg = 0xb004,
2400 .enable_mask = BIT(2),
2401 .hw.init = &(const struct clk_init_data) {
2402 .name = "gcc_qdss_dap_clk",
2403 .parent_hws = (const struct clk_hw*[]) {
2404 &gcc_qdss_dap_div_clk_src.clkr.hw,
2407 .flags = CLK_SET_RATE_PARENT,
2408 .ops = &clk_branch2_ops,
2413 static struct clk_branch gcc_qdss_etr_usb_clk = {
2414 .halt_reg = 0x2d064,
2415 .halt_check = BRANCH_HALT_VOTED,
2417 .enable_reg = 0x2d064,
2418 .enable_mask = BIT(0),
2419 .hw.init = &(const struct clk_init_data) {
2420 .name = "gcc_qdss_etr_usb_clk",
2421 .parent_hws = (const struct clk_hw*[]) {
2422 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
2425 .flags = CLK_SET_RATE_PARENT,
2426 .ops = &clk_branch2_ops,
2431 static struct clk_fixed_factor gcc_eud_at_div_clk_src = {
2434 .hw.init = &(struct clk_init_data) {
2435 .name = "gcc_eud_at_div_clk_src",
2436 .parent_hws = (const struct clk_hw *[]) {
2437 &gcc_qdss_at_clk_src.clkr.hw },
2439 .flags = CLK_SET_RATE_PARENT,
2440 .ops = &clk_fixed_factor_ops,
2444 static struct clk_branch gcc_qdss_eud_at_clk = {
2445 .halt_reg = 0x2d070,
2446 .halt_check = BRANCH_HALT_VOTED,
2448 .enable_reg = 0x2d070,
2449 .enable_mask = BIT(0),
2450 .hw.init = &(const struct clk_init_data) {
2451 .name = "gcc_qdss_eud_at_clk",
2452 .parent_hws = (const struct clk_hw*[]) {
2453 &gcc_eud_at_div_clk_src.hw,
2456 .flags = CLK_SET_RATE_PARENT,
2457 .ops = &clk_branch2_ops,
2462 static struct clk_branch gcc_qpic_ahb_clk = {
2463 .halt_reg = 0x32010,
2464 .halt_check = BRANCH_HALT,
2466 .enable_reg = 0x32010,
2467 .enable_mask = BIT(0),
2468 .hw.init = &(const struct clk_init_data) {
2469 .name = "gcc_qpic_ahb_clk",
2470 .parent_hws = (const struct clk_hw*[]) {
2471 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2474 .flags = CLK_SET_RATE_PARENT,
2475 .ops = &clk_branch2_ops,
2480 static struct clk_branch gcc_qpic_clk = {
2481 .halt_reg = 0x32014,
2482 .halt_check = BRANCH_HALT,
2484 .enable_reg = 0x32014,
2485 .enable_mask = BIT(0),
2486 .hw.init = &(const struct clk_init_data) {
2487 .name = "gcc_qpic_clk",
2488 .parent_hws = (const struct clk_hw*[]) {
2489 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2492 .flags = CLK_SET_RATE_PARENT,
2493 .ops = &clk_branch2_ops,
2498 static struct clk_branch gcc_qpic_io_macro_clk = {
2499 .halt_reg = 0x3200c,
2500 .halt_check = BRANCH_HALT,
2502 .enable_reg = 0x3200c,
2503 .enable_mask = BIT(0),
2504 .hw.init = &(const struct clk_init_data) {
2505 .name = "gcc_qpic_io_macro_clk",
2506 .parent_hws = (const struct clk_hw*[]) {
2507 &gcc_qpic_io_macro_clk_src.clkr.hw,
2510 .flags = CLK_SET_RATE_PARENT,
2511 .ops = &clk_branch2_ops,
2516 static struct clk_branch gcc_qpic_sleep_clk = {
2517 .halt_reg = 0x3201c,
2518 .halt_check = BRANCH_HALT,
2520 .enable_reg = 0x3201c,
2521 .enable_mask = BIT(0),
2522 .hw.init = &(const struct clk_init_data) {
2523 .name = "gcc_qpic_sleep_clk",
2524 .parent_hws = (const struct clk_hw*[]) {
2525 &gcc_sleep_clk_src.clkr.hw,
2528 .flags = CLK_SET_RATE_PARENT,
2529 .ops = &clk_branch2_ops,
2534 static struct clk_branch gcc_sdcc1_ahb_clk = {
2535 .halt_reg = 0x33034,
2536 .halt_check = BRANCH_HALT,
2538 .enable_reg = 0x33034,
2539 .enable_mask = BIT(0),
2540 .hw.init = &(const struct clk_init_data) {
2541 .name = "gcc_sdcc1_ahb_clk",
2542 .parent_hws = (const struct clk_hw*[]) {
2543 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2546 .flags = CLK_SET_RATE_PARENT,
2547 .ops = &clk_branch2_ops,
2552 static struct clk_branch gcc_sdcc1_apps_clk = {
2553 .halt_reg = 0x3302c,
2554 .halt_check = BRANCH_HALT,
2556 .enable_reg = 0x3302c,
2557 .enable_mask = BIT(0),
2558 .hw.init = &(const struct clk_init_data) {
2559 .name = "gcc_sdcc1_apps_clk",
2560 .parent_hws = (const struct clk_hw*[]) {
2561 &gcc_sdcc1_apps_clk_src.clkr.hw,
2564 .flags = CLK_SET_RATE_PARENT,
2565 .ops = &clk_branch2_ops,
2570 static struct clk_branch gcc_snoc_lpass_cfg_clk = {
2571 .halt_reg = 0x2e028,
2572 .halt_check = BRANCH_HALT,
2574 .enable_reg = 0x2e028,
2575 .enable_mask = BIT(0),
2576 .hw.init = &(const struct clk_init_data) {
2577 .name = "gcc_snoc_lpass_cfg_clk",
2578 .parent_hws = (const struct clk_hw*[]) {
2579 &gcc_lpass_sway_clk_src.clkr.hw,
2582 .flags = CLK_SET_RATE_PARENT,
2583 .ops = &clk_branch2_ops,
2588 static struct clk_branch gcc_snoc_nssnoc_1_clk = {
2589 .halt_reg = 0x17090,
2590 .halt_check = BRANCH_HALT,
2592 .enable_reg = 0x17090,
2593 .enable_mask = BIT(0),
2594 .hw.init = &(const struct clk_init_data) {
2595 .name = "gcc_snoc_nssnoc_1_clk",
2596 .parent_hws = (const struct clk_hw*[]) {
2597 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
2600 .flags = CLK_SET_RATE_PARENT,
2601 .ops = &clk_branch2_ops,
2606 static struct clk_branch gcc_snoc_nssnoc_clk = {
2607 .halt_reg = 0x17084,
2608 .halt_check = BRANCH_HALT,
2610 .enable_reg = 0x17084,
2611 .enable_mask = BIT(0),
2612 .hw.init = &(const struct clk_init_data) {
2613 .name = "gcc_snoc_nssnoc_clk",
2614 .parent_hws = (const struct clk_hw*[]) {
2615 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
2618 .flags = CLK_SET_RATE_PARENT,
2619 .ops = &clk_branch2_ops,
2624 static struct clk_branch gcc_snoc_pcie3_1lane_1_m_clk = {
2625 .halt_reg = 0x2e050,
2626 .halt_check = BRANCH_HALT,
2628 .enable_reg = 0x2e050,
2629 .enable_mask = BIT(0),
2630 .hw.init = &(const struct clk_init_data) {
2631 .name = "gcc_snoc_pcie3_1lane_1_m_clk",
2632 .parent_hws = (const struct clk_hw*[]) {
2633 &gcc_pcie3x1_1_axi_clk_src.clkr.hw,
2636 .flags = CLK_SET_RATE_PARENT,
2637 .ops = &clk_branch2_ops,
2642 static struct clk_branch gcc_snoc_pcie3_1lane_1_s_clk = {
2643 .halt_reg = 0x2e0ac,
2644 .halt_check = BRANCH_HALT,
2646 .enable_reg = 0x2e0ac,
2647 .enable_mask = BIT(0),
2648 .hw.init = &(const struct clk_init_data) {
2649 .name = "gcc_snoc_pcie3_1lane_1_s_clk",
2650 .parent_hws = (const struct clk_hw*[]) {
2651 &gcc_pcie3x1_1_axi_clk_src.clkr.hw,
2654 .flags = CLK_SET_RATE_PARENT,
2655 .ops = &clk_branch2_ops,
2660 static struct clk_branch gcc_snoc_pcie3_1lane_m_clk = {
2661 .halt_reg = 0x2e080,
2662 .halt_check = BRANCH_HALT,
2664 .enable_reg = 0x2e080,
2665 .enable_mask = BIT(0),
2666 .hw.init = &(const struct clk_init_data) {
2667 .name = "gcc_snoc_pcie3_1lane_m_clk",
2668 .parent_hws = (const struct clk_hw*[]) {
2669 &gcc_pcie3x1_0_axi_clk_src.clkr.hw,
2672 .flags = CLK_SET_RATE_PARENT,
2673 .ops = &clk_branch2_ops,
2678 static struct clk_branch gcc_snoc_pcie3_1lane_s_clk = {
2679 .halt_reg = 0x2e04c,
2680 .halt_check = BRANCH_HALT,
2682 .enable_reg = 0x2e04c,
2683 .enable_mask = BIT(0),
2684 .hw.init = &(const struct clk_init_data) {
2685 .name = "gcc_snoc_pcie3_1lane_s_clk",
2686 .parent_hws = (const struct clk_hw*[]) {
2687 &gcc_pcie3x1_0_axi_clk_src.clkr.hw,
2690 .flags = CLK_SET_RATE_PARENT,
2691 .ops = &clk_branch2_ops,
2696 static struct clk_branch gcc_snoc_pcie3_2lane_m_clk = {
2697 .halt_reg = 0x2e07c,
2698 .halt_check = BRANCH_HALT,
2700 .enable_reg = 0x2e07c,
2701 .enable_mask = BIT(0),
2702 .hw.init = &(const struct clk_init_data) {
2703 .name = "gcc_snoc_pcie3_2lane_m_clk",
2704 .parent_hws = (const struct clk_hw*[]) {
2705 &gcc_pcie3x2_axi_m_clk_src.clkr.hw,
2708 .flags = CLK_SET_RATE_PARENT,
2709 .ops = &clk_branch2_ops,
2714 static struct clk_branch gcc_snoc_pcie3_2lane_s_clk = {
2715 .halt_reg = 0x2e048,
2716 .halt_check = BRANCH_HALT,
2718 .enable_reg = 0x2e048,
2719 .enable_mask = BIT(0),
2720 .hw.init = &(const struct clk_init_data) {
2721 .name = "gcc_snoc_pcie3_2lane_s_clk",
2722 .parent_hws = (const struct clk_hw*[]) {
2723 &gcc_pcie3x2_axi_s_clk_src.clkr.hw,
2726 .flags = CLK_SET_RATE_PARENT,
2727 .ops = &clk_branch2_ops,
2732 static struct clk_branch gcc_snoc_usb_clk = {
2733 .halt_reg = 0x2e058,
2734 .halt_check = BRANCH_HALT_VOTED,
2736 .enable_reg = 0x2e058,
2737 .enable_mask = BIT(0),
2738 .hw.init = &(const struct clk_init_data) {
2739 .name = "gcc_snoc_usb_clk",
2740 .parent_hws = (const struct clk_hw*[]) {
2741 &gcc_usb0_master_clk_src.clkr.hw,
2744 .flags = CLK_SET_RATE_PARENT,
2745 .ops = &clk_branch2_ops,
2750 static struct clk_branch gcc_sys_noc_at_clk = {
2751 .halt_reg = 0x2e038,
2752 .halt_check = BRANCH_HALT_VOTED,
2754 .enable_reg = 0x2e038,
2755 .enable_mask = BIT(0),
2756 .hw.init = &(const struct clk_init_data) {
2757 .name = "gcc_sys_noc_at_clk",
2758 .parent_hws = (const struct clk_hw*[]) {
2759 &gcc_qdss_at_clk_src.clkr.hw,
2762 .flags = CLK_SET_RATE_PARENT,
2763 .ops = &clk_branch2_ops,
2768 static struct clk_branch gcc_sys_noc_wcss_ahb_clk = {
2769 .halt_reg = 0x2e030,
2770 .halt_check = BRANCH_HALT,
2772 .enable_reg = 0x2e030,
2773 .enable_mask = BIT(0),
2774 .hw.init = &(const struct clk_init_data) {
2775 .name = "gcc_sys_noc_wcss_ahb_clk",
2776 .parent_hws = (const struct clk_hw*[]) {
2777 &gcc_wcss_ahb_clk_src.clkr.hw,
2780 .flags = CLK_SET_RATE_PARENT,
2781 .ops = &clk_branch2_ops,
2786 static struct clk_branch gcc_uniphy0_ahb_clk = {
2787 .halt_reg = 0x16010,
2788 .halt_check = BRANCH_HALT,
2790 .enable_reg = 0x16010,
2791 .enable_mask = BIT(0),
2792 .hw.init = &(const struct clk_init_data) {
2793 .name = "gcc_uniphy0_ahb_clk",
2794 .parent_hws = (const struct clk_hw*[]) {
2795 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2798 .flags = CLK_SET_RATE_PARENT,
2799 .ops = &clk_branch2_ops,
2804 static struct clk_branch gcc_uniphy0_sys_clk = {
2805 .halt_reg = 0x1600c,
2806 .halt_check = BRANCH_HALT,
2808 .enable_reg = 0x1600c,
2809 .enable_mask = BIT(0),
2810 .hw.init = &(const struct clk_init_data) {
2811 .name = "gcc_uniphy0_sys_clk",
2812 .parent_hws = (const struct clk_hw*[]) {
2813 &gcc_uniphy_sys_clk_src.clkr.hw,
2816 .flags = CLK_SET_RATE_PARENT,
2817 .ops = &clk_branch2_ops,
2822 static struct clk_branch gcc_uniphy1_ahb_clk = {
2823 .halt_reg = 0x1601c,
2824 .halt_check = BRANCH_HALT,
2826 .enable_reg = 0x1601c,
2827 .enable_mask = BIT(0),
2828 .hw.init = &(const struct clk_init_data) {
2829 .name = "gcc_uniphy1_ahb_clk",
2830 .parent_hws = (const struct clk_hw*[]) {
2831 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2834 .flags = CLK_SET_RATE_PARENT,
2835 .ops = &clk_branch2_ops,
2840 static struct clk_branch gcc_uniphy1_sys_clk = {
2841 .halt_reg = 0x16018,
2842 .halt_check = BRANCH_HALT,
2844 .enable_reg = 0x16018,
2845 .enable_mask = BIT(0),
2846 .hw.init = &(const struct clk_init_data) {
2847 .name = "gcc_uniphy1_sys_clk",
2848 .parent_hws = (const struct clk_hw*[]) {
2849 &gcc_uniphy_sys_clk_src.clkr.hw,
2852 .flags = CLK_SET_RATE_PARENT,
2853 .ops = &clk_branch2_ops,
2858 static struct clk_branch gcc_usb0_aux_clk = {
2859 .halt_reg = 0x2c050,
2860 .halt_check = BRANCH_HALT_VOTED,
2862 .enable_reg = 0x2c050,
2863 .enable_mask = BIT(0),
2864 .hw.init = &(const struct clk_init_data) {
2865 .name = "gcc_usb0_aux_clk",
2866 .parent_hws = (const struct clk_hw*[]) {
2867 &gcc_usb0_aux_clk_src.clkr.hw,
2870 .flags = CLK_SET_RATE_PARENT,
2871 .ops = &clk_branch2_ops,
2876 static struct clk_branch gcc_usb0_eud_at_clk = {
2877 .halt_reg = 0x30004,
2878 .halt_check = BRANCH_HALT_VOTED,
2880 .enable_reg = 0x30004,
2881 .enable_mask = BIT(0),
2882 .hw.init = &(const struct clk_init_data) {
2883 .name = "gcc_usb0_eud_at_clk",
2884 .parent_hws = (const struct clk_hw*[]) {
2885 &gcc_eud_at_div_clk_src.hw,
2888 .flags = CLK_SET_RATE_PARENT,
2889 .ops = &clk_branch2_ops,
2894 static struct clk_branch gcc_usb0_lfps_clk = {
2895 .halt_reg = 0x2c090,
2896 .halt_check = BRANCH_HALT_VOTED,
2898 .enable_reg = 0x2c090,
2899 .enable_mask = BIT(0),
2900 .hw.init = &(const struct clk_init_data) {
2901 .name = "gcc_usb0_lfps_clk",
2902 .parent_hws = (const struct clk_hw*[]) {
2903 &gcc_usb0_lfps_clk_src.clkr.hw,
2906 .flags = CLK_SET_RATE_PARENT,
2907 .ops = &clk_branch2_ops,
2912 static struct clk_branch gcc_usb0_master_clk = {
2913 .halt_reg = 0x2c048,
2914 .halt_check = BRANCH_HALT_VOTED,
2916 .enable_reg = 0x2c048,
2917 .enable_mask = BIT(0),
2918 .hw.init = &(const struct clk_init_data) {
2919 .name = "gcc_usb0_master_clk",
2920 .parent_hws = (const struct clk_hw*[]) {
2921 &gcc_usb0_master_clk_src.clkr.hw,
2924 .flags = CLK_SET_RATE_PARENT,
2925 .ops = &clk_branch2_ops,
2930 static struct clk_branch gcc_usb0_mock_utmi_clk = {
2931 .halt_reg = 0x2c054,
2933 .enable_reg = 0x2c054,
2934 .enable_mask = BIT(0),
2935 .hw.init = &(const struct clk_init_data) {
2936 .name = "gcc_usb0_mock_utmi_clk",
2937 .parent_hws = (const struct clk_hw*[]) {
2938 &gcc_usb0_mock_utmi_div_clk_src.clkr.hw,
2941 .flags = CLK_SET_RATE_PARENT,
2942 .ops = &clk_branch2_ops,
2947 static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
2948 .halt_reg = 0x2c05c,
2949 .halt_check = BRANCH_HALT_VOTED,
2951 .enable_reg = 0x2c05c,
2952 .enable_mask = BIT(0),
2953 .hw.init = &(const struct clk_init_data) {
2954 .name = "gcc_usb0_phy_cfg_ahb_clk",
2955 .parent_hws = (const struct clk_hw*[]) {
2956 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2959 .flags = CLK_SET_RATE_PARENT,
2960 .ops = &clk_branch2_ops,
2965 static struct clk_branch gcc_usb0_pipe_clk = {
2966 .halt_reg = 0x2c078,
2967 .halt_check = BRANCH_HALT_DELAY,
2969 .enable_reg = 0x2c078,
2970 .enable_mask = BIT(0),
2971 .hw.init = &(const struct clk_init_data) {
2972 .name = "gcc_usb0_pipe_clk",
2973 .parent_hws = (const struct clk_hw*[]) {
2974 &gcc_usb0_pipe_clk_src.clkr.hw,
2977 .flags = CLK_SET_RATE_PARENT,
2978 .ops = &clk_branch2_ops,
2983 static struct clk_branch gcc_usb0_sleep_clk = {
2984 .halt_reg = 0x2c058,
2985 .halt_check = BRANCH_HALT_VOTED,
2987 .enable_reg = 0x2c058,
2988 .enable_mask = BIT(0),
2989 .hw.init = &(const struct clk_init_data) {
2990 .name = "gcc_usb0_sleep_clk",
2991 .parent_hws = (const struct clk_hw*[]) {
2992 &gcc_sleep_clk_src.clkr.hw,
2995 .flags = CLK_SET_RATE_PARENT,
2996 .ops = &clk_branch2_ops,
3001 static struct clk_branch gcc_wcss_axim_clk = {
3002 .halt_reg = 0x2505c,
3003 .halt_check = BRANCH_HALT,
3005 .enable_reg = 0x2505c,
3006 .enable_mask = BIT(0),
3007 .hw.init = &(const struct clk_init_data) {
3008 .name = "gcc_wcss_axim_clk",
3009 .parent_hws = (const struct clk_hw*[]) {
3010 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
3013 .flags = CLK_SET_RATE_PARENT,
3014 .ops = &clk_branch2_ops,
3019 static struct clk_branch gcc_wcss_axis_clk = {
3020 .halt_reg = 0x25060,
3021 .halt_check = BRANCH_HALT,
3023 .enable_reg = 0x25060,
3024 .enable_mask = BIT(0),
3025 .hw.init = &(const struct clk_init_data) {
3026 .name = "gcc_wcss_axis_clk",
3027 .parent_hws = (const struct clk_hw*[]) {
3028 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
3031 .flags = CLK_SET_RATE_PARENT,
3032 .ops = &clk_branch2_ops,
3037 static struct clk_branch gcc_wcss_dbg_ifc_apb_bdg_clk = {
3038 .halt_reg = 0x25048,
3039 .halt_check = BRANCH_HALT,
3041 .enable_reg = 0x25048,
3042 .enable_mask = BIT(0),
3043 .hw.init = &(const struct clk_init_data) {
3044 .name = "gcc_wcss_dbg_ifc_apb_bdg_clk",
3045 .parent_hws = (const struct clk_hw*[]) {
3046 &gcc_qdss_dap_div_clk_src.clkr.hw,
3049 .flags = CLK_SET_RATE_PARENT,
3050 .ops = &clk_branch2_ops,
3055 static struct clk_branch gcc_wcss_dbg_ifc_apb_clk = {
3056 .halt_reg = 0x25038,
3057 .halt_check = BRANCH_HALT,
3059 .enable_reg = 0x25038,
3060 .enable_mask = BIT(0),
3061 .hw.init = &(const struct clk_init_data) {
3062 .name = "gcc_wcss_dbg_ifc_apb_clk",
3063 .parent_hws = (const struct clk_hw*[]) {
3064 &gcc_qdss_dap_div_clk_src.clkr.hw,
3067 .flags = CLK_SET_RATE_PARENT,
3068 .ops = &clk_branch2_ops,
3073 static struct clk_branch gcc_wcss_dbg_ifc_atb_bdg_clk = {
3074 .halt_reg = 0x2504c,
3075 .halt_check = BRANCH_HALT,
3077 .enable_reg = 0x2504c,
3078 .enable_mask = BIT(0),
3079 .hw.init = &(const struct clk_init_data) {
3080 .name = "gcc_wcss_dbg_ifc_atb_bdg_clk",
3081 .parent_hws = (const struct clk_hw*[]) {
3082 &gcc_qdss_at_clk_src.clkr.hw,
3085 .flags = CLK_SET_RATE_PARENT,
3086 .ops = &clk_branch2_ops,
3091 static struct clk_branch gcc_wcss_dbg_ifc_atb_clk = {
3092 .halt_reg = 0x2503c,
3093 .halt_check = BRANCH_HALT,
3095 .enable_reg = 0x2503c,
3096 .enable_mask = BIT(0),
3097 .hw.init = &(const struct clk_init_data) {
3098 .name = "gcc_wcss_dbg_ifc_atb_clk",
3099 .parent_hws = (const struct clk_hw*[]) {
3100 &gcc_qdss_at_clk_src.clkr.hw,
3103 .flags = CLK_SET_RATE_PARENT,
3104 .ops = &clk_branch2_ops,
3109 static struct clk_branch gcc_wcss_dbg_ifc_nts_bdg_clk = {
3110 .halt_reg = 0x25050,
3111 .halt_check = BRANCH_HALT,
3113 .enable_reg = 0x25050,
3114 .enable_mask = BIT(0),
3115 .hw.init = &(const struct clk_init_data) {
3116 .name = "gcc_wcss_dbg_ifc_nts_bdg_clk",
3117 .parent_hws = (const struct clk_hw*[]) {
3118 &gcc_qdss_tsctr_div2_clk_src.hw,
3121 .flags = CLK_SET_RATE_PARENT,
3122 .ops = &clk_branch2_ops,
3127 static struct clk_branch gcc_wcss_dbg_ifc_nts_clk = {
3128 .halt_reg = 0x25040,
3129 .halt_check = BRANCH_HALT,
3131 .enable_reg = 0x25040,
3132 .enable_mask = BIT(0),
3133 .hw.init = &(const struct clk_init_data) {
3134 .name = "gcc_wcss_dbg_ifc_nts_clk",
3135 .parent_hws = (const struct clk_hw*[]) {
3136 &gcc_qdss_tsctr_div2_clk_src.hw,
3139 .flags = CLK_SET_RATE_PARENT,
3140 .ops = &clk_branch2_ops,
3145 static struct clk_branch gcc_wcss_ecahb_clk = {
3146 .halt_reg = 0x25058,
3147 .halt_check = BRANCH_HALT,
3149 .enable_reg = 0x25058,
3150 .enable_mask = BIT(0),
3151 .hw.init = &(const struct clk_init_data) {
3152 .name = "gcc_wcss_ecahb_clk",
3153 .parent_hws = (const struct clk_hw*[]) {
3154 &gcc_wcss_ahb_clk_src.clkr.hw,
3157 .flags = CLK_SET_RATE_PARENT,
3158 .ops = &clk_branch2_ops,
3163 static struct clk_branch gcc_wcss_mst_async_bdg_clk = {
3164 .halt_reg = 0x2e0b0,
3165 .halt_check = BRANCH_HALT,
3167 .enable_reg = 0x2e0b0,
3168 .enable_mask = BIT(0),
3169 .hw.init = &(const struct clk_init_data) {
3170 .name = "gcc_wcss_mst_async_bdg_clk",
3171 .parent_hws = (const struct clk_hw*[]) {
3172 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
3175 .flags = CLK_SET_RATE_PARENT,
3176 .ops = &clk_branch2_ops,
3181 static struct clk_branch gcc_wcss_slv_async_bdg_clk = {
3182 .halt_reg = 0x2e0b4,
3183 .halt_check = BRANCH_HALT,
3185 .enable_reg = 0x2e0b4,
3186 .enable_mask = BIT(0),
3187 .hw.init = &(const struct clk_init_data) {
3188 .name = "gcc_wcss_slv_async_bdg_clk",
3189 .parent_hws = (const struct clk_hw*[]) {
3190 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
3193 .flags = CLK_SET_RATE_PARENT,
3194 .ops = &clk_branch2_ops,
3199 static struct clk_branch gcc_xo_clk = {
3200 .halt_reg = 0x34018,
3201 .halt_check = BRANCH_HALT,
3203 .enable_reg = 0x34018,
3204 .enable_mask = BIT(0),
3205 .hw.init = &(const struct clk_init_data) {
3206 .name = "gcc_xo_clk",
3207 .parent_hws = (const struct clk_hw*[]) {
3208 &gcc_xo_clk_src.clkr.hw,
3211 .flags = CLK_SET_RATE_PARENT,
3212 .ops = &clk_branch2_ops,
3217 static struct clk_branch gcc_xo_div4_clk = {
3218 .halt_reg = 0x3401c,
3219 .halt_check = BRANCH_HALT,
3221 .enable_reg = 0x3401c,
3222 .enable_mask = BIT(0),
3223 .hw.init = &(const struct clk_init_data) {
3224 .name = "gcc_xo_div4_clk",
3225 .parent_hws = (const struct clk_hw*[]) {
3226 &gcc_xo_div4_clk_src.hw,
3229 .flags = CLK_SET_RATE_PARENT,
3230 .ops = &clk_branch2_ops,
3235 static struct clk_branch gcc_im_sleep_clk = {
3236 .halt_reg = 0x34020,
3237 .halt_check = BRANCH_HALT,
3239 .enable_reg = 0x34020,
3240 .enable_mask = BIT(0),
3241 .hw.init = &(const struct clk_init_data) {
3242 .name = "gcc_im_sleep_clk",
3243 .parent_hws = (const struct clk_hw*[]) {
3244 &gcc_sleep_clk_src.clkr.hw,
3247 .flags = CLK_SET_RATE_PARENT,
3248 .ops = &clk_branch2_ops,
3253 static struct clk_branch gcc_nssnoc_pcnoc_1_clk = {
3254 .halt_reg = 0x17080,
3255 .halt_check = BRANCH_HALT,
3257 .enable_reg = 0x17080,
3258 .enable_mask = BIT(0),
3259 .hw.init = &(const struct clk_init_data) {
3260 .name = "gcc_nssnoc_pcnoc_1_clk",
3261 .parent_hws = (const struct clk_hw*[]) {
3262 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
3265 .flags = CLK_SET_RATE_PARENT,
3266 .ops = &clk_branch2_ops,
3271 static struct clk_regmap_div gcc_snoc_qosgen_extref_div_clk_src = {
3275 .clkr.hw.init = &(const struct clk_init_data) {
3276 .name = "gcc_snoc_qosgen_extref_div_clk_src",
3277 .parent_hws = (const struct clk_hw*[]) {
3278 &gcc_xo_clk_src.clkr.hw,
3281 .flags = CLK_SET_RATE_PARENT,
3282 .ops = &clk_regmap_div_ro_ops,
3286 static struct clk_regmap *gcc_ipq5332_clocks[] = {
3287 [GPLL0_MAIN] = &gpll0_main.clkr,
3288 [GPLL0] = &gpll0.clkr,
3289 [GPLL2_MAIN] = &gpll2_main.clkr,
3290 [GPLL2] = &gpll2.clkr,
3291 [GPLL4_MAIN] = &gpll4_main.clkr,
3292 [GPLL4] = &gpll4.clkr,
3293 [GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,
3294 [GCC_ADSS_PWM_CLK_SRC] = &gcc_adss_pwm_clk_src.clkr,
3295 [GCC_AHB_CLK] = &gcc_ahb_clk.clkr,
3296 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
3297 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
3298 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
3299 [GCC_BLSP1_QUP1_SPI_APPS_CLK_SRC] = &gcc_blsp1_qup1_spi_apps_clk_src.clkr,
3300 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
3301 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
3302 [GCC_BLSP1_QUP2_SPI_APPS_CLK_SRC] = &gcc_blsp1_qup2_spi_apps_clk_src.clkr,
3303 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
3304 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
3305 [GCC_BLSP1_QUP3_SPI_APPS_CLK_SRC] = &gcc_blsp1_qup3_spi_apps_clk_src.clkr,
3306 [GCC_BLSP1_SLEEP_CLK] = &gcc_blsp1_sleep_clk.clkr,
3307 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
3308 [GCC_BLSP1_UART1_APPS_CLK_SRC] = &gcc_blsp1_uart1_apps_clk_src.clkr,
3309 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
3310 [GCC_BLSP1_UART2_APPS_CLK_SRC] = &gcc_blsp1_uart2_apps_clk_src.clkr,
3311 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
3312 [GCC_BLSP1_UART3_APPS_CLK_SRC] = &gcc_blsp1_uart3_apps_clk_src.clkr,
3313 [GCC_CE_AHB_CLK] = &gcc_ce_ahb_clk.clkr,
3314 [GCC_CE_AXI_CLK] = &gcc_ce_axi_clk.clkr,
3315 [GCC_CE_PCNOC_AHB_CLK] = &gcc_ce_pcnoc_ahb_clk.clkr,
3316 [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
3317 [GCC_CMN_12GPLL_APU_CLK] = &gcc_cmn_12gpll_apu_clk.clkr,
3318 [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
3319 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3320 [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3321 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3322 [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3323 [GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr,
3324 [GCC_LPASS_SWAY_CLK] = &gcc_lpass_sway_clk.clkr,
3325 [GCC_LPASS_SWAY_CLK_SRC] = &gcc_lpass_sway_clk_src.clkr,
3326 [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
3327 [GCC_MDIO_SLAVE_AHB_CLK] = &gcc_mdio_slave_ahb_clk.clkr,
3328 [GCC_NSS_TS_CLK] = &gcc_nss_ts_clk.clkr,
3329 [GCC_NSS_TS_CLK_SRC] = &gcc_nss_ts_clk_src.clkr,
3330 [GCC_NSSCC_CLK] = &gcc_nsscc_clk.clkr,
3331 [GCC_NSSCFG_CLK] = &gcc_nsscfg_clk.clkr,
3332 [GCC_NSSNOC_ATB_CLK] = &gcc_nssnoc_atb_clk.clkr,
3333 [GCC_NSSNOC_NSSCC_CLK] = &gcc_nssnoc_nsscc_clk.clkr,
3334 [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
3335 [GCC_NSSNOC_SNOC_1_CLK] = &gcc_nssnoc_snoc_1_clk.clkr,
3336 [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
3337 [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
3338 [GCC_NSSNOC_XO_DCD_CLK] = &gcc_nssnoc_xo_dcd_clk.clkr,
3339 [GCC_PCIE3X1_0_AHB_CLK] = &gcc_pcie3x1_0_ahb_clk.clkr,
3340 [GCC_PCIE3X1_0_AUX_CLK] = &gcc_pcie3x1_0_aux_clk.clkr,
3341 [GCC_PCIE3X1_0_AXI_CLK_SRC] = &gcc_pcie3x1_0_axi_clk_src.clkr,
3342 [GCC_PCIE3X1_0_AXI_M_CLK] = &gcc_pcie3x1_0_axi_m_clk.clkr,
3343 [GCC_PCIE3X1_0_AXI_S_BRIDGE_CLK] = &gcc_pcie3x1_0_axi_s_bridge_clk.clkr,
3344 [GCC_PCIE3X1_0_AXI_S_CLK] = &gcc_pcie3x1_0_axi_s_clk.clkr,
3345 [GCC_PCIE3X1_0_PIPE_CLK] = &gcc_pcie3x1_0_pipe_clk.clkr,
3346 [GCC_PCIE3X1_0_RCHG_CLK] = &gcc_pcie3x1_0_rchg_clk.clkr,
3347 [GCC_PCIE3X1_0_RCHG_CLK_SRC] = &gcc_pcie3x1_0_rchg_clk_src.clkr,
3348 [GCC_PCIE3X1_1_AHB_CLK] = &gcc_pcie3x1_1_ahb_clk.clkr,
3349 [GCC_PCIE3X1_1_AUX_CLK] = &gcc_pcie3x1_1_aux_clk.clkr,
3350 [GCC_PCIE3X1_1_AXI_CLK_SRC] = &gcc_pcie3x1_1_axi_clk_src.clkr,
3351 [GCC_PCIE3X1_1_AXI_M_CLK] = &gcc_pcie3x1_1_axi_m_clk.clkr,
3352 [GCC_PCIE3X1_1_AXI_S_BRIDGE_CLK] = &gcc_pcie3x1_1_axi_s_bridge_clk.clkr,
3353 [GCC_PCIE3X1_1_AXI_S_CLK] = &gcc_pcie3x1_1_axi_s_clk.clkr,
3354 [GCC_PCIE3X1_1_PIPE_CLK] = &gcc_pcie3x1_1_pipe_clk.clkr,
3355 [GCC_PCIE3X1_1_RCHG_CLK] = &gcc_pcie3x1_1_rchg_clk.clkr,
3356 [GCC_PCIE3X1_1_RCHG_CLK_SRC] = &gcc_pcie3x1_1_rchg_clk_src.clkr,
3357 [GCC_PCIE3X1_PHY_AHB_CLK] = &gcc_pcie3x1_phy_ahb_clk.clkr,
3358 [GCC_PCIE3X2_AHB_CLK] = &gcc_pcie3x2_ahb_clk.clkr,
3359 [GCC_PCIE3X2_AUX_CLK] = &gcc_pcie3x2_aux_clk.clkr,
3360 [GCC_PCIE3X2_AXI_M_CLK] = &gcc_pcie3x2_axi_m_clk.clkr,
3361 [GCC_PCIE3X2_AXI_M_CLK_SRC] = &gcc_pcie3x2_axi_m_clk_src.clkr,
3362 [GCC_PCIE3X2_AXI_S_BRIDGE_CLK] = &gcc_pcie3x2_axi_s_bridge_clk.clkr,
3363 [GCC_PCIE3X2_AXI_S_CLK] = &gcc_pcie3x2_axi_s_clk.clkr,
3364 [GCC_PCIE3X2_AXI_S_CLK_SRC] = &gcc_pcie3x2_axi_s_clk_src.clkr,
3365 [GCC_PCIE3X2_PHY_AHB_CLK] = &gcc_pcie3x2_phy_ahb_clk.clkr,
3366 [GCC_PCIE3X2_PIPE_CLK] = &gcc_pcie3x2_pipe_clk.clkr,
3367 [GCC_PCIE3X2_RCHG_CLK] = &gcc_pcie3x2_rchg_clk.clkr,
3368 [GCC_PCIE3X2_RCHG_CLK_SRC] = &gcc_pcie3x2_rchg_clk_src.clkr,
3369 [GCC_PCIE_AUX_CLK_SRC] = &gcc_pcie_aux_clk_src.clkr,
3370 [GCC_PCNOC_AT_CLK] = &gcc_pcnoc_at_clk.clkr,
3371 [GCC_PCNOC_BFDCD_CLK_SRC] = &gcc_pcnoc_bfdcd_clk_src.clkr,
3372 [GCC_PCNOC_LPASS_CLK] = &gcc_pcnoc_lpass_clk.clkr,
3373 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3374 [GCC_Q6_AHB_CLK] = &gcc_q6_ahb_clk.clkr,
3375 [GCC_Q6_AHB_S_CLK] = &gcc_q6_ahb_s_clk.clkr,
3376 [GCC_Q6_AXIM_CLK] = &gcc_q6_axim_clk.clkr,
3377 [GCC_Q6_AXIM_CLK_SRC] = &gcc_q6_axim_clk_src.clkr,
3378 [GCC_Q6_AXIS_CLK] = &gcc_q6_axis_clk.clkr,
3379 [GCC_Q6_TSCTR_1TO2_CLK] = &gcc_q6_tsctr_1to2_clk.clkr,
3380 [GCC_Q6SS_ATBM_CLK] = &gcc_q6ss_atbm_clk.clkr,
3381 [GCC_Q6SS_PCLKDBG_CLK] = &gcc_q6ss_pclkdbg_clk.clkr,
3382 [GCC_Q6SS_TRIG_CLK] = &gcc_q6ss_trig_clk.clkr,
3383 [GCC_QDSS_AT_CLK] = &gcc_qdss_at_clk.clkr,
3384 [GCC_QDSS_AT_CLK_SRC] = &gcc_qdss_at_clk_src.clkr,
3385 [GCC_QDSS_CFG_AHB_CLK] = &gcc_qdss_cfg_ahb_clk.clkr,
3386 [GCC_QDSS_DAP_AHB_CLK] = &gcc_qdss_dap_ahb_clk.clkr,
3387 [GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
3388 [GCC_QDSS_DAP_DIV_CLK_SRC] = &gcc_qdss_dap_div_clk_src.clkr,
3389 [GCC_QDSS_ETR_USB_CLK] = &gcc_qdss_etr_usb_clk.clkr,
3390 [GCC_QDSS_EUD_AT_CLK] = &gcc_qdss_eud_at_clk.clkr,
3391 [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
3392 [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
3393 [GCC_QPIC_IO_MACRO_CLK] = &gcc_qpic_io_macro_clk.clkr,
3394 [GCC_QPIC_IO_MACRO_CLK_SRC] = &gcc_qpic_io_macro_clk_src.clkr,
3395 [GCC_QPIC_SLEEP_CLK] = &gcc_qpic_sleep_clk.clkr,
3396 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
3397 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
3398 [GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
3399 [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
3400 [GCC_SNOC_LPASS_CFG_CLK] = &gcc_snoc_lpass_cfg_clk.clkr,
3401 [GCC_SNOC_NSSNOC_1_CLK] = &gcc_snoc_nssnoc_1_clk.clkr,
3402 [GCC_SNOC_NSSNOC_CLK] = &gcc_snoc_nssnoc_clk.clkr,
3403 [GCC_SNOC_PCIE3_1LANE_1_M_CLK] = &gcc_snoc_pcie3_1lane_1_m_clk.clkr,
3404 [GCC_SNOC_PCIE3_1LANE_1_S_CLK] = &gcc_snoc_pcie3_1lane_1_s_clk.clkr,
3405 [GCC_SNOC_PCIE3_1LANE_M_CLK] = &gcc_snoc_pcie3_1lane_m_clk.clkr,
3406 [GCC_SNOC_PCIE3_1LANE_S_CLK] = &gcc_snoc_pcie3_1lane_s_clk.clkr,
3407 [GCC_SNOC_PCIE3_2LANE_M_CLK] = &gcc_snoc_pcie3_2lane_m_clk.clkr,
3408 [GCC_SNOC_PCIE3_2LANE_S_CLK] = &gcc_snoc_pcie3_2lane_s_clk.clkr,
3409 [GCC_SNOC_USB_CLK] = &gcc_snoc_usb_clk.clkr,
3410 [GCC_SYS_NOC_AT_CLK] = &gcc_sys_noc_at_clk.clkr,
3411 [GCC_SYS_NOC_WCSS_AHB_CLK] = &gcc_sys_noc_wcss_ahb_clk.clkr,
3412 [GCC_SYSTEM_NOC_BFDCD_CLK_SRC] = &gcc_system_noc_bfdcd_clk_src.clkr,
3413 [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
3414 [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
3415 [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
3416 [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
3417 [GCC_UNIPHY_SYS_CLK_SRC] = &gcc_uniphy_sys_clk_src.clkr,
3418 [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
3419 [GCC_USB0_AUX_CLK_SRC] = &gcc_usb0_aux_clk_src.clkr,
3420 [GCC_USB0_EUD_AT_CLK] = &gcc_usb0_eud_at_clk.clkr,
3421 [GCC_USB0_LFPS_CLK] = &gcc_usb0_lfps_clk.clkr,
3422 [GCC_USB0_LFPS_CLK_SRC] = &gcc_usb0_lfps_clk_src.clkr,
3423 [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
3424 [GCC_USB0_MASTER_CLK_SRC] = &gcc_usb0_master_clk_src.clkr,
3425 [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
3426 [GCC_USB0_MOCK_UTMI_CLK_SRC] = &gcc_usb0_mock_utmi_clk_src.clkr,
3427 [GCC_USB0_MOCK_UTMI_DIV_CLK_SRC] = &gcc_usb0_mock_utmi_div_clk_src.clkr,
3428 [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
3429 [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
3430 [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
3431 [GCC_WCSS_AHB_CLK_SRC] = &gcc_wcss_ahb_clk_src.clkr,
3432 [GCC_WCSS_AXIM_CLK] = &gcc_wcss_axim_clk.clkr,
3433 [GCC_WCSS_AXIS_CLK] = &gcc_wcss_axis_clk.clkr,
3434 [GCC_WCSS_DBG_IFC_APB_BDG_CLK] = &gcc_wcss_dbg_ifc_apb_bdg_clk.clkr,
3435 [GCC_WCSS_DBG_IFC_APB_CLK] = &gcc_wcss_dbg_ifc_apb_clk.clkr,
3436 [GCC_WCSS_DBG_IFC_ATB_BDG_CLK] = &gcc_wcss_dbg_ifc_atb_bdg_clk.clkr,
3437 [GCC_WCSS_DBG_IFC_ATB_CLK] = &gcc_wcss_dbg_ifc_atb_clk.clkr,
3438 [GCC_WCSS_DBG_IFC_NTS_BDG_CLK] = &gcc_wcss_dbg_ifc_nts_bdg_clk.clkr,
3439 [GCC_WCSS_DBG_IFC_NTS_CLK] = &gcc_wcss_dbg_ifc_nts_clk.clkr,
3440 [GCC_WCSS_ECAHB_CLK] = &gcc_wcss_ecahb_clk.clkr,
3441 [GCC_WCSS_MST_ASYNC_BDG_CLK] = &gcc_wcss_mst_async_bdg_clk.clkr,
3442 [GCC_WCSS_SLV_ASYNC_BDG_CLK] = &gcc_wcss_slv_async_bdg_clk.clkr,
3443 [GCC_XO_CLK] = &gcc_xo_clk.clkr,
3444 [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
3445 [GCC_XO_DIV4_CLK] = &gcc_xo_div4_clk.clkr,
3446 [GCC_IM_SLEEP_CLK] = &gcc_im_sleep_clk.clkr,
3447 [GCC_NSSNOC_PCNOC_1_CLK] = &gcc_nssnoc_pcnoc_1_clk.clkr,
3448 [GCC_SNOC_QOSGEN_EXTREF_DIV_CLK_SRC] = &gcc_snoc_qosgen_extref_div_clk_src.clkr,
3449 [GCC_PCIE3X2_PIPE_CLK_SRC] = &gcc_pcie3x2_pipe_clk_src.clkr,
3450 [GCC_PCIE3X1_0_PIPE_CLK_SRC] = &gcc_pcie3x1_0_pipe_clk_src.clkr,
3451 [GCC_PCIE3X1_1_PIPE_CLK_SRC] = &gcc_pcie3x1_1_pipe_clk_src.clkr,
3452 [GCC_USB0_PIPE_CLK_SRC] = &gcc_usb0_pipe_clk_src.clkr,
3455 static const struct qcom_reset_map gcc_ipq5332_resets[] = {
3456 [GCC_ADSS_BCR] = { 0x1c000 },
3457 [GCC_ADSS_PWM_CLK_ARES] = { 0x1c00c, 2 },
3458 [GCC_AHB_CLK_ARES] = { 0x34024, 2 },
3459 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x38000 },
3460 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_GPLL0_CLK_ARES] = { 0x3800c, 2 },
3461 [GCC_APSS_AHB_CLK_ARES] = { 0x24018, 2 },
3462 [GCC_APSS_AXI_CLK_ARES] = { 0x2401c, 2 },
3463 [GCC_BLSP1_AHB_CLK_ARES] = { 0x1008, 2 },
3464 [GCC_BLSP1_BCR] = { 0x1000 },
3465 [GCC_BLSP1_QUP1_BCR] = { 0x2000 },
3466 [GCC_BLSP1_QUP1_I2C_APPS_CLK_ARES] = { 0x2024, 2 },
3467 [GCC_BLSP1_QUP1_SPI_APPS_CLK_ARES] = { 0x2020, 2 },
3468 [GCC_BLSP1_QUP2_BCR] = { 0x3000 },
3469 [GCC_BLSP1_QUP2_I2C_APPS_CLK_ARES] = { 0x3024, 2 },
3470 [GCC_BLSP1_QUP2_SPI_APPS_CLK_ARES] = { 0x3020, 2 },
3471 [GCC_BLSP1_QUP3_BCR] = { 0x4000 },
3472 [GCC_BLSP1_QUP3_I2C_APPS_CLK_ARES] = { 0x4024, 2 },
3473 [GCC_BLSP1_QUP3_SPI_APPS_CLK_ARES] = { 0x4020, 2 },
3474 [GCC_BLSP1_SLEEP_CLK_ARES] = { 0x1010, 2 },
3475 [GCC_BLSP1_UART1_APPS_CLK_ARES] = { 0x2040, 2 },
3476 [GCC_BLSP1_UART1_BCR] = { 0x2028 },
3477 [GCC_BLSP1_UART2_APPS_CLK_ARES] = { 0x3040, 2 },
3478 [GCC_BLSP1_UART2_BCR] = { 0x3028 },
3479 [GCC_BLSP1_UART3_APPS_CLK_ARES] = { 0x4054, 2 },
3480 [GCC_BLSP1_UART3_BCR] = { 0x4028 },
3481 [GCC_CE_BCR] = { 0x18008 },
3482 [GCC_CMN_BLK_BCR] = { 0x3a000 },
3483 [GCC_CMN_LDO0_BCR] = { 0x1d000 },
3484 [GCC_CMN_LDO1_BCR] = { 0x1d008 },
3485 [GCC_DCC_BCR] = { 0x35000 },
3486 [GCC_GP1_CLK_ARES] = { 0x8018, 2 },
3487 [GCC_GP2_CLK_ARES] = { 0x9018, 2 },
3488 [GCC_LPASS_BCR] = { 0x27000 },
3489 [GCC_LPASS_CORE_AXIM_CLK_ARES] = { 0x27018, 2 },
3490 [GCC_LPASS_SWAY_CLK_ARES] = { 0x27014, 2 },
3491 [GCC_MDIOM_BCR] = { 0x12000 },
3492 [GCC_MDIOS_BCR] = { 0x12008 },
3493 [GCC_NSS_BCR] = { 0x17000 },
3494 [GCC_NSS_TS_CLK_ARES] = { 0x17018, 2 },
3495 [GCC_NSSCC_CLK_ARES] = { 0x17034, 2 },
3496 [GCC_NSSCFG_CLK_ARES] = { 0x1702c, 2 },
3497 [GCC_NSSNOC_ATB_CLK_ARES] = { 0x17014, 2 },
3498 [GCC_NSSNOC_NSSCC_CLK_ARES] = { 0x17030, 2 },
3499 [GCC_NSSNOC_QOSGEN_REF_CLK_ARES] = { 0x1701c, 2 },
3500 [GCC_NSSNOC_SNOC_1_CLK_ARES] = { 0x1707c, 2 },
3501 [GCC_NSSNOC_SNOC_CLK_ARES] = { 0x17028, 2 },
3502 [GCC_NSSNOC_TIMEOUT_REF_CLK_ARES] = { 0x17020, 2 },
3503 [GCC_NSSNOC_XO_DCD_CLK_ARES] = { 0x17074, 2 },
3504 [GCC_PCIE3X1_0_AHB_CLK_ARES] = { 0x29030, 2 },
3505 [GCC_PCIE3X1_0_AUX_CLK_ARES] = { 0x29070, 2 },
3506 [GCC_PCIE3X1_0_AXI_M_CLK_ARES] = { 0x29038, 2 },
3507 [GCC_PCIE3X1_0_AXI_S_BRIDGE_CLK_ARES] = { 0x29048, 2 },
3508 [GCC_PCIE3X1_0_AXI_S_CLK_ARES] = { 0x29040, 2 },
3509 [GCC_PCIE3X1_0_BCR] = { 0x29000 },
3510 [GCC_PCIE3X1_0_LINK_DOWN_BCR] = { 0x29054 },
3511 [GCC_PCIE3X1_0_PHY_BCR] = { 0x29060 },
3512 [GCC_PCIE3X1_0_PHY_PHY_BCR] = { 0x2905c },
3513 [GCC_PCIE3X1_1_AHB_CLK_ARES] = { 0x2a00c, 2 },
3514 [GCC_PCIE3X1_1_AUX_CLK_ARES] = { 0x2a070, 2 },
3515 [GCC_PCIE3X1_1_AXI_M_CLK_ARES] = { 0x2a014, 2 },
3516 [GCC_PCIE3X1_1_AXI_S_BRIDGE_CLK_ARES] = { 0x2a024, 2 },
3517 [GCC_PCIE3X1_1_AXI_S_CLK_ARES] = { 0x2a01c, 2 },
3518 [GCC_PCIE3X1_1_BCR] = { 0x2a000 },
3519 [GCC_PCIE3X1_1_LINK_DOWN_BCR] = { 0x2a028 },
3520 [GCC_PCIE3X1_1_PHY_BCR] = { 0x2a030 },
3521 [GCC_PCIE3X1_1_PHY_PHY_BCR] = { 0x2a02c },
3522 [GCC_PCIE3X1_PHY_AHB_CLK_ARES] = { 0x29078, 2 },
3523 [GCC_PCIE3X2_AHB_CLK_ARES] = { 0x28030, 2 },
3524 [GCC_PCIE3X2_AUX_CLK_ARES] = { 0x28070, 2 },
3525 [GCC_PCIE3X2_AXI_M_CLK_ARES] = { 0x28038, 2 },
3526 [GCC_PCIE3X2_AXI_S_BRIDGE_CLK_ARES] = { 0x28048, 2 },
3527 [GCC_PCIE3X2_AXI_S_CLK_ARES] = { 0x28040, 2 },
3528 [GCC_PCIE3X2_BCR] = { 0x28000 },
3529 [GCC_PCIE3X2_LINK_DOWN_BCR] = { 0x28054 },
3530 [GCC_PCIE3X2_PHY_AHB_CLK_ARES] = { 0x28080, 2 },
3531 [GCC_PCIE3X2_PHY_BCR] = { 0x28060 },
3532 [GCC_PCIE3X2PHY_PHY_BCR] = { 0x2805c },
3533 [GCC_PCNOC_BCR] = { 0x31000 },
3534 [GCC_PCNOC_LPASS_CLK_ARES] = { 0x31020, 2 },
3535 [GCC_PRNG_AHB_CLK_ARES] = { 0x13024, 2 },
3536 [GCC_PRNG_BCR] = { 0x13020 },
3537 [GCC_Q6_AHB_CLK_ARES] = { 0x25014, 2 },
3538 [GCC_Q6_AHB_S_CLK_ARES] = { 0x25018, 2 },
3539 [GCC_Q6_AXIM_CLK_ARES] = { 0x2500c, 2 },
3540 [GCC_Q6_AXIS_CLK_ARES] = { 0x25010, 2 },
3541 [GCC_Q6_TSCTR_1TO2_CLK_ARES] = { 0x25020, 2 },
3542 [GCC_Q6SS_ATBM_CLK_ARES] = { 0x2501c, 2 },
3543 [GCC_Q6SS_PCLKDBG_CLK_ARES] = { 0x25024, 2 },
3544 [GCC_Q6SS_TRIG_CLK_ARES] = { 0x250a0, 2 },
3545 [GCC_QDSS_APB2JTAG_CLK_ARES] = { 0x2d060, 2 },
3546 [GCC_QDSS_AT_CLK_ARES] = { 0x2d038, 2 },
3547 [GCC_QDSS_BCR] = { 0x2d000 },
3548 [GCC_QDSS_CFG_AHB_CLK_ARES] = { 0x2d06c, 2 },
3549 [GCC_QDSS_DAP_AHB_CLK_ARES] = { 0x2d068, 2 },
3550 [GCC_QDSS_DAP_CLK_ARES] = { 0x2d05c, 2 },
3551 [GCC_QDSS_ETR_USB_CLK_ARES] = { 0x2d064, 2 },
3552 [GCC_QDSS_EUD_AT_CLK_ARES] = { 0x2d070, 2 },
3553 [GCC_QDSS_STM_CLK_ARES] = { 0x2d040, 2 },
3554 [GCC_QDSS_TRACECLKIN_CLK_ARES] = { 0x2d044, 2 },
3555 [GCC_QDSS_TS_CLK_ARES] = { 0x2d078, 2 },
3556 [GCC_QDSS_TSCTR_DIV16_CLK_ARES] = { 0x2d058, 2 },
3557 [GCC_QDSS_TSCTR_DIV2_CLK_ARES] = { 0x2d048, 2 },
3558 [GCC_QDSS_TSCTR_DIV3_CLK_ARES] = { 0x2d04c, 2 },
3559 [GCC_QDSS_TSCTR_DIV4_CLK_ARES] = { 0x2d050, 2 },
3560 [GCC_QDSS_TSCTR_DIV8_CLK_ARES] = { 0x2d054, 2 },
3561 [GCC_QPIC_AHB_CLK_ARES] = { 0x32010, 2 },
3562 [GCC_QPIC_CLK_ARES] = { 0x32014, 2 },
3563 [GCC_QPIC_BCR] = { 0x32000 },
3564 [GCC_QPIC_IO_MACRO_CLK_ARES] = { 0x3200c, 2 },
3565 [GCC_QPIC_SLEEP_CLK_ARES] = { 0x3201c, 2 },
3566 [GCC_QUSB2_0_PHY_BCR] = { 0x2c068 },
3567 [GCC_SDCC1_AHB_CLK_ARES] = { 0x33034, 2 },
3568 [GCC_SDCC1_APPS_CLK_ARES] = { 0x3302c, 2 },
3569 [GCC_SDCC_BCR] = { 0x33000 },
3570 [GCC_SNOC_BCR] = { 0x2e000 },
3571 [GCC_SNOC_LPASS_CFG_CLK_ARES] = { 0x2e028, 2 },
3572 [GCC_SNOC_NSSNOC_1_CLK_ARES] = { 0x17090, 2 },
3573 [GCC_SNOC_NSSNOC_CLK_ARES] = { 0x17084, 2 },
3574 [GCC_SYS_NOC_QDSS_STM_AXI_CLK_ARES] = { 0x2e034, 2 },
3575 [GCC_SYS_NOC_WCSS_AHB_CLK_ARES] = { 0x2e030, 2 },
3576 [GCC_UNIPHY0_AHB_CLK_ARES] = { 0x16010, 2 },
3577 [GCC_UNIPHY0_BCR] = { 0x16000 },
3578 [GCC_UNIPHY0_SYS_CLK_ARES] = { 0x1600c, 2 },
3579 [GCC_UNIPHY1_AHB_CLK_ARES] = { 0x1601c, 2 },
3580 [GCC_UNIPHY1_BCR] = { 0x16014 },
3581 [GCC_UNIPHY1_SYS_CLK_ARES] = { 0x16018, 2 },
3582 [GCC_USB0_AUX_CLK_ARES] = { 0x2c050, 2 },
3583 [GCC_USB0_EUD_AT_CLK_ARES] = { 0x30004, 2 },
3584 [GCC_USB0_LFPS_CLK_ARES] = { 0x2c090, 2 },
3585 [GCC_USB0_MASTER_CLK_ARES] = { 0x2c048, 2 },
3586 [GCC_USB0_MOCK_UTMI_CLK_ARES] = { 0x2c054, 2 },
3587 [GCC_USB0_PHY_BCR] = { 0x2c06c },
3588 [GCC_USB0_PHY_CFG_AHB_CLK_ARES] = { 0x2c05c, 2 },
3589 [GCC_USB0_SLEEP_CLK_ARES] = { 0x2c058, 2 },
3590 [GCC_USB3PHY_0_PHY_BCR] = { 0x2c070 },
3591 [GCC_USB_BCR] = { 0x2c000 },
3592 [GCC_WCSS_AXIM_CLK_ARES] = { 0x2505c, 2 },
3593 [GCC_WCSS_AXIS_CLK_ARES] = { 0x25060, 2 },
3594 [GCC_WCSS_BCR] = { 0x18004 },
3595 [GCC_WCSS_DBG_IFC_APB_BDG_CLK_ARES] = { 0x25048, 2 },
3596 [GCC_WCSS_DBG_IFC_APB_CLK_ARES] = { 0x25038, 2 },
3597 [GCC_WCSS_DBG_IFC_ATB_BDG_CLK_ARES] = { 0x2504c, 2 },
3598 [GCC_WCSS_DBG_IFC_ATB_CLK_ARES] = { 0x2503c, 2 },
3599 [GCC_WCSS_DBG_IFC_NTS_BDG_CLK_ARES] = { 0x25050, 2 },
3600 [GCC_WCSS_DBG_IFC_NTS_CLK_ARES] = { 0x25040, 2 },
3601 [GCC_WCSS_ECAHB_CLK_ARES] = { 0x25058, 2 },
3602 [GCC_WCSS_MST_ASYNC_BDG_CLK_ARES] = { 0x2e0b0, 2 },
3603 [GCC_WCSS_Q6_BCR] = { 0x18000 },
3604 [GCC_WCSS_SLV_ASYNC_BDG_CLK_ARES] = { 0x2e0b4, 2 },
3605 [GCC_XO_CLK_ARES] = { 0x34018, 2 },
3606 [GCC_XO_DIV4_CLK_ARES] = { 0x3401c, 2 },
3607 [GCC_Q6SS_DBG_ARES] = { 0x25094 },
3608 [GCC_WCSS_DBG_BDG_ARES] = { 0x25098, 0 },
3609 [GCC_WCSS_DBG_ARES] = { 0x25098, 1 },
3610 [GCC_WCSS_AXI_S_ARES] = { 0x25098, 2 },
3611 [GCC_WCSS_AXI_M_ARES] = { 0x25098, 3 },
3612 [GCC_WCSSAON_ARES] = { 0x2509C },
3613 [GCC_PCIE3X2_PIPE_ARES] = { 0x28058, 0 },
3614 [GCC_PCIE3X2_CORE_STICKY_ARES] = { 0x28058, 1 },
3615 [GCC_PCIE3X2_AXI_S_STICKY_ARES] = { 0x28058, 2 },
3616 [GCC_PCIE3X2_AXI_M_STICKY_ARES] = { 0x28058, 3 },
3617 [GCC_PCIE3X1_0_PIPE_ARES] = { 0x29058, 0 },
3618 [GCC_PCIE3X1_0_CORE_STICKY_ARES] = { 0x29058, 1 },
3619 [GCC_PCIE3X1_0_AXI_S_STICKY_ARES] = { 0x29058, 2 },
3620 [GCC_PCIE3X1_0_AXI_M_STICKY_ARES] = { 0x29058, 3 },
3621 [GCC_PCIE3X1_1_PIPE_ARES] = { 0x2a058, 0 },
3622 [GCC_PCIE3X1_1_CORE_STICKY_ARES] = { 0x2a058, 1 },
3623 [GCC_PCIE3X1_1_AXI_S_STICKY_ARES] = { 0x2a058, 2 },
3624 [GCC_PCIE3X1_1_AXI_M_STICKY_ARES] = { 0x2a058, 3 },
3625 [GCC_IM_SLEEP_CLK_ARES] = { 0x34020, 2 },
3626 [GCC_NSSNOC_PCNOC_1_CLK_ARES] = { 0x17080, 2 },
3627 [GCC_UNIPHY0_XPCS_ARES] = { 0x16050 },
3628 [GCC_UNIPHY1_XPCS_ARES] = { 0x16060 },
3631 static const struct regmap_config gcc_ipq5332_regmap_config = {
3635 .max_register = 0x3f024,
3639 static struct clk_hw *gcc_ipq5332_hws[] = {
3641 &gcc_xo_div4_clk_src.hw,
3642 &gcc_system_noc_bfdcd_div2_clk_src.hw,
3643 &gcc_qdss_tsctr_div2_clk_src.hw,
3644 &gcc_qdss_tsctr_div3_clk_src.hw,
3645 &gcc_qdss_tsctr_div4_clk_src.hw,
3646 &gcc_qdss_tsctr_div8_clk_src.hw,
3647 &gcc_qdss_tsctr_div16_clk_src.hw,
3648 &gcc_eud_at_div_clk_src.hw,
3651 static const struct qcom_cc_desc gcc_ipq5332_desc = {
3652 .config = &gcc_ipq5332_regmap_config,
3653 .clks = gcc_ipq5332_clocks,
3654 .num_clks = ARRAY_SIZE(gcc_ipq5332_clocks),
3655 .resets = gcc_ipq5332_resets,
3656 .num_resets = ARRAY_SIZE(gcc_ipq5332_resets),
3657 .clk_hws = gcc_ipq5332_hws,
3658 .num_clk_hws = ARRAY_SIZE(gcc_ipq5332_hws),
3661 static int gcc_ipq5332_probe(struct platform_device *pdev)
3663 return qcom_cc_probe(pdev, &gcc_ipq5332_desc);
3666 static const struct of_device_id gcc_ipq5332_match_table[] = {
3667 { .compatible = "qcom,ipq5332-gcc" },
3670 MODULE_DEVICE_TABLE(of, gcc_ipq5332_match_table);
3672 static struct platform_driver gcc_ipq5332_driver = {
3673 .probe = gcc_ipq5332_probe,
3675 .name = "gcc-ipq5332",
3676 .of_match_table = gcc_ipq5332_match_table,
3680 static int __init gcc_ipq5332_init(void)
3682 return platform_driver_register(&gcc_ipq5332_driver);
3684 core_initcall(gcc_ipq5332_init);
3686 static void __exit gcc_ipq5332_exit(void)
3688 platform_driver_unregister(&gcc_ipq5332_driver);
3690 module_exit(gcc_ipq5332_exit);
3692 MODULE_DESCRIPTION("QTI GCC IPQ5332 Driver");
3693 MODULE_LICENSE("GPL");