1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4 */
5
6 #include <linux/clk-provider.h>
7 #include <linux/interconnect-provider.h>
8 #include <linux/mod_devicetable.h>
9 #include <linux/module.h>
10 #include <linux/platform_device.h>
11 #include <linux/regmap.h>
12
13 #include <dt-bindings/clock/qcom,ipq5332-gcc.h>
14 #include <dt-bindings/interconnect/qcom,ipq5332.h>
15
16 #include "clk-alpha-pll.h"
17 #include "clk-branch.h"
18 #include "clk-rcg.h"
19 #include "clk-regmap.h"
20 #include "clk-regmap-divider.h"
21 #include "clk-regmap-mux.h"
22 #include "clk-regmap-phy-mux.h"
23 #include "reset.h"
24
25 enum {
26 DT_XO,
27 DT_SLEEP_CLK,
28 DT_PCIE_2LANE_PHY_PIPE_CLK,
29 DT_PCIE_2LANE_PHY_PIPE_CLK_X1,
30 DT_USB_PCIE_WRAPPER_PIPE_CLK,
31 };
32
33 enum {
34 P_PCIE3X2_PIPE,
35 P_PCIE3X1_0_PIPE,
36 P_PCIE3X1_1_PIPE,
37 P_USB3PHY_0_PIPE,
38 P_CORE_BI_PLL_TEST_SE,
39 P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC,
40 P_GPLL0_OUT_AUX,
41 P_GPLL0_OUT_MAIN,
42 P_GPLL2_OUT_AUX,
43 P_GPLL2_OUT_MAIN,
44 P_GPLL4_OUT_AUX,
45 P_GPLL4_OUT_MAIN,
46 P_SLEEP_CLK,
47 P_XO,
48 };
49
50 static const struct clk_parent_data gcc_parent_data_xo = { .index = DT_XO };
51
52 static struct clk_alpha_pll gpll0_main = {
53 .offset = 0x20000,
54 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
55 .clkr = {
56 .enable_reg = 0xb000,
57 .enable_mask = BIT(0),
58 .hw.init = &(const struct clk_init_data) {
59 .name = "gpll0_main",
60 .parent_data = &gcc_parent_data_xo,
61 .num_parents = 1,
62 .ops = &clk_alpha_pll_stromer_ops,
63 },
64 },
65 };
66
67 static struct clk_fixed_factor gpll0_div2 = {
68 .mult = 1,
69 .div = 2,
70 .hw.init = &(struct clk_init_data) {
71 .name = "gpll0_div2",
72 .parent_hws = (const struct clk_hw *[]) {
73 &gpll0_main.clkr.hw },
74 .num_parents = 1,
75 .ops = &clk_fixed_factor_ops,
76 },
77 };
78
79 static struct clk_alpha_pll_postdiv gpll0 = {
80 .offset = 0x20000,
81 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
82 .width = 4,
83 .clkr.hw.init = &(struct clk_init_data) {
84 .name = "gpll0",
85 .parent_hws = (const struct clk_hw *[]) {
86 &gpll0_main.clkr.hw },
87 .num_parents = 1,
88 .ops = &clk_alpha_pll_postdiv_ro_ops,
89 },
90 };
91
92 static struct clk_alpha_pll gpll2_main = {
93 .offset = 0x21000,
94 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
95 .clkr = {
96 .enable_reg = 0xb000,
97 .enable_mask = BIT(1),
98 .hw.init = &(const struct clk_init_data) {
99 .name = "gpll2",
100 .parent_data = &gcc_parent_data_xo,
101 .num_parents = 1,
102 .ops = &clk_alpha_pll_stromer_ops,
103 },
104 },
105 };
106
107 static struct clk_alpha_pll_postdiv gpll2 = {
108 .offset = 0x21000,
109 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
110 .width = 4,
111 .clkr.hw.init = &(struct clk_init_data) {
112 .name = "gpll2_main",
113 .parent_hws = (const struct clk_hw *[]) {
114 &gpll2_main.clkr.hw },
115 .num_parents = 1,
116 .ops = &clk_alpha_pll_postdiv_ro_ops,
117 },
118 };
119
120 static struct clk_alpha_pll gpll4_main = {
121 .offset = 0x22000,
122 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
123 .clkr = {
124 .enable_reg = 0xb000,
125 .enable_mask = BIT(2),
126 .hw.init = &(const struct clk_init_data) {
127 .name = "gpll4_main",
128 .parent_data = &gcc_parent_data_xo,
129 .num_parents = 1,
130 .ops = &clk_alpha_pll_stromer_ops,
131 },
132 },
133 };
134
135 static struct clk_alpha_pll_postdiv gpll4 = {
136 .offset = 0x22000,
137 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_STROMER_PLUS],
138 .width = 4,
139 .clkr.hw.init = &(struct clk_init_data) {
140 .name = "gpll4",
141 .parent_hws = (const struct clk_hw *[]) {
142 &gpll4_main.clkr.hw },
143 .num_parents = 1,
144 .ops = &clk_alpha_pll_postdiv_ro_ops,
145 },
146 };
147
148 static const struct parent_map gcc_parent_map_xo[] = {
149 { P_XO, 0 },
150 };
151
152 static const struct parent_map gcc_parent_map_0[] = {
153 { P_XO, 0 },
154 { P_GPLL0_OUT_MAIN, 1 },
155 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
156 };
157
158 static const struct clk_parent_data gcc_parent_data_0[] = {
159 { .index = DT_XO },
160 { .hw = &gpll0.clkr.hw },
161 { .hw = &gpll0_div2.hw },
162 };
163
164 static const struct parent_map gcc_parent_map_1[] = {
165 { P_XO, 0 },
166 { P_GPLL0_OUT_MAIN, 1 },
167 };
168
169 static const struct clk_parent_data gcc_parent_data_1[] = {
170 { .index = DT_XO },
171 { .hw = &gpll0.clkr.hw },
172 };
173
174 static const struct parent_map gcc_parent_map_2[] = {
175 { P_XO, 0 },
176 { P_GPLL0_OUT_MAIN, 1 },
177 { P_GPLL4_OUT_MAIN, 2 },
178 };
179
180 static const struct clk_parent_data gcc_parent_data_2[] = {
181 { .index = DT_XO },
182 { .hw = &gpll0.clkr.hw },
183 { .hw = &gpll4.clkr.hw },
184 };
185
186 static const struct parent_map gcc_parent_map_3[] = {
187 { P_XO, 0 },
188 { P_GPLL0_OUT_MAIN, 1 },
189 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
190 { P_SLEEP_CLK, 6 },
191 };
192
193 static const struct clk_parent_data gcc_parent_data_3[] = {
194 { .index = DT_XO },
195 { .hw = &gpll0.clkr.hw },
196 { .hw = &gpll0_div2.hw },
197 { .index = DT_SLEEP_CLK },
198 };
199
200 static const struct parent_map gcc_parent_map_4[] = {
201 { P_XO, 0 },
202 { P_GPLL4_OUT_MAIN, 1 },
203 { P_GPLL0_OUT_AUX, 2 },
204 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
205 };
206
207 static const struct clk_parent_data gcc_parent_data_4[] = {
208 { .index = DT_XO },
209 { .hw = &gpll4.clkr.hw },
210 { .hw = &gpll0.clkr.hw },
211 { .hw = &gpll0_div2.hw },
212 };
213
214 static const struct parent_map gcc_parent_map_5[] = {
215 { P_XO, 0 },
216 { P_GPLL0_OUT_MAIN, 1 },
217 { P_GPLL0_OUT_AUX, 2 },
218 { P_SLEEP_CLK, 6 },
219 };
220
221 static const struct clk_parent_data gcc_parent_data_5[] = {
222 { .index = DT_XO },
223 { .hw = &gpll0.clkr.hw },
224 { .hw = &gpll0.clkr.hw },
225 { .index = DT_SLEEP_CLK },
226 };
227
228 static const struct parent_map gcc_parent_map_6[] = {
229 { P_XO, 0 },
230 { P_GPLL0_OUT_MAIN, 1 },
231 { P_GPLL2_OUT_AUX, 2 },
232 { P_GPLL4_OUT_AUX, 3 },
233 { P_SLEEP_CLK, 6 },
234 };
235
236 static const struct clk_parent_data gcc_parent_data_6[] = {
237 { .index = DT_XO },
238 { .hw = &gpll0.clkr.hw },
239 { .hw = &gpll2.clkr.hw },
240 { .hw = &gpll4.clkr.hw },
241 { .index = DT_SLEEP_CLK },
242 };
243
244 static const struct parent_map gcc_parent_map_7[] = {
245 { P_XO, 0 },
246 { P_GPLL0_OUT_MAIN, 1 },
247 { P_GPLL2_OUT_AUX, 2 },
248 };
249
250 static const struct clk_parent_data gcc_parent_data_7[] = {
251 { .index = DT_XO },
252 { .hw = &gpll0.clkr.hw },
253 { .hw = &gpll2.clkr.hw },
254 };
255
256 static const struct parent_map gcc_parent_map_8[] = {
257 { P_XO, 0 },
258 { P_GPLL0_OUT_MAIN, 1 },
259 { P_GPLL2_OUT_MAIN, 2 },
260 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
261 };
262
263 static const struct clk_parent_data gcc_parent_data_8[] = {
264 { .index = DT_XO },
265 { .hw = &gpll0.clkr.hw },
266 { .hw = &gpll2.clkr.hw },
267 { .hw = &gpll0_div2.hw },
268 };
269
270 static const struct parent_map gcc_parent_map_9[] = {
271 { P_SLEEP_CLK, 6 },
272 };
273
274 static const struct clk_parent_data gcc_parent_data_9[] = {
275 { .index = DT_SLEEP_CLK },
276 };
277
278 static const struct parent_map gcc_parent_map_10[] = {
279 { P_XO, 0 },
280 { P_GPLL0_OUT_MAIN, 1 },
281 { P_GPLL4_OUT_MAIN, 2 },
282 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 3 },
283 };
284
285 static const struct clk_parent_data gcc_parent_data_10[] = {
286 { .index = DT_XO },
287 { .hw = &gpll0.clkr.hw },
288 { .hw = &gpll4.clkr.hw },
289 { .hw = &gpll0_div2.hw },
290 };
291
292 static const struct parent_map gcc_parent_map_11[] = {
293 { P_XO, 0 },
294 { P_GPLL0_OUT_AUX, 2 },
295 { P_SLEEP_CLK, 6 },
296 };
297
298 static const struct clk_parent_data gcc_parent_data_11[] = {
299 { .index = DT_XO },
300 { .hw = &gpll0.clkr.hw },
301 { .index = DT_SLEEP_CLK },
302 };
303
304 static const struct parent_map gcc_parent_map_12[] = {
305 { P_XO, 0 },
306 { P_GPLL4_OUT_AUX, 1 },
307 { P_GPLL0_OUT_MAIN, 3 },
308 { P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 4 },
309 };
310
311 static const struct clk_parent_data gcc_parent_data_12[] = {
312 { .index = DT_XO },
313 { .hw = &gpll4.clkr.hw },
314 { .hw = &gpll0.clkr.hw },
315 { .hw = &gpll0_div2.hw },
316 };
317
318 static const struct freq_tbl ftbl_gcc_adss_pwm_clk_src[] = {
319 F(24000000, P_XO, 1, 0, 0),
320 F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
321 { }
322 };
323
324 static struct clk_rcg2 gcc_adss_pwm_clk_src = {
325 .cmd_rcgr = 0x1c004,
326 .mnd_width = 0,
327 .hid_width = 5,
328 .parent_map = gcc_parent_map_1,
329 .freq_tbl = ftbl_gcc_adss_pwm_clk_src,
330 .clkr.hw.init = &(const struct clk_init_data) {
331 .name = "gcc_adss_pwm_clk_src",
332 .parent_data = gcc_parent_data_1,
333 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
334 .ops = &clk_rcg2_ops,
335 },
336 };
337
338 static const struct freq_tbl ftbl_gcc_apss_axi_clk_src[] = {
339 F(480000000, P_GPLL4_OUT_AUX, 2.5, 0, 0),
340 F(533333333, P_GPLL0_OUT_MAIN, 1.5, 0, 0),
341 { }
342 };
343
344 static const struct freq_tbl ftbl_gcc_blsp1_qup1_spi_apps_clk_src[] = {
345 F(960000, P_XO, 1, 1, 25),
346 F(4800000, P_XO, 5, 0, 0),
347 F(9600000, P_XO, 2.5, 0, 0),
348 F(16000000, P_GPLL0_OUT_MAIN, 10, 1, 5),
349 F(24000000, P_XO, 1, 0, 0),
350 F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
351 F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
352 { }
353 };
354
355 static struct clk_rcg2 gcc_blsp1_qup1_spi_apps_clk_src = {
356 .cmd_rcgr = 0x2004,
357 .mnd_width = 8,
358 .hid_width = 5,
359 .parent_map = gcc_parent_map_0,
360 .freq_tbl = ftbl_gcc_blsp1_qup1_spi_apps_clk_src,
361 .clkr.hw.init = &(const struct clk_init_data) {
362 .name = "gcc_blsp1_qup1_spi_apps_clk_src",
363 .parent_data = gcc_parent_data_0,
364 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
365 .ops = &clk_rcg2_ops,
366 },
367 };
368
369 static struct clk_rcg2 gcc_blsp1_qup2_spi_apps_clk_src = {
370 .cmd_rcgr = 0x3004,
371 .mnd_width = 8,
372 .hid_width = 5,
373 .parent_map = gcc_parent_map_0,
374 .freq_tbl = ftbl_gcc_blsp1_qup1_spi_apps_clk_src,
375 .clkr.hw.init = &(const struct clk_init_data) {
376 .name = "gcc_blsp1_qup2_spi_apps_clk_src",
377 .parent_data = gcc_parent_data_0,
378 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
379 .ops = &clk_rcg2_ops,
380 },
381 };
382
383 static struct clk_rcg2 gcc_blsp1_qup3_spi_apps_clk_src = {
384 .cmd_rcgr = 0x4004,
385 .mnd_width = 8,
386 .hid_width = 5,
387 .parent_map = gcc_parent_map_0,
388 .freq_tbl = ftbl_gcc_blsp1_qup1_spi_apps_clk_src,
389 .clkr.hw.init = &(const struct clk_init_data) {
390 .name = "gcc_blsp1_qup3_spi_apps_clk_src",
391 .parent_data = gcc_parent_data_0,
392 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
393 .ops = &clk_rcg2_ops,
394 },
395 };
396
397 static const struct freq_tbl ftbl_gcc_blsp1_uart1_apps_clk_src[] = {
398 F(3686400, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 144, 15625),
399 F(7372800, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 288, 15625),
400 F(14745600, P_GCC_GPLL0_OUT_MAIN_DIV_CLK_SRC, 1, 576, 15625),
401 F(24000000, P_XO, 1, 0, 0),
402 F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
403 F(32000000, P_GPLL0_OUT_MAIN, 1, 1, 25),
404 F(40000000, P_GPLL0_OUT_MAIN, 1, 1, 20),
405 F(46400000, P_GPLL0_OUT_MAIN, 1, 29, 500),
406 F(48000000, P_GPLL0_OUT_MAIN, 1, 3, 50),
407 F(51200000, P_GPLL0_OUT_MAIN, 1, 8, 125),
408 F(56000000, P_GPLL0_OUT_MAIN, 1, 7, 100),
409 F(58982400, P_GPLL0_OUT_MAIN, 1, 1152, 15625),
410 F(60000000, P_GPLL0_OUT_MAIN, 1, 3, 40),
411 F(64000000, P_GPLL0_OUT_MAIN, 12.5, 0, 0),
412 { }
413 };
414
415 static struct clk_rcg2 gcc_blsp1_uart1_apps_clk_src = {
416 .cmd_rcgr = 0x202c,
417 .mnd_width = 16,
418 .hid_width = 5,
419 .parent_map = gcc_parent_map_0,
420 .freq_tbl = ftbl_gcc_blsp1_uart1_apps_clk_src,
421 .clkr.hw.init = &(const struct clk_init_data) {
422 .name = "gcc_blsp1_uart1_apps_clk_src",
423 .parent_data = gcc_parent_data_0,
424 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
425 .ops = &clk_rcg2_ops,
426 },
427 };
428
429 static struct clk_rcg2 gcc_blsp1_uart2_apps_clk_src = {
430 .cmd_rcgr = 0x302c,
431 .mnd_width = 16,
432 .hid_width = 5,
433 .parent_map = gcc_parent_map_0,
434 .freq_tbl = ftbl_gcc_blsp1_uart1_apps_clk_src,
435 .clkr.hw.init = &(const struct clk_init_data) {
436 .name = "gcc_blsp1_uart2_apps_clk_src",
437 .parent_data = gcc_parent_data_0,
438 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
439 .ops = &clk_rcg2_ops,
440 },
441 };
442
443 static struct clk_rcg2 gcc_blsp1_uart3_apps_clk_src = {
444 .cmd_rcgr = 0x402c,
445 .mnd_width = 16,
446 .hid_width = 5,
447 .parent_map = gcc_parent_map_0,
448 .freq_tbl = ftbl_gcc_blsp1_uart1_apps_clk_src,
449 .clkr.hw.init = &(const struct clk_init_data) {
450 .name = "gcc_blsp1_uart3_apps_clk_src",
451 .parent_data = gcc_parent_data_0,
452 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
453 .ops = &clk_rcg2_ops,
454 },
455 };
456
457 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
458 F(24000000, P_XO, 1, 0, 0),
459 F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
460 { }
461 };
462
463 static struct clk_rcg2 gcc_gp1_clk_src = {
464 .cmd_rcgr = 0x8004,
465 .mnd_width = 8,
466 .hid_width = 5,
467 .parent_map = gcc_parent_map_3,
468 .freq_tbl = ftbl_gcc_gp1_clk_src,
469 .clkr.hw.init = &(const struct clk_init_data) {
470 .name = "gcc_gp1_clk_src",
471 .parent_data = gcc_parent_data_3,
472 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
473 .ops = &clk_rcg2_ops,
474 },
475 };
476
477 static struct clk_rcg2 gcc_gp2_clk_src = {
478 .cmd_rcgr = 0x9004,
479 .mnd_width = 8,
480 .hid_width = 5,
481 .parent_map = gcc_parent_map_3,
482 .freq_tbl = ftbl_gcc_gp1_clk_src,
483 .clkr.hw.init = &(const struct clk_init_data) {
484 .name = "gcc_gp2_clk_src",
485 .parent_data = gcc_parent_data_3,
486 .num_parents = ARRAY_SIZE(gcc_parent_data_3),
487 .ops = &clk_rcg2_ops,
488 },
489 };
490
491 static const struct freq_tbl ftbl_gcc_lpass_sway_clk_src[] = {
492 F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0),
493 { }
494 };
495
496 static struct clk_rcg2 gcc_lpass_sway_clk_src = {
497 .cmd_rcgr = 0x27004,
498 .mnd_width = 0,
499 .hid_width = 5,
500 .parent_map = gcc_parent_map_1,
501 .freq_tbl = ftbl_gcc_lpass_sway_clk_src,
502 .clkr.hw.init = &(const struct clk_init_data) {
503 .name = "gcc_lpass_sway_clk_src",
504 .parent_data = gcc_parent_data_1,
505 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
506 .ops = &clk_rcg2_ops,
507 },
508 };
509
510 static const struct freq_tbl ftbl_gcc_nss_ts_clk_src[] = {
511 F(24000000, P_XO, 1, 0, 0),
512 { }
513 };
514
515 static struct clk_rcg2 gcc_nss_ts_clk_src = {
516 .cmd_rcgr = 0x17088,
517 .mnd_width = 0,
518 .hid_width = 5,
519 .parent_map = gcc_parent_map_xo,
520 .freq_tbl = ftbl_gcc_nss_ts_clk_src,
521 .clkr.hw.init = &(const struct clk_init_data) {
522 .name = "gcc_nss_ts_clk_src",
523 .parent_data = &gcc_parent_data_xo,
524 .num_parents = 1,
525 .ops = &clk_rcg2_ops,
526 },
527 };
528
529 static const struct freq_tbl ftbl_gcc_pcie3x1_0_axi_clk_src[] = {
530 F(240000000, P_GPLL4_OUT_MAIN, 5, 0, 0),
531 { }
532 };
533
534 static struct clk_rcg2 gcc_pcie3x1_0_axi_clk_src = {
535 .cmd_rcgr = 0x29018,
536 .mnd_width = 0,
537 .hid_width = 5,
538 .parent_map = gcc_parent_map_2,
539 .freq_tbl = ftbl_gcc_pcie3x1_0_axi_clk_src,
540 .clkr.hw.init = &(const struct clk_init_data) {
541 .name = "gcc_pcie3x1_0_axi_clk_src",
542 .parent_data = gcc_parent_data_2,
543 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
544 .ops = &clk_rcg2_ops,
545 },
546 };
547
548 static struct clk_rcg2 gcc_pcie3x1_0_rchg_clk_src = {
549 .cmd_rcgr = 0x2907c,
550 .hid_width = 5,
551 .parent_map = gcc_parent_map_0,
552 .freq_tbl = ftbl_gcc_adss_pwm_clk_src,
553 .clkr.hw.init = &(const struct clk_init_data) {
554 .name = "gcc_pcie3x1_0_rchg_clk_src",
555 .parent_data = gcc_parent_data_0,
556 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
557 .ops = &clk_rcg2_ops,
558 },
559 };
560
561 static struct clk_branch gcc_pcie3x1_0_rchg_clk = {
562 .halt_reg = 0x2907c,
563 .clkr = {
564 .enable_reg = 0x2907c,
565 .enable_mask = BIT(1),
566 .hw.init = &(struct clk_init_data) {
567 .name = "gcc_pcie3x1_0_rchg_clk",
568 .parent_hws = (const struct clk_hw *[]) {
569 &gcc_pcie3x1_0_rchg_clk_src.clkr.hw },
570 .num_parents = 1,
571 .flags = CLK_SET_RATE_PARENT,
572 .ops = &clk_branch2_ops,
573 },
574 },
575 };
576
577 static struct clk_rcg2 gcc_pcie3x1_1_axi_clk_src = {
578 .cmd_rcgr = 0x2a004,
579 .mnd_width = 0,
580 .hid_width = 5,
581 .parent_map = gcc_parent_map_2,
582 .freq_tbl = ftbl_gcc_pcie3x1_0_axi_clk_src,
583 .clkr.hw.init = &(const struct clk_init_data) {
584 .name = "gcc_pcie3x1_1_axi_clk_src",
585 .parent_data = gcc_parent_data_2,
586 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
587 .ops = &clk_rcg2_ops,
588 },
589 };
590
591 static struct clk_rcg2 gcc_pcie3x1_1_rchg_clk_src = {
592 .cmd_rcgr = 0x2a078,
593 .hid_width = 5,
594 .parent_map = gcc_parent_map_0,
595 .freq_tbl = ftbl_gcc_adss_pwm_clk_src,
596 .clkr.hw.init = &(const struct clk_init_data) {
597 .name = "gcc_pcie3x1_1_rchg_clk_src",
598 .parent_data = gcc_parent_data_0,
599 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
600 .ops = &clk_rcg2_ops,
601 },
602 };
603
604 static struct clk_branch gcc_pcie3x1_1_rchg_clk = {
605 .halt_reg = 0x2a078,
606 .clkr = {
607 .enable_reg = 0x2a078,
608 .enable_mask = BIT(1),
609 .hw.init = &(struct clk_init_data) {
610 .name = "gcc_pcie3x1_1_rchg_clk",
611 .parent_hws = (const struct clk_hw *[]) {
612 &gcc_pcie3x1_1_rchg_clk_src.clkr.hw },
613 .num_parents = 1,
614 .flags = CLK_SET_RATE_PARENT,
615 .ops = &clk_branch2_ops,
616 },
617 },
618 };
619
620 static const struct freq_tbl ftbl_gcc_pcie3x2_axi_m_clk_src[] = {
621 F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0),
622 { }
623 };
624
625 static struct clk_rcg2 gcc_pcie3x2_axi_m_clk_src = {
626 .cmd_rcgr = 0x28018,
627 .mnd_width = 0,
628 .hid_width = 5,
629 .parent_map = gcc_parent_map_2,
630 .freq_tbl = ftbl_gcc_pcie3x2_axi_m_clk_src,
631 .clkr.hw.init = &(const struct clk_init_data) {
632 .name = "gcc_pcie3x2_axi_m_clk_src",
633 .parent_data = gcc_parent_data_2,
634 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
635 .ops = &clk_rcg2_ops,
636 },
637 };
638
639 static struct clk_rcg2 gcc_pcie3x2_axi_s_clk_src = {
640 .cmd_rcgr = 0x28084,
641 .mnd_width = 0,
642 .hid_width = 5,
643 .parent_map = gcc_parent_map_2,
644 .freq_tbl = ftbl_gcc_pcie3x1_0_axi_clk_src,
645 .clkr.hw.init = &(const struct clk_init_data) {
646 .name = "gcc_pcie3x2_axi_s_clk_src",
647 .parent_data = gcc_parent_data_2,
648 .num_parents = ARRAY_SIZE(gcc_parent_data_2),
649 .ops = &clk_rcg2_ops,
650 },
651 };
652
653 static struct clk_rcg2 gcc_pcie3x2_rchg_clk_src = {
654 .cmd_rcgr = 0x28078,
655 .mnd_width = 0,
656 .hid_width = 5,
657 .parent_map = gcc_parent_map_0,
658 .freq_tbl = ftbl_gcc_adss_pwm_clk_src,
659 .clkr.hw.init = &(const struct clk_init_data) {
660 .name = "gcc_pcie3x2_rchg_clk_src",
661 .parent_data = gcc_parent_data_0,
662 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
663 .ops = &clk_rcg2_ops,
664 },
665 };
666
667 static struct clk_branch gcc_pcie3x2_rchg_clk = {
668 .halt_reg = 0x28078,
669 .clkr = {
670 .enable_reg = 0x28078,
671 .enable_mask = BIT(1),
672 .hw.init = &(struct clk_init_data) {
673 .name = "gcc_pcie3x2_rchg_clk",
674 .parent_hws = (const struct clk_hw *[]) {
675 &gcc_pcie3x2_rchg_clk_src.clkr.hw },
676 .num_parents = 1,
677 .flags = CLK_SET_RATE_PARENT,
678 .ops = &clk_branch2_ops,
679 },
680 },
681 };
682
683 static const struct freq_tbl ftbl_gcc_pcie_aux_clk_src[] = {
684 F(2000000, P_XO, 12, 0, 0),
685 { }
686 };
687
688 static struct clk_rcg2 gcc_pcie_aux_clk_src = {
689 .cmd_rcgr = 0x28004,
690 .mnd_width = 16,
691 .hid_width = 5,
692 .parent_map = gcc_parent_map_5,
693 .freq_tbl = ftbl_gcc_pcie_aux_clk_src,
694 .clkr.hw.init = &(const struct clk_init_data) {
695 .name = "gcc_pcie_aux_clk_src",
696 .parent_data = gcc_parent_data_5,
697 .num_parents = ARRAY_SIZE(gcc_parent_data_5),
698 .ops = &clk_rcg2_ops,
699 },
700 };
701
702 static struct clk_regmap_phy_mux gcc_pcie3x2_pipe_clk_src = {
703 .reg = 0x28064,
704 .clkr = {
705 .hw.init = &(struct clk_init_data) {
706 .name = "gcc_pcie3x2_pipe_clk_src",
707 .parent_data = &(const struct clk_parent_data) {
708 .index = DT_PCIE_2LANE_PHY_PIPE_CLK,
709 },
710 .num_parents = 1,
711 .ops = &clk_regmap_phy_mux_ops,
712 },
713 },
714 };
715
716 static struct clk_regmap_phy_mux gcc_pcie3x1_0_pipe_clk_src = {
717 .reg = 0x29064,
718 .clkr = {
719 .hw.init = &(struct clk_init_data) {
720 .name = "gcc_pcie3x1_0_pipe_clk_src",
721 .parent_data = &(const struct clk_parent_data) {
722 .index = DT_USB_PCIE_WRAPPER_PIPE_CLK,
723 },
724 .num_parents = 1,
725 .ops = &clk_regmap_phy_mux_ops,
726 },
727 },
728 };
729
730 static struct clk_regmap_phy_mux gcc_pcie3x1_1_pipe_clk_src = {
731 .reg = 0x2a064,
732 .clkr = {
733 .hw.init = &(struct clk_init_data) {
734 .name = "gcc_pcie3x1_1_pipe_clk_src",
735 .parent_data = &(const struct clk_parent_data) {
736 .index = DT_PCIE_2LANE_PHY_PIPE_CLK_X1,
737 },
738 .num_parents = 1,
739 .ops = &clk_regmap_phy_mux_ops,
740 },
741 },
742 };
743
744 static const struct freq_tbl ftbl_gcc_pcnoc_bfdcd_clk_src[] = {
745 F(24000000, P_XO, 1, 0, 0),
746 F(50000000, P_GPLL0_OUT_MAIN, 16, 0, 0),
747 F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
748 { }
749 };
750
751 static struct clk_rcg2 gcc_pcnoc_bfdcd_clk_src = {
752 .cmd_rcgr = 0x31004,
753 .mnd_width = 0,
754 .hid_width = 5,
755 .parent_map = gcc_parent_map_0,
756 .freq_tbl = ftbl_gcc_pcnoc_bfdcd_clk_src,
757 .clkr.hw.init = &(const struct clk_init_data) {
758 .name = "gcc_pcnoc_bfdcd_clk_src",
759 .parent_data = gcc_parent_data_0,
760 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
761 .ops = &clk_rcg2_ops,
762 },
763 };
764
765 static struct clk_rcg2 gcc_q6_axim_clk_src = {
766 .cmd_rcgr = 0x25004,
767 .mnd_width = 0,
768 .hid_width = 5,
769 .parent_map = gcc_parent_map_6,
770 .freq_tbl = ftbl_gcc_apss_axi_clk_src,
771 .clkr.hw.init = &(const struct clk_init_data) {
772 .name = "gcc_q6_axim_clk_src",
773 .parent_data = gcc_parent_data_6,
774 .num_parents = ARRAY_SIZE(gcc_parent_data_6),
775 .ops = &clk_rcg2_ops,
776 },
777 };
778
779 static const struct freq_tbl ftbl_gcc_qdss_at_clk_src[] = {
780 F(240000000, P_GPLL4_OUT_MAIN, 5, 0, 0),
781 { }
782 };
783
784 static struct clk_rcg2 gcc_qdss_at_clk_src = {
785 .cmd_rcgr = 0x2d004,
786 .mnd_width = 0,
787 .hid_width = 5,
788 .parent_map = gcc_parent_map_4,
789 .freq_tbl = ftbl_gcc_qdss_at_clk_src,
790 .clkr.hw.init = &(const struct clk_init_data) {
791 .name = "gcc_qdss_at_clk_src",
792 .parent_data = gcc_parent_data_4,
793 .num_parents = ARRAY_SIZE(gcc_parent_data_4),
794 .ops = &clk_rcg2_ops,
795 },
796 };
797
798 static const struct freq_tbl ftbl_gcc_qdss_tsctr_clk_src[] = {
799 F(600000000, P_GPLL4_OUT_MAIN, 2, 0, 0),
800 { }
801 };
802
803 static struct clk_rcg2 gcc_qdss_tsctr_clk_src = {
804 .cmd_rcgr = 0x2d01c,
805 .mnd_width = 0,
806 .hid_width = 5,
807 .parent_map = gcc_parent_map_4,
808 .freq_tbl = ftbl_gcc_qdss_tsctr_clk_src,
809 .clkr.hw.init = &(const struct clk_init_data) {
810 .name = "gcc_qdss_tsctr_clk_src",
811 .parent_data = gcc_parent_data_4,
812 .num_parents = ARRAY_SIZE(gcc_parent_data_4),
813 .ops = &clk_rcg2_ops,
814 },
815 };
816
817 static struct clk_fixed_factor gcc_qdss_tsctr_div2_clk_src = {
818 .mult = 1,
819 .div = 2,
820 .hw.init = &(struct clk_init_data) {
821 .name = "gcc_qdss_tsctr_div2_clk_src",
822 .parent_hws = (const struct clk_hw *[]) {
823 &gcc_qdss_tsctr_clk_src.clkr.hw },
824 .num_parents = 1,
825 .flags = CLK_SET_RATE_PARENT,
826 .ops = &clk_fixed_factor_ops,
827 },
828 };
829
830 static struct clk_fixed_factor gcc_qdss_tsctr_div3_clk_src = {
831 .mult = 1,
832 .div = 3,
833 .hw.init = &(struct clk_init_data) {
834 .name = "gcc_qdss_tsctr_div3_clk_src",
835 .parent_hws = (const struct clk_hw *[]) {
836 &gcc_qdss_tsctr_clk_src.clkr.hw },
837 .num_parents = 1,
838 .ops = &clk_fixed_factor_ops,
839 },
840 };
841
842 static struct clk_fixed_factor gcc_qdss_tsctr_div4_clk_src = {
843 .mult = 1,
844 .div = 4,
845 .hw.init = &(struct clk_init_data) {
846 .name = "gcc_qdss_tsctr_div4_clk_src",
847 .parent_hws = (const struct clk_hw *[]) {
848 &gcc_qdss_tsctr_clk_src.clkr.hw },
849 .num_parents = 1,
850 .ops = &clk_fixed_factor_ops,
851 },
852 };
853
854 static struct clk_fixed_factor gcc_qdss_tsctr_div8_clk_src = {
855 .mult = 1,
856 .div = 8,
857 .hw.init = &(struct clk_init_data) {
858 .name = "gcc_qdss_tsctr_div8_clk_src",
859 .parent_hws = (const struct clk_hw *[]) {
860 &gcc_qdss_tsctr_clk_src.clkr.hw },
861 .num_parents = 1,
862 .ops = &clk_fixed_factor_ops,
863 },
864 };
865
866 static struct clk_fixed_factor gcc_qdss_tsctr_div16_clk_src = {
867 .mult = 1,
868 .div = 16,
869 .hw.init = &(struct clk_init_data) {
870 .name = "gcc_qdss_tsctr_div16_clk_src",
871 .parent_hws = (const struct clk_hw *[]) {
872 &gcc_qdss_tsctr_clk_src.clkr.hw },
873 .num_parents = 1,
874 .ops = &clk_fixed_factor_ops,
875 },
876 };
877
878 static const struct freq_tbl ftbl_gcc_qpic_io_macro_clk_src[] = {
879 F(24000000, P_XO, 1, 0, 0),
880 F(100000000, P_GPLL0_OUT_MAIN, 8, 0, 0),
881 F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
882 F(320000000, P_GPLL0_OUT_MAIN, 2.5, 0, 0),
883 { }
884 };
885
886 static struct clk_rcg2 gcc_qpic_io_macro_clk_src = {
887 .cmd_rcgr = 0x32004,
888 .mnd_width = 0,
889 .hid_width = 5,
890 .parent_map = gcc_parent_map_7,
891 .freq_tbl = ftbl_gcc_qpic_io_macro_clk_src,
892 .clkr.hw.init = &(const struct clk_init_data) {
893 .name = "gcc_qpic_io_macro_clk_src",
894 .parent_data = gcc_parent_data_7,
895 .num_parents = ARRAY_SIZE(gcc_parent_data_7),
896 .ops = &clk_rcg2_ops,
897 },
898 };
899
900 static const struct freq_tbl ftbl_gcc_sdcc1_apps_clk_src[] = {
901 F(143713, P_XO, 1, 1, 167),
902 F(400000, P_XO, 1, 1, 60),
903 F(24000000, P_XO, 1, 0, 0),
904 F(48000000, P_GPLL2_OUT_MAIN, 12, 1, 2),
905 F(96000000, P_GPLL2_OUT_MAIN, 12, 0, 0),
906 F(177777778, P_GPLL0_OUT_MAIN, 4.5, 0, 0),
907 F(192000000, P_GPLL2_OUT_MAIN, 6, 0, 0),
908 F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
909 { }
910 };
911
912 static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
913 .cmd_rcgr = 0x33004,
914 .mnd_width = 8,
915 .hid_width = 5,
916 .parent_map = gcc_parent_map_8,
917 .freq_tbl = ftbl_gcc_sdcc1_apps_clk_src,
918 .clkr.hw.init = &(const struct clk_init_data) {
919 .name = "gcc_sdcc1_apps_clk_src",
920 .parent_data = gcc_parent_data_8,
921 .num_parents = ARRAY_SIZE(gcc_parent_data_8),
922 .ops = &clk_rcg2_floor_ops,
923 },
924 };
925
926 static const struct freq_tbl ftbl_gcc_sleep_clk_src[] = {
927 F(32000, P_SLEEP_CLK, 1, 0, 0),
928 { }
929 };
930
931 static struct clk_rcg2 gcc_sleep_clk_src = {
932 .cmd_rcgr = 0x3400c,
933 .mnd_width = 0,
934 .hid_width = 5,
935 .parent_map = gcc_parent_map_9,
936 .freq_tbl = ftbl_gcc_sleep_clk_src,
937 .clkr.hw.init = &(const struct clk_init_data) {
938 .name = "gcc_sleep_clk_src",
939 .parent_data = gcc_parent_data_9,
940 .num_parents = ARRAY_SIZE(gcc_parent_data_9),
941 .ops = &clk_rcg2_ops,
942 },
943 };
944
945 static const struct freq_tbl ftbl_gcc_system_noc_bfdcd_clk_src[] = {
946 F(24000000, P_XO, 1, 0, 0),
947 F(133333333, P_GPLL0_OUT_MAIN, 6, 0, 0),
948 F(200000000, P_GPLL0_OUT_MAIN, 4, 0, 0),
949 F(266666667, P_GPLL4_OUT_MAIN, 4.5, 0, 0),
950 { }
951 };
952
953 static struct clk_rcg2 gcc_system_noc_bfdcd_clk_src = {
954 .cmd_rcgr = 0x2e004,
955 .mnd_width = 0,
956 .hid_width = 5,
957 .parent_map = gcc_parent_map_10,
958 .freq_tbl = ftbl_gcc_system_noc_bfdcd_clk_src,
959 .clkr.hw.init = &(const struct clk_init_data) {
960 .name = "gcc_system_noc_bfdcd_clk_src",
961 .parent_data = gcc_parent_data_10,
962 .num_parents = ARRAY_SIZE(gcc_parent_data_10),
963 .ops = &clk_rcg2_ops,
964 },
965 };
966
967 static struct clk_fixed_factor gcc_system_noc_bfdcd_div2_clk_src = {
968 .mult = 1,
969 .div = 2,
970 .hw.init = &(struct clk_init_data) {
971 .name = "gcc_system_noc_bfdcd_div2_clk_src",
972 .parent_hws = (const struct clk_hw *[]) {
973 &gcc_system_noc_bfdcd_clk_src.clkr.hw },
974 .num_parents = 1,
975 .ops = &clk_fixed_factor_ops,
976 .flags = CLK_SET_RATE_PARENT,
977 },
978 };
979
980 static struct clk_rcg2 gcc_uniphy_sys_clk_src = {
981 .cmd_rcgr = 0x16004,
982 .mnd_width = 0,
983 .hid_width = 5,
984 .parent_map = gcc_parent_map_xo,
985 .freq_tbl = ftbl_gcc_nss_ts_clk_src,
986 .clkr.hw.init = &(const struct clk_init_data) {
987 .name = "gcc_uniphy_sys_clk_src",
988 .parent_data = &gcc_parent_data_xo,
989 .num_parents = 1,
990 .ops = &clk_rcg2_ops,
991 },
992 };
993
994 static struct clk_rcg2 gcc_usb0_aux_clk_src = {
995 .cmd_rcgr = 0x2c018,
996 .mnd_width = 16,
997 .hid_width = 5,
998 .parent_map = gcc_parent_map_11,
999 .freq_tbl = ftbl_gcc_pcie_aux_clk_src,
1000 .clkr.hw.init = &(const struct clk_init_data) {
1001 .name = "gcc_usb0_aux_clk_src",
1002 .parent_data = gcc_parent_data_11,
1003 .num_parents = ARRAY_SIZE(gcc_parent_data_11),
1004 .ops = &clk_rcg2_ops,
1005 },
1006 };
1007
1008 static const struct freq_tbl ftbl_gcc_usb0_lfps_clk_src[] = {
1009 F(25000000, P_GPLL0_OUT_MAIN, 16, 1, 2),
1010 { }
1011 };
1012
1013 static struct clk_rcg2 gcc_usb0_lfps_clk_src = {
1014 .cmd_rcgr = 0x2c07c,
1015 .mnd_width = 8,
1016 .hid_width = 5,
1017 .parent_map = gcc_parent_map_1,
1018 .freq_tbl = ftbl_gcc_usb0_lfps_clk_src,
1019 .clkr.hw.init = &(const struct clk_init_data) {
1020 .name = "gcc_usb0_lfps_clk_src",
1021 .parent_data = gcc_parent_data_1,
1022 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1023 .ops = &clk_rcg2_ops,
1024 },
1025 };
1026
1027 static struct clk_rcg2 gcc_usb0_master_clk_src = {
1028 .cmd_rcgr = 0x2c004,
1029 .mnd_width = 8,
1030 .hid_width = 5,
1031 .parent_map = gcc_parent_map_0,
1032 .freq_tbl = ftbl_gcc_gp1_clk_src,
1033 .clkr.hw.init = &(const struct clk_init_data) {
1034 .name = "gcc_usb0_master_clk_src",
1035 .parent_data = gcc_parent_data_0,
1036 .num_parents = ARRAY_SIZE(gcc_parent_data_0),
1037 .ops = &clk_rcg2_ops,
1038 },
1039 };
1040
1041 static const struct freq_tbl ftbl_gcc_usb0_mock_utmi_clk_src[] = {
1042 F(60000000, P_GPLL4_OUT_AUX, 10, 1, 2),
1043 { }
1044 };
1045
1046 static struct clk_rcg2 gcc_usb0_mock_utmi_clk_src = {
1047 .cmd_rcgr = 0x2c02c,
1048 .mnd_width = 8,
1049 .hid_width = 5,
1050 .parent_map = gcc_parent_map_12,
1051 .freq_tbl = ftbl_gcc_usb0_mock_utmi_clk_src,
1052 .clkr.hw.init = &(const struct clk_init_data) {
1053 .name = "gcc_usb0_mock_utmi_clk_src",
1054 .parent_data = gcc_parent_data_12,
1055 .num_parents = ARRAY_SIZE(gcc_parent_data_12),
1056 .ops = &clk_rcg2_ops,
1057 },
1058 };
1059
1060 static struct clk_regmap_phy_mux gcc_usb0_pipe_clk_src = {
1061 .reg = 0x2c074,
1062 .clkr = {
1063 .hw.init = &(struct clk_init_data) {
1064 .name = "gcc_usb0_pipe_clk_src",
1065 .parent_data = &(const struct clk_parent_data) {
1066 .index = DT_USB_PCIE_WRAPPER_PIPE_CLK,
1067 },
1068 .num_parents = 1,
1069 .ops = &clk_regmap_phy_mux_ops,
1070 },
1071 },
1072 };
1073
1074 static struct clk_rcg2 gcc_wcss_ahb_clk_src = {
1075 .cmd_rcgr = 0x25030,
1076 .mnd_width = 0,
1077 .hid_width = 5,
1078 .parent_map = gcc_parent_map_1,
1079 .freq_tbl = ftbl_gcc_lpass_sway_clk_src,
1080 .clkr.hw.init = &(const struct clk_init_data) {
1081 .name = "gcc_wcss_ahb_clk_src",
1082 .parent_data = gcc_parent_data_1,
1083 .num_parents = ARRAY_SIZE(gcc_parent_data_1),
1084 .ops = &clk_rcg2_ops,
1085 },
1086 };
1087
1088 static struct clk_rcg2 gcc_xo_clk_src = {
1089 .cmd_rcgr = 0x34004,
1090 .mnd_width = 0,
1091 .hid_width = 5,
1092 .parent_map = gcc_parent_map_xo,
1093 .freq_tbl = ftbl_gcc_nss_ts_clk_src,
1094 .clkr.hw.init = &(const struct clk_init_data) {
1095 .name = "gcc_xo_clk_src",
1096 .parent_data = &gcc_parent_data_xo,
1097 .num_parents = 1,
1098 .ops = &clk_rcg2_ops,
1099 },
1100 };
1101
1102 static struct clk_fixed_factor gcc_xo_div4_clk_src = {
1103 .mult = 1,
1104 .div = 4,
1105 .hw.init = &(struct clk_init_data) {
1106 .name = "gcc_xo_div4_clk_src",
1107 .parent_hws = (const struct clk_hw *[]) {
1108 &gcc_xo_clk_src.clkr.hw },
1109 .num_parents = 1,
1110 .ops = &clk_fixed_factor_ops,
1111 .flags = CLK_SET_RATE_PARENT,
1112 },
1113 };
1114
1115 static struct clk_regmap_div gcc_qdss_dap_div_clk_src = {
1116 .reg = 0x2d028,
1117 .shift = 0,
1118 .width = 4,
1119 .clkr.hw.init = &(const struct clk_init_data) {
1120 .name = "gcc_qdss_dap_div_clk_src",
1121 .parent_hws = (const struct clk_hw*[]) {
1122 &gcc_qdss_tsctr_clk_src.clkr.hw,
1123 },
1124 .num_parents = 1,
1125 .ops = &clk_regmap_div_ro_ops,
1126 },
1127 };
1128
1129 static struct clk_regmap_div gcc_usb0_mock_utmi_div_clk_src = {
1130 .reg = 0x2c040,
1131 .shift = 0,
1132 .width = 2,
1133 .clkr.hw.init = &(const struct clk_init_data) {
1134 .name = "gcc_usb0_mock_utmi_div_clk_src",
1135 .parent_hws = (const struct clk_hw*[]) {
1136 &gcc_usb0_mock_utmi_clk_src.clkr.hw,
1137 },
1138 .num_parents = 1,
1139 .flags = CLK_SET_RATE_PARENT,
1140 .ops = &clk_regmap_div_ro_ops,
1141 },
1142 };
1143
1144 static struct clk_branch gcc_adss_pwm_clk = {
1145 .halt_reg = 0x1c00c,
1146 .halt_check = BRANCH_HALT,
1147 .clkr = {
1148 .enable_reg = 0x1c00c,
1149 .enable_mask = BIT(0),
1150 .hw.init = &(const struct clk_init_data) {
1151 .name = "gcc_adss_pwm_clk",
1152 .parent_hws = (const struct clk_hw*[]) {
1153 &gcc_adss_pwm_clk_src.clkr.hw,
1154 },
1155 .num_parents = 1,
1156 .flags = CLK_SET_RATE_PARENT,
1157 .ops = &clk_branch2_ops,
1158 },
1159 },
1160 };
1161
1162 static struct clk_branch gcc_ahb_clk = {
1163 .halt_reg = 0x34024,
1164 .halt_check = BRANCH_HALT_VOTED,
1165 .clkr = {
1166 .enable_reg = 0x34024,
1167 .enable_mask = BIT(0),
1168 .hw.init = &(const struct clk_init_data) {
1169 .name = "gcc_ahb_clk",
1170 .parent_hws = (const struct clk_hw*[]) {
1171 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1172 },
1173 .num_parents = 1,
1174 .flags = CLK_SET_RATE_PARENT,
1175 .ops = &clk_branch2_ops,
1176 },
1177 },
1178 };
1179
1180 static struct clk_branch gcc_blsp1_ahb_clk = {
1181 .halt_reg = 0x1008,
1182 .halt_check = BRANCH_HALT_VOTED,
1183 .clkr = {
1184 .enable_reg = 0xb004,
1185 .enable_mask = BIT(4),
1186 .hw.init = &(const struct clk_init_data) {
1187 .name = "gcc_blsp1_ahb_clk",
1188 .parent_hws = (const struct clk_hw*[]) {
1189 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1190 },
1191 .num_parents = 1,
1192 .flags = CLK_SET_RATE_PARENT,
1193 .ops = &clk_branch2_ops,
1194 },
1195 },
1196 };
1197
1198 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1199 .halt_reg = 0x2024,
1200 .halt_check = BRANCH_HALT,
1201 .clkr = {
1202 .enable_reg = 0x2024,
1203 .enable_mask = BIT(0),
1204 .hw.init = &(const struct clk_init_data) {
1205 .name = "gcc_blsp1_qup1_i2c_apps_clk",
1206 .parent_hws = (const struct clk_hw*[]) {
1207 &gcc_blsp1_qup1_spi_apps_clk_src.clkr.hw,
1208 },
1209 .num_parents = 1,
1210 .flags = CLK_SET_RATE_PARENT,
1211 .ops = &clk_branch2_ops,
1212 },
1213 },
1214 };
1215
1216 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1217 .halt_reg = 0x2020,
1218 .halt_check = BRANCH_HALT,
1219 .clkr = {
1220 .enable_reg = 0x2020,
1221 .enable_mask = BIT(0),
1222 .hw.init = &(const struct clk_init_data) {
1223 .name = "gcc_blsp1_qup1_spi_apps_clk",
1224 .parent_hws = (const struct clk_hw*[]) {
1225 &gcc_blsp1_qup1_spi_apps_clk_src.clkr.hw,
1226 },
1227 .num_parents = 1,
1228 .flags = CLK_SET_RATE_PARENT,
1229 .ops = &clk_branch2_ops,
1230 },
1231 },
1232 };
1233
1234 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1235 .halt_reg = 0x3024,
1236 .halt_check = BRANCH_HALT,
1237 .clkr = {
1238 .enable_reg = 0x3024,
1239 .enable_mask = BIT(0),
1240 .hw.init = &(const struct clk_init_data) {
1241 .name = "gcc_blsp1_qup2_i2c_apps_clk",
1242 .parent_hws = (const struct clk_hw*[]) {
1243 &gcc_blsp1_qup2_spi_apps_clk_src.clkr.hw,
1244 },
1245 .num_parents = 1,
1246 .flags = CLK_SET_RATE_PARENT,
1247 .ops = &clk_branch2_ops,
1248 },
1249 },
1250 };
1251
1252 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1253 .halt_reg = 0x3020,
1254 .halt_check = BRANCH_HALT,
1255 .clkr = {
1256 .enable_reg = 0x3020,
1257 .enable_mask = BIT(0),
1258 .hw.init = &(const struct clk_init_data) {
1259 .name = "gcc_blsp1_qup2_spi_apps_clk",
1260 .parent_hws = (const struct clk_hw*[]) {
1261 &gcc_blsp1_qup2_spi_apps_clk_src.clkr.hw,
1262 },
1263 .num_parents = 1,
1264 .flags = CLK_SET_RATE_PARENT,
1265 .ops = &clk_branch2_ops,
1266 },
1267 },
1268 };
1269
1270 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1271 .halt_reg = 0x4024,
1272 .halt_check = BRANCH_HALT,
1273 .clkr = {
1274 .enable_reg = 0x4024,
1275 .enable_mask = BIT(0),
1276 .hw.init = &(const struct clk_init_data) {
1277 .name = "gcc_blsp1_qup3_i2c_apps_clk",
1278 .parent_hws = (const struct clk_hw*[]) {
1279 &gcc_blsp1_qup3_spi_apps_clk_src.clkr.hw,
1280 },
1281 .num_parents = 1,
1282 .flags = CLK_SET_RATE_PARENT,
1283 .ops = &clk_branch2_ops,
1284 },
1285 },
1286 };
1287
1288 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1289 .halt_reg = 0x4020,
1290 .halt_check = BRANCH_HALT,
1291 .clkr = {
1292 .enable_reg = 0x4020,
1293 .enable_mask = BIT(0),
1294 .hw.init = &(const struct clk_init_data) {
1295 .name = "gcc_blsp1_qup3_spi_apps_clk",
1296 .parent_hws = (const struct clk_hw*[]) {
1297 &gcc_blsp1_qup3_spi_apps_clk_src.clkr.hw,
1298 },
1299 .num_parents = 1,
1300 .flags = CLK_SET_RATE_PARENT,
1301 .ops = &clk_branch2_ops,
1302 },
1303 },
1304 };
1305
1306 static struct clk_branch gcc_blsp1_sleep_clk = {
1307 .halt_reg = 0x1010,
1308 .halt_check = BRANCH_HALT_VOTED,
1309 .clkr = {
1310 .enable_reg = 0xb004,
1311 .enable_mask = BIT(5),
1312 .hw.init = &(const struct clk_init_data) {
1313 .name = "gcc_blsp1_sleep_clk",
1314 .parent_hws = (const struct clk_hw*[]) {
1315 &gcc_sleep_clk_src.clkr.hw,
1316 },
1317 .num_parents = 1,
1318 .flags = CLK_SET_RATE_PARENT,
1319 .ops = &clk_branch2_ops,
1320 },
1321 },
1322 };
1323
1324 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1325 .halt_reg = 0x2040,
1326 .halt_check = BRANCH_HALT,
1327 .clkr = {
1328 .enable_reg = 0x2040,
1329 .enable_mask = BIT(0),
1330 .hw.init = &(const struct clk_init_data) {
1331 .name = "gcc_blsp1_uart1_apps_clk",
1332 .parent_hws = (const struct clk_hw*[]) {
1333 &gcc_blsp1_uart1_apps_clk_src.clkr.hw,
1334 },
1335 .num_parents = 1,
1336 .flags = CLK_SET_RATE_PARENT,
1337 .ops = &clk_branch2_ops,
1338 },
1339 },
1340 };
1341
1342 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1343 .halt_reg = 0x3040,
1344 .halt_check = BRANCH_HALT,
1345 .clkr = {
1346 .enable_reg = 0x3040,
1347 .enable_mask = BIT(0),
1348 .hw.init = &(const struct clk_init_data) {
1349 .name = "gcc_blsp1_uart2_apps_clk",
1350 .parent_hws = (const struct clk_hw*[]) {
1351 &gcc_blsp1_uart2_apps_clk_src.clkr.hw,
1352 },
1353 .num_parents = 1,
1354 .flags = CLK_SET_RATE_PARENT,
1355 .ops = &clk_branch2_ops,
1356 },
1357 },
1358 };
1359
1360 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1361 .halt_reg = 0x4054,
1362 .halt_check = BRANCH_HALT,
1363 .clkr = {
1364 .enable_reg = 0x4054,
1365 .enable_mask = BIT(0),
1366 .hw.init = &(const struct clk_init_data) {
1367 .name = "gcc_blsp1_uart3_apps_clk",
1368 .parent_hws = (const struct clk_hw*[]) {
1369 &gcc_blsp1_uart3_apps_clk_src.clkr.hw,
1370 },
1371 .num_parents = 1,
1372 .flags = CLK_SET_RATE_PARENT,
1373 .ops = &clk_branch2_ops,
1374 },
1375 },
1376 };
1377
1378 static struct clk_branch gcc_ce_ahb_clk = {
1379 .halt_reg = 0x25074,
1380 .halt_check = BRANCH_HALT,
1381 .clkr = {
1382 .enable_reg = 0x25074,
1383 .enable_mask = BIT(0),
1384 .hw.init = &(const struct clk_init_data) {
1385 .name = "gcc_ce_ahb_clk",
1386 .parent_hws = (const struct clk_hw*[]) {
1387 &gcc_system_noc_bfdcd_div2_clk_src.hw,
1388 },
1389 .num_parents = 1,
1390 .flags = CLK_SET_RATE_PARENT,
1391 .ops = &clk_branch2_ops,
1392 },
1393 },
1394 };
1395
1396 static struct clk_branch gcc_ce_axi_clk = {
1397 .halt_reg = 0x25068,
1398 .halt_check = BRANCH_HALT,
1399 .clkr = {
1400 .enable_reg = 0x25068,
1401 .enable_mask = BIT(0),
1402 .hw.init = &(const struct clk_init_data) {
1403 .name = "gcc_ce_axi_clk",
1404 .parent_hws = (const struct clk_hw*[]) {
1405 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
1406 },
1407 .num_parents = 1,
1408 .flags = CLK_SET_RATE_PARENT,
1409 .ops = &clk_branch2_ops,
1410 },
1411 },
1412 };
1413
1414 static struct clk_branch gcc_ce_pcnoc_ahb_clk = {
1415 .halt_reg = 0x25070,
1416 .halt_check = BRANCH_HALT,
1417 .clkr = {
1418 .enable_reg = 0x25070,
1419 .enable_mask = BIT(0),
1420 .hw.init = &(const struct clk_init_data) {
1421 .name = "gcc_ce_pcnoc_ahb_clk",
1422 .parent_hws = (const struct clk_hw*[]) {
1423 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1424 },
1425 .num_parents = 1,
1426 .flags = CLK_SET_RATE_PARENT,
1427 .ops = &clk_branch2_ops,
1428 },
1429 },
1430 };
1431
1432 static struct clk_branch gcc_cmn_12gpll_ahb_clk = {
1433 .halt_reg = 0x3a004,
1434 .halt_check = BRANCH_HALT,
1435 .clkr = {
1436 .enable_reg = 0x3a004,
1437 .enable_mask = BIT(0),
1438 .hw.init = &(const struct clk_init_data) {
1439 .name = "gcc_cmn_12gpll_ahb_clk",
1440 .parent_hws = (const struct clk_hw*[]) {
1441 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1442 },
1443 .num_parents = 1,
1444 .flags = CLK_SET_RATE_PARENT,
1445 .ops = &clk_branch2_ops,
1446 },
1447 },
1448 };
1449
1450 static struct clk_branch gcc_cmn_12gpll_apu_clk = {
1451 .halt_reg = 0x3a00c,
1452 .halt_check = BRANCH_HALT,
1453 .clkr = {
1454 .enable_reg = 0x3a00c,
1455 .enable_mask = BIT(0),
1456 .hw.init = &(const struct clk_init_data) {
1457 .name = "gcc_cmn_12gpll_apu_clk",
1458 .parent_hws = (const struct clk_hw*[]) {
1459 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1460 },
1461 .num_parents = 1,
1462 .flags = CLK_SET_RATE_PARENT,
1463 .ops = &clk_branch2_ops,
1464 },
1465 },
1466 };
1467
1468 static struct clk_branch gcc_cmn_12gpll_sys_clk = {
1469 .halt_reg = 0x3a008,
1470 .halt_check = BRANCH_HALT,
1471 .clkr = {
1472 .enable_reg = 0x3a008,
1473 .enable_mask = BIT(0),
1474 .hw.init = &(const struct clk_init_data) {
1475 .name = "gcc_cmn_12gpll_sys_clk",
1476 .parent_hws = (const struct clk_hw*[]) {
1477 &gcc_uniphy_sys_clk_src.clkr.hw,
1478 },
1479 .num_parents = 1,
1480 .flags = CLK_SET_RATE_PARENT,
1481 .ops = &clk_branch2_ops,
1482 },
1483 },
1484 };
1485
1486 static struct clk_branch gcc_gp1_clk = {
1487 .halt_reg = 0x8018,
1488 .halt_check = BRANCH_HALT,
1489 .clkr = {
1490 .enable_reg = 0x8018,
1491 .enable_mask = BIT(0),
1492 .hw.init = &(const struct clk_init_data) {
1493 .name = "gcc_gp1_clk",
1494 .parent_hws = (const struct clk_hw*[]) {
1495 &gcc_gp1_clk_src.clkr.hw,
1496 },
1497 .num_parents = 1,
1498 .flags = CLK_SET_RATE_PARENT,
1499 .ops = &clk_branch2_ops,
1500 },
1501 },
1502 };
1503
1504 static struct clk_branch gcc_gp2_clk = {
1505 .halt_reg = 0x9018,
1506 .halt_check = BRANCH_HALT,
1507 .clkr = {
1508 .enable_reg = 0x9018,
1509 .enable_mask = BIT(0),
1510 .hw.init = &(const struct clk_init_data) {
1511 .name = "gcc_gp2_clk",
1512 .parent_hws = (const struct clk_hw*[]) {
1513 &gcc_gp2_clk_src.clkr.hw,
1514 },
1515 .num_parents = 1,
1516 .flags = CLK_SET_RATE_PARENT,
1517 .ops = &clk_branch2_ops,
1518 },
1519 },
1520 };
1521
1522 static struct clk_branch gcc_lpass_core_axim_clk = {
1523 .halt_reg = 0x27018,
1524 .halt_check = BRANCH_HALT_VOTED,
1525 .clkr = {
1526 .enable_reg = 0x27018,
1527 .enable_mask = BIT(0),
1528 .hw.init = &(const struct clk_init_data) {
1529 .name = "gcc_lpass_core_axim_clk",
1530 .parent_hws = (const struct clk_hw*[]) {
1531 &gcc_lpass_sway_clk_src.clkr.hw,
1532 },
1533 .num_parents = 1,
1534 .flags = CLK_SET_RATE_PARENT,
1535 .ops = &clk_branch2_ops,
1536 },
1537 },
1538 };
1539
1540 static struct clk_branch gcc_lpass_sway_clk = {
1541 .halt_reg = 0x27014,
1542 .halt_check = BRANCH_HALT,
1543 .clkr = {
1544 .enable_reg = 0x27014,
1545 .enable_mask = BIT(0),
1546 .hw.init = &(const struct clk_init_data) {
1547 .name = "gcc_lpass_sway_clk",
1548 .parent_hws = (const struct clk_hw*[]) {
1549 &gcc_lpass_sway_clk_src.clkr.hw,
1550 },
1551 .num_parents = 1,
1552 .flags = CLK_SET_RATE_PARENT,
1553 .ops = &clk_branch2_ops,
1554 },
1555 },
1556 };
1557
1558 static struct clk_branch gcc_mdio_ahb_clk = {
1559 .halt_reg = 0x12004,
1560 .halt_check = BRANCH_HALT,
1561 .clkr = {
1562 .enable_reg = 0x12004,
1563 .enable_mask = BIT(0),
1564 .hw.init = &(const struct clk_init_data) {
1565 .name = "gcc_mdio_ahb_clk",
1566 .parent_hws = (const struct clk_hw*[]) {
1567 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1568 },
1569 .num_parents = 1,
1570 .flags = CLK_SET_RATE_PARENT,
1571 .ops = &clk_branch2_ops,
1572 },
1573 },
1574 };
1575
1576 static struct clk_branch gcc_mdio_slave_ahb_clk = {
1577 .halt_reg = 0x1200c,
1578 .halt_check = BRANCH_HALT,
1579 .clkr = {
1580 .enable_reg = 0x1200c,
1581 .enable_mask = BIT(0),
1582 .hw.init = &(const struct clk_init_data) {
1583 .name = "gcc_mdio_slave_ahb_clk",
1584 .parent_hws = (const struct clk_hw*[]) {
1585 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1586 },
1587 .num_parents = 1,
1588 .flags = CLK_SET_RATE_PARENT,
1589 .ops = &clk_branch2_ops,
1590 },
1591 },
1592 };
1593
1594 static struct clk_branch gcc_nss_ts_clk = {
1595 .halt_reg = 0x17018,
1596 .halt_check = BRANCH_HALT_VOTED,
1597 .clkr = {
1598 .enable_reg = 0x17018,
1599 .enable_mask = BIT(0),
1600 .hw.init = &(const struct clk_init_data) {
1601 .name = "gcc_nss_ts_clk",
1602 .parent_hws = (const struct clk_hw*[]) {
1603 &gcc_nss_ts_clk_src.clkr.hw,
1604 },
1605 .num_parents = 1,
1606 .flags = CLK_SET_RATE_PARENT,
1607 .ops = &clk_branch2_ops,
1608 },
1609 },
1610 };
1611
1612 static struct clk_branch gcc_nsscc_clk = {
1613 .halt_reg = 0x17034,
1614 .halt_check = BRANCH_HALT,
1615 .clkr = {
1616 .enable_reg = 0x17034,
1617 .enable_mask = BIT(0),
1618 .hw.init = &(const struct clk_init_data) {
1619 .name = "gcc_nsscc_clk",
1620 .parent_hws = (const struct clk_hw*[]) {
1621 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1622 },
1623 .num_parents = 1,
1624 .flags = CLK_SET_RATE_PARENT,
1625 .ops = &clk_branch2_ops,
1626 },
1627 },
1628 };
1629
1630 static struct clk_branch gcc_nsscfg_clk = {
1631 .halt_reg = 0x1702c,
1632 .halt_check = BRANCH_HALT,
1633 .clkr = {
1634 .enable_reg = 0x1702c,
1635 .enable_mask = BIT(0),
1636 .hw.init = &(const struct clk_init_data) {
1637 .name = "gcc_nsscfg_clk",
1638 .parent_hws = (const struct clk_hw*[]) {
1639 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1640 },
1641 .num_parents = 1,
1642 .flags = CLK_SET_RATE_PARENT,
1643 .ops = &clk_branch2_ops,
1644 },
1645 },
1646 };
1647
1648 static struct clk_branch gcc_nssnoc_atb_clk = {
1649 .halt_reg = 0x17014,
1650 .halt_check = BRANCH_HALT,
1651 .clkr = {
1652 .enable_reg = 0x17014,
1653 .enable_mask = BIT(0),
1654 .hw.init = &(const struct clk_init_data) {
1655 .name = "gcc_nssnoc_atb_clk",
1656 .parent_hws = (const struct clk_hw*[]) {
1657 &gcc_qdss_at_clk_src.clkr.hw,
1658 },
1659 .num_parents = 1,
1660 .flags = CLK_SET_RATE_PARENT,
1661 .ops = &clk_branch2_ops,
1662 },
1663 },
1664 };
1665
1666 static struct clk_branch gcc_nssnoc_nsscc_clk = {
1667 .halt_reg = 0x17030,
1668 .halt_check = BRANCH_HALT,
1669 .clkr = {
1670 .enable_reg = 0x17030,
1671 .enable_mask = BIT(0),
1672 .hw.init = &(const struct clk_init_data) {
1673 .name = "gcc_nssnoc_nsscc_clk",
1674 .parent_hws = (const struct clk_hw*[]) {
1675 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1676 },
1677 .num_parents = 1,
1678 .flags = CLK_SET_RATE_PARENT,
1679 .ops = &clk_branch2_ops,
1680 },
1681 },
1682 };
1683
1684 static struct clk_branch gcc_nssnoc_qosgen_ref_clk = {
1685 .halt_reg = 0x1701c,
1686 .halt_check = BRANCH_HALT,
1687 .clkr = {
1688 .enable_reg = 0x1701c,
1689 .enable_mask = BIT(0),
1690 .hw.init = &(const struct clk_init_data) {
1691 .name = "gcc_nssnoc_qosgen_ref_clk",
1692 .parent_hws = (const struct clk_hw*[]) {
1693 &gcc_xo_div4_clk_src.hw,
1694 },
1695 .num_parents = 1,
1696 .flags = CLK_SET_RATE_PARENT,
1697 .ops = &clk_branch2_ops,
1698 },
1699 },
1700 };
1701
1702 static struct clk_branch gcc_nssnoc_snoc_1_clk = {
1703 .halt_reg = 0x1707c,
1704 .halt_check = BRANCH_HALT,
1705 .clkr = {
1706 .enable_reg = 0x1707c,
1707 .enable_mask = BIT(0),
1708 .hw.init = &(const struct clk_init_data) {
1709 .name = "gcc_nssnoc_snoc_1_clk",
1710 .parent_hws = (const struct clk_hw*[]) {
1711 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
1712 },
1713 .num_parents = 1,
1714 .flags = CLK_SET_RATE_PARENT,
1715 .ops = &clk_branch2_ops,
1716 },
1717 },
1718 };
1719
1720 static struct clk_branch gcc_nssnoc_snoc_clk = {
1721 .halt_reg = 0x17028,
1722 .halt_check = BRANCH_HALT,
1723 .clkr = {
1724 .enable_reg = 0x17028,
1725 .enable_mask = BIT(0),
1726 .hw.init = &(const struct clk_init_data) {
1727 .name = "gcc_nssnoc_snoc_clk",
1728 .parent_hws = (const struct clk_hw*[]) {
1729 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
1730 },
1731 .num_parents = 1,
1732 .flags = CLK_SET_RATE_PARENT,
1733 .ops = &clk_branch2_ops,
1734 },
1735 },
1736 };
1737
1738 static struct clk_branch gcc_nssnoc_timeout_ref_clk = {
1739 .halt_reg = 0x17020,
1740 .halt_check = BRANCH_HALT,
1741 .clkr = {
1742 .enable_reg = 0x17020,
1743 .enable_mask = BIT(0),
1744 .hw.init = &(const struct clk_init_data) {
1745 .name = "gcc_nssnoc_timeout_ref_clk",
1746 .parent_hws = (const struct clk_hw*[]) {
1747 &gcc_xo_div4_clk_src.hw,
1748 },
1749 .num_parents = 1,
1750 .flags = CLK_SET_RATE_PARENT,
1751 .ops = &clk_branch2_ops,
1752 },
1753 },
1754 };
1755
1756 static struct clk_branch gcc_nssnoc_xo_dcd_clk = {
1757 .halt_reg = 0x17074,
1758 .halt_check = BRANCH_HALT,
1759 .clkr = {
1760 .enable_reg = 0x17074,
1761 .enable_mask = BIT(0),
1762 .hw.init = &(const struct clk_init_data) {
1763 .name = "gcc_nssnoc_xo_dcd_clk",
1764 .parent_hws = (const struct clk_hw*[]) {
1765 &gcc_xo_clk_src.clkr.hw,
1766 },
1767 .num_parents = 1,
1768 .flags = CLK_SET_RATE_PARENT,
1769 .ops = &clk_branch2_ops,
1770 },
1771 },
1772 };
1773
1774 static struct clk_branch gcc_pcie3x1_0_ahb_clk = {
1775 .halt_reg = 0x29030,
1776 .halt_check = BRANCH_HALT,
1777 .clkr = {
1778 .enable_reg = 0x29030,
1779 .enable_mask = BIT(0),
1780 .hw.init = &(const struct clk_init_data) {
1781 .name = "gcc_pcie3x1_0_ahb_clk",
1782 .parent_hws = (const struct clk_hw*[]) {
1783 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1784 },
1785 .num_parents = 1,
1786 .flags = CLK_SET_RATE_PARENT,
1787 .ops = &clk_branch2_ops,
1788 },
1789 },
1790 };
1791
1792 static struct clk_branch gcc_pcie3x1_0_aux_clk = {
1793 .halt_reg = 0x29070,
1794 .halt_check = BRANCH_HALT,
1795 .clkr = {
1796 .enable_reg = 0x29070,
1797 .enable_mask = BIT(0),
1798 .hw.init = &(const struct clk_init_data) {
1799 .name = "gcc_pcie3x1_0_aux_clk",
1800 .parent_hws = (const struct clk_hw*[]) {
1801 &gcc_pcie_aux_clk_src.clkr.hw,
1802 },
1803 .num_parents = 1,
1804 .flags = CLK_SET_RATE_PARENT,
1805 .ops = &clk_branch2_ops,
1806 },
1807 },
1808 };
1809
1810 static struct clk_branch gcc_pcie3x1_0_axi_m_clk = {
1811 .halt_reg = 0x29038,
1812 .halt_check = BRANCH_HALT,
1813 .clkr = {
1814 .enable_reg = 0x29038,
1815 .enable_mask = BIT(0),
1816 .hw.init = &(const struct clk_init_data) {
1817 .name = "gcc_pcie3x1_0_axi_m_clk",
1818 .parent_hws = (const struct clk_hw*[]) {
1819 &gcc_pcie3x1_0_axi_clk_src.clkr.hw,
1820 },
1821 .num_parents = 1,
1822 .flags = CLK_SET_RATE_PARENT,
1823 .ops = &clk_branch2_ops,
1824 },
1825 },
1826 };
1827
1828 static struct clk_branch gcc_pcie3x1_0_axi_s_bridge_clk = {
1829 .halt_reg = 0x29048,
1830 .halt_check = BRANCH_HALT,
1831 .clkr = {
1832 .enable_reg = 0x29048,
1833 .enable_mask = BIT(0),
1834 .hw.init = &(const struct clk_init_data) {
1835 .name = "gcc_pcie3x1_0_axi_s_bridge_clk",
1836 .parent_hws = (const struct clk_hw*[]) {
1837 &gcc_pcie3x1_0_axi_clk_src.clkr.hw,
1838 },
1839 .num_parents = 1,
1840 .flags = CLK_SET_RATE_PARENT,
1841 .ops = &clk_branch2_ops,
1842 },
1843 },
1844 };
1845
1846 static struct clk_branch gcc_pcie3x1_0_axi_s_clk = {
1847 .halt_reg = 0x29040,
1848 .halt_check = BRANCH_HALT,
1849 .clkr = {
1850 .enable_reg = 0x29040,
1851 .enable_mask = BIT(0),
1852 .hw.init = &(const struct clk_init_data) {
1853 .name = "gcc_pcie3x1_0_axi_s_clk",
1854 .parent_hws = (const struct clk_hw*[]) {
1855 &gcc_pcie3x1_0_axi_clk_src.clkr.hw,
1856 },
1857 .num_parents = 1,
1858 .flags = CLK_SET_RATE_PARENT,
1859 .ops = &clk_branch2_ops,
1860 },
1861 },
1862 };
1863
1864 static struct clk_branch gcc_pcie3x1_0_pipe_clk = {
1865 .halt_reg = 0x29068,
1866 .halt_check = BRANCH_HALT_DELAY,
1867 .clkr = {
1868 .enable_reg = 0x29068,
1869 .enable_mask = BIT(0),
1870 .hw.init = &(const struct clk_init_data) {
1871 .name = "gcc_pcie3x1_0_pipe_clk",
1872 .parent_hws = (const struct clk_hw*[]) {
1873 &gcc_pcie3x1_0_pipe_clk_src.clkr.hw,
1874 },
1875 .num_parents = 1,
1876 .flags = CLK_SET_RATE_PARENT,
1877 .ops = &clk_branch2_ops,
1878 },
1879 },
1880 };
1881
1882 static struct clk_branch gcc_pcie3x1_1_ahb_clk = {
1883 .halt_reg = 0x2a00c,
1884 .halt_check = BRANCH_HALT,
1885 .clkr = {
1886 .enable_reg = 0x2a00c,
1887 .enable_mask = BIT(0),
1888 .hw.init = &(const struct clk_init_data) {
1889 .name = "gcc_pcie3x1_1_ahb_clk",
1890 .parent_hws = (const struct clk_hw*[]) {
1891 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
1892 },
1893 .num_parents = 1,
1894 .flags = CLK_SET_RATE_PARENT,
1895 .ops = &clk_branch2_ops,
1896 },
1897 },
1898 };
1899
1900 static struct clk_branch gcc_pcie3x1_1_aux_clk = {
1901 .halt_reg = 0x2a070,
1902 .halt_check = BRANCH_HALT,
1903 .clkr = {
1904 .enable_reg = 0x2a070,
1905 .enable_mask = BIT(0),
1906 .hw.init = &(const struct clk_init_data) {
1907 .name = "gcc_pcie3x1_1_aux_clk",
1908 .parent_hws = (const struct clk_hw*[]) {
1909 &gcc_pcie_aux_clk_src.clkr.hw,
1910 },
1911 .num_parents = 1,
1912 .flags = CLK_SET_RATE_PARENT,
1913 .ops = &clk_branch2_ops,
1914 },
1915 },
1916 };
1917
1918 static struct clk_branch gcc_pcie3x1_1_axi_m_clk = {
1919 .halt_reg = 0x2a014,
1920 .halt_check = BRANCH_HALT,
1921 .clkr = {
1922 .enable_reg = 0x2a014,
1923 .enable_mask = BIT(0),
1924 .hw.init = &(const struct clk_init_data) {
1925 .name = "gcc_pcie3x1_1_axi_m_clk",
1926 .parent_hws = (const struct clk_hw*[]) {
1927 &gcc_pcie3x1_1_axi_clk_src.clkr.hw,
1928 },
1929 .num_parents = 1,
1930 .flags = CLK_SET_RATE_PARENT,
1931 .ops = &clk_branch2_ops,
1932 },
1933 },
1934 };
1935
1936 static struct clk_branch gcc_pcie3x1_1_axi_s_bridge_clk = {
1937 .halt_reg = 0x2a024,
1938 .halt_check = BRANCH_HALT,
1939 .clkr = {
1940 .enable_reg = 0x2a024,
1941 .enable_mask = BIT(0),
1942 .hw.init = &(const struct clk_init_data) {
1943 .name = "gcc_pcie3x1_1_axi_s_bridge_clk",
1944 .parent_hws = (const struct clk_hw*[]) {
1945 &gcc_pcie3x1_1_axi_clk_src.clkr.hw,
1946 },
1947 .num_parents = 1,
1948 .flags = CLK_SET_RATE_PARENT,
1949 .ops = &clk_branch2_ops,
1950 },
1951 },
1952 };
1953
1954 static struct clk_branch gcc_pcie3x1_1_axi_s_clk = {
1955 .halt_reg = 0x2a01c,
1956 .halt_check = BRANCH_HALT,
1957 .clkr = {
1958 .enable_reg = 0x2a01c,
1959 .enable_mask = BIT(0),
1960 .hw.init = &(const struct clk_init_data) {
1961 .name = "gcc_pcie3x1_1_axi_s_clk",
1962 .parent_hws = (const struct clk_hw*[]) {
1963 &gcc_pcie3x1_1_axi_clk_src.clkr.hw,
1964 },
1965 .num_parents = 1,
1966 .flags = CLK_SET_RATE_PARENT,
1967 .ops = &clk_branch2_ops,
1968 },
1969 },
1970 };
1971
1972 static struct clk_branch gcc_pcie3x1_1_pipe_clk = {
1973 .halt_reg = 0x2a068,
1974 .halt_check = BRANCH_HALT_DELAY,
1975 .clkr = {
1976 .enable_reg = 0x2a068,
1977 .enable_mask = BIT(0),
1978 .hw.init = &(const struct clk_init_data) {
1979 .name = "gcc_pcie3x1_1_pipe_clk",
1980 .parent_hws = (const struct clk_hw*[]) {
1981 &gcc_pcie3x1_1_pipe_clk_src.clkr.hw,
1982 },
1983 .num_parents = 1,
1984 .flags = CLK_SET_RATE_PARENT,
1985 .ops = &clk_branch2_ops,
1986 },
1987 },
1988 };
1989
1990 static struct clk_branch gcc_pcie3x1_phy_ahb_clk = {
1991 .halt_reg = 0x29078,
1992 .halt_check = BRANCH_HALT,
1993 .clkr = {
1994 .enable_reg = 0x29078,
1995 .enable_mask = BIT(0),
1996 .hw.init = &(const struct clk_init_data) {
1997 .name = "gcc_pcie3x1_phy_ahb_clk",
1998 .parent_hws = (const struct clk_hw*[]) {
1999 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2000 },
2001 .num_parents = 1,
2002 .flags = CLK_SET_RATE_PARENT,
2003 .ops = &clk_branch2_ops,
2004 },
2005 },
2006 };
2007
2008 static struct clk_branch gcc_pcie3x2_ahb_clk = {
2009 .halt_reg = 0x28030,
2010 .halt_check = BRANCH_HALT,
2011 .clkr = {
2012 .enable_reg = 0x28030,
2013 .enable_mask = BIT(0),
2014 .hw.init = &(const struct clk_init_data) {
2015 .name = "gcc_pcie3x2_ahb_clk",
2016 .parent_hws = (const struct clk_hw*[]) {
2017 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2018 },
2019 .num_parents = 1,
2020 .flags = CLK_SET_RATE_PARENT,
2021 .ops = &clk_branch2_ops,
2022 },
2023 },
2024 };
2025
2026 static struct clk_branch gcc_pcie3x2_aux_clk = {
2027 .halt_reg = 0x28070,
2028 .halt_check = BRANCH_HALT,
2029 .clkr = {
2030 .enable_reg = 0x28070,
2031 .enable_mask = BIT(0),
2032 .hw.init = &(const struct clk_init_data) {
2033 .name = "gcc_pcie3x2_aux_clk",
2034 .parent_hws = (const struct clk_hw*[]) {
2035 &gcc_pcie_aux_clk_src.clkr.hw,
2036 },
2037 .num_parents = 1,
2038 .flags = CLK_SET_RATE_PARENT,
2039 .ops = &clk_branch2_ops,
2040 },
2041 },
2042 };
2043
2044 static struct clk_branch gcc_pcie3x2_axi_m_clk = {
2045 .halt_reg = 0x28038,
2046 .halt_check = BRANCH_HALT,
2047 .clkr = {
2048 .enable_reg = 0x28038,
2049 .enable_mask = BIT(0),
2050 .hw.init = &(const struct clk_init_data) {
2051 .name = "gcc_pcie3x2_axi_m_clk",
2052 .parent_hws = (const struct clk_hw*[]) {
2053 &gcc_pcie3x2_axi_m_clk_src.clkr.hw,
2054 },
2055 .num_parents = 1,
2056 .flags = CLK_SET_RATE_PARENT,
2057 .ops = &clk_branch2_ops,
2058 },
2059 },
2060 };
2061
2062 static struct clk_branch gcc_pcie3x2_axi_s_bridge_clk = {
2063 .halt_reg = 0x28048,
2064 .halt_check = BRANCH_HALT,
2065 .clkr = {
2066 .enable_reg = 0x28048,
2067 .enable_mask = BIT(0),
2068 .hw.init = &(const struct clk_init_data) {
2069 .name = "gcc_pcie3x2_axi_s_bridge_clk",
2070 .parent_hws = (const struct clk_hw*[]) {
2071 &gcc_pcie3x2_axi_s_clk_src.clkr.hw,
2072 },
2073 .num_parents = 1,
2074 .flags = CLK_SET_RATE_PARENT,
2075 .ops = &clk_branch2_ops,
2076 },
2077 },
2078 };
2079
2080 static struct clk_branch gcc_pcie3x2_axi_s_clk = {
2081 .halt_reg = 0x28040,
2082 .halt_check = BRANCH_HALT,
2083 .clkr = {
2084 .enable_reg = 0x28040,
2085 .enable_mask = BIT(0),
2086 .hw.init = &(const struct clk_init_data) {
2087 .name = "gcc_pcie3x2_axi_s_clk",
2088 .parent_hws = (const struct clk_hw*[]) {
2089 &gcc_pcie3x2_axi_s_clk_src.clkr.hw,
2090 },
2091 .num_parents = 1,
2092 .flags = CLK_SET_RATE_PARENT,
2093 .ops = &clk_branch2_ops,
2094 },
2095 },
2096 };
2097
2098 static struct clk_branch gcc_pcie3x2_phy_ahb_clk = {
2099 .halt_reg = 0x28080,
2100 .halt_check = BRANCH_HALT,
2101 .clkr = {
2102 .enable_reg = 0x28080,
2103 .enable_mask = BIT(0),
2104 .hw.init = &(const struct clk_init_data) {
2105 .name = "gcc_pcie3x2_phy_ahb_clk",
2106 .parent_hws = (const struct clk_hw*[]) {
2107 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2108 },
2109 .num_parents = 1,
2110 .flags = CLK_SET_RATE_PARENT,
2111 .ops = &clk_branch2_ops,
2112 },
2113 },
2114 };
2115
2116 static struct clk_branch gcc_pcie3x2_pipe_clk = {
2117 .halt_reg = 0x28068,
2118 .halt_check = BRANCH_HALT_DELAY,
2119 .clkr = {
2120 .enable_reg = 0x28068,
2121 .enable_mask = BIT(0),
2122 .hw.init = &(const struct clk_init_data) {
2123 .name = "gcc_pcie3x2_pipe_clk",
2124 .parent_hws = (const struct clk_hw*[]) {
2125 &gcc_pcie3x2_pipe_clk_src.clkr.hw,
2126 },
2127 .num_parents = 1,
2128 .flags = CLK_SET_RATE_PARENT,
2129 .ops = &clk_branch2_ops,
2130 },
2131 },
2132 };
2133
2134 static struct clk_branch gcc_pcnoc_at_clk = {
2135 .halt_reg = 0x31024,
2136 .halt_check = BRANCH_HALT_VOTED,
2137 .clkr = {
2138 .enable_reg = 0x31024,
2139 .enable_mask = BIT(0),
2140 .hw.init = &(const struct clk_init_data) {
2141 .name = "gcc_pcnoc_at_clk",
2142 .parent_hws = (const struct clk_hw*[]) {
2143 &gcc_qdss_at_clk_src.clkr.hw,
2144 },
2145 .num_parents = 1,
2146 .flags = CLK_SET_RATE_PARENT,
2147 .ops = &clk_branch2_ops,
2148 },
2149 },
2150 };
2151
2152 static struct clk_branch gcc_pcnoc_lpass_clk = {
2153 .halt_reg = 0x31020,
2154 .halt_check = BRANCH_HALT,
2155 .clkr = {
2156 .enable_reg = 0x31020,
2157 .enable_mask = BIT(0),
2158 .hw.init = &(const struct clk_init_data) {
2159 .name = "gcc_pcnoc_lpass_clk",
2160 .parent_hws = (const struct clk_hw*[]) {
2161 &gcc_lpass_sway_clk_src.clkr.hw,
2162 },
2163 .num_parents = 1,
2164 .flags = CLK_SET_RATE_PARENT,
2165 .ops = &clk_branch2_ops,
2166 },
2167 },
2168 };
2169
2170 static struct clk_branch gcc_prng_ahb_clk = {
2171 .halt_reg = 0x13024,
2172 .halt_check = BRANCH_HALT_VOTED,
2173 .clkr = {
2174 .enable_reg = 0xb004,
2175 .enable_mask = BIT(10),
2176 .hw.init = &(const struct clk_init_data) {
2177 .name = "gcc_prng_ahb_clk",
2178 .parent_hws = (const struct clk_hw*[]) {
2179 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2180 },
2181 .num_parents = 1,
2182 .flags = CLK_SET_RATE_PARENT,
2183 .ops = &clk_branch2_ops,
2184 },
2185 },
2186 };
2187
2188 static struct clk_branch gcc_q6_ahb_clk = {
2189 .halt_reg = 0x25014,
2190 .halt_check = BRANCH_HALT_VOTED,
2191 .clkr = {
2192 .enable_reg = 0x25014,
2193 .enable_mask = BIT(0),
2194 .hw.init = &(const struct clk_init_data) {
2195 .name = "gcc_q6_ahb_clk",
2196 .parent_hws = (const struct clk_hw*[]) {
2197 &gcc_wcss_ahb_clk_src.clkr.hw,
2198 },
2199 .num_parents = 1,
2200 .flags = CLK_SET_RATE_PARENT,
2201 .ops = &clk_branch2_ops,
2202 },
2203 },
2204 };
2205
2206 static struct clk_branch gcc_q6_ahb_s_clk = {
2207 .halt_reg = 0x25018,
2208 .halt_check = BRANCH_HALT_VOTED,
2209 .clkr = {
2210 .enable_reg = 0x25018,
2211 .enable_mask = BIT(0),
2212 .hw.init = &(const struct clk_init_data) {
2213 .name = "gcc_q6_ahb_s_clk",
2214 .parent_hws = (const struct clk_hw*[]) {
2215 &gcc_wcss_ahb_clk_src.clkr.hw,
2216 },
2217 .num_parents = 1,
2218 .flags = CLK_SET_RATE_PARENT,
2219 .ops = &clk_branch2_ops,
2220 },
2221 },
2222 };
2223
2224 static struct clk_branch gcc_q6_axim_clk = {
2225 .halt_reg = 0x2500c,
2226 .halt_check = BRANCH_HALT_VOTED,
2227 .clkr = {
2228 .enable_reg = 0x2500c,
2229 .enable_mask = BIT(0),
2230 .hw.init = &(const struct clk_init_data) {
2231 .name = "gcc_q6_axim_clk",
2232 .parent_hws = (const struct clk_hw*[]) {
2233 &gcc_q6_axim_clk_src.clkr.hw,
2234 },
2235 .num_parents = 1,
2236 .flags = CLK_SET_RATE_PARENT,
2237 .ops = &clk_branch2_ops,
2238 },
2239 },
2240 };
2241
2242 static struct clk_branch gcc_q6_axis_clk = {
2243 .halt_reg = 0x25010,
2244 .halt_check = BRANCH_HALT_VOTED,
2245 .clkr = {
2246 .enable_reg = 0x25010,
2247 .enable_mask = BIT(0),
2248 .hw.init = &(const struct clk_init_data) {
2249 .name = "gcc_q6_axis_clk",
2250 .parent_hws = (const struct clk_hw*[]) {
2251 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
2252 },
2253 .num_parents = 1,
2254 .flags = CLK_SET_RATE_PARENT,
2255 .ops = &clk_branch2_ops,
2256 },
2257 },
2258 };
2259
2260 static struct clk_branch gcc_q6_tsctr_1to2_clk = {
2261 .halt_reg = 0x25020,
2262 .halt_check = BRANCH_HALT_VOTED,
2263 .clkr = {
2264 .enable_reg = 0x25020,
2265 .enable_mask = BIT(0),
2266 .hw.init = &(const struct clk_init_data) {
2267 .name = "gcc_q6_tsctr_1to2_clk",
2268 .parent_hws = (const struct clk_hw*[]) {
2269 &gcc_qdss_tsctr_div2_clk_src.hw,
2270 },
2271 .num_parents = 1,
2272 .flags = CLK_SET_RATE_PARENT,
2273 .ops = &clk_branch2_ops,
2274 },
2275 },
2276 };
2277
2278 static struct clk_branch gcc_q6ss_atbm_clk = {
2279 .halt_reg = 0x2501c,
2280 .halt_check = BRANCH_HALT_VOTED,
2281 .clkr = {
2282 .enable_reg = 0x2501c,
2283 .enable_mask = BIT(0),
2284 .hw.init = &(const struct clk_init_data) {
2285 .name = "gcc_q6ss_atbm_clk",
2286 .parent_hws = (const struct clk_hw*[]) {
2287 &gcc_qdss_at_clk_src.clkr.hw,
2288 },
2289 .num_parents = 1,
2290 .flags = CLK_SET_RATE_PARENT,
2291 .ops = &clk_branch2_ops,
2292 },
2293 },
2294 };
2295
2296 static struct clk_branch gcc_q6ss_pclkdbg_clk = {
2297 .halt_reg = 0x25024,
2298 .halt_check = BRANCH_HALT_VOTED,
2299 .clkr = {
2300 .enable_reg = 0x25024,
2301 .enable_mask = BIT(0),
2302 .hw.init = &(const struct clk_init_data) {
2303 .name = "gcc_q6ss_pclkdbg_clk",
2304 .parent_hws = (const struct clk_hw*[]) {
2305 &gcc_qdss_dap_div_clk_src.clkr.hw,
2306 },
2307 .num_parents = 1,
2308 .flags = CLK_SET_RATE_PARENT,
2309 .ops = &clk_branch2_ops,
2310 },
2311 },
2312 };
2313
2314 static struct clk_branch gcc_q6ss_trig_clk = {
2315 .halt_reg = 0x250a0,
2316 .halt_check = BRANCH_HALT_VOTED,
2317 .clkr = {
2318 .enable_reg = 0x250a0,
2319 .enable_mask = BIT(0),
2320 .hw.init = &(const struct clk_init_data) {
2321 .name = "gcc_q6ss_trig_clk",
2322 .parent_hws = (const struct clk_hw*[]) {
2323 &gcc_qdss_dap_div_clk_src.clkr.hw,
2324 },
2325 .num_parents = 1,
2326 .flags = CLK_SET_RATE_PARENT,
2327 .ops = &clk_branch2_ops,
2328 },
2329 },
2330 };
2331
2332 static struct clk_branch gcc_qdss_at_clk = {
2333 .halt_reg = 0x2d038,
2334 .halt_check = BRANCH_HALT_VOTED,
2335 .clkr = {
2336 .enable_reg = 0x2d038,
2337 .enable_mask = BIT(0),
2338 .hw.init = &(const struct clk_init_data) {
2339 .name = "gcc_qdss_at_clk",
2340 .parent_hws = (const struct clk_hw*[]) {
2341 &gcc_qdss_at_clk_src.clkr.hw,
2342 },
2343 .num_parents = 1,
2344 .flags = CLK_SET_RATE_PARENT,
2345 .ops = &clk_branch2_ops,
2346 },
2347 },
2348 };
2349
2350 static struct clk_branch gcc_qdss_cfg_ahb_clk = {
2351 .halt_reg = 0x2d06c,
2352 .halt_check = BRANCH_HALT_VOTED,
2353 .clkr = {
2354 .enable_reg = 0x2d06c,
2355 .enable_mask = BIT(0),
2356 .hw.init = &(const struct clk_init_data) {
2357 .name = "gcc_qdss_cfg_ahb_clk",
2358 .parent_hws = (const struct clk_hw*[]) {
2359 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2360 },
2361 .num_parents = 1,
2362 .flags = CLK_SET_RATE_PARENT,
2363 .ops = &clk_branch2_ops,
2364 },
2365 },
2366 };
2367
2368 static struct clk_branch gcc_qdss_dap_ahb_clk = {
2369 .halt_reg = 0x2d068,
2370 .halt_check = BRANCH_HALT_VOTED,
2371 .clkr = {
2372 .enable_reg = 0x2d068,
2373 .enable_mask = BIT(0),
2374 .hw.init = &(const struct clk_init_data) {
2375 .name = "gcc_qdss_dap_ahb_clk",
2376 .parent_hws = (const struct clk_hw*[]) {
2377 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2378 },
2379 .num_parents = 1,
2380 .flags = CLK_SET_RATE_PARENT,
2381 .ops = &clk_branch2_ops,
2382 },
2383 },
2384 };
2385
2386 static struct clk_branch gcc_qdss_dap_clk = {
2387 .halt_reg = 0x2d05c,
2388 .halt_check = BRANCH_HALT_VOTED,
2389 .clkr = {
2390 .enable_reg = 0xb004,
2391 .enable_mask = BIT(2),
2392 .hw.init = &(const struct clk_init_data) {
2393 .name = "gcc_qdss_dap_clk",
2394 .parent_hws = (const struct clk_hw*[]) {
2395 &gcc_qdss_dap_div_clk_src.clkr.hw,
2396 },
2397 .num_parents = 1,
2398 .flags = CLK_SET_RATE_PARENT,
2399 .ops = &clk_branch2_ops,
2400 },
2401 },
2402 };
2403
2404 static struct clk_branch gcc_qdss_etr_usb_clk = {
2405 .halt_reg = 0x2d064,
2406 .halt_check = BRANCH_HALT_VOTED,
2407 .clkr = {
2408 .enable_reg = 0x2d064,
2409 .enable_mask = BIT(0),
2410 .hw.init = &(const struct clk_init_data) {
2411 .name = "gcc_qdss_etr_usb_clk",
2412 .parent_hws = (const struct clk_hw*[]) {
2413 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
2414 },
2415 .num_parents = 1,
2416 .flags = CLK_SET_RATE_PARENT,
2417 .ops = &clk_branch2_ops,
2418 },
2419 },
2420 };
2421
2422 static struct clk_fixed_factor gcc_eud_at_div_clk_src = {
2423 .mult = 1,
2424 .div = 6,
2425 .hw.init = &(struct clk_init_data) {
2426 .name = "gcc_eud_at_div_clk_src",
2427 .parent_hws = (const struct clk_hw *[]) {
2428 &gcc_qdss_at_clk_src.clkr.hw },
2429 .num_parents = 1,
2430 .flags = CLK_SET_RATE_PARENT,
2431 .ops = &clk_fixed_factor_ops,
2432 },
2433 };
2434
2435 static struct clk_branch gcc_qdss_eud_at_clk = {
2436 .halt_reg = 0x2d070,
2437 .halt_check = BRANCH_HALT_VOTED,
2438 .clkr = {
2439 .enable_reg = 0x2d070,
2440 .enable_mask = BIT(0),
2441 .hw.init = &(const struct clk_init_data) {
2442 .name = "gcc_qdss_eud_at_clk",
2443 .parent_hws = (const struct clk_hw*[]) {
2444 &gcc_eud_at_div_clk_src.hw,
2445 },
2446 .num_parents = 1,
2447 .flags = CLK_SET_RATE_PARENT,
2448 .ops = &clk_branch2_ops,
2449 },
2450 },
2451 };
2452
2453 static struct clk_branch gcc_qpic_ahb_clk = {
2454 .halt_reg = 0x32010,
2455 .halt_check = BRANCH_HALT,
2456 .clkr = {
2457 .enable_reg = 0x32010,
2458 .enable_mask = BIT(0),
2459 .hw.init = &(const struct clk_init_data) {
2460 .name = "gcc_qpic_ahb_clk",
2461 .parent_hws = (const struct clk_hw*[]) {
2462 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2463 },
2464 .num_parents = 1,
2465 .flags = CLK_SET_RATE_PARENT,
2466 .ops = &clk_branch2_ops,
2467 },
2468 },
2469 };
2470
2471 static struct clk_branch gcc_qpic_clk = {
2472 .halt_reg = 0x32014,
2473 .halt_check = BRANCH_HALT,
2474 .clkr = {
2475 .enable_reg = 0x32014,
2476 .enable_mask = BIT(0),
2477 .hw.init = &(const struct clk_init_data) {
2478 .name = "gcc_qpic_clk",
2479 .parent_hws = (const struct clk_hw*[]) {
2480 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2481 },
2482 .num_parents = 1,
2483 .flags = CLK_SET_RATE_PARENT,
2484 .ops = &clk_branch2_ops,
2485 },
2486 },
2487 };
2488
2489 static struct clk_branch gcc_qpic_io_macro_clk = {
2490 .halt_reg = 0x3200c,
2491 .halt_check = BRANCH_HALT,
2492 .clkr = {
2493 .enable_reg = 0x3200c,
2494 .enable_mask = BIT(0),
2495 .hw.init = &(const struct clk_init_data) {
2496 .name = "gcc_qpic_io_macro_clk",
2497 .parent_hws = (const struct clk_hw*[]) {
2498 &gcc_qpic_io_macro_clk_src.clkr.hw,
2499 },
2500 .num_parents = 1,
2501 .flags = CLK_SET_RATE_PARENT,
2502 .ops = &clk_branch2_ops,
2503 },
2504 },
2505 };
2506
2507 static struct clk_branch gcc_qpic_sleep_clk = {
2508 .halt_reg = 0x3201c,
2509 .halt_check = BRANCH_HALT,
2510 .clkr = {
2511 .enable_reg = 0x3201c,
2512 .enable_mask = BIT(0),
2513 .hw.init = &(const struct clk_init_data) {
2514 .name = "gcc_qpic_sleep_clk",
2515 .parent_hws = (const struct clk_hw*[]) {
2516 &gcc_sleep_clk_src.clkr.hw,
2517 },
2518 .num_parents = 1,
2519 .flags = CLK_SET_RATE_PARENT,
2520 .ops = &clk_branch2_ops,
2521 },
2522 },
2523 };
2524
2525 static struct clk_branch gcc_sdcc1_ahb_clk = {
2526 .halt_reg = 0x33034,
2527 .halt_check = BRANCH_HALT,
2528 .clkr = {
2529 .enable_reg = 0x33034,
2530 .enable_mask = BIT(0),
2531 .hw.init = &(const struct clk_init_data) {
2532 .name = "gcc_sdcc1_ahb_clk",
2533 .parent_hws = (const struct clk_hw*[]) {
2534 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2535 },
2536 .num_parents = 1,
2537 .flags = CLK_SET_RATE_PARENT,
2538 .ops = &clk_branch2_ops,
2539 },
2540 },
2541 };
2542
2543 static struct clk_branch gcc_sdcc1_apps_clk = {
2544 .halt_reg = 0x3302c,
2545 .halt_check = BRANCH_HALT,
2546 .clkr = {
2547 .enable_reg = 0x3302c,
2548 .enable_mask = BIT(0),
2549 .hw.init = &(const struct clk_init_data) {
2550 .name = "gcc_sdcc1_apps_clk",
2551 .parent_hws = (const struct clk_hw*[]) {
2552 &gcc_sdcc1_apps_clk_src.clkr.hw,
2553 },
2554 .num_parents = 1,
2555 .flags = CLK_SET_RATE_PARENT,
2556 .ops = &clk_branch2_ops,
2557 },
2558 },
2559 };
2560
2561 static struct clk_branch gcc_snoc_lpass_cfg_clk = {
2562 .halt_reg = 0x2e028,
2563 .halt_check = BRANCH_HALT,
2564 .clkr = {
2565 .enable_reg = 0x2e028,
2566 .enable_mask = BIT(0),
2567 .hw.init = &(const struct clk_init_data) {
2568 .name = "gcc_snoc_lpass_cfg_clk",
2569 .parent_hws = (const struct clk_hw*[]) {
2570 &gcc_lpass_sway_clk_src.clkr.hw,
2571 },
2572 .num_parents = 1,
2573 .flags = CLK_SET_RATE_PARENT,
2574 .ops = &clk_branch2_ops,
2575 },
2576 },
2577 };
2578
2579 static struct clk_branch gcc_snoc_nssnoc_1_clk = {
2580 .halt_reg = 0x17090,
2581 .halt_check = BRANCH_HALT,
2582 .clkr = {
2583 .enable_reg = 0x17090,
2584 .enable_mask = BIT(0),
2585 .hw.init = &(const struct clk_init_data) {
2586 .name = "gcc_snoc_nssnoc_1_clk",
2587 .parent_hws = (const struct clk_hw*[]) {
2588 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
2589 },
2590 .num_parents = 1,
2591 .flags = CLK_SET_RATE_PARENT,
2592 .ops = &clk_branch2_ops,
2593 },
2594 },
2595 };
2596
2597 static struct clk_branch gcc_snoc_nssnoc_clk = {
2598 .halt_reg = 0x17084,
2599 .halt_check = BRANCH_HALT,
2600 .clkr = {
2601 .enable_reg = 0x17084,
2602 .enable_mask = BIT(0),
2603 .hw.init = &(const struct clk_init_data) {
2604 .name = "gcc_snoc_nssnoc_clk",
2605 .parent_hws = (const struct clk_hw*[]) {
2606 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
2607 },
2608 .num_parents = 1,
2609 .flags = CLK_SET_RATE_PARENT,
2610 .ops = &clk_branch2_ops,
2611 },
2612 },
2613 };
2614
2615 static struct clk_branch gcc_snoc_pcie3_1lane_1_m_clk = {
2616 .halt_reg = 0x2e050,
2617 .halt_check = BRANCH_HALT,
2618 .clkr = {
2619 .enable_reg = 0x2e050,
2620 .enable_mask = BIT(0),
2621 .hw.init = &(const struct clk_init_data) {
2622 .name = "gcc_snoc_pcie3_1lane_1_m_clk",
2623 .parent_hws = (const struct clk_hw*[]) {
2624 &gcc_pcie3x1_1_axi_clk_src.clkr.hw,
2625 },
2626 .num_parents = 1,
2627 .flags = CLK_SET_RATE_PARENT,
2628 .ops = &clk_branch2_ops,
2629 },
2630 },
2631 };
2632
2633 static struct clk_branch gcc_snoc_pcie3_1lane_1_s_clk = {
2634 .halt_reg = 0x2e0ac,
2635 .halt_check = BRANCH_HALT,
2636 .clkr = {
2637 .enable_reg = 0x2e0ac,
2638 .enable_mask = BIT(0),
2639 .hw.init = &(const struct clk_init_data) {
2640 .name = "gcc_snoc_pcie3_1lane_1_s_clk",
2641 .parent_hws = (const struct clk_hw*[]) {
2642 &gcc_pcie3x1_1_axi_clk_src.clkr.hw,
2643 },
2644 .num_parents = 1,
2645 .flags = CLK_SET_RATE_PARENT,
2646 .ops = &clk_branch2_ops,
2647 },
2648 },
2649 };
2650
2651 static struct clk_branch gcc_snoc_pcie3_1lane_m_clk = {
2652 .halt_reg = 0x2e080,
2653 .halt_check = BRANCH_HALT,
2654 .clkr = {
2655 .enable_reg = 0x2e080,
2656 .enable_mask = BIT(0),
2657 .hw.init = &(const struct clk_init_data) {
2658 .name = "gcc_snoc_pcie3_1lane_m_clk",
2659 .parent_hws = (const struct clk_hw*[]) {
2660 &gcc_pcie3x1_0_axi_clk_src.clkr.hw,
2661 },
2662 .num_parents = 1,
2663 .flags = CLK_SET_RATE_PARENT,
2664 .ops = &clk_branch2_ops,
2665 },
2666 },
2667 };
2668
2669 static struct clk_branch gcc_snoc_pcie3_1lane_s_clk = {
2670 .halt_reg = 0x2e04c,
2671 .halt_check = BRANCH_HALT,
2672 .clkr = {
2673 .enable_reg = 0x2e04c,
2674 .enable_mask = BIT(0),
2675 .hw.init = &(const struct clk_init_data) {
2676 .name = "gcc_snoc_pcie3_1lane_s_clk",
2677 .parent_hws = (const struct clk_hw*[]) {
2678 &gcc_pcie3x1_0_axi_clk_src.clkr.hw,
2679 },
2680 .num_parents = 1,
2681 .flags = CLK_SET_RATE_PARENT,
2682 .ops = &clk_branch2_ops,
2683 },
2684 },
2685 };
2686
2687 static struct clk_branch gcc_snoc_pcie3_2lane_m_clk = {
2688 .halt_reg = 0x2e07c,
2689 .halt_check = BRANCH_HALT,
2690 .clkr = {
2691 .enable_reg = 0x2e07c,
2692 .enable_mask = BIT(0),
2693 .hw.init = &(const struct clk_init_data) {
2694 .name = "gcc_snoc_pcie3_2lane_m_clk",
2695 .parent_hws = (const struct clk_hw*[]) {
2696 &gcc_pcie3x2_axi_m_clk_src.clkr.hw,
2697 },
2698 .num_parents = 1,
2699 .flags = CLK_SET_RATE_PARENT,
2700 .ops = &clk_branch2_ops,
2701 },
2702 },
2703 };
2704
2705 static struct clk_branch gcc_snoc_pcie3_2lane_s_clk = {
2706 .halt_reg = 0x2e048,
2707 .halt_check = BRANCH_HALT,
2708 .clkr = {
2709 .enable_reg = 0x2e048,
2710 .enable_mask = BIT(0),
2711 .hw.init = &(const struct clk_init_data) {
2712 .name = "gcc_snoc_pcie3_2lane_s_clk",
2713 .parent_hws = (const struct clk_hw*[]) {
2714 &gcc_pcie3x2_axi_s_clk_src.clkr.hw,
2715 },
2716 .num_parents = 1,
2717 .flags = CLK_SET_RATE_PARENT,
2718 .ops = &clk_branch2_ops,
2719 },
2720 },
2721 };
2722
2723 static struct clk_branch gcc_snoc_usb_clk = {
2724 .halt_reg = 0x2e058,
2725 .halt_check = BRANCH_HALT_VOTED,
2726 .clkr = {
2727 .enable_reg = 0x2e058,
2728 .enable_mask = BIT(0),
2729 .hw.init = &(const struct clk_init_data) {
2730 .name = "gcc_snoc_usb_clk",
2731 .parent_hws = (const struct clk_hw*[]) {
2732 &gcc_usb0_master_clk_src.clkr.hw,
2733 },
2734 .num_parents = 1,
2735 .flags = CLK_SET_RATE_PARENT,
2736 .ops = &clk_branch2_ops,
2737 },
2738 },
2739 };
2740
2741 static struct clk_branch gcc_sys_noc_at_clk = {
2742 .halt_reg = 0x2e038,
2743 .halt_check = BRANCH_HALT_VOTED,
2744 .clkr = {
2745 .enable_reg = 0x2e038,
2746 .enable_mask = BIT(0),
2747 .hw.init = &(const struct clk_init_data) {
2748 .name = "gcc_sys_noc_at_clk",
2749 .parent_hws = (const struct clk_hw*[]) {
2750 &gcc_qdss_at_clk_src.clkr.hw,
2751 },
2752 .num_parents = 1,
2753 .flags = CLK_SET_RATE_PARENT,
2754 .ops = &clk_branch2_ops,
2755 },
2756 },
2757 };
2758
2759 static struct clk_branch gcc_sys_noc_wcss_ahb_clk = {
2760 .halt_reg = 0x2e030,
2761 .halt_check = BRANCH_HALT,
2762 .clkr = {
2763 .enable_reg = 0x2e030,
2764 .enable_mask = BIT(0),
2765 .hw.init = &(const struct clk_init_data) {
2766 .name = "gcc_sys_noc_wcss_ahb_clk",
2767 .parent_hws = (const struct clk_hw*[]) {
2768 &gcc_wcss_ahb_clk_src.clkr.hw,
2769 },
2770 .num_parents = 1,
2771 .flags = CLK_SET_RATE_PARENT,
2772 .ops = &clk_branch2_ops,
2773 },
2774 },
2775 };
2776
2777 static struct clk_branch gcc_uniphy0_ahb_clk = {
2778 .halt_reg = 0x16010,
2779 .halt_check = BRANCH_HALT,
2780 .clkr = {
2781 .enable_reg = 0x16010,
2782 .enable_mask = BIT(0),
2783 .hw.init = &(const struct clk_init_data) {
2784 .name = "gcc_uniphy0_ahb_clk",
2785 .parent_hws = (const struct clk_hw*[]) {
2786 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2787 },
2788 .num_parents = 1,
2789 .flags = CLK_SET_RATE_PARENT,
2790 .ops = &clk_branch2_ops,
2791 },
2792 },
2793 };
2794
2795 static struct clk_branch gcc_uniphy0_sys_clk = {
2796 .halt_reg = 0x1600c,
2797 .halt_check = BRANCH_HALT,
2798 .clkr = {
2799 .enable_reg = 0x1600c,
2800 .enable_mask = BIT(0),
2801 .hw.init = &(const struct clk_init_data) {
2802 .name = "gcc_uniphy0_sys_clk",
2803 .parent_hws = (const struct clk_hw*[]) {
2804 &gcc_uniphy_sys_clk_src.clkr.hw,
2805 },
2806 .num_parents = 1,
2807 .flags = CLK_SET_RATE_PARENT,
2808 .ops = &clk_branch2_ops,
2809 },
2810 },
2811 };
2812
2813 static struct clk_branch gcc_uniphy1_ahb_clk = {
2814 .halt_reg = 0x1601c,
2815 .halt_check = BRANCH_HALT,
2816 .clkr = {
2817 .enable_reg = 0x1601c,
2818 .enable_mask = BIT(0),
2819 .hw.init = &(const struct clk_init_data) {
2820 .name = "gcc_uniphy1_ahb_clk",
2821 .parent_hws = (const struct clk_hw*[]) {
2822 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2823 },
2824 .num_parents = 1,
2825 .flags = CLK_SET_RATE_PARENT,
2826 .ops = &clk_branch2_ops,
2827 },
2828 },
2829 };
2830
2831 static struct clk_branch gcc_uniphy1_sys_clk = {
2832 .halt_reg = 0x16018,
2833 .halt_check = BRANCH_HALT,
2834 .clkr = {
2835 .enable_reg = 0x16018,
2836 .enable_mask = BIT(0),
2837 .hw.init = &(const struct clk_init_data) {
2838 .name = "gcc_uniphy1_sys_clk",
2839 .parent_hws = (const struct clk_hw*[]) {
2840 &gcc_uniphy_sys_clk_src.clkr.hw,
2841 },
2842 .num_parents = 1,
2843 .flags = CLK_SET_RATE_PARENT,
2844 .ops = &clk_branch2_ops,
2845 },
2846 },
2847 };
2848
2849 static struct clk_branch gcc_usb0_aux_clk = {
2850 .halt_reg = 0x2c050,
2851 .halt_check = BRANCH_HALT_VOTED,
2852 .clkr = {
2853 .enable_reg = 0x2c050,
2854 .enable_mask = BIT(0),
2855 .hw.init = &(const struct clk_init_data) {
2856 .name = "gcc_usb0_aux_clk",
2857 .parent_hws = (const struct clk_hw*[]) {
2858 &gcc_usb0_aux_clk_src.clkr.hw,
2859 },
2860 .num_parents = 1,
2861 .flags = CLK_SET_RATE_PARENT,
2862 .ops = &clk_branch2_ops,
2863 },
2864 },
2865 };
2866
2867 static struct clk_branch gcc_usb0_eud_at_clk = {
2868 .halt_reg = 0x30004,
2869 .halt_check = BRANCH_HALT_VOTED,
2870 .clkr = {
2871 .enable_reg = 0x30004,
2872 .enable_mask = BIT(0),
2873 .hw.init = &(const struct clk_init_data) {
2874 .name = "gcc_usb0_eud_at_clk",
2875 .parent_hws = (const struct clk_hw*[]) {
2876 &gcc_eud_at_div_clk_src.hw,
2877 },
2878 .num_parents = 1,
2879 .flags = CLK_SET_RATE_PARENT,
2880 .ops = &clk_branch2_ops,
2881 },
2882 },
2883 };
2884
2885 static struct clk_branch gcc_usb0_lfps_clk = {
2886 .halt_reg = 0x2c090,
2887 .halt_check = BRANCH_HALT_VOTED,
2888 .clkr = {
2889 .enable_reg = 0x2c090,
2890 .enable_mask = BIT(0),
2891 .hw.init = &(const struct clk_init_data) {
2892 .name = "gcc_usb0_lfps_clk",
2893 .parent_hws = (const struct clk_hw*[]) {
2894 &gcc_usb0_lfps_clk_src.clkr.hw,
2895 },
2896 .num_parents = 1,
2897 .flags = CLK_SET_RATE_PARENT,
2898 .ops = &clk_branch2_ops,
2899 },
2900 },
2901 };
2902
2903 static struct clk_branch gcc_usb0_master_clk = {
2904 .halt_reg = 0x2c048,
2905 .halt_check = BRANCH_HALT_VOTED,
2906 .clkr = {
2907 .enable_reg = 0x2c048,
2908 .enable_mask = BIT(0),
2909 .hw.init = &(const struct clk_init_data) {
2910 .name = "gcc_usb0_master_clk",
2911 .parent_hws = (const struct clk_hw*[]) {
2912 &gcc_usb0_master_clk_src.clkr.hw,
2913 },
2914 .num_parents = 1,
2915 .flags = CLK_SET_RATE_PARENT,
2916 .ops = &clk_branch2_ops,
2917 },
2918 },
2919 };
2920
2921 static struct clk_branch gcc_usb0_mock_utmi_clk = {
2922 .halt_reg = 0x2c054,
2923 .clkr = {
2924 .enable_reg = 0x2c054,
2925 .enable_mask = BIT(0),
2926 .hw.init = &(const struct clk_init_data) {
2927 .name = "gcc_usb0_mock_utmi_clk",
2928 .parent_hws = (const struct clk_hw*[]) {
2929 &gcc_usb0_mock_utmi_div_clk_src.clkr.hw,
2930 },
2931 .num_parents = 1,
2932 .flags = CLK_SET_RATE_PARENT,
2933 .ops = &clk_branch2_ops,
2934 },
2935 },
2936 };
2937
2938 static struct clk_branch gcc_usb0_phy_cfg_ahb_clk = {
2939 .halt_reg = 0x2c05c,
2940 .halt_check = BRANCH_HALT_VOTED,
2941 .clkr = {
2942 .enable_reg = 0x2c05c,
2943 .enable_mask = BIT(0),
2944 .hw.init = &(const struct clk_init_data) {
2945 .name = "gcc_usb0_phy_cfg_ahb_clk",
2946 .parent_hws = (const struct clk_hw*[]) {
2947 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
2948 },
2949 .num_parents = 1,
2950 .flags = CLK_SET_RATE_PARENT,
2951 .ops = &clk_branch2_ops,
2952 },
2953 },
2954 };
2955
2956 static struct clk_branch gcc_usb0_pipe_clk = {
2957 .halt_reg = 0x2c078,
2958 .halt_check = BRANCH_HALT_DELAY,
2959 .clkr = {
2960 .enable_reg = 0x2c078,
2961 .enable_mask = BIT(0),
2962 .hw.init = &(const struct clk_init_data) {
2963 .name = "gcc_usb0_pipe_clk",
2964 .parent_hws = (const struct clk_hw*[]) {
2965 &gcc_usb0_pipe_clk_src.clkr.hw,
2966 },
2967 .num_parents = 1,
2968 .flags = CLK_SET_RATE_PARENT,
2969 .ops = &clk_branch2_ops,
2970 },
2971 },
2972 };
2973
2974 static struct clk_branch gcc_usb0_sleep_clk = {
2975 .halt_reg = 0x2c058,
2976 .halt_check = BRANCH_HALT_VOTED,
2977 .clkr = {
2978 .enable_reg = 0x2c058,
2979 .enable_mask = BIT(0),
2980 .hw.init = &(const struct clk_init_data) {
2981 .name = "gcc_usb0_sleep_clk",
2982 .parent_hws = (const struct clk_hw*[]) {
2983 &gcc_sleep_clk_src.clkr.hw,
2984 },
2985 .num_parents = 1,
2986 .flags = CLK_SET_RATE_PARENT,
2987 .ops = &clk_branch2_ops,
2988 },
2989 },
2990 };
2991
2992 static struct clk_branch gcc_wcss_axim_clk = {
2993 .halt_reg = 0x2505c,
2994 .halt_check = BRANCH_HALT,
2995 .clkr = {
2996 .enable_reg = 0x2505c,
2997 .enable_mask = BIT(0),
2998 .hw.init = &(const struct clk_init_data) {
2999 .name = "gcc_wcss_axim_clk",
3000 .parent_hws = (const struct clk_hw*[]) {
3001 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
3002 },
3003 .num_parents = 1,
3004 .flags = CLK_SET_RATE_PARENT,
3005 .ops = &clk_branch2_ops,
3006 },
3007 },
3008 };
3009
3010 static struct clk_branch gcc_wcss_axis_clk = {
3011 .halt_reg = 0x25060,
3012 .halt_check = BRANCH_HALT,
3013 .clkr = {
3014 .enable_reg = 0x25060,
3015 .enable_mask = BIT(0),
3016 .hw.init = &(const struct clk_init_data) {
3017 .name = "gcc_wcss_axis_clk",
3018 .parent_hws = (const struct clk_hw*[]) {
3019 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
3020 },
3021 .num_parents = 1,
3022 .flags = CLK_SET_RATE_PARENT,
3023 .ops = &clk_branch2_ops,
3024 },
3025 },
3026 };
3027
3028 static struct clk_branch gcc_wcss_dbg_ifc_apb_bdg_clk = {
3029 .halt_reg = 0x25048,
3030 .halt_check = BRANCH_HALT,
3031 .clkr = {
3032 .enable_reg = 0x25048,
3033 .enable_mask = BIT(0),
3034 .hw.init = &(const struct clk_init_data) {
3035 .name = "gcc_wcss_dbg_ifc_apb_bdg_clk",
3036 .parent_hws = (const struct clk_hw*[]) {
3037 &gcc_qdss_dap_div_clk_src.clkr.hw,
3038 },
3039 .num_parents = 1,
3040 .flags = CLK_SET_RATE_PARENT,
3041 .ops = &clk_branch2_ops,
3042 },
3043 },
3044 };
3045
3046 static struct clk_branch gcc_wcss_dbg_ifc_apb_clk = {
3047 .halt_reg = 0x25038,
3048 .halt_check = BRANCH_HALT,
3049 .clkr = {
3050 .enable_reg = 0x25038,
3051 .enable_mask = BIT(0),
3052 .hw.init = &(const struct clk_init_data) {
3053 .name = "gcc_wcss_dbg_ifc_apb_clk",
3054 .parent_hws = (const struct clk_hw*[]) {
3055 &gcc_qdss_dap_div_clk_src.clkr.hw,
3056 },
3057 .num_parents = 1,
3058 .flags = CLK_SET_RATE_PARENT,
3059 .ops = &clk_branch2_ops,
3060 },
3061 },
3062 };
3063
3064 static struct clk_branch gcc_wcss_dbg_ifc_atb_bdg_clk = {
3065 .halt_reg = 0x2504c,
3066 .halt_check = BRANCH_HALT,
3067 .clkr = {
3068 .enable_reg = 0x2504c,
3069 .enable_mask = BIT(0),
3070 .hw.init = &(const struct clk_init_data) {
3071 .name = "gcc_wcss_dbg_ifc_atb_bdg_clk",
3072 .parent_hws = (const struct clk_hw*[]) {
3073 &gcc_qdss_at_clk_src.clkr.hw,
3074 },
3075 .num_parents = 1,
3076 .flags = CLK_SET_RATE_PARENT,
3077 .ops = &clk_branch2_ops,
3078 },
3079 },
3080 };
3081
3082 static struct clk_branch gcc_wcss_dbg_ifc_atb_clk = {
3083 .halt_reg = 0x2503c,
3084 .halt_check = BRANCH_HALT,
3085 .clkr = {
3086 .enable_reg = 0x2503c,
3087 .enable_mask = BIT(0),
3088 .hw.init = &(const struct clk_init_data) {
3089 .name = "gcc_wcss_dbg_ifc_atb_clk",
3090 .parent_hws = (const struct clk_hw*[]) {
3091 &gcc_qdss_at_clk_src.clkr.hw,
3092 },
3093 .num_parents = 1,
3094 .flags = CLK_SET_RATE_PARENT,
3095 .ops = &clk_branch2_ops,
3096 },
3097 },
3098 };
3099
3100 static struct clk_branch gcc_wcss_dbg_ifc_nts_bdg_clk = {
3101 .halt_reg = 0x25050,
3102 .halt_check = BRANCH_HALT,
3103 .clkr = {
3104 .enable_reg = 0x25050,
3105 .enable_mask = BIT(0),
3106 .hw.init = &(const struct clk_init_data) {
3107 .name = "gcc_wcss_dbg_ifc_nts_bdg_clk",
3108 .parent_hws = (const struct clk_hw*[]) {
3109 &gcc_qdss_tsctr_div2_clk_src.hw,
3110 },
3111 .num_parents = 1,
3112 .flags = CLK_SET_RATE_PARENT,
3113 .ops = &clk_branch2_ops,
3114 },
3115 },
3116 };
3117
3118 static struct clk_branch gcc_wcss_dbg_ifc_nts_clk = {
3119 .halt_reg = 0x25040,
3120 .halt_check = BRANCH_HALT,
3121 .clkr = {
3122 .enable_reg = 0x25040,
3123 .enable_mask = BIT(0),
3124 .hw.init = &(const struct clk_init_data) {
3125 .name = "gcc_wcss_dbg_ifc_nts_clk",
3126 .parent_hws = (const struct clk_hw*[]) {
3127 &gcc_qdss_tsctr_div2_clk_src.hw,
3128 },
3129 .num_parents = 1,
3130 .flags = CLK_SET_RATE_PARENT,
3131 .ops = &clk_branch2_ops,
3132 },
3133 },
3134 };
3135
3136 static struct clk_branch gcc_wcss_ecahb_clk = {
3137 .halt_reg = 0x25058,
3138 .halt_check = BRANCH_HALT,
3139 .clkr = {
3140 .enable_reg = 0x25058,
3141 .enable_mask = BIT(0),
3142 .hw.init = &(const struct clk_init_data) {
3143 .name = "gcc_wcss_ecahb_clk",
3144 .parent_hws = (const struct clk_hw*[]) {
3145 &gcc_wcss_ahb_clk_src.clkr.hw,
3146 },
3147 .num_parents = 1,
3148 .flags = CLK_SET_RATE_PARENT,
3149 .ops = &clk_branch2_ops,
3150 },
3151 },
3152 };
3153
3154 static struct clk_branch gcc_wcss_mst_async_bdg_clk = {
3155 .halt_reg = 0x2e0b0,
3156 .halt_check = BRANCH_HALT,
3157 .clkr = {
3158 .enable_reg = 0x2e0b0,
3159 .enable_mask = BIT(0),
3160 .hw.init = &(const struct clk_init_data) {
3161 .name = "gcc_wcss_mst_async_bdg_clk",
3162 .parent_hws = (const struct clk_hw*[]) {
3163 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
3164 },
3165 .num_parents = 1,
3166 .flags = CLK_SET_RATE_PARENT,
3167 .ops = &clk_branch2_ops,
3168 },
3169 },
3170 };
3171
3172 static struct clk_branch gcc_wcss_slv_async_bdg_clk = {
3173 .halt_reg = 0x2e0b4,
3174 .halt_check = BRANCH_HALT,
3175 .clkr = {
3176 .enable_reg = 0x2e0b4,
3177 .enable_mask = BIT(0),
3178 .hw.init = &(const struct clk_init_data) {
3179 .name = "gcc_wcss_slv_async_bdg_clk",
3180 .parent_hws = (const struct clk_hw*[]) {
3181 &gcc_system_noc_bfdcd_clk_src.clkr.hw,
3182 },
3183 .num_parents = 1,
3184 .flags = CLK_SET_RATE_PARENT,
3185 .ops = &clk_branch2_ops,
3186 },
3187 },
3188 };
3189
3190 static struct clk_branch gcc_xo_clk = {
3191 .halt_reg = 0x34018,
3192 .halt_check = BRANCH_HALT,
3193 .clkr = {
3194 .enable_reg = 0x34018,
3195 .enable_mask = BIT(0),
3196 .hw.init = &(const struct clk_init_data) {
3197 .name = "gcc_xo_clk",
3198 .parent_hws = (const struct clk_hw*[]) {
3199 &gcc_xo_clk_src.clkr.hw,
3200 },
3201 .num_parents = 1,
3202 .flags = CLK_SET_RATE_PARENT,
3203 .ops = &clk_branch2_ops,
3204 },
3205 },
3206 };
3207
3208 static struct clk_branch gcc_xo_div4_clk = {
3209 .halt_reg = 0x3401c,
3210 .halt_check = BRANCH_HALT,
3211 .clkr = {
3212 .enable_reg = 0x3401c,
3213 .enable_mask = BIT(0),
3214 .hw.init = &(const struct clk_init_data) {
3215 .name = "gcc_xo_div4_clk",
3216 .parent_hws = (const struct clk_hw*[]) {
3217 &gcc_xo_div4_clk_src.hw,
3218 },
3219 .num_parents = 1,
3220 .flags = CLK_SET_RATE_PARENT,
3221 .ops = &clk_branch2_ops,
3222 },
3223 },
3224 };
3225
3226 static struct clk_branch gcc_im_sleep_clk = {
3227 .halt_reg = 0x34020,
3228 .halt_check = BRANCH_HALT,
3229 .clkr = {
3230 .enable_reg = 0x34020,
3231 .enable_mask = BIT(0),
3232 .hw.init = &(const struct clk_init_data) {
3233 .name = "gcc_im_sleep_clk",
3234 .parent_hws = (const struct clk_hw*[]) {
3235 &gcc_sleep_clk_src.clkr.hw,
3236 },
3237 .num_parents = 1,
3238 .flags = CLK_SET_RATE_PARENT,
3239 .ops = &clk_branch2_ops,
3240 },
3241 },
3242 };
3243
3244 static struct clk_branch gcc_nssnoc_pcnoc_1_clk = {
3245 .halt_reg = 0x17080,
3246 .halt_check = BRANCH_HALT,
3247 .clkr = {
3248 .enable_reg = 0x17080,
3249 .enable_mask = BIT(0),
3250 .hw.init = &(const struct clk_init_data) {
3251 .name = "gcc_nssnoc_pcnoc_1_clk",
3252 .parent_hws = (const struct clk_hw*[]) {
3253 &gcc_pcnoc_bfdcd_clk_src.clkr.hw,
3254 },
3255 .num_parents = 1,
3256 .flags = CLK_SET_RATE_PARENT,
3257 .ops = &clk_branch2_ops,
3258 },
3259 },
3260 };
3261
3262 static struct clk_regmap_div gcc_snoc_qosgen_extref_div_clk_src = {
3263 .reg = 0x2e010,
3264 .shift = 0,
3265 .width = 2,
3266 .clkr.hw.init = &(const struct clk_init_data) {
3267 .name = "gcc_snoc_qosgen_extref_div_clk_src",
3268 .parent_hws = (const struct clk_hw*[]) {
3269 &gcc_xo_clk_src.clkr.hw,
3270 },
3271 .num_parents = 1,
3272 .flags = CLK_SET_RATE_PARENT,
3273 .ops = &clk_regmap_div_ro_ops,
3274 },
3275 };
3276
3277 static struct clk_regmap *gcc_ipq5332_clocks[] = {
3278 [GPLL0_MAIN] = &gpll0_main.clkr,
3279 [GPLL0] = &gpll0.clkr,
3280 [GPLL2_MAIN] = &gpll2_main.clkr,
3281 [GPLL2] = &gpll2.clkr,
3282 [GPLL4_MAIN] = &gpll4_main.clkr,
3283 [GPLL4] = &gpll4.clkr,
3284 [GCC_ADSS_PWM_CLK] = &gcc_adss_pwm_clk.clkr,
3285 [GCC_ADSS_PWM_CLK_SRC] = &gcc_adss_pwm_clk_src.clkr,
3286 [GCC_AHB_CLK] = &gcc_ahb_clk.clkr,
3287 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
3288 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
3289 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
3290 [GCC_BLSP1_QUP1_SPI_APPS_CLK_SRC] = &gcc_blsp1_qup1_spi_apps_clk_src.clkr,
3291 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
3292 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
3293 [GCC_BLSP1_QUP2_SPI_APPS_CLK_SRC] = &gcc_blsp1_qup2_spi_apps_clk_src.clkr,
3294 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
3295 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
3296 [GCC_BLSP1_QUP3_SPI_APPS_CLK_SRC] = &gcc_blsp1_qup3_spi_apps_clk_src.clkr,
3297 [GCC_BLSP1_SLEEP_CLK] = &gcc_blsp1_sleep_clk.clkr,
3298 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
3299 [GCC_BLSP1_UART1_APPS_CLK_SRC] = &gcc_blsp1_uart1_apps_clk_src.clkr,
3300 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
3301 [GCC_BLSP1_UART2_APPS_CLK_SRC] = &gcc_blsp1_uart2_apps_clk_src.clkr,
3302 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
3303 [GCC_BLSP1_UART3_APPS_CLK_SRC] = &gcc_blsp1_uart3_apps_clk_src.clkr,
3304 [GCC_CE_AHB_CLK] = &gcc_ce_ahb_clk.clkr,
3305 [GCC_CE_AXI_CLK] = &gcc_ce_axi_clk.clkr,
3306 [GCC_CE_PCNOC_AHB_CLK] = &gcc_ce_pcnoc_ahb_clk.clkr,
3307 [GCC_CMN_12GPLL_AHB_CLK] = &gcc_cmn_12gpll_ahb_clk.clkr,
3308 [GCC_CMN_12GPLL_APU_CLK] = &gcc_cmn_12gpll_apu_clk.clkr,
3309 [GCC_CMN_12GPLL_SYS_CLK] = &gcc_cmn_12gpll_sys_clk.clkr,
3310 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3311 [GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3312 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3313 [GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3314 [GCC_LPASS_CORE_AXIM_CLK] = &gcc_lpass_core_axim_clk.clkr,
3315 [GCC_LPASS_SWAY_CLK] = &gcc_lpass_sway_clk.clkr,
3316 [GCC_LPASS_SWAY_CLK_SRC] = &gcc_lpass_sway_clk_src.clkr,
3317 [GCC_MDIO_AHB_CLK] = &gcc_mdio_ahb_clk.clkr,
3318 [GCC_MDIO_SLAVE_AHB_CLK] = &gcc_mdio_slave_ahb_clk.clkr,
3319 [GCC_NSS_TS_CLK] = &gcc_nss_ts_clk.clkr,
3320 [GCC_NSS_TS_CLK_SRC] = &gcc_nss_ts_clk_src.clkr,
3321 [GCC_NSSCC_CLK] = &gcc_nsscc_clk.clkr,
3322 [GCC_NSSCFG_CLK] = &gcc_nsscfg_clk.clkr,
3323 [GCC_NSSNOC_ATB_CLK] = &gcc_nssnoc_atb_clk.clkr,
3324 [GCC_NSSNOC_NSSCC_CLK] = &gcc_nssnoc_nsscc_clk.clkr,
3325 [GCC_NSSNOC_QOSGEN_REF_CLK] = &gcc_nssnoc_qosgen_ref_clk.clkr,
3326 [GCC_NSSNOC_SNOC_1_CLK] = &gcc_nssnoc_snoc_1_clk.clkr,
3327 [GCC_NSSNOC_SNOC_CLK] = &gcc_nssnoc_snoc_clk.clkr,
3328 [GCC_NSSNOC_TIMEOUT_REF_CLK] = &gcc_nssnoc_timeout_ref_clk.clkr,
3329 [GCC_NSSNOC_XO_DCD_CLK] = &gcc_nssnoc_xo_dcd_clk.clkr,
3330 [GCC_PCIE3X1_0_AHB_CLK] = &gcc_pcie3x1_0_ahb_clk.clkr,
3331 [GCC_PCIE3X1_0_AUX_CLK] = &gcc_pcie3x1_0_aux_clk.clkr,
3332 [GCC_PCIE3X1_0_AXI_CLK_SRC] = &gcc_pcie3x1_0_axi_clk_src.clkr,
3333 [GCC_PCIE3X1_0_AXI_M_CLK] = &gcc_pcie3x1_0_axi_m_clk.clkr,
3334 [GCC_PCIE3X1_0_AXI_S_BRIDGE_CLK] = &gcc_pcie3x1_0_axi_s_bridge_clk.clkr,
3335 [GCC_PCIE3X1_0_AXI_S_CLK] = &gcc_pcie3x1_0_axi_s_clk.clkr,
3336 [GCC_PCIE3X1_0_PIPE_CLK] = &gcc_pcie3x1_0_pipe_clk.clkr,
3337 [GCC_PCIE3X1_0_RCHG_CLK] = &gcc_pcie3x1_0_rchg_clk.clkr,
3338 [GCC_PCIE3X1_0_RCHG_CLK_SRC] = &gcc_pcie3x1_0_rchg_clk_src.clkr,
3339 [GCC_PCIE3X1_1_AHB_CLK] = &gcc_pcie3x1_1_ahb_clk.clkr,
3340 [GCC_PCIE3X1_1_AUX_CLK] = &gcc_pcie3x1_1_aux_clk.clkr,
3341 [GCC_PCIE3X1_1_AXI_CLK_SRC] = &gcc_pcie3x1_1_axi_clk_src.clkr,
3342 [GCC_PCIE3X1_1_AXI_M_CLK] = &gcc_pcie3x1_1_axi_m_clk.clkr,
3343 [GCC_PCIE3X1_1_AXI_S_BRIDGE_CLK] = &gcc_pcie3x1_1_axi_s_bridge_clk.clkr,
3344 [GCC_PCIE3X1_1_AXI_S_CLK] = &gcc_pcie3x1_1_axi_s_clk.clkr,
3345 [GCC_PCIE3X1_1_PIPE_CLK] = &gcc_pcie3x1_1_pipe_clk.clkr,
3346 [GCC_PCIE3X1_1_RCHG_CLK] = &gcc_pcie3x1_1_rchg_clk.clkr,
3347 [GCC_PCIE3X1_1_RCHG_CLK_SRC] = &gcc_pcie3x1_1_rchg_clk_src.clkr,
3348 [GCC_PCIE3X1_PHY_AHB_CLK] = &gcc_pcie3x1_phy_ahb_clk.clkr,
3349 [GCC_PCIE3X2_AHB_CLK] = &gcc_pcie3x2_ahb_clk.clkr,
3350 [GCC_PCIE3X2_AUX_CLK] = &gcc_pcie3x2_aux_clk.clkr,
3351 [GCC_PCIE3X2_AXI_M_CLK] = &gcc_pcie3x2_axi_m_clk.clkr,
3352 [GCC_PCIE3X2_AXI_M_CLK_SRC] = &gcc_pcie3x2_axi_m_clk_src.clkr,
3353 [GCC_PCIE3X2_AXI_S_BRIDGE_CLK] = &gcc_pcie3x2_axi_s_bridge_clk.clkr,
3354 [GCC_PCIE3X2_AXI_S_CLK] = &gcc_pcie3x2_axi_s_clk.clkr,
3355 [GCC_PCIE3X2_AXI_S_CLK_SRC] = &gcc_pcie3x2_axi_s_clk_src.clkr,
3356 [GCC_PCIE3X2_PHY_AHB_CLK] = &gcc_pcie3x2_phy_ahb_clk.clkr,
3357 [GCC_PCIE3X2_PIPE_CLK] = &gcc_pcie3x2_pipe_clk.clkr,
3358 [GCC_PCIE3X2_RCHG_CLK] = &gcc_pcie3x2_rchg_clk.clkr,
3359 [GCC_PCIE3X2_RCHG_CLK_SRC] = &gcc_pcie3x2_rchg_clk_src.clkr,
3360 [GCC_PCIE_AUX_CLK_SRC] = &gcc_pcie_aux_clk_src.clkr,
3361 [GCC_PCNOC_AT_CLK] = &gcc_pcnoc_at_clk.clkr,
3362 [GCC_PCNOC_BFDCD_CLK_SRC] = &gcc_pcnoc_bfdcd_clk_src.clkr,
3363 [GCC_PCNOC_LPASS_CLK] = &gcc_pcnoc_lpass_clk.clkr,
3364 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3365 [GCC_Q6_AHB_CLK] = &gcc_q6_ahb_clk.clkr,
3366 [GCC_Q6_AHB_S_CLK] = &gcc_q6_ahb_s_clk.clkr,
3367 [GCC_Q6_AXIM_CLK] = &gcc_q6_axim_clk.clkr,
3368 [GCC_Q6_AXIM_CLK_SRC] = &gcc_q6_axim_clk_src.clkr,
3369 [GCC_Q6_AXIS_CLK] = &gcc_q6_axis_clk.clkr,
3370 [GCC_Q6_TSCTR_1TO2_CLK] = &gcc_q6_tsctr_1to2_clk.clkr,
3371 [GCC_Q6SS_ATBM_CLK] = &gcc_q6ss_atbm_clk.clkr,
3372 [GCC_Q6SS_PCLKDBG_CLK] = &gcc_q6ss_pclkdbg_clk.clkr,
3373 [GCC_Q6SS_TRIG_CLK] = &gcc_q6ss_trig_clk.clkr,
3374 [GCC_QDSS_AT_CLK] = &gcc_qdss_at_clk.clkr,
3375 [GCC_QDSS_AT_CLK_SRC] = &gcc_qdss_at_clk_src.clkr,
3376 [GCC_QDSS_CFG_AHB_CLK] = &gcc_qdss_cfg_ahb_clk.clkr,
3377 [GCC_QDSS_DAP_AHB_CLK] = &gcc_qdss_dap_ahb_clk.clkr,
3378 [GCC_QDSS_DAP_CLK] = &gcc_qdss_dap_clk.clkr,
3379 [GCC_QDSS_DAP_DIV_CLK_SRC] = &gcc_qdss_dap_div_clk_src.clkr,
3380 [GCC_QDSS_ETR_USB_CLK] = &gcc_qdss_etr_usb_clk.clkr,
3381 [GCC_QDSS_EUD_AT_CLK] = &gcc_qdss_eud_at_clk.clkr,
3382 [GCC_QDSS_TSCTR_CLK_SRC] = &gcc_qdss_tsctr_clk_src.clkr,
3383 [GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
3384 [GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
3385 [GCC_QPIC_IO_MACRO_CLK] = &gcc_qpic_io_macro_clk.clkr,
3386 [GCC_QPIC_IO_MACRO_CLK_SRC] = &gcc_qpic_io_macro_clk_src.clkr,
3387 [GCC_QPIC_SLEEP_CLK] = &gcc_qpic_sleep_clk.clkr,
3388 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
3389 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
3390 [GCC_SDCC1_APPS_CLK_SRC] = &gcc_sdcc1_apps_clk_src.clkr,
3391 [GCC_SLEEP_CLK_SRC] = &gcc_sleep_clk_src.clkr,
3392 [GCC_SNOC_LPASS_CFG_CLK] = &gcc_snoc_lpass_cfg_clk.clkr,
3393 [GCC_SNOC_NSSNOC_1_CLK] = &gcc_snoc_nssnoc_1_clk.clkr,
3394 [GCC_SNOC_NSSNOC_CLK] = &gcc_snoc_nssnoc_clk.clkr,
3395 [GCC_SNOC_PCIE3_1LANE_1_M_CLK] = &gcc_snoc_pcie3_1lane_1_m_clk.clkr,
3396 [GCC_SNOC_PCIE3_1LANE_1_S_CLK] = &gcc_snoc_pcie3_1lane_1_s_clk.clkr,
3397 [GCC_SNOC_PCIE3_1LANE_M_CLK] = &gcc_snoc_pcie3_1lane_m_clk.clkr,
3398 [GCC_SNOC_PCIE3_1LANE_S_CLK] = &gcc_snoc_pcie3_1lane_s_clk.clkr,
3399 [GCC_SNOC_PCIE3_2LANE_M_CLK] = &gcc_snoc_pcie3_2lane_m_clk.clkr,
3400 [GCC_SNOC_PCIE3_2LANE_S_CLK] = &gcc_snoc_pcie3_2lane_s_clk.clkr,
3401 [GCC_SNOC_USB_CLK] = &gcc_snoc_usb_clk.clkr,
3402 [GCC_SYS_NOC_AT_CLK] = &gcc_sys_noc_at_clk.clkr,
3403 [GCC_SYS_NOC_WCSS_AHB_CLK] = &gcc_sys_noc_wcss_ahb_clk.clkr,
3404 [GCC_SYSTEM_NOC_BFDCD_CLK_SRC] = &gcc_system_noc_bfdcd_clk_src.clkr,
3405 [GCC_UNIPHY0_AHB_CLK] = &gcc_uniphy0_ahb_clk.clkr,
3406 [GCC_UNIPHY0_SYS_CLK] = &gcc_uniphy0_sys_clk.clkr,
3407 [GCC_UNIPHY1_AHB_CLK] = &gcc_uniphy1_ahb_clk.clkr,
3408 [GCC_UNIPHY1_SYS_CLK] = &gcc_uniphy1_sys_clk.clkr,
3409 [GCC_UNIPHY_SYS_CLK_SRC] = &gcc_uniphy_sys_clk_src.clkr,
3410 [GCC_USB0_AUX_CLK] = &gcc_usb0_aux_clk.clkr,
3411 [GCC_USB0_AUX_CLK_SRC] = &gcc_usb0_aux_clk_src.clkr,
3412 [GCC_USB0_EUD_AT_CLK] = &gcc_usb0_eud_at_clk.clkr,
3413 [GCC_USB0_LFPS_CLK] = &gcc_usb0_lfps_clk.clkr,
3414 [GCC_USB0_LFPS_CLK_SRC] = &gcc_usb0_lfps_clk_src.clkr,
3415 [GCC_USB0_MASTER_CLK] = &gcc_usb0_master_clk.clkr,
3416 [GCC_USB0_MASTER_CLK_SRC] = &gcc_usb0_master_clk_src.clkr,
3417 [GCC_USB0_MOCK_UTMI_CLK] = &gcc_usb0_mock_utmi_clk.clkr,
3418 [GCC_USB0_MOCK_UTMI_CLK_SRC] = &gcc_usb0_mock_utmi_clk_src.clkr,
3419 [GCC_USB0_MOCK_UTMI_DIV_CLK_SRC] = &gcc_usb0_mock_utmi_div_clk_src.clkr,
3420 [GCC_USB0_PHY_CFG_AHB_CLK] = &gcc_usb0_phy_cfg_ahb_clk.clkr,
3421 [GCC_USB0_PIPE_CLK] = &gcc_usb0_pipe_clk.clkr,
3422 [GCC_USB0_SLEEP_CLK] = &gcc_usb0_sleep_clk.clkr,
3423 [GCC_WCSS_AHB_CLK_SRC] = &gcc_wcss_ahb_clk_src.clkr,
3424 [GCC_WCSS_AXIM_CLK] = &gcc_wcss_axim_clk.clkr,
3425 [GCC_WCSS_AXIS_CLK] = &gcc_wcss_axis_clk.clkr,
3426 [GCC_WCSS_DBG_IFC_APB_BDG_CLK] = &gcc_wcss_dbg_ifc_apb_bdg_clk.clkr,
3427 [GCC_WCSS_DBG_IFC_APB_CLK] = &gcc_wcss_dbg_ifc_apb_clk.clkr,
3428 [GCC_WCSS_DBG_IFC_ATB_BDG_CLK] = &gcc_wcss_dbg_ifc_atb_bdg_clk.clkr,
3429 [GCC_WCSS_DBG_IFC_ATB_CLK] = &gcc_wcss_dbg_ifc_atb_clk.clkr,
3430 [GCC_WCSS_DBG_IFC_NTS_BDG_CLK] = &gcc_wcss_dbg_ifc_nts_bdg_clk.clkr,
3431 [GCC_WCSS_DBG_IFC_NTS_CLK] = &gcc_wcss_dbg_ifc_nts_clk.clkr,
3432 [GCC_WCSS_ECAHB_CLK] = &gcc_wcss_ecahb_clk.clkr,
3433 [GCC_WCSS_MST_ASYNC_BDG_CLK] = &gcc_wcss_mst_async_bdg_clk.clkr,
3434 [GCC_WCSS_SLV_ASYNC_BDG_CLK] = &gcc_wcss_slv_async_bdg_clk.clkr,
3435 [GCC_XO_CLK] = &gcc_xo_clk.clkr,
3436 [GCC_XO_CLK_SRC] = &gcc_xo_clk_src.clkr,
3437 [GCC_XO_DIV4_CLK] = &gcc_xo_div4_clk.clkr,
3438 [GCC_IM_SLEEP_CLK] = &gcc_im_sleep_clk.clkr,
3439 [GCC_NSSNOC_PCNOC_1_CLK] = &gcc_nssnoc_pcnoc_1_clk.clkr,
3440 [GCC_SNOC_QOSGEN_EXTREF_DIV_CLK_SRC] = &gcc_snoc_qosgen_extref_div_clk_src.clkr,
3441 [GCC_PCIE3X2_PIPE_CLK_SRC] = &gcc_pcie3x2_pipe_clk_src.clkr,
3442 [GCC_PCIE3X1_0_PIPE_CLK_SRC] = &gcc_pcie3x1_0_pipe_clk_src.clkr,
3443 [GCC_PCIE3X1_1_PIPE_CLK_SRC] = &gcc_pcie3x1_1_pipe_clk_src.clkr,
3444 [GCC_USB0_PIPE_CLK_SRC] = &gcc_usb0_pipe_clk_src.clkr,
3445 };
3446
3447 static const struct qcom_reset_map gcc_ipq5332_resets[] = {
3448 [GCC_ADSS_BCR] = { 0x1c000 },
3449 [GCC_ADSS_PWM_CLK_ARES] = { 0x1c00c, 2 },
3450 [GCC_AHB_CLK_ARES] = { 0x34024, 2 },
3451 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_BCR] = { 0x38000 },
3452 [GCC_APC0_VOLTAGE_DROOP_DETECTOR_GPLL0_CLK_ARES] = { 0x3800c, 2 },
3453 [GCC_APSS_AHB_CLK_ARES] = { 0x24018, 2 },
3454 [GCC_APSS_AXI_CLK_ARES] = { 0x2401c, 2 },
3455 [GCC_BLSP1_AHB_CLK_ARES] = { 0x1008, 2 },
3456 [GCC_BLSP1_BCR] = { 0x1000 },
3457 [GCC_BLSP1_QUP1_BCR] = { 0x2000 },
3458 [GCC_BLSP1_QUP1_I2C_APPS_CLK_ARES] = { 0x2024, 2 },
3459 [GCC_BLSP1_QUP1_SPI_APPS_CLK_ARES] = { 0x2020, 2 },
3460 [GCC_BLSP1_QUP2_BCR] = { 0x3000 },
3461 [GCC_BLSP1_QUP2_I2C_APPS_CLK_ARES] = { 0x3024, 2 },
3462 [GCC_BLSP1_QUP2_SPI_APPS_CLK_ARES] = { 0x3020, 2 },
3463 [GCC_BLSP1_QUP3_BCR] = { 0x4000 },
3464 [GCC_BLSP1_QUP3_I2C_APPS_CLK_ARES] = { 0x4024, 2 },
3465 [GCC_BLSP1_QUP3_SPI_APPS_CLK_ARES] = { 0x4020, 2 },
3466 [GCC_BLSP1_SLEEP_CLK_ARES] = { 0x1010, 2 },
3467 [GCC_BLSP1_UART1_APPS_CLK_ARES] = { 0x2040, 2 },
3468 [GCC_BLSP1_UART1_BCR] = { 0x2028 },
3469 [GCC_BLSP1_UART2_APPS_CLK_ARES] = { 0x3040, 2 },
3470 [GCC_BLSP1_UART2_BCR] = { 0x3028 },
3471 [GCC_BLSP1_UART3_APPS_CLK_ARES] = { 0x4054, 2 },
3472 [GCC_BLSP1_UART3_BCR] = { 0x4028 },
3473 [GCC_CE_BCR] = { 0x18008 },
3474 [GCC_CMN_BLK_BCR] = { 0x3a000 },
3475 [GCC_CMN_LDO0_BCR] = { 0x1d000 },
3476 [GCC_CMN_LDO1_BCR] = { 0x1d008 },
3477 [GCC_DCC_BCR] = { 0x35000 },
3478 [GCC_GP1_CLK_ARES] = { 0x8018, 2 },
3479 [GCC_GP2_CLK_ARES] = { 0x9018, 2 },
3480 [GCC_LPASS_BCR] = { 0x27000 },
3481 [GCC_LPASS_CORE_AXIM_CLK_ARES] = { 0x27018, 2 },
3482 [GCC_LPASS_SWAY_CLK_ARES] = { 0x27014, 2 },
3483 [GCC_MDIOM_BCR] = { 0x12000 },
3484 [GCC_MDIOS_BCR] = { 0x12008 },
3485 [GCC_NSS_BCR] = { 0x17000 },
3486 [GCC_NSS_TS_CLK_ARES] = { 0x17018, 2 },
3487 [GCC_NSSCC_CLK_ARES] = { 0x17034, 2 },
3488 [GCC_NSSCFG_CLK_ARES] = { 0x1702c, 2 },
3489 [GCC_NSSNOC_ATB_CLK_ARES] = { 0x17014, 2 },
3490 [GCC_NSSNOC_NSSCC_CLK_ARES] = { 0x17030, 2 },
3491 [GCC_NSSNOC_QOSGEN_REF_CLK_ARES] = { 0x1701c, 2 },
3492 [GCC_NSSNOC_SNOC_1_CLK_ARES] = { 0x1707c, 2 },
3493 [GCC_NSSNOC_SNOC_CLK_ARES] = { 0x17028, 2 },
3494 [GCC_NSSNOC_TIMEOUT_REF_CLK_ARES] = { 0x17020, 2 },
3495 [GCC_NSSNOC_XO_DCD_CLK_ARES] = { 0x17074, 2 },
3496 [GCC_PCIE3X1_0_AHB_CLK_ARES] = { 0x29030, 2 },
3497 [GCC_PCIE3X1_0_AUX_CLK_ARES] = { 0x29070, 2 },
3498 [GCC_PCIE3X1_0_AXI_M_CLK_ARES] = { 0x29038, 2 },
3499 [GCC_PCIE3X1_0_AXI_S_BRIDGE_CLK_ARES] = { 0x29048, 2 },
3500 [GCC_PCIE3X1_0_AXI_S_CLK_ARES] = { 0x29040, 2 },
3501 [GCC_PCIE3X1_0_BCR] = { 0x29000 },
3502 [GCC_PCIE3X1_0_LINK_DOWN_BCR] = { 0x29054 },
3503 [GCC_PCIE3X1_0_PHY_BCR] = { 0x29060 },
3504 [GCC_PCIE3X1_0_PHY_PHY_BCR] = { 0x2905c },
3505 [GCC_PCIE3X1_1_AHB_CLK_ARES] = { 0x2a00c, 2 },
3506 [GCC_PCIE3X1_1_AUX_CLK_ARES] = { 0x2a070, 2 },
3507 [GCC_PCIE3X1_1_AXI_M_CLK_ARES] = { 0x2a014, 2 },
3508 [GCC_PCIE3X1_1_AXI_S_BRIDGE_CLK_ARES] = { 0x2a024, 2 },
3509 [GCC_PCIE3X1_1_AXI_S_CLK_ARES] = { 0x2a01c, 2 },
3510 [GCC_PCIE3X1_1_BCR] = { 0x2a000 },
3511 [GCC_PCIE3X1_1_LINK_DOWN_BCR] = { 0x2a028 },
3512 [GCC_PCIE3X1_1_PHY_BCR] = { 0x2a030 },
3513 [GCC_PCIE3X1_1_PHY_PHY_BCR] = { 0x2a02c },
3514 [GCC_PCIE3X1_PHY_AHB_CLK_ARES] = { 0x29078, 2 },
3515 [GCC_PCIE3X2_AHB_CLK_ARES] = { 0x28030, 2 },
3516 [GCC_PCIE3X2_AUX_CLK_ARES] = { 0x28070, 2 },
3517 [GCC_PCIE3X2_AXI_M_CLK_ARES] = { 0x28038, 2 },
3518 [GCC_PCIE3X2_AXI_S_BRIDGE_CLK_ARES] = { 0x28048, 2 },
3519 [GCC_PCIE3X2_AXI_S_CLK_ARES] = { 0x28040, 2 },
3520 [GCC_PCIE3X2_BCR] = { 0x28000 },
3521 [GCC_PCIE3X2_LINK_DOWN_BCR] = { 0x28054 },
3522 [GCC_PCIE3X2_PHY_AHB_CLK_ARES] = { 0x28080, 2 },
3523 [GCC_PCIE3X2_PHY_BCR] = { 0x28060 },
3524 [GCC_PCIE3X2PHY_PHY_BCR] = { 0x2805c },
3525 [GCC_PCNOC_BCR] = { 0x31000 },
3526 [GCC_PCNOC_LPASS_CLK_ARES] = { 0x31020, 2 },
3527 [GCC_PRNG_AHB_CLK_ARES] = { 0x13024, 2 },
3528 [GCC_PRNG_BCR] = { 0x13020 },
3529 [GCC_Q6_AHB_CLK_ARES] = { 0x25014, 2 },
3530 [GCC_Q6_AHB_S_CLK_ARES] = { 0x25018, 2 },
3531 [GCC_Q6_AXIM_CLK_ARES] = { 0x2500c, 2 },
3532 [GCC_Q6_AXIS_CLK_ARES] = { 0x25010, 2 },
3533 [GCC_Q6_TSCTR_1TO2_CLK_ARES] = { 0x25020, 2 },
3534 [GCC_Q6SS_ATBM_CLK_ARES] = { 0x2501c, 2 },
3535 [GCC_Q6SS_PCLKDBG_CLK_ARES] = { 0x25024, 2 },
3536 [GCC_Q6SS_TRIG_CLK_ARES] = { 0x250a0, 2 },
3537 [GCC_QDSS_APB2JTAG_CLK_ARES] = { 0x2d060, 2 },
3538 [GCC_QDSS_AT_CLK_ARES] = { 0x2d038, 2 },
3539 [GCC_QDSS_BCR] = { 0x2d000 },
3540 [GCC_QDSS_CFG_AHB_CLK_ARES] = { 0x2d06c, 2 },
3541 [GCC_QDSS_DAP_AHB_CLK_ARES] = { 0x2d068, 2 },
3542 [GCC_QDSS_DAP_CLK_ARES] = { 0x2d05c, 2 },
3543 [GCC_QDSS_ETR_USB_CLK_ARES] = { 0x2d064, 2 },
3544 [GCC_QDSS_EUD_AT_CLK_ARES] = { 0x2d070, 2 },
3545 [GCC_QDSS_STM_CLK_ARES] = { 0x2d040, 2 },
3546 [GCC_QDSS_TRACECLKIN_CLK_ARES] = { 0x2d044, 2 },
3547 [GCC_QDSS_TS_CLK_ARES] = { 0x2d078, 2 },
3548 [GCC_QDSS_TSCTR_DIV16_CLK_ARES] = { 0x2d058, 2 },
3549 [GCC_QDSS_TSCTR_DIV2_CLK_ARES] = { 0x2d048, 2 },
3550 [GCC_QDSS_TSCTR_DIV3_CLK_ARES] = { 0x2d04c, 2 },
3551 [GCC_QDSS_TSCTR_DIV4_CLK_ARES] = { 0x2d050, 2 },
3552 [GCC_QDSS_TSCTR_DIV8_CLK_ARES] = { 0x2d054, 2 },
3553 [GCC_QPIC_AHB_CLK_ARES] = { 0x32010, 2 },
3554 [GCC_QPIC_CLK_ARES] = { 0x32014, 2 },
3555 [GCC_QPIC_BCR] = { 0x32000 },
3556 [GCC_QPIC_IO_MACRO_CLK_ARES] = { 0x3200c, 2 },
3557 [GCC_QPIC_SLEEP_CLK_ARES] = { 0x3201c, 2 },
3558 [GCC_QUSB2_0_PHY_BCR] = { 0x2c068 },
3559 [GCC_SDCC1_AHB_CLK_ARES] = { 0x33034, 2 },
3560 [GCC_SDCC1_APPS_CLK_ARES] = { 0x3302c, 2 },
3561 [GCC_SDCC_BCR] = { 0x33000 },
3562 [GCC_SNOC_BCR] = { 0x2e000 },
3563 [GCC_SNOC_LPASS_CFG_CLK_ARES] = { 0x2e028, 2 },
3564 [GCC_SNOC_NSSNOC_1_CLK_ARES] = { 0x17090, 2 },
3565 [GCC_SNOC_NSSNOC_CLK_ARES] = { 0x17084, 2 },
3566 [GCC_SYS_NOC_QDSS_STM_AXI_CLK_ARES] = { 0x2e034, 2 },
3567 [GCC_SYS_NOC_WCSS_AHB_CLK_ARES] = { 0x2e030, 2 },
3568 [GCC_UNIPHY0_AHB_CLK_ARES] = { 0x16010, 2 },
3569 [GCC_UNIPHY0_BCR] = { 0x16000 },
3570 [GCC_UNIPHY0_SYS_CLK_ARES] = { 0x1600c, 2 },
3571 [GCC_UNIPHY1_AHB_CLK_ARES] = { 0x1601c, 2 },
3572 [GCC_UNIPHY1_BCR] = { 0x16014 },
3573 [GCC_UNIPHY1_SYS_CLK_ARES] = { 0x16018, 2 },
3574 [GCC_USB0_AUX_CLK_ARES] = { 0x2c050, 2 },
3575 [GCC_USB0_EUD_AT_CLK_ARES] = { 0x30004, 2 },
3576 [GCC_USB0_LFPS_CLK_ARES] = { 0x2c090, 2 },
3577 [GCC_USB0_MASTER_CLK_ARES] = { 0x2c048, 2 },
3578 [GCC_USB0_MOCK_UTMI_CLK_ARES] = { 0x2c054, 2 },
3579 [GCC_USB0_PHY_BCR] = { 0x2c06c },
3580 [GCC_USB0_PHY_CFG_AHB_CLK_ARES] = { 0x2c05c, 2 },
3581 [GCC_USB0_SLEEP_CLK_ARES] = { 0x2c058, 2 },
3582 [GCC_USB3PHY_0_PHY_BCR] = { 0x2c070 },
3583 [GCC_USB_BCR] = { 0x2c000 },
3584 [GCC_WCSS_AXIM_CLK_ARES] = { 0x2505c, 2 },
3585 [GCC_WCSS_AXIS_CLK_ARES] = { 0x25060, 2 },
3586 [GCC_WCSS_BCR] = { 0x18004 },
3587 [GCC_WCSS_DBG_IFC_APB_BDG_CLK_ARES] = { 0x25048, 2 },
3588 [GCC_WCSS_DBG_IFC_APB_CLK_ARES] = { 0x25038, 2 },
3589 [GCC_WCSS_DBG_IFC_ATB_BDG_CLK_ARES] = { 0x2504c, 2 },
3590 [GCC_WCSS_DBG_IFC_ATB_CLK_ARES] = { 0x2503c, 2 },
3591 [GCC_WCSS_DBG_IFC_NTS_BDG_CLK_ARES] = { 0x25050, 2 },
3592 [GCC_WCSS_DBG_IFC_NTS_CLK_ARES] = { 0x25040, 2 },
3593 [GCC_WCSS_ECAHB_CLK_ARES] = { 0x25058, 2 },
3594 [GCC_WCSS_MST_ASYNC_BDG_CLK_ARES] = { 0x2e0b0, 2 },
3595 [GCC_WCSS_Q6_BCR] = { 0x18000 },
3596 [GCC_WCSS_SLV_ASYNC_BDG_CLK_ARES] = { 0x2e0b4, 2 },
3597 [GCC_XO_CLK_ARES] = { 0x34018, 2 },
3598 [GCC_XO_DIV4_CLK_ARES] = { 0x3401c, 2 },
3599 [GCC_Q6SS_DBG_ARES] = { 0x25094 },
3600 [GCC_WCSS_DBG_BDG_ARES] = { 0x25098, 0 },
3601 [GCC_WCSS_DBG_ARES] = { 0x25098, 1 },
3602 [GCC_WCSS_AXI_S_ARES] = { 0x25098, 2 },
3603 [GCC_WCSS_AXI_M_ARES] = { 0x25098, 3 },
3604 [GCC_WCSSAON_ARES] = { 0x2509C },
3605 [GCC_PCIE3X2_PIPE_ARES] = { 0x28058, 0 },
3606 [GCC_PCIE3X2_CORE_STICKY_ARES] = { 0x28058, 1 },
3607 [GCC_PCIE3X2_AXI_S_STICKY_ARES] = { 0x28058, 2 },
3608 [GCC_PCIE3X2_AXI_M_STICKY_ARES] = { 0x28058, 3 },
3609 [GCC_PCIE3X1_0_PIPE_ARES] = { 0x29058, 0 },
3610 [GCC_PCIE3X1_0_CORE_STICKY_ARES] = { 0x29058, 1 },
3611 [GCC_PCIE3X1_0_AXI_S_STICKY_ARES] = { 0x29058, 2 },
3612 [GCC_PCIE3X1_0_AXI_M_STICKY_ARES] = { 0x29058, 3 },
3613 [GCC_PCIE3X1_1_PIPE_ARES] = { 0x2a058, 0 },
3614 [GCC_PCIE3X1_1_CORE_STICKY_ARES] = { 0x2a058, 1 },
3615 [GCC_PCIE3X1_1_AXI_S_STICKY_ARES] = { 0x2a058, 2 },
3616 [GCC_PCIE3X1_1_AXI_M_STICKY_ARES] = { 0x2a058, 3 },
3617 [GCC_IM_SLEEP_CLK_ARES] = { 0x34020, 2 },
3618 [GCC_NSSNOC_PCNOC_1_CLK_ARES] = { 0x17080, 2 },
3619 [GCC_UNIPHY0_XPCS_ARES] = { 0x16050 },
3620 [GCC_UNIPHY1_XPCS_ARES] = { 0x16060 },
3621 };
3622
3623 #define IPQ_APPS_ID 5332 /* some unique value */
3624
3625 static struct qcom_icc_hws_data icc_ipq5332_hws[] = {
3626 { MASTER_SNOC_PCIE3_1_M, SLAVE_SNOC_PCIE3_1_M, GCC_SNOC_PCIE3_1LANE_M_CLK },
3627 { MASTER_ANOC_PCIE3_1_S, SLAVE_ANOC_PCIE3_1_S, GCC_SNOC_PCIE3_1LANE_S_CLK },
3628 { MASTER_SNOC_PCIE3_2_M, SLAVE_SNOC_PCIE3_2_M, GCC_SNOC_PCIE3_2LANE_M_CLK },
3629 { MASTER_ANOC_PCIE3_2_S, SLAVE_ANOC_PCIE3_2_S, GCC_SNOC_PCIE3_2LANE_S_CLK },
3630 { MASTER_SNOC_USB, SLAVE_SNOC_USB, GCC_SNOC_USB_CLK },
3631 { MASTER_NSSNOC_NSSCC, SLAVE_NSSNOC_NSSCC, GCC_NSSNOC_NSSCC_CLK },
3632 { MASTER_NSSNOC_SNOC_0, SLAVE_NSSNOC_SNOC_0, GCC_NSSNOC_SNOC_CLK },
3633 { MASTER_NSSNOC_SNOC_1, SLAVE_NSSNOC_SNOC_1, GCC_NSSNOC_SNOC_1_CLK },
3634 { MASTER_NSSNOC_ATB, SLAVE_NSSNOC_ATB, GCC_NSSNOC_ATB_CLK },
3635 { MASTER_NSSNOC_PCNOC_1, SLAVE_NSSNOC_PCNOC_1, GCC_NSSNOC_PCNOC_1_CLK },
3636 { MASTER_NSSNOC_QOSGEN_REF, SLAVE_NSSNOC_QOSGEN_REF, GCC_NSSNOC_QOSGEN_REF_CLK },
3637 { MASTER_NSSNOC_TIMEOUT_REF, SLAVE_NSSNOC_TIMEOUT_REF, GCC_NSSNOC_TIMEOUT_REF_CLK },
3638 { MASTER_NSSNOC_XO_DCD, SLAVE_NSSNOC_XO_DCD, GCC_NSSNOC_XO_DCD_CLK },
3639 };
3640
3641 static const struct regmap_config gcc_ipq5332_regmap_config = {
3642 .reg_bits = 32,
3643 .reg_stride = 4,
3644 .val_bits = 32,
3645 .max_register = 0x3f024,
3646 .fast_io = true,
3647 };
3648
3649 static struct clk_hw *gcc_ipq5332_hws[] = {
3650 &gpll0_div2.hw,
3651 &gcc_xo_div4_clk_src.hw,
3652 &gcc_system_noc_bfdcd_div2_clk_src.hw,
3653 &gcc_qdss_tsctr_div2_clk_src.hw,
3654 &gcc_qdss_tsctr_div3_clk_src.hw,
3655 &gcc_qdss_tsctr_div4_clk_src.hw,
3656 &gcc_qdss_tsctr_div8_clk_src.hw,
3657 &gcc_qdss_tsctr_div16_clk_src.hw,
3658 &gcc_eud_at_div_clk_src.hw,
3659 };
3660
3661 static const struct qcom_cc_desc gcc_ipq5332_desc = {
3662 .config = &gcc_ipq5332_regmap_config,
3663 .clks = gcc_ipq5332_clocks,
3664 .num_clks = ARRAY_SIZE(gcc_ipq5332_clocks),
3665 .resets = gcc_ipq5332_resets,
3666 .num_resets = ARRAY_SIZE(gcc_ipq5332_resets),
3667 .clk_hws = gcc_ipq5332_hws,
3668 .num_clk_hws = ARRAY_SIZE(gcc_ipq5332_hws),
3669 .icc_hws = icc_ipq5332_hws,
3670 .num_icc_hws = ARRAY_SIZE(icc_ipq5332_hws),
3671 .icc_first_node_id = IPQ_APPS_ID,
3672 };
3673
gcc_ipq5332_probe(struct platform_device * pdev)3674 static int gcc_ipq5332_probe(struct platform_device *pdev)
3675 {
3676 return qcom_cc_probe(pdev, &gcc_ipq5332_desc);
3677 }
3678
3679 static const struct of_device_id gcc_ipq5332_match_table[] = {
3680 { .compatible = "qcom,ipq5332-gcc" },
3681 { }
3682 };
3683 MODULE_DEVICE_TABLE(of, gcc_ipq5332_match_table);
3684
3685 static struct platform_driver gcc_ipq5332_driver = {
3686 .probe = gcc_ipq5332_probe,
3687 .driver = {
3688 .name = "gcc-ipq5332",
3689 .of_match_table = gcc_ipq5332_match_table,
3690 .sync_state = icc_sync_state,
3691 },
3692 };
3693
gcc_ipq5332_init(void)3694 static int __init gcc_ipq5332_init(void)
3695 {
3696 return platform_driver_register(&gcc_ipq5332_driver);
3697 }
3698 core_initcall(gcc_ipq5332_init);
3699
gcc_ipq5332_exit(void)3700 static void __exit gcc_ipq5332_exit(void)
3701 {
3702 platform_driver_unregister(&gcc_ipq5332_driver);
3703 }
3704 module_exit(gcc_ipq5332_exit);
3705
3706 MODULE_DESCRIPTION("QTI GCC IPQ5332 Driver");
3707 MODULE_LICENSE("GPL");
3708