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