xref: /linux/drivers/clk/qcom/gcc-hawi.c (revision 2b109eccd80b660e58d4523e8b80ce11bc3e532e)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4  */
5 
6 #include <linux/clk-provider.h>
7 #include <linux/module.h>
8 #include <linux/of.h>
9 #include <linux/platform_device.h>
10 #include <linux/regmap.h>
11 
12 #include <dt-bindings/clock/qcom,hawi-gcc.h>
13 
14 #include "clk-alpha-pll.h"
15 #include "clk-branch.h"
16 #include "clk-pll.h"
17 #include "clk-rcg.h"
18 #include "clk-regmap.h"
19 #include "clk-regmap-divider.h"
20 #include "clk-regmap-mux.h"
21 #include "clk-regmap-phy-mux.h"
22 #include "common.h"
23 #include "gdsc.h"
24 #include "reset.h"
25 
26 enum {
27 	DT_BI_TCXO,
28 	DT_BI_TCXO_AO,
29 	DT_SLEEP_CLK,
30 	DT_PCIE_0_PIPE_CLK,
31 	DT_PCIE_1_PIPE_CLK,
32 	DT_UFS_PHY_RX_SYMBOL_0_CLK,
33 	DT_UFS_PHY_RX_SYMBOL_1_CLK,
34 	DT_UFS_PHY_TX_SYMBOL_0_CLK,
35 	DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
36 };
37 
38 enum {
39 	P_BI_TCXO,
40 	P_GCC_GPLL0_OUT_EVEN,
41 	P_GCC_GPLL0_OUT_MAIN,
42 	P_GCC_GPLL4_OUT_MAIN,
43 	P_GCC_GPLL5_OUT_MAIN,
44 	P_GCC_GPLL7_OUT_MAIN,
45 	P_GCC_GPLL9_OUT_MAIN,
46 	P_PCIE_0_PIPE_CLK,
47 	P_PCIE_1_PIPE_CLK,
48 	P_SLEEP_CLK,
49 	P_UFS_PHY_RX_SYMBOL_0_CLK,
50 	P_UFS_PHY_RX_SYMBOL_1_CLK,
51 	P_UFS_PHY_TX_SYMBOL_0_CLK,
52 	P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
53 };
54 
55 static struct clk_alpha_pll gcc_gpll0 = {
56 	.offset = 0x0,
57 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
58 	.clkr = {
59 		.enable_reg = 0x52028,
60 		.enable_mask = BIT(0),
61 		.hw.init = &(const struct clk_init_data) {
62 			.name = "gcc_gpll0",
63 			.parent_data = &(const struct clk_parent_data) {
64 				.index = DT_BI_TCXO,
65 			},
66 			.num_parents = 1,
67 			.ops = &clk_alpha_pll_fixed_taycan_eha_t_ops,
68 		},
69 	},
70 };
71 
72 static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {
73 	{ 0x1, 2 },
74 	{ }
75 };
76 
77 static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {
78 	.offset = 0x0,
79 	.post_div_shift = 10,
80 	.post_div_table = post_div_table_gcc_gpll0_out_even,
81 	.num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),
82 	.width = 4,
83 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
84 	.clkr.hw.init = &(const struct clk_init_data) {
85 		.name = "gcc_gpll0_out_even",
86 		.parent_hws = (const struct clk_hw*[]) {
87 			&gcc_gpll0.clkr.hw,
88 		},
89 		.num_parents = 1,
90 		.ops = &clk_alpha_pll_postdiv_taycan_eha_t_ops,
91 	},
92 };
93 
94 static struct clk_alpha_pll gcc_gpll4 = {
95 	.offset = 0x4000,
96 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
97 	.clkr = {
98 		.enable_reg = 0x52028,
99 		.enable_mask = BIT(4),
100 		.hw.init = &(const struct clk_init_data) {
101 			.name = "gcc_gpll4",
102 			.parent_data = &(const struct clk_parent_data) {
103 				.index = DT_BI_TCXO,
104 			},
105 			.num_parents = 1,
106 			.ops = &clk_alpha_pll_fixed_taycan_eha_t_ops,
107 		},
108 	},
109 };
110 
111 static struct clk_alpha_pll gcc_gpll5 = {
112 	.offset = 0x5000,
113 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
114 	.clkr = {
115 		.enable_reg = 0x52028,
116 		.enable_mask = BIT(5),
117 		.hw.init = &(const struct clk_init_data) {
118 			.name = "gcc_gpll5",
119 			.parent_data = &(const struct clk_parent_data) {
120 				.index = DT_BI_TCXO,
121 			},
122 			.num_parents = 1,
123 			.ops = &clk_alpha_pll_fixed_taycan_eha_t_ops,
124 		},
125 	},
126 };
127 
128 static struct clk_alpha_pll gcc_gpll7 = {
129 	.offset = 0x7000,
130 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
131 	.clkr = {
132 		.enable_reg = 0x52028,
133 		.enable_mask = BIT(7),
134 		.hw.init = &(const struct clk_init_data) {
135 			.name = "gcc_gpll7",
136 			.parent_data = &(const struct clk_parent_data) {
137 				.index = DT_BI_TCXO,
138 			},
139 			.num_parents = 1,
140 			.ops = &clk_alpha_pll_fixed_taycan_eha_t_ops,
141 		},
142 	},
143 };
144 
145 static struct clk_alpha_pll gcc_gpll9 = {
146 	.offset = 0x9000,
147 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_TAYCAN_EHA_T],
148 	.clkr = {
149 		.enable_reg = 0x52028,
150 		.enable_mask = BIT(9),
151 		.hw.init = &(const struct clk_init_data) {
152 			.name = "gcc_gpll9",
153 			.parent_data = &(const struct clk_parent_data) {
154 				.index = DT_BI_TCXO,
155 			},
156 			.num_parents = 1,
157 			.ops = &clk_alpha_pll_fixed_taycan_eha_t_ops,
158 		},
159 	},
160 };
161 
162 static const struct parent_map gcc_parent_map_0[] = {
163 	{ P_BI_TCXO, 0 },
164 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
165 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
166 };
167 
168 static const struct clk_parent_data gcc_parent_data_0[] = {
169 	{ .index = DT_BI_TCXO },
170 	{ .hw = &gcc_gpll0.clkr.hw },
171 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
172 };
173 
174 static const struct parent_map gcc_parent_map_1[] = {
175 	{ P_BI_TCXO, 0 },
176 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
177 	{ P_GCC_GPLL7_OUT_MAIN, 2 },
178 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
179 };
180 
181 static const struct clk_parent_data gcc_parent_data_1[] = {
182 	{ .index = DT_BI_TCXO },
183 	{ .hw = &gcc_gpll0.clkr.hw },
184 	{ .hw = &gcc_gpll7.clkr.hw },
185 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
186 };
187 
188 static const struct parent_map gcc_parent_map_2[] = {
189 	{ P_BI_TCXO, 0 },
190 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
191 	{ P_SLEEP_CLK, 5 },
192 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
193 };
194 
195 static const struct clk_parent_data gcc_parent_data_2[] = {
196 	{ .index = DT_BI_TCXO },
197 	{ .hw = &gcc_gpll0.clkr.hw },
198 	{ .index = DT_SLEEP_CLK },
199 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
200 };
201 
202 static const struct parent_map gcc_parent_map_3[] = {
203 	{ P_BI_TCXO, 0 },
204 };
205 
206 static const struct clk_parent_data gcc_parent_data_3[] = {
207 	{ .index = DT_BI_TCXO },
208 };
209 
210 static const struct parent_map gcc_parent_map_4[] = {
211 	{ P_BI_TCXO, 0 },
212 	{ P_SLEEP_CLK, 5 },
213 };
214 
215 static const struct clk_parent_data gcc_parent_data_4[] = {
216 	{ .index = DT_BI_TCXO },
217 	{ .index = DT_SLEEP_CLK },
218 };
219 
220 static const struct parent_map gcc_parent_map_5[] = {
221 	{ P_BI_TCXO, 0 },
222 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
223 	{ P_GCC_GPLL5_OUT_MAIN, 3 },
224 	{ P_GCC_GPLL4_OUT_MAIN, 5 },
225 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
226 };
227 
228 static const struct clk_parent_data gcc_parent_data_5[] = {
229 	{ .index = DT_BI_TCXO },
230 	{ .hw = &gcc_gpll0.clkr.hw },
231 	{ .hw = &gcc_gpll5.clkr.hw },
232 	{ .hw = &gcc_gpll4.clkr.hw },
233 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
234 };
235 
236 static const struct parent_map gcc_parent_map_8[] = {
237 	{ P_BI_TCXO, 0 },
238 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
239 	{ P_GCC_GPLL9_OUT_MAIN, 2 },
240 	{ P_GCC_GPLL4_OUT_MAIN, 5 },
241 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
242 };
243 
244 static const struct clk_parent_data gcc_parent_data_8[] = {
245 	{ .index = DT_BI_TCXO },
246 	{ .hw = &gcc_gpll0.clkr.hw },
247 	{ .hw = &gcc_gpll9.clkr.hw },
248 	{ .hw = &gcc_gpll4.clkr.hw },
249 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
250 };
251 
252 static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = {
253 	.reg = 0x6b0a8,
254 	.clkr = {
255 		.hw.init = &(const struct clk_init_data) {
256 			.name = "gcc_pcie_0_pipe_clk_src",
257 			.parent_data = &(const struct clk_parent_data){
258 				.index = DT_PCIE_0_PIPE_CLK,
259 			},
260 			.num_parents = 1,
261 			.ops = &clk_regmap_phy_mux_ops,
262 		},
263 	},
264 };
265 
266 static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = {
267 	.reg = 0x670a4,
268 	.clkr = {
269 		.hw.init = &(const struct clk_init_data) {
270 			.name = "gcc_pcie_1_pipe_clk_src",
271 			.parent_data = &(const struct clk_parent_data){
272 				.index = DT_PCIE_1_PIPE_CLK,
273 			},
274 			.num_parents = 1,
275 			.ops = &clk_regmap_phy_mux_ops,
276 		},
277 	},
278 };
279 
280 static struct clk_regmap_phy_mux gcc_ufs_phy_rx_symbol_0_clk_src = {
281 	.reg = 0x77068,
282 	.clkr = {
283 		.hw.init = &(const struct clk_init_data) {
284 			.name = "gcc_ufs_phy_rx_symbol_0_clk_src",
285 			.parent_data = &(const struct clk_parent_data){
286 				.index = DT_UFS_PHY_RX_SYMBOL_0_CLK,
287 			},
288 			.num_parents = 1,
289 			.ops = &clk_regmap_phy_mux_ops,
290 		},
291 	},
292 };
293 
294 static struct clk_regmap_phy_mux gcc_ufs_phy_rx_symbol_1_clk_src = {
295 	.reg = 0x770ec,
296 	.clkr = {
297 		.hw.init = &(const struct clk_init_data) {
298 			.name = "gcc_ufs_phy_rx_symbol_1_clk_src",
299 			.parent_data = &(const struct clk_parent_data){
300 				.index = DT_UFS_PHY_RX_SYMBOL_1_CLK,
301 			},
302 			.num_parents = 1,
303 			.ops = &clk_regmap_phy_mux_ops,
304 		},
305 	},
306 };
307 
308 static struct clk_regmap_phy_mux gcc_ufs_phy_tx_symbol_0_clk_src = {
309 	.reg = 0x77058,
310 	.clkr = {
311 		.hw.init = &(const struct clk_init_data) {
312 			.name = "gcc_ufs_phy_tx_symbol_0_clk_src",
313 			.parent_data = &(const struct clk_parent_data){
314 				.index = DT_UFS_PHY_TX_SYMBOL_0_CLK,
315 			},
316 			.num_parents = 1,
317 			.ops = &clk_regmap_phy_mux_ops,
318 		},
319 	},
320 };
321 
322 static struct clk_regmap_phy_mux gcc_usb3_prim_phy_pipe_clk_src = {
323 	.reg = 0x39074,
324 	.clkr = {
325 		.hw.init = &(const struct clk_init_data) {
326 			.name = "gcc_usb3_prim_phy_pipe_clk_src",
327 			.parent_data = &(const struct clk_parent_data){
328 				.index = DT_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
329 			},
330 			.num_parents = 1,
331 			.ops = &clk_regmap_phy_mux_ops,
332 		},
333 	},
334 };
335 
336 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
337 	F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
338 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
339 	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
340 	{ }
341 };
342 
343 static struct clk_rcg2 gcc_gp1_clk_src = {
344 	.cmd_rcgr = 0x64004,
345 	.mnd_width = 16,
346 	.hid_width = 5,
347 	.parent_map = gcc_parent_map_2,
348 	.freq_tbl = ftbl_gcc_gp1_clk_src,
349 	.hw_clk_ctrl = true,
350 	.clkr.hw.init = &(const struct clk_init_data) {
351 		.name = "gcc_gp1_clk_src",
352 		.parent_data = gcc_parent_data_2,
353 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
354 		.flags = CLK_SET_RATE_PARENT,
355 		.ops = &clk_rcg2_shared_no_init_park_ops,
356 	},
357 };
358 
359 static struct clk_rcg2 gcc_gp2_clk_src = {
360 	.cmd_rcgr = 0x65004,
361 	.mnd_width = 16,
362 	.hid_width = 5,
363 	.parent_map = gcc_parent_map_2,
364 	.freq_tbl = ftbl_gcc_gp1_clk_src,
365 	.hw_clk_ctrl = true,
366 	.clkr.hw.init = &(const struct clk_init_data) {
367 		.name = "gcc_gp2_clk_src",
368 		.parent_data = gcc_parent_data_2,
369 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
370 		.flags = CLK_SET_RATE_PARENT,
371 		.ops = &clk_rcg2_shared_no_init_park_ops,
372 	},
373 };
374 
375 static struct clk_rcg2 gcc_gp3_clk_src = {
376 	.cmd_rcgr = 0x66004,
377 	.mnd_width = 16,
378 	.hid_width = 5,
379 	.parent_map = gcc_parent_map_2,
380 	.freq_tbl = ftbl_gcc_gp1_clk_src,
381 	.hw_clk_ctrl = true,
382 	.clkr.hw.init = &(const struct clk_init_data) {
383 		.name = "gcc_gp3_clk_src",
384 		.parent_data = gcc_parent_data_2,
385 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
386 		.flags = CLK_SET_RATE_PARENT,
387 		.ops = &clk_rcg2_shared_no_init_park_ops,
388 	},
389 };
390 
391 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
392 	F(19200000, P_BI_TCXO, 1, 0, 0),
393 	{ }
394 };
395 
396 static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
397 	.cmd_rcgr = 0x6b0ac,
398 	.mnd_width = 16,
399 	.hid_width = 5,
400 	.parent_map = gcc_parent_map_4,
401 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
402 	.hw_clk_ctrl = true,
403 	.clkr.hw.init = &(const struct clk_init_data) {
404 		.name = "gcc_pcie_0_aux_clk_src",
405 		.parent_data = gcc_parent_data_4,
406 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
407 		.flags = CLK_SET_RATE_PARENT,
408 		.ops = &clk_rcg2_shared_no_init_park_ops,
409 	},
410 };
411 
412 static struct clk_rcg2 gcc_pcie_0_phy_aux_clk_src = {
413 	.cmd_rcgr = 0x6b0c4,
414 	.mnd_width = 0,
415 	.hid_width = 5,
416 	.parent_map = gcc_parent_map_0,
417 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
418 	.hw_clk_ctrl = true,
419 	.clkr.hw.init = &(const struct clk_init_data) {
420 		.name = "gcc_pcie_0_phy_aux_clk_src",
421 		.parent_data = gcc_parent_data_0,
422 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
423 		.flags = CLK_SET_RATE_PARENT,
424 		.ops = &clk_rcg2_shared_no_init_park_ops,
425 	},
426 };
427 
428 static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {
429 	F(19200000, P_BI_TCXO, 1, 0, 0),
430 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
431 	{ }
432 };
433 
434 static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {
435 	.cmd_rcgr = 0x6b08c,
436 	.mnd_width = 0,
437 	.hid_width = 5,
438 	.parent_map = gcc_parent_map_0,
439 	.freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
440 	.hw_clk_ctrl = true,
441 	.clkr.hw.init = &(const struct clk_init_data) {
442 		.name = "gcc_pcie_0_phy_rchng_clk_src",
443 		.parent_data = gcc_parent_data_0,
444 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
445 		.flags = CLK_SET_RATE_PARENT,
446 		.ops = &clk_rcg2_shared_no_init_park_ops,
447 	},
448 };
449 
450 static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
451 	.cmd_rcgr = 0x670a8,
452 	.mnd_width = 16,
453 	.hid_width = 5,
454 	.parent_map = gcc_parent_map_4,
455 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
456 	.hw_clk_ctrl = true,
457 	.clkr.hw.init = &(const struct clk_init_data) {
458 		.name = "gcc_pcie_1_aux_clk_src",
459 		.parent_data = gcc_parent_data_4,
460 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
461 		.flags = CLK_SET_RATE_PARENT,
462 		.ops = &clk_rcg2_shared_no_init_park_ops,
463 	},
464 };
465 
466 static struct clk_rcg2 gcc_pcie_1_phy_aux_clk_src = {
467 	.cmd_rcgr = 0x670c0,
468 	.mnd_width = 0,
469 	.hid_width = 5,
470 	.parent_map = gcc_parent_map_0,
471 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
472 	.hw_clk_ctrl = true,
473 	.clkr.hw.init = &(const struct clk_init_data) {
474 		.name = "gcc_pcie_1_phy_aux_clk_src",
475 		.parent_data = gcc_parent_data_0,
476 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
477 		.flags = CLK_SET_RATE_PARENT,
478 		.ops = &clk_rcg2_shared_no_init_park_ops,
479 	},
480 };
481 
482 static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {
483 	.cmd_rcgr = 0x67088,
484 	.mnd_width = 0,
485 	.hid_width = 5,
486 	.parent_map = gcc_parent_map_0,
487 	.freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
488 	.hw_clk_ctrl = true,
489 	.clkr.hw.init = &(const struct clk_init_data) {
490 		.name = "gcc_pcie_1_phy_rchng_clk_src",
491 		.parent_data = gcc_parent_data_0,
492 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
493 		.flags = CLK_SET_RATE_PARENT,
494 		.ops = &clk_rcg2_shared_no_init_park_ops,
495 	},
496 };
497 
498 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
499 	F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),
500 	{ }
501 };
502 
503 static struct clk_rcg2 gcc_pdm2_clk_src = {
504 	.cmd_rcgr = 0x33010,
505 	.mnd_width = 0,
506 	.hid_width = 5,
507 	.parent_map = gcc_parent_map_0,
508 	.freq_tbl = ftbl_gcc_pdm2_clk_src,
509 	.hw_clk_ctrl = true,
510 	.clkr.hw.init = &(const struct clk_init_data) {
511 		.name = "gcc_pdm2_clk_src",
512 		.parent_data = gcc_parent_data_0,
513 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
514 		.flags = CLK_SET_RATE_PARENT,
515 		.ops = &clk_rcg2_shared_no_init_park_ops,
516 	},
517 };
518 
519 static struct clk_rcg2 gcc_qupv3_i2c_s0_clk_src = {
520 	.cmd_rcgr = 0x17008,
521 	.mnd_width = 0,
522 	.hid_width = 5,
523 	.parent_map = gcc_parent_map_0,
524 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
525 	.hw_clk_ctrl = true,
526 	.clkr.hw.init = &(const struct clk_init_data) {
527 		.name = "gcc_qupv3_i2c_s0_clk_src",
528 		.parent_data = gcc_parent_data_0,
529 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
530 		.flags = CLK_SET_RATE_PARENT,
531 		.ops = &clk_rcg2_shared_no_init_park_ops,
532 	},
533 };
534 
535 static struct clk_rcg2 gcc_qupv3_i2c_s1_clk_src = {
536 	.cmd_rcgr = 0x17024,
537 	.mnd_width = 0,
538 	.hid_width = 5,
539 	.parent_map = gcc_parent_map_0,
540 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
541 	.hw_clk_ctrl = true,
542 	.clkr.hw.init = &(const struct clk_init_data) {
543 		.name = "gcc_qupv3_i2c_s1_clk_src",
544 		.parent_data = gcc_parent_data_0,
545 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
546 		.flags = CLK_SET_RATE_PARENT,
547 		.ops = &clk_rcg2_shared_no_init_park_ops,
548 	},
549 };
550 
551 static struct clk_rcg2 gcc_qupv3_i2c_s2_clk_src = {
552 	.cmd_rcgr = 0x17040,
553 	.mnd_width = 0,
554 	.hid_width = 5,
555 	.parent_map = gcc_parent_map_0,
556 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
557 	.hw_clk_ctrl = true,
558 	.clkr.hw.init = &(const struct clk_init_data) {
559 		.name = "gcc_qupv3_i2c_s2_clk_src",
560 		.parent_data = gcc_parent_data_0,
561 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
562 		.flags = CLK_SET_RATE_PARENT,
563 		.ops = &clk_rcg2_shared_no_init_park_ops,
564 	},
565 };
566 
567 static struct clk_rcg2 gcc_qupv3_i2c_s3_clk_src = {
568 	.cmd_rcgr = 0x1705c,
569 	.mnd_width = 0,
570 	.hid_width = 5,
571 	.parent_map = gcc_parent_map_0,
572 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
573 	.hw_clk_ctrl = true,
574 	.clkr.hw.init = &(const struct clk_init_data) {
575 		.name = "gcc_qupv3_i2c_s3_clk_src",
576 		.parent_data = gcc_parent_data_0,
577 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
578 		.flags = CLK_SET_RATE_PARENT,
579 		.ops = &clk_rcg2_shared_no_init_park_ops,
580 	},
581 };
582 
583 static struct clk_rcg2 gcc_qupv3_i2c_s4_clk_src = {
584 	.cmd_rcgr = 0x17078,
585 	.mnd_width = 0,
586 	.hid_width = 5,
587 	.parent_map = gcc_parent_map_0,
588 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
589 	.hw_clk_ctrl = true,
590 	.clkr.hw.init = &(const struct clk_init_data) {
591 		.name = "gcc_qupv3_i2c_s4_clk_src",
592 		.parent_data = gcc_parent_data_0,
593 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
594 		.flags = CLK_SET_RATE_PARENT,
595 		.ops = &clk_rcg2_shared_no_init_park_ops,
596 	},
597 };
598 
599 static const struct freq_tbl ftbl_gcc_qupv3_wrap1_qspi_ref_clk_src[] = {
600 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
601 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
602 	F(19200000, P_BI_TCXO, 1, 0, 0),
603 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
604 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
605 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
606 	F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),
607 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
608 	F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
609 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
610 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
611 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
612 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
613 	F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),
614 	F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),
615 	F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),
616 	F(120000000, P_GCC_GPLL0_OUT_EVEN, 2.5, 0, 0),
617 	F(150000000, P_GCC_GPLL0_OUT_EVEN, 2, 0, 0),
618 	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
619 	{ }
620 };
621 
622 static struct clk_init_data gcc_qupv3_wrap1_qspi_ref_clk_src_init = {
623 	.name = "gcc_qupv3_wrap1_qspi_ref_clk_src",
624 	.parent_data = gcc_parent_data_0,
625 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
626 	.flags = CLK_SET_RATE_PARENT,
627 	.ops = &clk_rcg2_shared_no_init_park_ops,
628 };
629 
630 static struct clk_rcg2 gcc_qupv3_wrap1_qspi_ref_clk_src = {
631 	.cmd_rcgr = 0x188c0,
632 	.mnd_width = 16,
633 	.hid_width = 5,
634 	.parent_map = gcc_parent_map_0,
635 	.freq_tbl = ftbl_gcc_qupv3_wrap1_qspi_ref_clk_src,
636 	.hw_clk_ctrl = true,
637 	.clkr.hw.init = &gcc_qupv3_wrap1_qspi_ref_clk_src_init,
638 };
639 
640 static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s0_clk_src[] = {
641 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
642 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
643 	F(19200000, P_BI_TCXO, 1, 0, 0),
644 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
645 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
646 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
647 	F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),
648 	F(60000000, P_GCC_GPLL0_OUT_EVEN, 5, 0, 0),
649 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
650 	F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
651 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
652 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
653 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
654 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
655 	{ }
656 };
657 
658 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
659 	.name = "gcc_qupv3_wrap1_s0_clk_src",
660 	.parent_data = gcc_parent_data_0,
661 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
662 	.flags = CLK_SET_RATE_PARENT,
663 	.ops = &clk_rcg2_shared_no_init_park_ops,
664 };
665 
666 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
667 	.cmd_rcgr = 0x18014,
668 	.mnd_width = 16,
669 	.hid_width = 5,
670 	.parent_map = gcc_parent_map_0,
671 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
672 	.hw_clk_ctrl = true,
673 	.clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
674 };
675 
676 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
677 	.name = "gcc_qupv3_wrap1_s1_clk_src",
678 	.parent_data = gcc_parent_data_0,
679 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
680 	.flags = CLK_SET_RATE_PARENT,
681 	.ops = &clk_rcg2_shared_no_init_park_ops,
682 };
683 
684 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
685 	.cmd_rcgr = 0x18150,
686 	.mnd_width = 16,
687 	.hid_width = 5,
688 	.parent_map = gcc_parent_map_0,
689 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
690 	.hw_clk_ctrl = true,
691 	.clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
692 };
693 
694 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
695 	.name = "gcc_qupv3_wrap1_s3_clk_src",
696 	.parent_data = gcc_parent_data_0,
697 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
698 	.flags = CLK_SET_RATE_PARENT,
699 	.ops = &clk_rcg2_shared_no_init_park_ops,
700 };
701 
702 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
703 	.cmd_rcgr = 0x182a0,
704 	.mnd_width = 16,
705 	.hid_width = 5,
706 	.parent_map = gcc_parent_map_0,
707 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
708 	.hw_clk_ctrl = true,
709 	.clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
710 };
711 
712 static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s4_clk_src[] = {
713 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
714 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
715 	F(19200000, P_BI_TCXO, 1, 0, 0),
716 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
717 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
718 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
719 	F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),
720 	F(60000000, P_GCC_GPLL0_OUT_EVEN, 5, 0, 0),
721 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
722 	F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
723 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
724 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
725 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
726 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
727 	F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),
728 	F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),
729 	F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),
730 	F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
731 	{ }
732 };
733 
734 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
735 	.name = "gcc_qupv3_wrap1_s4_clk_src",
736 	.parent_data = gcc_parent_data_0,
737 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
738 	.flags = CLK_SET_RATE_PARENT,
739 	.ops = &clk_rcg2_shared_no_init_park_ops,
740 };
741 
742 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
743 	.cmd_rcgr = 0x183dc,
744 	.mnd_width = 16,
745 	.hid_width = 5,
746 	.parent_map = gcc_parent_map_0,
747 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
748 	.hw_clk_ctrl = true,
749 	.clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
750 };
751 
752 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
753 	.name = "gcc_qupv3_wrap1_s5_clk_src",
754 	.parent_data = gcc_parent_data_0,
755 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
756 	.flags = CLK_SET_RATE_PARENT,
757 	.ops = &clk_rcg2_shared_no_init_park_ops,
758 };
759 
760 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
761 	.cmd_rcgr = 0x18518,
762 	.mnd_width = 16,
763 	.hid_width = 5,
764 	.parent_map = gcc_parent_map_0,
765 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
766 	.hw_clk_ctrl = true,
767 	.clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
768 };
769 
770 static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {
771 	.name = "gcc_qupv3_wrap1_s6_clk_src",
772 	.parent_data = gcc_parent_data_0,
773 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
774 	.flags = CLK_SET_RATE_PARENT,
775 	.ops = &clk_rcg2_shared_no_init_park_ops,
776 };
777 
778 static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
779 	.cmd_rcgr = 0x18654,
780 	.mnd_width = 16,
781 	.hid_width = 5,
782 	.parent_map = gcc_parent_map_0,
783 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
784 	.hw_clk_ctrl = true,
785 	.clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,
786 };
787 
788 static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = {
789 	.name = "gcc_qupv3_wrap1_s7_clk_src",
790 	.parent_data = gcc_parent_data_0,
791 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
792 	.flags = CLK_SET_RATE_PARENT,
793 	.ops = &clk_rcg2_shared_no_init_park_ops,
794 };
795 
796 static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = {
797 	.cmd_rcgr = 0x18790,
798 	.mnd_width = 16,
799 	.hid_width = 5,
800 	.parent_map = gcc_parent_map_0,
801 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
802 	.hw_clk_ctrl = true,
803 	.clkr.hw.init = &gcc_qupv3_wrap1_s7_clk_src_init,
804 };
805 
806 static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {
807 	.name = "gcc_qupv3_wrap2_s0_clk_src",
808 	.parent_data = gcc_parent_data_1,
809 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
810 	.flags = CLK_SET_RATE_PARENT,
811 	.ops = &clk_rcg2_shared_no_init_park_ops,
812 };
813 
814 static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
815 	.cmd_rcgr = 0x1e01c,
816 	.mnd_width = 16,
817 	.hid_width = 5,
818 	.parent_map = gcc_parent_map_1,
819 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
820 	.hw_clk_ctrl = true,
821 	.clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,
822 };
823 
824 static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {
825 	.name = "gcc_qupv3_wrap2_s1_clk_src",
826 	.parent_data = gcc_parent_data_1,
827 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
828 	.flags = CLK_SET_RATE_PARENT,
829 	.ops = &clk_rcg2_shared_no_init_park_ops,
830 };
831 
832 static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
833 	.cmd_rcgr = 0x1e160,
834 	.mnd_width = 16,
835 	.hid_width = 5,
836 	.parent_map = gcc_parent_map_1,
837 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
838 	.hw_clk_ctrl = true,
839 	.clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,
840 };
841 
842 static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {
843 	.name = "gcc_qupv3_wrap2_s2_clk_src",
844 	.parent_data = gcc_parent_data_0,
845 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
846 	.flags = CLK_SET_RATE_PARENT,
847 	.ops = &clk_rcg2_shared_no_init_park_ops,
848 };
849 
850 static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
851 	.cmd_rcgr = 0x1e29c,
852 	.mnd_width = 16,
853 	.hid_width = 5,
854 	.parent_map = gcc_parent_map_0,
855 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
856 	.hw_clk_ctrl = true,
857 	.clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,
858 };
859 
860 static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {
861 	.name = "gcc_qupv3_wrap2_s3_clk_src",
862 	.parent_data = gcc_parent_data_0,
863 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
864 	.flags = CLK_SET_RATE_PARENT,
865 	.ops = &clk_rcg2_shared_no_init_park_ops,
866 };
867 
868 static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
869 	.cmd_rcgr = 0x1e3d8,
870 	.mnd_width = 16,
871 	.hid_width = 5,
872 	.parent_map = gcc_parent_map_0,
873 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
874 	.hw_clk_ctrl = true,
875 	.clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,
876 };
877 
878 static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {
879 	.name = "gcc_qupv3_wrap2_s4_clk_src",
880 	.parent_data = gcc_parent_data_0,
881 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
882 	.flags = CLK_SET_RATE_PARENT,
883 	.ops = &clk_rcg2_shared_no_init_park_ops,
884 };
885 
886 static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
887 	.cmd_rcgr = 0x1e514,
888 	.mnd_width = 16,
889 	.hid_width = 5,
890 	.parent_map = gcc_parent_map_0,
891 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
892 	.hw_clk_ctrl = true,
893 	.clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,
894 };
895 
896 static const struct freq_tbl ftbl_gcc_qupv3_wrap3_qspi_ref_clk_src[] = {
897 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
898 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
899 	F(19200000, P_BI_TCXO, 1, 0, 0),
900 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
901 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
902 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
903 	F(51200000, P_GCC_GPLL0_OUT_EVEN, 1, 64, 375),
904 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
905 	F(66666667, P_GCC_GPLL0_OUT_MAIN, 9, 0, 0),
906 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
907 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
908 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
909 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
910 	F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),
911 	F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),
912 	F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),
913 	F(120000000, P_GCC_GPLL0_OUT_EVEN, 2.5, 0, 0),
914 	F(150000000, P_GCC_GPLL0_OUT_EVEN, 2, 0, 0),
915 	F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
916 	{ }
917 };
918 
919 static struct clk_init_data gcc_qupv3_wrap3_qspi_ref_clk_src_init = {
920 	.name = "gcc_qupv3_wrap3_qspi_ref_clk_src",
921 	.parent_data = gcc_parent_data_1,
922 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
923 	.flags = CLK_SET_RATE_PARENT,
924 	.ops = &clk_rcg2_shared_no_init_park_ops,
925 };
926 
927 static struct clk_rcg2 gcc_qupv3_wrap3_qspi_ref_clk_src = {
928 	.cmd_rcgr = 0xa8650,
929 	.mnd_width = 16,
930 	.hid_width = 5,
931 	.parent_map = gcc_parent_map_1,
932 	.freq_tbl = ftbl_gcc_qupv3_wrap3_qspi_ref_clk_src,
933 	.hw_clk_ctrl = true,
934 	.clkr.hw.init = &gcc_qupv3_wrap3_qspi_ref_clk_src_init,
935 };
936 
937 static struct clk_init_data gcc_qupv3_wrap3_s0_clk_src_init = {
938 	.name = "gcc_qupv3_wrap3_s0_clk_src",
939 	.parent_data = gcc_parent_data_0,
940 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
941 	.flags = CLK_SET_RATE_PARENT,
942 	.ops = &clk_rcg2_shared_no_init_park_ops,
943 };
944 
945 static struct clk_rcg2 gcc_qupv3_wrap3_s0_clk_src = {
946 	.cmd_rcgr = 0xa8014,
947 	.mnd_width = 16,
948 	.hid_width = 5,
949 	.parent_map = gcc_parent_map_0,
950 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
951 	.hw_clk_ctrl = true,
952 	.clkr.hw.init = &gcc_qupv3_wrap3_s0_clk_src_init,
953 };
954 
955 static struct clk_init_data gcc_qupv3_wrap3_s2_clk_src_init = {
956 	.name = "gcc_qupv3_wrap3_s2_clk_src",
957 	.parent_data = gcc_parent_data_0,
958 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
959 	.flags = CLK_SET_RATE_PARENT,
960 	.ops = &clk_rcg2_shared_no_init_park_ops,
961 };
962 
963 static struct clk_rcg2 gcc_qupv3_wrap3_s2_clk_src = {
964 	.cmd_rcgr = 0xa8168,
965 	.mnd_width = 16,
966 	.hid_width = 5,
967 	.parent_map = gcc_parent_map_0,
968 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
969 	.hw_clk_ctrl = true,
970 	.clkr.hw.init = &gcc_qupv3_wrap3_s2_clk_src_init,
971 };
972 
973 static struct clk_init_data gcc_qupv3_wrap3_s3_clk_src_init = {
974 	.name = "gcc_qupv3_wrap3_s3_clk_src",
975 	.parent_data = gcc_parent_data_0,
976 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
977 	.flags = CLK_SET_RATE_PARENT,
978 	.ops = &clk_rcg2_shared_no_init_park_ops,
979 };
980 
981 static struct clk_rcg2 gcc_qupv3_wrap3_s3_clk_src = {
982 	.cmd_rcgr = 0xa82a4,
983 	.mnd_width = 16,
984 	.hid_width = 5,
985 	.parent_map = gcc_parent_map_0,
986 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
987 	.hw_clk_ctrl = true,
988 	.clkr.hw.init = &gcc_qupv3_wrap3_s3_clk_src_init,
989 };
990 
991 static struct clk_init_data gcc_qupv3_wrap3_s4_clk_src_init = {
992 	.name = "gcc_qupv3_wrap3_s4_clk_src",
993 	.parent_data = gcc_parent_data_0,
994 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
995 	.flags = CLK_SET_RATE_PARENT,
996 	.ops = &clk_rcg2_shared_no_init_park_ops,
997 };
998 
999 static struct clk_rcg2 gcc_qupv3_wrap3_s4_clk_src = {
1000 	.cmd_rcgr = 0xa83e0,
1001 	.mnd_width = 16,
1002 	.hid_width = 5,
1003 	.parent_map = gcc_parent_map_0,
1004 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
1005 	.hw_clk_ctrl = true,
1006 	.clkr.hw.init = &gcc_qupv3_wrap3_s4_clk_src_init,
1007 };
1008 
1009 static struct clk_init_data gcc_qupv3_wrap3_s5_clk_src_init = {
1010 	.name = "gcc_qupv3_wrap3_s5_clk_src",
1011 	.parent_data = gcc_parent_data_0,
1012 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1013 	.flags = CLK_SET_RATE_PARENT,
1014 	.ops = &clk_rcg2_shared_no_init_park_ops,
1015 };
1016 
1017 static struct clk_rcg2 gcc_qupv3_wrap3_s5_clk_src = {
1018 	.cmd_rcgr = 0xa851c,
1019 	.mnd_width = 16,
1020 	.hid_width = 5,
1021 	.parent_map = gcc_parent_map_0,
1022 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
1023 	.hw_clk_ctrl = true,
1024 	.clkr.hw.init = &gcc_qupv3_wrap3_s5_clk_src_init,
1025 };
1026 
1027 static struct clk_init_data gcc_qupv3_wrap4_s0_clk_src_init = {
1028 	.name = "gcc_qupv3_wrap4_s0_clk_src",
1029 	.parent_data = gcc_parent_data_1,
1030 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1031 	.flags = CLK_SET_RATE_PARENT,
1032 	.ops = &clk_rcg2_shared_no_init_park_ops,
1033 };
1034 
1035 static struct clk_rcg2 gcc_qupv3_wrap4_s0_clk_src = {
1036 	.cmd_rcgr = 0xa9014,
1037 	.mnd_width = 16,
1038 	.hid_width = 5,
1039 	.parent_map = gcc_parent_map_1,
1040 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
1041 	.hw_clk_ctrl = true,
1042 	.clkr.hw.init = &gcc_qupv3_wrap4_s0_clk_src_init,
1043 };
1044 
1045 static struct clk_init_data gcc_qupv3_wrap4_s1_clk_src_init = {
1046 	.name = "gcc_qupv3_wrap4_s1_clk_src",
1047 	.parent_data = gcc_parent_data_1,
1048 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1049 	.flags = CLK_SET_RATE_PARENT,
1050 	.ops = &clk_rcg2_shared_no_init_park_ops,
1051 };
1052 
1053 static struct clk_rcg2 gcc_qupv3_wrap4_s1_clk_src = {
1054 	.cmd_rcgr = 0xa9150,
1055 	.mnd_width = 16,
1056 	.hid_width = 5,
1057 	.parent_map = gcc_parent_map_1,
1058 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
1059 	.hw_clk_ctrl = true,
1060 	.clkr.hw.init = &gcc_qupv3_wrap4_s1_clk_src_init,
1061 };
1062 
1063 static struct clk_init_data gcc_qupv3_wrap4_s2_clk_src_init = {
1064 	.name = "gcc_qupv3_wrap4_s2_clk_src",
1065 	.parent_data = gcc_parent_data_1,
1066 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1067 	.flags = CLK_SET_RATE_PARENT,
1068 	.ops = &clk_rcg2_shared_no_init_park_ops,
1069 };
1070 
1071 static struct clk_rcg2 gcc_qupv3_wrap4_s2_clk_src = {
1072 	.cmd_rcgr = 0xa928c,
1073 	.mnd_width = 16,
1074 	.hid_width = 5,
1075 	.parent_map = gcc_parent_map_1,
1076 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s4_clk_src,
1077 	.hw_clk_ctrl = true,
1078 	.clkr.hw.init = &gcc_qupv3_wrap4_s2_clk_src_init,
1079 };
1080 
1081 static struct clk_init_data gcc_qupv3_wrap4_s3_clk_src_init = {
1082 	.name = "gcc_qupv3_wrap4_s3_clk_src",
1083 	.parent_data = gcc_parent_data_1,
1084 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1085 	.flags = CLK_SET_RATE_PARENT,
1086 	.ops = &clk_rcg2_shared_no_init_park_ops,
1087 };
1088 
1089 static struct clk_rcg2 gcc_qupv3_wrap4_s3_clk_src = {
1090 	.cmd_rcgr = 0xa93c8,
1091 	.mnd_width = 16,
1092 	.hid_width = 5,
1093 	.parent_map = gcc_parent_map_1,
1094 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
1095 	.hw_clk_ctrl = true,
1096 	.clkr.hw.init = &gcc_qupv3_wrap4_s3_clk_src_init,
1097 };
1098 
1099 static struct clk_init_data gcc_qupv3_wrap4_s4_clk_src_init = {
1100 	.name = "gcc_qupv3_wrap4_s4_clk_src",
1101 	.parent_data = gcc_parent_data_1,
1102 	.num_parents = ARRAY_SIZE(gcc_parent_data_1),
1103 	.flags = CLK_SET_RATE_PARENT,
1104 	.ops = &clk_rcg2_shared_no_init_park_ops,
1105 };
1106 
1107 static struct clk_rcg2 gcc_qupv3_wrap4_s4_clk_src = {
1108 	.cmd_rcgr = 0xa9504,
1109 	.mnd_width = 16,
1110 	.hid_width = 5,
1111 	.parent_map = gcc_parent_map_1,
1112 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
1113 	.hw_clk_ctrl = true,
1114 	.clkr.hw.init = &gcc_qupv3_wrap4_s4_clk_src_init,
1115 };
1116 
1117 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
1118 	F(400000, P_BI_TCXO, 12, 1, 4),
1119 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1120 	F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0),
1121 	F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
1122 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1123 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1124 	F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),
1125 	{ }
1126 };
1127 
1128 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
1129 	.cmd_rcgr = 0x1401c,
1130 	.mnd_width = 8,
1131 	.hid_width = 5,
1132 	.parent_map = gcc_parent_map_8,
1133 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
1134 	.hw_clk_ctrl = true,
1135 	.clkr.hw.init = &(const struct clk_init_data) {
1136 		.name = "gcc_sdcc2_apps_clk_src",
1137 		.parent_data = gcc_parent_data_8,
1138 		.num_parents = ARRAY_SIZE(gcc_parent_data_8),
1139 		.flags = CLK_SET_RATE_PARENT,
1140 		.ops = &clk_rcg2_shared_floor_ops,
1141 	},
1142 };
1143 
1144 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
1145 	F(400000, P_BI_TCXO, 12, 1, 4),
1146 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1147 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1148 	{ }
1149 };
1150 
1151 static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
1152 	.cmd_rcgr = 0x1601c,
1153 	.mnd_width = 8,
1154 	.hid_width = 5,
1155 	.parent_map = gcc_parent_map_0,
1156 	.freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
1157 	.hw_clk_ctrl = true,
1158 	.clkr.hw.init = &(const struct clk_init_data) {
1159 		.name = "gcc_sdcc4_apps_clk_src",
1160 		.parent_data = gcc_parent_data_0,
1161 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1162 		.flags = CLK_SET_RATE_PARENT,
1163 		.ops = &clk_rcg2_shared_floor_ops,
1164 	},
1165 };
1166 
1167 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
1168 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1169 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1170 	F(225000000, P_GCC_GPLL5_OUT_MAIN, 4, 0, 0),
1171 	F(450000000, P_GCC_GPLL5_OUT_MAIN, 2, 0, 0),
1172 	{ }
1173 };
1174 
1175 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
1176 	.cmd_rcgr = 0x77034,
1177 	.mnd_width = 8,
1178 	.hid_width = 5,
1179 	.parent_map = gcc_parent_map_5,
1180 	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
1181 	.hw_clk_ctrl = true,
1182 	.clkr.hw.init = &(const struct clk_init_data) {
1183 		.name = "gcc_ufs_phy_axi_clk_src",
1184 		.parent_data = gcc_parent_data_5,
1185 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
1186 		.flags = CLK_SET_RATE_PARENT,
1187 		.ops = &clk_rcg2_shared_ops,
1188 	},
1189 };
1190 
1191 static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
1192 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1193 	F(225000000, P_GCC_GPLL5_OUT_MAIN, 4, 0, 0),
1194 	F(450000000, P_GCC_GPLL5_OUT_MAIN, 2, 0, 0),
1195 	{ }
1196 };
1197 
1198 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
1199 	.cmd_rcgr = 0x7708c,
1200 	.mnd_width = 0,
1201 	.hid_width = 5,
1202 	.parent_map = gcc_parent_map_5,
1203 	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
1204 	.hw_clk_ctrl = true,
1205 	.clkr.hw.init = &(const struct clk_init_data) {
1206 		.name = "gcc_ufs_phy_ice_core_clk_src",
1207 		.parent_data = gcc_parent_data_5,
1208 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
1209 		.flags = CLK_SET_RATE_PARENT,
1210 		.ops = &clk_rcg2_shared_ops,
1211 	},
1212 };
1213 
1214 static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {
1215 	F(9600000, P_BI_TCXO, 2, 0, 0),
1216 	F(19200000, P_BI_TCXO, 1, 0, 0),
1217 	{ }
1218 };
1219 
1220 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
1221 	.cmd_rcgr = 0x770c0,
1222 	.mnd_width = 0,
1223 	.hid_width = 5,
1224 	.parent_map = gcc_parent_map_3,
1225 	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,
1226 	.hw_clk_ctrl = true,
1227 	.clkr.hw.init = &(const struct clk_init_data) {
1228 		.name = "gcc_ufs_phy_phy_aux_clk_src",
1229 		.parent_data = gcc_parent_data_3,
1230 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
1231 		.flags = CLK_SET_RATE_PARENT,
1232 		.ops = &clk_rcg2_shared_ops,
1233 	},
1234 };
1235 
1236 static const struct freq_tbl ftbl_gcc_ufs_phy_unipro_5_core_clk_src[] = {
1237 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1238 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1239 	F(201500000, P_GCC_GPLL4_OUT_MAIN, 4, 0, 0),
1240 	F(403000000, P_GCC_GPLL4_OUT_MAIN, 2, 0, 0),
1241 	{ }
1242 };
1243 
1244 static struct clk_rcg2 gcc_ufs_phy_unipro_5_core_clk_src = {
1245 	.cmd_rcgr = 0x770a4,
1246 	.mnd_width = 0,
1247 	.hid_width = 5,
1248 	.parent_map = gcc_parent_map_5,
1249 	.freq_tbl = ftbl_gcc_ufs_phy_unipro_5_core_clk_src,
1250 	.hw_clk_ctrl = true,
1251 	.clkr.hw.init = &(const struct clk_init_data) {
1252 		.name = "gcc_ufs_phy_unipro_5_core_clk_src",
1253 		.parent_data = gcc_parent_data_5,
1254 		.num_parents = ARRAY_SIZE(gcc_parent_data_5),
1255 		.flags = CLK_SET_RATE_PARENT,
1256 		.ops = &clk_rcg2_shared_ops,
1257 	},
1258 };
1259 
1260 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
1261 	F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0),
1262 	F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),
1263 	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
1264 	F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
1265 	{ }
1266 };
1267 
1268 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1269 	.cmd_rcgr = 0x39034,
1270 	.mnd_width = 8,
1271 	.hid_width = 5,
1272 	.parent_map = gcc_parent_map_0,
1273 	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1274 	.hw_clk_ctrl = true,
1275 	.clkr.hw.init = &(const struct clk_init_data) {
1276 		.name = "gcc_usb30_prim_master_clk_src",
1277 		.parent_data = gcc_parent_data_0,
1278 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1279 		.flags = CLK_SET_RATE_PARENT,
1280 		.ops = &clk_rcg2_shared_no_init_park_ops,
1281 	},
1282 };
1283 
1284 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1285 	.cmd_rcgr = 0x3904c,
1286 	.mnd_width = 0,
1287 	.hid_width = 5,
1288 	.parent_map = gcc_parent_map_0,
1289 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1290 	.hw_clk_ctrl = true,
1291 	.clkr.hw.init = &(const struct clk_init_data) {
1292 		.name = "gcc_usb30_prim_mock_utmi_clk_src",
1293 		.parent_data = gcc_parent_data_0,
1294 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1295 		.flags = CLK_SET_RATE_PARENT,
1296 		.ops = &clk_rcg2_shared_no_init_park_ops,
1297 	},
1298 };
1299 
1300 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1301 	.cmd_rcgr = 0x39078,
1302 	.mnd_width = 0,
1303 	.hid_width = 5,
1304 	.parent_map = gcc_parent_map_4,
1305 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1306 	.hw_clk_ctrl = true,
1307 	.clkr.hw.init = &(const struct clk_init_data) {
1308 		.name = "gcc_usb3_prim_phy_aux_clk_src",
1309 		.parent_data = gcc_parent_data_4,
1310 		.num_parents = ARRAY_SIZE(gcc_parent_data_4),
1311 		.flags = CLK_SET_RATE_PARENT,
1312 		.ops = &clk_rcg2_shared_no_init_park_ops,
1313 	},
1314 };
1315 
1316 static struct clk_regmap_div gcc_pcie_0_pipe_div_clk_src = {
1317 	.reg = 0x6b0a4,
1318 	.shift = 0,
1319 	.width = 4,
1320 	.clkr.hw.init = &(const struct clk_init_data) {
1321 		.name = "gcc_pcie_0_pipe_div_clk_src",
1322 		.parent_hws = (const struct clk_hw*[]) {
1323 			&gcc_pcie_0_pipe_clk_src.clkr.hw,
1324 		},
1325 		.num_parents = 1,
1326 		.flags = CLK_SET_RATE_PARENT,
1327 		.ops = &clk_regmap_div_ro_ops,
1328 	},
1329 };
1330 
1331 static struct clk_regmap_div gcc_pcie_1_pipe_div_clk_src = {
1332 	.reg = 0x670a0,
1333 	.shift = 0,
1334 	.width = 4,
1335 	.clkr.hw.init = &(const struct clk_init_data) {
1336 		.name = "gcc_pcie_1_pipe_div_clk_src",
1337 		.parent_hws = (const struct clk_hw*[]) {
1338 			&gcc_pcie_1_pipe_clk_src.clkr.hw,
1339 		},
1340 		.num_parents = 1,
1341 		.flags = CLK_SET_RATE_PARENT,
1342 		.ops = &clk_regmap_div_ro_ops,
1343 	},
1344 };
1345 
1346 static struct clk_regmap_div gcc_qupv3_wrap1_s2_clk_src = {
1347 	.reg = 0x1828c,
1348 	.shift = 0,
1349 	.width = 4,
1350 	.clkr.hw.init = &(const struct clk_init_data) {
1351 		.name = "gcc_qupv3_wrap1_s2_clk_src",
1352 		.parent_hws = (const struct clk_hw*[]) {
1353 			&gcc_qupv3_wrap1_qspi_ref_clk_src.clkr.hw,
1354 		},
1355 		.num_parents = 1,
1356 		.flags = CLK_SET_RATE_PARENT,
1357 		.ops = &clk_regmap_div_ro_ops,
1358 	},
1359 };
1360 
1361 static struct clk_regmap_div gcc_qupv3_wrap3_s1_clk_src = {
1362 	.reg = 0xa8154,
1363 	.shift = 0,
1364 	.width = 4,
1365 	.clkr.hw.init = &(const struct clk_init_data) {
1366 		.name = "gcc_qupv3_wrap3_s1_clk_src",
1367 		.parent_hws = (const struct clk_hw*[]) {
1368 			&gcc_qupv3_wrap3_qspi_ref_clk_src.clkr.hw,
1369 		},
1370 		.num_parents = 1,
1371 		.flags = CLK_SET_RATE_PARENT,
1372 		.ops = &clk_regmap_div_ro_ops,
1373 	},
1374 };
1375 
1376 static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
1377 	.reg = 0x39064,
1378 	.shift = 0,
1379 	.width = 4,
1380 	.clkr.hw.init = &(const struct clk_init_data) {
1381 		.name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1382 		.parent_hws = (const struct clk_hw*[]) {
1383 			&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
1384 		},
1385 		.num_parents = 1,
1386 		.flags = CLK_SET_RATE_PARENT,
1387 		.ops = &clk_regmap_div_ro_ops,
1388 	},
1389 };
1390 
1391 static struct clk_branch gcc_aggre_noc_pcie_axi_clk = {
1392 	.halt_reg = 0x10068,
1393 	.halt_check = BRANCH_HALT_SKIP,
1394 	.hwcg_reg = 0x10068,
1395 	.hwcg_bit = 1,
1396 	.clkr = {
1397 		.enable_reg = 0x52000,
1398 		.enable_mask = BIT(24),
1399 		.hw.init = &(const struct clk_init_data) {
1400 			.name = "gcc_aggre_noc_pcie_axi_clk",
1401 			.ops = &clk_branch2_ops,
1402 		},
1403 	},
1404 };
1405 
1406 static struct clk_branch gcc_aggre_stardustnoc_usb3_prim_axi_clk = {
1407 	.halt_reg = 0x39094,
1408 	.halt_check = BRANCH_HALT_VOTED,
1409 	.hwcg_reg = 0x39094,
1410 	.hwcg_bit = 1,
1411 	.clkr = {
1412 		.enable_reg = 0x39094,
1413 		.enable_mask = BIT(0),
1414 		.hw.init = &(const struct clk_init_data) {
1415 			.name = "gcc_aggre_stardustnoc_usb3_prim_axi_clk",
1416 			.parent_hws = (const struct clk_hw*[]) {
1417 				&gcc_usb30_prim_master_clk_src.clkr.hw,
1418 			},
1419 			.num_parents = 1,
1420 			.flags = CLK_SET_RATE_PARENT,
1421 			.ops = &clk_branch2_ops,
1422 		},
1423 	},
1424 };
1425 
1426 static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
1427 	.halt_reg = 0x770f0,
1428 	.halt_check = BRANCH_HALT_VOTED,
1429 	.hwcg_reg = 0x770f0,
1430 	.hwcg_bit = 1,
1431 	.clkr = {
1432 		.enable_reg = 0x770f0,
1433 		.enable_mask = BIT(0),
1434 		.hw.init = &(const struct clk_init_data) {
1435 			.name = "gcc_aggre_ufs_phy_axi_clk",
1436 			.parent_hws = (const struct clk_hw*[]) {
1437 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
1438 			},
1439 			.num_parents = 1,
1440 			.flags = CLK_SET_RATE_PARENT,
1441 			.ops = &clk_branch2_ops,
1442 		},
1443 	},
1444 };
1445 
1446 static struct clk_branch gcc_boot_rom_ahb_clk = {
1447 	.halt_reg = 0x38004,
1448 	.halt_check = BRANCH_HALT_VOTED,
1449 	.hwcg_reg = 0x38004,
1450 	.hwcg_bit = 1,
1451 	.clkr = {
1452 		.enable_reg = 0x52010,
1453 		.enable_mask = BIT(18),
1454 		.hw.init = &(const struct clk_init_data) {
1455 			.name = "gcc_boot_rom_ahb_clk",
1456 			.ops = &clk_branch2_ops,
1457 		},
1458 	},
1459 };
1460 
1461 static struct clk_branch gcc_camera_hf_axi_clk = {
1462 	.halt_reg = 0x26014,
1463 	.halt_check = BRANCH_HALT_SKIP,
1464 	.hwcg_reg = 0x26014,
1465 	.hwcg_bit = 1,
1466 	.clkr = {
1467 		.enable_reg = 0x26014,
1468 		.enable_mask = BIT(0),
1469 		.hw.init = &(const struct clk_init_data) {
1470 			.name = "gcc_camera_hf_axi_clk",
1471 			.ops = &clk_branch2_ops,
1472 		},
1473 	},
1474 };
1475 
1476 static struct clk_branch gcc_camera_sf_axi_clk = {
1477 	.halt_reg = 0x2601c,
1478 	.halt_check = BRANCH_HALT_SKIP,
1479 	.hwcg_reg = 0x2601c,
1480 	.hwcg_bit = 1,
1481 	.clkr = {
1482 		.enable_reg = 0x2601c,
1483 		.enable_mask = BIT(0),
1484 		.hw.init = &(const struct clk_init_data) {
1485 			.name = "gcc_camera_sf_axi_clk",
1486 			.ops = &clk_branch2_ops,
1487 		},
1488 	},
1489 };
1490 
1491 static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk = {
1492 	.halt_reg = 0x10050,
1493 	.halt_check = BRANCH_HALT_SKIP,
1494 	.hwcg_reg = 0x10050,
1495 	.hwcg_bit = 1,
1496 	.clkr = {
1497 		.enable_reg = 0x52000,
1498 		.enable_mask = BIT(20),
1499 		.hw.init = &(const struct clk_init_data) {
1500 			.name = "gcc_cfg_noc_pcie_anoc_ahb_clk",
1501 			.ops = &clk_branch2_ops,
1502 		},
1503 	},
1504 };
1505 
1506 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
1507 	.halt_reg = 0x39090,
1508 	.halt_check = BRANCH_HALT_VOTED,
1509 	.hwcg_reg = 0x39090,
1510 	.hwcg_bit = 1,
1511 	.clkr = {
1512 		.enable_reg = 0x39090,
1513 		.enable_mask = BIT(0),
1514 		.hw.init = &(const struct clk_init_data) {
1515 			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
1516 			.parent_hws = (const struct clk_hw*[]) {
1517 				&gcc_usb30_prim_master_clk_src.clkr.hw,
1518 			},
1519 			.num_parents = 1,
1520 			.flags = CLK_SET_RATE_PARENT,
1521 			.ops = &clk_branch2_ops,
1522 		},
1523 	},
1524 };
1525 
1526 static struct clk_branch gcc_cnoc_pcie_sf_axi_clk = {
1527 	.halt_reg = 0x10058,
1528 	.halt_check = BRANCH_HALT_VOTED,
1529 	.clkr = {
1530 		.enable_reg = 0x52008,
1531 		.enable_mask = BIT(6),
1532 		.hw.init = &(const struct clk_init_data) {
1533 			.name = "gcc_cnoc_pcie_sf_axi_clk",
1534 			.ops = &clk_branch2_ops,
1535 		},
1536 	},
1537 };
1538 
1539 static struct clk_branch gcc_eva_axi0_clk = {
1540 	.halt_reg = 0x9f008,
1541 	.halt_check = BRANCH_HALT_SKIP,
1542 	.hwcg_reg = 0x9f008,
1543 	.hwcg_bit = 1,
1544 	.clkr = {
1545 		.enable_reg = 0x9f008,
1546 		.enable_mask = BIT(0),
1547 		.hw.init = &(const struct clk_init_data) {
1548 			.name = "gcc_eva_axi0_clk",
1549 			.ops = &clk_branch2_ops,
1550 		},
1551 	},
1552 };
1553 
1554 static struct clk_branch gcc_eva_axi0c_clk = {
1555 	.halt_reg = 0x9f010,
1556 	.halt_check = BRANCH_HALT_SKIP,
1557 	.hwcg_reg = 0x9f010,
1558 	.hwcg_bit = 1,
1559 	.clkr = {
1560 		.enable_reg = 0x9f010,
1561 		.enable_mask = BIT(0),
1562 		.hw.init = &(const struct clk_init_data) {
1563 			.name = "gcc_eva_axi0c_clk",
1564 			.ops = &clk_branch2_ops,
1565 		},
1566 	},
1567 };
1568 
1569 static struct clk_branch gcc_gp1_clk = {
1570 	.halt_reg = 0x64000,
1571 	.halt_check = BRANCH_HALT,
1572 	.clkr = {
1573 		.enable_reg = 0x64000,
1574 		.enable_mask = BIT(0),
1575 		.hw.init = &(const struct clk_init_data) {
1576 			.name = "gcc_gp1_clk",
1577 			.parent_hws = (const struct clk_hw*[]) {
1578 				&gcc_gp1_clk_src.clkr.hw,
1579 			},
1580 			.num_parents = 1,
1581 			.flags = CLK_SET_RATE_PARENT,
1582 			.ops = &clk_branch2_ops,
1583 		},
1584 	},
1585 };
1586 
1587 static struct clk_branch gcc_gp2_clk = {
1588 	.halt_reg = 0x65000,
1589 	.halt_check = BRANCH_HALT,
1590 	.clkr = {
1591 		.enable_reg = 0x65000,
1592 		.enable_mask = BIT(0),
1593 		.hw.init = &(const struct clk_init_data) {
1594 			.name = "gcc_gp2_clk",
1595 			.parent_hws = (const struct clk_hw*[]) {
1596 				&gcc_gp2_clk_src.clkr.hw,
1597 			},
1598 			.num_parents = 1,
1599 			.flags = CLK_SET_RATE_PARENT,
1600 			.ops = &clk_branch2_ops,
1601 		},
1602 	},
1603 };
1604 
1605 static struct clk_branch gcc_gp3_clk = {
1606 	.halt_reg = 0x66000,
1607 	.halt_check = BRANCH_HALT,
1608 	.clkr = {
1609 		.enable_reg = 0x66000,
1610 		.enable_mask = BIT(0),
1611 		.hw.init = &(const struct clk_init_data) {
1612 			.name = "gcc_gp3_clk",
1613 			.parent_hws = (const struct clk_hw*[]) {
1614 				&gcc_gp3_clk_src.clkr.hw,
1615 			},
1616 			.num_parents = 1,
1617 			.flags = CLK_SET_RATE_PARENT,
1618 			.ops = &clk_branch2_ops,
1619 		},
1620 	},
1621 };
1622 
1623 static struct clk_branch gcc_gpu_gemnoc_gfx_clk = {
1624 	.halt_reg = 0x71010,
1625 	.halt_check = BRANCH_HALT_VOTED,
1626 	.hwcg_reg = 0x71010,
1627 	.hwcg_bit = 1,
1628 	.clkr = {
1629 		.enable_reg = 0x71010,
1630 		.enable_mask = BIT(0),
1631 		.hw.init = &(const struct clk_init_data) {
1632 			.name = "gcc_gpu_gemnoc_gfx_clk",
1633 			.ops = &clk_branch2_ops,
1634 		},
1635 	},
1636 };
1637 
1638 static struct clk_branch gcc_gpu_gpll0_clk_src = {
1639 	.halt_check = BRANCH_HALT_DELAY,
1640 	.clkr = {
1641 		.enable_reg = 0x52000,
1642 		.enable_mask = BIT(15),
1643 		.hw.init = &(const struct clk_init_data) {
1644 			.name = "gcc_gpu_gpll0_clk_src",
1645 			.parent_hws = (const struct clk_hw*[]) {
1646 				&gcc_gpll0.clkr.hw,
1647 			},
1648 			.num_parents = 1,
1649 			.flags = CLK_SET_RATE_PARENT,
1650 			.ops = &clk_branch2_ops,
1651 		},
1652 	},
1653 };
1654 
1655 static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
1656 	.halt_check = BRANCH_HALT_DELAY,
1657 	.clkr = {
1658 		.enable_reg = 0x52000,
1659 		.enable_mask = BIT(16),
1660 		.hw.init = &(const struct clk_init_data) {
1661 			.name = "gcc_gpu_gpll0_div_clk_src",
1662 			.parent_hws = (const struct clk_hw*[]) {
1663 				&gcc_gpll0_out_even.clkr.hw,
1664 			},
1665 			.num_parents = 1,
1666 			.flags = CLK_SET_RATE_PARENT,
1667 			.ops = &clk_branch2_ops,
1668 		},
1669 	},
1670 };
1671 
1672 static struct clk_branch gcc_gpu_smmu_vote_clk = {
1673 	.halt_reg = 0x7d000,
1674 	.halt_check = BRANCH_HALT_VOTED,
1675 	.clkr = {
1676 		.enable_reg = 0x7d000,
1677 		.enable_mask = BIT(0),
1678 		.hw.init = &(const struct clk_init_data) {
1679 			.name = "gcc_gpu_smmu_vote_clk",
1680 			.ops = &clk_branch2_ops,
1681 		},
1682 	},
1683 };
1684 
1685 static struct clk_branch gcc_mmu_tcu_vote_clk = {
1686 	.halt_reg = 0x7d02c,
1687 	.halt_check = BRANCH_HALT_VOTED,
1688 	.clkr = {
1689 		.enable_reg = 0x7d02c,
1690 		.enable_mask = BIT(0),
1691 		.hw.init = &(const struct clk_init_data) {
1692 			.name = "gcc_mmu_tcu_vote_clk",
1693 			.ops = &clk_branch2_ops,
1694 		},
1695 	},
1696 };
1697 
1698 static struct clk_branch gcc_pcie_0_aux_clk = {
1699 	.halt_reg = 0x6b044,
1700 	.halt_check = BRANCH_HALT_VOTED,
1701 	.hwcg_reg = 0x6b044,
1702 	.hwcg_bit = 1,
1703 	.clkr = {
1704 		.enable_reg = 0x52020,
1705 		.enable_mask = BIT(4),
1706 		.hw.init = &(const struct clk_init_data) {
1707 			.name = "gcc_pcie_0_aux_clk",
1708 			.parent_hws = (const struct clk_hw*[]) {
1709 				&gcc_pcie_0_aux_clk_src.clkr.hw,
1710 			},
1711 			.num_parents = 1,
1712 			.flags = CLK_SET_RATE_PARENT,
1713 			.ops = &clk_branch2_ops,
1714 		},
1715 	},
1716 };
1717 
1718 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1719 	.halt_reg = 0x6b040,
1720 	.halt_check = BRANCH_HALT_VOTED,
1721 	.hwcg_reg = 0x6b040,
1722 	.hwcg_bit = 1,
1723 	.clkr = {
1724 		.enable_reg = 0x52020,
1725 		.enable_mask = BIT(3),
1726 		.hw.init = &(const struct clk_init_data) {
1727 			.name = "gcc_pcie_0_cfg_ahb_clk",
1728 			.ops = &clk_branch2_ops,
1729 		},
1730 	},
1731 };
1732 
1733 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1734 	.halt_reg = 0x6b030,
1735 	.halt_check = BRANCH_HALT_SKIP,
1736 	.hwcg_reg = 0x6b030,
1737 	.hwcg_bit = 1,
1738 	.clkr = {
1739 		.enable_reg = 0x52020,
1740 		.enable_mask = BIT(2),
1741 		.hw.init = &(const struct clk_init_data) {
1742 			.name = "gcc_pcie_0_mstr_axi_clk",
1743 			.ops = &clk_branch2_ops,
1744 		},
1745 	},
1746 };
1747 
1748 static struct clk_branch gcc_pcie_0_phy_aux_clk = {
1749 	.halt_reg = 0x6b054,
1750 	.halt_check = BRANCH_HALT_VOTED,
1751 	.hwcg_reg = 0x6b054,
1752 	.hwcg_bit = 1,
1753 	.clkr = {
1754 		.enable_reg = 0x52020,
1755 		.enable_mask = BIT(5),
1756 		.hw.init = &(const struct clk_init_data) {
1757 			.name = "gcc_pcie_0_phy_aux_clk",
1758 			.parent_hws = (const struct clk_hw*[]) {
1759 				&gcc_pcie_0_phy_aux_clk_src.clkr.hw,
1760 			},
1761 			.num_parents = 1,
1762 			.flags = CLK_SET_RATE_PARENT,
1763 			.ops = &clk_branch2_ops,
1764 		},
1765 	},
1766 };
1767 
1768 static struct clk_branch gcc_pcie_0_phy_rchng_clk = {
1769 	.halt_reg = 0x6b084,
1770 	.halt_check = BRANCH_HALT_VOTED,
1771 	.hwcg_reg = 0x6b084,
1772 	.hwcg_bit = 1,
1773 	.clkr = {
1774 		.enable_reg = 0x52020,
1775 		.enable_mask = BIT(8),
1776 		.hw.init = &(const struct clk_init_data) {
1777 			.name = "gcc_pcie_0_phy_rchng_clk",
1778 			.parent_hws = (const struct clk_hw*[]) {
1779 				&gcc_pcie_0_phy_rchng_clk_src.clkr.hw,
1780 			},
1781 			.num_parents = 1,
1782 			.flags = CLK_SET_RATE_PARENT,
1783 			.ops = &clk_branch2_ops,
1784 		},
1785 	},
1786 };
1787 
1788 static struct clk_branch gcc_pcie_0_pipe_clk = {
1789 	.halt_reg = 0x6b074,
1790 	.halt_check = BRANCH_HALT_SKIP,
1791 	.hwcg_reg = 0x6b074,
1792 	.hwcg_bit = 1,
1793 	.clkr = {
1794 		.enable_reg = 0x52020,
1795 		.enable_mask = BIT(7),
1796 		.hw.init = &(const struct clk_init_data) {
1797 			.name = "gcc_pcie_0_pipe_clk",
1798 			.parent_hws = (const struct clk_hw*[]) {
1799 				&gcc_pcie_0_pipe_clk_src.clkr.hw,
1800 			},
1801 			.num_parents = 1,
1802 			.flags = CLK_SET_RATE_PARENT,
1803 			.ops = &clk_branch2_ops,
1804 		},
1805 	},
1806 };
1807 
1808 static struct clk_branch gcc_pcie_0_pipe_div2_clk = {
1809 	.halt_reg = 0x6b064,
1810 	.halt_check = BRANCH_HALT_SKIP,
1811 	.hwcg_reg = 0x6b064,
1812 	.hwcg_bit = 1,
1813 	.clkr = {
1814 		.enable_reg = 0x52020,
1815 		.enable_mask = BIT(6),
1816 		.hw.init = &(const struct clk_init_data) {
1817 			.name = "gcc_pcie_0_pipe_div2_clk",
1818 			.parent_hws = (const struct clk_hw*[]) {
1819 				&gcc_pcie_0_pipe_div_clk_src.clkr.hw,
1820 			},
1821 			.num_parents = 1,
1822 			.flags = CLK_SET_RATE_PARENT,
1823 			.ops = &clk_branch2_ops,
1824 		},
1825 	},
1826 };
1827 
1828 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1829 	.halt_reg = 0x6b020,
1830 	.halt_check = BRANCH_HALT_VOTED,
1831 	.hwcg_reg = 0x6b020,
1832 	.hwcg_bit = 1,
1833 	.clkr = {
1834 		.enable_reg = 0x52020,
1835 		.enable_mask = BIT(1),
1836 		.hw.init = &(const struct clk_init_data) {
1837 			.name = "gcc_pcie_0_slv_axi_clk",
1838 			.ops = &clk_branch2_ops,
1839 		},
1840 	},
1841 };
1842 
1843 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
1844 	.halt_reg = 0x6b01c,
1845 	.halt_check = BRANCH_HALT_VOTED,
1846 	.hwcg_reg = 0x6b01c,
1847 	.hwcg_bit = 1,
1848 	.clkr = {
1849 		.enable_reg = 0x52020,
1850 		.enable_mask = BIT(0),
1851 		.hw.init = &(const struct clk_init_data) {
1852 			.name = "gcc_pcie_0_slv_q2a_axi_clk",
1853 			.ops = &clk_branch2_ops,
1854 		},
1855 	},
1856 };
1857 
1858 static struct clk_branch gcc_pcie_1_aux_clk = {
1859 	.halt_reg = 0x67040,
1860 	.halt_check = BRANCH_HALT_VOTED,
1861 	.clkr = {
1862 		.enable_reg = 0x52010,
1863 		.enable_mask = BIT(10),
1864 		.hw.init = &(const struct clk_init_data) {
1865 			.name = "gcc_pcie_1_aux_clk",
1866 			.parent_hws = (const struct clk_hw*[]) {
1867 				&gcc_pcie_1_aux_clk_src.clkr.hw,
1868 			},
1869 			.num_parents = 1,
1870 			.flags = CLK_SET_RATE_PARENT,
1871 			.ops = &clk_branch2_ops,
1872 		},
1873 	},
1874 };
1875 
1876 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1877 	.halt_reg = 0x6703c,
1878 	.halt_check = BRANCH_HALT_VOTED,
1879 	.hwcg_reg = 0x6703c,
1880 	.hwcg_bit = 1,
1881 	.clkr = {
1882 		.enable_reg = 0x52010,
1883 		.enable_mask = BIT(9),
1884 		.hw.init = &(const struct clk_init_data) {
1885 			.name = "gcc_pcie_1_cfg_ahb_clk",
1886 			.ops = &clk_branch2_ops,
1887 		},
1888 	},
1889 };
1890 
1891 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1892 	.halt_reg = 0x6702c,
1893 	.halt_check = BRANCH_HALT_SKIP,
1894 	.hwcg_reg = 0x6702c,
1895 	.hwcg_bit = 1,
1896 	.clkr = {
1897 		.enable_reg = 0x52008,
1898 		.enable_mask = BIT(17),
1899 		.hw.init = &(const struct clk_init_data) {
1900 			.name = "gcc_pcie_1_mstr_axi_clk",
1901 			.ops = &clk_branch2_ops,
1902 		},
1903 	},
1904 };
1905 
1906 static struct clk_branch gcc_pcie_1_phy_aux_clk = {
1907 	.halt_reg = 0x67050,
1908 	.halt_check = BRANCH_HALT_VOTED,
1909 	.clkr = {
1910 		.enable_reg = 0x52010,
1911 		.enable_mask = BIT(14),
1912 		.hw.init = &(const struct clk_init_data) {
1913 			.name = "gcc_pcie_1_phy_aux_clk",
1914 			.parent_hws = (const struct clk_hw*[]) {
1915 				&gcc_pcie_1_phy_aux_clk_src.clkr.hw,
1916 			},
1917 			.num_parents = 1,
1918 			.flags = CLK_SET_RATE_PARENT,
1919 			.ops = &clk_branch2_ops,
1920 		},
1921 	},
1922 };
1923 
1924 static struct clk_branch gcc_pcie_1_phy_rchng_clk = {
1925 	.halt_reg = 0x67080,
1926 	.halt_check = BRANCH_HALT_VOTED,
1927 	.clkr = {
1928 		.enable_reg = 0x52010,
1929 		.enable_mask = BIT(26),
1930 		.hw.init = &(const struct clk_init_data) {
1931 			.name = "gcc_pcie_1_phy_rchng_clk",
1932 			.parent_hws = (const struct clk_hw*[]) {
1933 				&gcc_pcie_1_phy_rchng_clk_src.clkr.hw,
1934 			},
1935 			.num_parents = 1,
1936 			.flags = CLK_SET_RATE_PARENT,
1937 			.ops = &clk_branch2_ops,
1938 		},
1939 	},
1940 };
1941 
1942 static struct clk_branch gcc_pcie_1_pipe_clk = {
1943 	.halt_reg = 0x67070,
1944 	.halt_check = BRANCH_HALT_SKIP,
1945 	.clkr = {
1946 		.enable_reg = 0x52010,
1947 		.enable_mask = BIT(17),
1948 		.hw.init = &(const struct clk_init_data) {
1949 			.name = "gcc_pcie_1_pipe_clk",
1950 			.parent_hws = (const struct clk_hw*[]) {
1951 				&gcc_pcie_1_pipe_clk_src.clkr.hw,
1952 			},
1953 			.num_parents = 1,
1954 			.flags = CLK_SET_RATE_PARENT,
1955 			.ops = &clk_branch2_ops,
1956 		},
1957 	},
1958 };
1959 
1960 static struct clk_branch gcc_pcie_1_pipe_div2_clk = {
1961 	.halt_reg = 0x67060,
1962 	.halt_check = BRANCH_HALT_SKIP,
1963 	.clkr = {
1964 		.enable_reg = 0x52010,
1965 		.enable_mask = BIT(15),
1966 		.hw.init = &(const struct clk_init_data) {
1967 			.name = "gcc_pcie_1_pipe_div2_clk",
1968 			.parent_hws = (const struct clk_hw*[]) {
1969 				&gcc_pcie_1_pipe_div_clk_src.clkr.hw,
1970 			},
1971 			.num_parents = 1,
1972 			.flags = CLK_SET_RATE_PARENT,
1973 			.ops = &clk_branch2_ops,
1974 		},
1975 	},
1976 };
1977 
1978 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1979 	.halt_reg = 0x6701c,
1980 	.halt_check = BRANCH_HALT_VOTED,
1981 	.hwcg_reg = 0x6701c,
1982 	.hwcg_bit = 1,
1983 	.clkr = {
1984 		.enable_reg = 0x52008,
1985 		.enable_mask = BIT(16),
1986 		.hw.init = &(const struct clk_init_data) {
1987 			.name = "gcc_pcie_1_slv_axi_clk",
1988 			.ops = &clk_branch2_ops,
1989 		},
1990 	},
1991 };
1992 
1993 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
1994 	.halt_reg = 0x67018,
1995 	.halt_check = BRANCH_HALT_VOTED,
1996 	.clkr = {
1997 		.enable_reg = 0x52008,
1998 		.enable_mask = BIT(15),
1999 		.hw.init = &(const struct clk_init_data) {
2000 			.name = "gcc_pcie_1_slv_q2a_axi_clk",
2001 			.ops = &clk_branch2_ops,
2002 		},
2003 	},
2004 };
2005 
2006 static struct clk_branch gcc_pdm2_clk = {
2007 	.halt_reg = 0x3300c,
2008 	.halt_check = BRANCH_HALT,
2009 	.clkr = {
2010 		.enable_reg = 0x3300c,
2011 		.enable_mask = BIT(0),
2012 		.hw.init = &(const struct clk_init_data) {
2013 			.name = "gcc_pdm2_clk",
2014 			.parent_hws = (const struct clk_hw*[]) {
2015 				&gcc_pdm2_clk_src.clkr.hw,
2016 			},
2017 			.num_parents = 1,
2018 			.flags = CLK_SET_RATE_PARENT,
2019 			.ops = &clk_branch2_ops,
2020 		},
2021 	},
2022 };
2023 
2024 static struct clk_branch gcc_pdm_ahb_clk = {
2025 	.halt_reg = 0x33004,
2026 	.halt_check = BRANCH_HALT_VOTED,
2027 	.hwcg_reg = 0x33004,
2028 	.hwcg_bit = 1,
2029 	.clkr = {
2030 		.enable_reg = 0x33004,
2031 		.enable_mask = BIT(0),
2032 		.hw.init = &(const struct clk_init_data) {
2033 			.name = "gcc_pdm_ahb_clk",
2034 			.ops = &clk_branch2_ops,
2035 		},
2036 	},
2037 };
2038 
2039 static struct clk_branch gcc_pdm_xo4_clk = {
2040 	.halt_reg = 0x33008,
2041 	.halt_check = BRANCH_HALT,
2042 	.clkr = {
2043 		.enable_reg = 0x33008,
2044 		.enable_mask = BIT(0),
2045 		.hw.init = &(const struct clk_init_data) {
2046 			.name = "gcc_pdm_xo4_clk",
2047 			.ops = &clk_branch2_ops,
2048 		},
2049 	},
2050 };
2051 
2052 static struct clk_branch gcc_qupv3_i2c_core_clk = {
2053 	.halt_reg = 0x23004,
2054 	.halt_check = BRANCH_HALT_VOTED,
2055 	.clkr = {
2056 		.enable_reg = 0x52008,
2057 		.enable_mask = BIT(8),
2058 		.hw.init = &(const struct clk_init_data) {
2059 			.name = "gcc_qupv3_i2c_core_clk",
2060 			.ops = &clk_branch2_ops,
2061 		},
2062 	},
2063 };
2064 
2065 static struct clk_branch gcc_qupv3_i2c_s0_clk = {
2066 	.halt_reg = 0x17004,
2067 	.halt_check = BRANCH_HALT_VOTED,
2068 	.clkr = {
2069 		.enable_reg = 0x52008,
2070 		.enable_mask = BIT(10),
2071 		.hw.init = &(const struct clk_init_data) {
2072 			.name = "gcc_qupv3_i2c_s0_clk",
2073 			.parent_hws = (const struct clk_hw*[]) {
2074 				&gcc_qupv3_i2c_s0_clk_src.clkr.hw,
2075 			},
2076 			.num_parents = 1,
2077 			.flags = CLK_SET_RATE_PARENT,
2078 			.ops = &clk_branch2_ops,
2079 		},
2080 	},
2081 };
2082 
2083 static struct clk_branch gcc_qupv3_i2c_s1_clk = {
2084 	.halt_reg = 0x17020,
2085 	.halt_check = BRANCH_HALT_VOTED,
2086 	.clkr = {
2087 		.enable_reg = 0x52008,
2088 		.enable_mask = BIT(11),
2089 		.hw.init = &(const struct clk_init_data) {
2090 			.name = "gcc_qupv3_i2c_s1_clk",
2091 			.parent_hws = (const struct clk_hw*[]) {
2092 				&gcc_qupv3_i2c_s1_clk_src.clkr.hw,
2093 			},
2094 			.num_parents = 1,
2095 			.flags = CLK_SET_RATE_PARENT,
2096 			.ops = &clk_branch2_ops,
2097 		},
2098 	},
2099 };
2100 
2101 static struct clk_branch gcc_qupv3_i2c_s2_clk = {
2102 	.halt_reg = 0x1703c,
2103 	.halt_check = BRANCH_HALT_VOTED,
2104 	.clkr = {
2105 		.enable_reg = 0x52008,
2106 		.enable_mask = BIT(12),
2107 		.hw.init = &(const struct clk_init_data) {
2108 			.name = "gcc_qupv3_i2c_s2_clk",
2109 			.parent_hws = (const struct clk_hw*[]) {
2110 				&gcc_qupv3_i2c_s2_clk_src.clkr.hw,
2111 			},
2112 			.num_parents = 1,
2113 			.flags = CLK_SET_RATE_PARENT,
2114 			.ops = &clk_branch2_ops,
2115 		},
2116 	},
2117 };
2118 
2119 static struct clk_branch gcc_qupv3_i2c_s3_clk = {
2120 	.halt_reg = 0x17058,
2121 	.halt_check = BRANCH_HALT_VOTED,
2122 	.clkr = {
2123 		.enable_reg = 0x52008,
2124 		.enable_mask = BIT(13),
2125 		.hw.init = &(const struct clk_init_data) {
2126 			.name = "gcc_qupv3_i2c_s3_clk",
2127 			.parent_hws = (const struct clk_hw*[]) {
2128 				&gcc_qupv3_i2c_s3_clk_src.clkr.hw,
2129 			},
2130 			.num_parents = 1,
2131 			.flags = CLK_SET_RATE_PARENT,
2132 			.ops = &clk_branch2_ops,
2133 		},
2134 	},
2135 };
2136 
2137 static struct clk_branch gcc_qupv3_i2c_s4_clk = {
2138 	.halt_reg = 0x17074,
2139 	.halt_check = BRANCH_HALT_VOTED,
2140 	.clkr = {
2141 		.enable_reg = 0x52008,
2142 		.enable_mask = BIT(14),
2143 		.hw.init = &(const struct clk_init_data) {
2144 			.name = "gcc_qupv3_i2c_s4_clk",
2145 			.parent_hws = (const struct clk_hw*[]) {
2146 				&gcc_qupv3_i2c_s4_clk_src.clkr.hw,
2147 			},
2148 			.num_parents = 1,
2149 			.flags = CLK_SET_RATE_PARENT,
2150 			.ops = &clk_branch2_ops,
2151 		},
2152 	},
2153 };
2154 
2155 static struct clk_branch gcc_qupv3_i2c_s_ahb_clk = {
2156 	.halt_reg = 0x23000,
2157 	.halt_check = BRANCH_HALT_VOTED,
2158 	.hwcg_reg = 0x23000,
2159 	.hwcg_bit = 1,
2160 	.clkr = {
2161 		.enable_reg = 0x52008,
2162 		.enable_mask = BIT(7),
2163 		.hw.init = &(const struct clk_init_data) {
2164 			.name = "gcc_qupv3_i2c_s_ahb_clk",
2165 			.ops = &clk_branch2_ops,
2166 		},
2167 	},
2168 };
2169 
2170 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
2171 	.halt_reg = 0x2315c,
2172 	.halt_check = BRANCH_HALT_VOTED,
2173 	.clkr = {
2174 		.enable_reg = 0x52008,
2175 		.enable_mask = BIT(18),
2176 		.hw.init = &(const struct clk_init_data) {
2177 			.name = "gcc_qupv3_wrap1_core_2x_clk",
2178 			.ops = &clk_branch2_ops,
2179 		},
2180 	},
2181 };
2182 
2183 static struct clk_branch gcc_qupv3_wrap1_core_clk = {
2184 	.halt_reg = 0x23148,
2185 	.halt_check = BRANCH_HALT_VOTED,
2186 	.clkr = {
2187 		.enable_reg = 0x52008,
2188 		.enable_mask = BIT(19),
2189 		.hw.init = &(const struct clk_init_data) {
2190 			.name = "gcc_qupv3_wrap1_core_clk",
2191 			.ops = &clk_branch2_ops,
2192 		},
2193 	},
2194 };
2195 
2196 static struct clk_branch gcc_qupv3_wrap1_qspi_ref_clk = {
2197 	.halt_reg = 0x188bc,
2198 	.halt_check = BRANCH_HALT_VOTED,
2199 	.clkr = {
2200 		.enable_reg = 0x52010,
2201 		.enable_mask = BIT(29),
2202 		.hw.init = &(const struct clk_init_data) {
2203 			.name = "gcc_qupv3_wrap1_qspi_ref_clk",
2204 			.parent_hws = (const struct clk_hw*[]) {
2205 				&gcc_qupv3_wrap1_qspi_ref_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_qupv3_wrap1_s0_clk = {
2215 	.halt_reg = 0x18004,
2216 	.halt_check = BRANCH_HALT_VOTED,
2217 	.clkr = {
2218 		.enable_reg = 0x52008,
2219 		.enable_mask = BIT(22),
2220 		.hw.init = &(const struct clk_init_data) {
2221 			.name = "gcc_qupv3_wrap1_s0_clk",
2222 			.parent_hws = (const struct clk_hw*[]) {
2223 				&gcc_qupv3_wrap1_s0_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_qupv3_wrap1_s1_clk = {
2233 	.halt_reg = 0x18140,
2234 	.halt_check = BRANCH_HALT_VOTED,
2235 	.clkr = {
2236 		.enable_reg = 0x52008,
2237 		.enable_mask = BIT(23),
2238 		.hw.init = &(const struct clk_init_data) {
2239 			.name = "gcc_qupv3_wrap1_s1_clk",
2240 			.parent_hws = (const struct clk_hw*[]) {
2241 				&gcc_qupv3_wrap1_s1_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_qupv3_wrap1_s2_clk = {
2251 	.halt_reg = 0x1827c,
2252 	.halt_check = BRANCH_HALT_VOTED,
2253 	.clkr = {
2254 		.enable_reg = 0x52008,
2255 		.enable_mask = BIT(24),
2256 		.hw.init = &(const struct clk_init_data) {
2257 			.name = "gcc_qupv3_wrap1_s2_clk",
2258 			.parent_hws = (const struct clk_hw*[]) {
2259 				&gcc_qupv3_wrap1_s2_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_qupv3_wrap1_s3_clk = {
2269 	.halt_reg = 0x18290,
2270 	.halt_check = BRANCH_HALT_VOTED,
2271 	.clkr = {
2272 		.enable_reg = 0x52008,
2273 		.enable_mask = BIT(25),
2274 		.hw.init = &(const struct clk_init_data) {
2275 			.name = "gcc_qupv3_wrap1_s3_clk",
2276 			.parent_hws = (const struct clk_hw*[]) {
2277 				&gcc_qupv3_wrap1_s3_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_qupv3_wrap1_s4_clk = {
2287 	.halt_reg = 0x183cc,
2288 	.halt_check = BRANCH_HALT_VOTED,
2289 	.clkr = {
2290 		.enable_reg = 0x52008,
2291 		.enable_mask = BIT(26),
2292 		.hw.init = &(const struct clk_init_data) {
2293 			.name = "gcc_qupv3_wrap1_s4_clk",
2294 			.parent_hws = (const struct clk_hw*[]) {
2295 				&gcc_qupv3_wrap1_s4_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_qupv3_wrap1_s5_clk = {
2305 	.halt_reg = 0x18508,
2306 	.halt_check = BRANCH_HALT_VOTED,
2307 	.clkr = {
2308 		.enable_reg = 0x52008,
2309 		.enable_mask = BIT(27),
2310 		.hw.init = &(const struct clk_init_data) {
2311 			.name = "gcc_qupv3_wrap1_s5_clk",
2312 			.parent_hws = (const struct clk_hw*[]) {
2313 				&gcc_qupv3_wrap1_s5_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_qupv3_wrap1_s6_clk = {
2323 	.halt_reg = 0x18644,
2324 	.halt_check = BRANCH_HALT_VOTED,
2325 	.clkr = {
2326 		.enable_reg = 0x52008,
2327 		.enable_mask = BIT(28),
2328 		.hw.init = &(const struct clk_init_data) {
2329 			.name = "gcc_qupv3_wrap1_s6_clk",
2330 			.parent_hws = (const struct clk_hw*[]) {
2331 				&gcc_qupv3_wrap1_s6_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_qupv3_wrap1_s7_clk = {
2341 	.halt_reg = 0x18780,
2342 	.halt_check = BRANCH_HALT_VOTED,
2343 	.clkr = {
2344 		.enable_reg = 0x52010,
2345 		.enable_mask = BIT(16),
2346 		.hw.init = &(const struct clk_init_data) {
2347 			.name = "gcc_qupv3_wrap1_s7_clk",
2348 			.parent_hws = (const struct clk_hw*[]) {
2349 				&gcc_qupv3_wrap1_s7_clk_src.clkr.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_qupv3_wrap2_core_2x_clk = {
2359 	.halt_reg = 0x232b4,
2360 	.halt_check = BRANCH_HALT_VOTED,
2361 	.clkr = {
2362 		.enable_reg = 0x52010,
2363 		.enable_mask = BIT(3),
2364 		.hw.init = &(const struct clk_init_data) {
2365 			.name = "gcc_qupv3_wrap2_core_2x_clk",
2366 			.ops = &clk_branch2_ops,
2367 		},
2368 	},
2369 };
2370 
2371 static struct clk_branch gcc_qupv3_wrap2_core_clk = {
2372 	.halt_reg = 0x232a0,
2373 	.halt_check = BRANCH_HALT_VOTED,
2374 	.clkr = {
2375 		.enable_reg = 0x52010,
2376 		.enable_mask = BIT(0),
2377 		.hw.init = &(const struct clk_init_data) {
2378 			.name = "gcc_qupv3_wrap2_core_clk",
2379 			.ops = &clk_branch2_ops,
2380 		},
2381 	},
2382 };
2383 
2384 static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
2385 	.halt_reg = 0x1e004,
2386 	.halt_check = BRANCH_HALT_VOTED,
2387 	.clkr = {
2388 		.enable_reg = 0x52010,
2389 		.enable_mask = BIT(4),
2390 		.hw.init = &(const struct clk_init_data) {
2391 			.name = "gcc_qupv3_wrap2_s0_clk",
2392 			.parent_hws = (const struct clk_hw*[]) {
2393 				&gcc_qupv3_wrap2_s0_clk_src.clkr.hw,
2394 			},
2395 			.num_parents = 1,
2396 			.flags = CLK_SET_RATE_PARENT,
2397 			.ops = &clk_branch2_ops,
2398 		},
2399 	},
2400 };
2401 
2402 static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
2403 	.halt_reg = 0x1e148,
2404 	.halt_check = BRANCH_HALT_VOTED,
2405 	.clkr = {
2406 		.enable_reg = 0x52010,
2407 		.enable_mask = BIT(5),
2408 		.hw.init = &(const struct clk_init_data) {
2409 			.name = "gcc_qupv3_wrap2_s1_clk",
2410 			.parent_hws = (const struct clk_hw*[]) {
2411 				&gcc_qupv3_wrap2_s1_clk_src.clkr.hw,
2412 			},
2413 			.num_parents = 1,
2414 			.flags = CLK_SET_RATE_PARENT,
2415 			.ops = &clk_branch2_ops,
2416 		},
2417 	},
2418 };
2419 
2420 static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
2421 	.halt_reg = 0x1e28c,
2422 	.halt_check = BRANCH_HALT_VOTED,
2423 	.clkr = {
2424 		.enable_reg = 0x52010,
2425 		.enable_mask = BIT(6),
2426 		.hw.init = &(const struct clk_init_data) {
2427 			.name = "gcc_qupv3_wrap2_s2_clk",
2428 			.parent_hws = (const struct clk_hw*[]) {
2429 				&gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
2430 			},
2431 			.num_parents = 1,
2432 			.flags = CLK_SET_RATE_PARENT,
2433 			.ops = &clk_branch2_ops,
2434 		},
2435 	},
2436 };
2437 
2438 static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
2439 	.halt_reg = 0x1e3c8,
2440 	.halt_check = BRANCH_HALT_VOTED,
2441 	.clkr = {
2442 		.enable_reg = 0x52010,
2443 		.enable_mask = BIT(7),
2444 		.hw.init = &(const struct clk_init_data) {
2445 			.name = "gcc_qupv3_wrap2_s3_clk",
2446 			.parent_hws = (const struct clk_hw*[]) {
2447 				&gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
2448 			},
2449 			.num_parents = 1,
2450 			.flags = CLK_SET_RATE_PARENT,
2451 			.ops = &clk_branch2_ops,
2452 		},
2453 	},
2454 };
2455 
2456 static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
2457 	.halt_reg = 0x1e504,
2458 	.halt_check = BRANCH_HALT_VOTED,
2459 	.clkr = {
2460 		.enable_reg = 0x52010,
2461 		.enable_mask = BIT(8),
2462 		.hw.init = &(const struct clk_init_data) {
2463 			.name = "gcc_qupv3_wrap2_s4_clk",
2464 			.parent_hws = (const struct clk_hw*[]) {
2465 				&gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
2466 			},
2467 			.num_parents = 1,
2468 			.flags = CLK_SET_RATE_PARENT,
2469 			.ops = &clk_branch2_ops,
2470 		},
2471 	},
2472 };
2473 
2474 static struct clk_branch gcc_qupv3_wrap3_core_2x_clk = {
2475 	.halt_reg = 0x2340c,
2476 	.halt_check = BRANCH_HALT_VOTED,
2477 	.clkr = {
2478 		.enable_reg = 0x52018,
2479 		.enable_mask = BIT(11),
2480 		.hw.init = &(const struct clk_init_data) {
2481 			.name = "gcc_qupv3_wrap3_core_2x_clk",
2482 			.ops = &clk_branch2_ops,
2483 		},
2484 	},
2485 };
2486 
2487 static struct clk_branch gcc_qupv3_wrap3_core_clk = {
2488 	.halt_reg = 0x233f8,
2489 	.halt_check = BRANCH_HALT_VOTED,
2490 	.clkr = {
2491 		.enable_reg = 0x52018,
2492 		.enable_mask = BIT(10),
2493 		.hw.init = &(const struct clk_init_data) {
2494 			.name = "gcc_qupv3_wrap3_core_clk",
2495 			.ops = &clk_branch2_ops,
2496 		},
2497 	},
2498 };
2499 
2500 static struct clk_branch gcc_qupv3_wrap3_qspi_ref_clk = {
2501 	.halt_reg = 0xa8648,
2502 	.halt_check = BRANCH_HALT_VOTED,
2503 	.clkr = {
2504 		.enable_reg = 0x52010,
2505 		.enable_mask = BIT(25),
2506 		.hw.init = &(const struct clk_init_data) {
2507 			.name = "gcc_qupv3_wrap3_qspi_ref_clk",
2508 			.parent_hws = (const struct clk_hw*[]) {
2509 				&gcc_qupv3_wrap3_qspi_ref_clk_src.clkr.hw,
2510 			},
2511 			.num_parents = 1,
2512 			.flags = CLK_SET_RATE_PARENT,
2513 			.ops = &clk_branch2_ops,
2514 		},
2515 	},
2516 };
2517 
2518 static struct clk_branch gcc_qupv3_wrap3_s0_clk = {
2519 	.halt_reg = 0xa8004,
2520 	.halt_check = BRANCH_HALT_VOTED,
2521 	.clkr = {
2522 		.enable_reg = 0x52018,
2523 		.enable_mask = BIT(12),
2524 		.hw.init = &(const struct clk_init_data) {
2525 			.name = "gcc_qupv3_wrap3_s0_clk",
2526 			.parent_hws = (const struct clk_hw*[]) {
2527 				&gcc_qupv3_wrap3_s0_clk_src.clkr.hw,
2528 			},
2529 			.num_parents = 1,
2530 			.flags = CLK_SET_RATE_PARENT,
2531 			.ops = &clk_branch2_ops,
2532 		},
2533 	},
2534 };
2535 
2536 static struct clk_branch gcc_qupv3_wrap3_s1_clk = {
2537 	.halt_reg = 0xa8140,
2538 	.halt_check = BRANCH_HALT_VOTED,
2539 	.clkr = {
2540 		.enable_reg = 0x52018,
2541 		.enable_mask = BIT(13),
2542 		.hw.init = &(const struct clk_init_data) {
2543 			.name = "gcc_qupv3_wrap3_s1_clk",
2544 			.parent_hws = (const struct clk_hw*[]) {
2545 				&gcc_qupv3_wrap3_s1_clk_src.clkr.hw,
2546 			},
2547 			.num_parents = 1,
2548 			.flags = CLK_SET_RATE_PARENT,
2549 			.ops = &clk_branch2_ops,
2550 		},
2551 	},
2552 };
2553 
2554 static struct clk_branch gcc_qupv3_wrap3_s2_clk = {
2555 	.halt_reg = 0xa8158,
2556 	.halt_check = BRANCH_HALT_VOTED,
2557 	.clkr = {
2558 		.enable_reg = 0x52018,
2559 		.enable_mask = BIT(14),
2560 		.hw.init = &(const struct clk_init_data) {
2561 			.name = "gcc_qupv3_wrap3_s2_clk",
2562 			.parent_hws = (const struct clk_hw*[]) {
2563 				&gcc_qupv3_wrap3_s2_clk_src.clkr.hw,
2564 			},
2565 			.num_parents = 1,
2566 			.flags = CLK_SET_RATE_PARENT,
2567 			.ops = &clk_branch2_ops,
2568 		},
2569 	},
2570 };
2571 
2572 static struct clk_branch gcc_qupv3_wrap3_s3_clk = {
2573 	.halt_reg = 0xa8294,
2574 	.halt_check = BRANCH_HALT_VOTED,
2575 	.clkr = {
2576 		.enable_reg = 0x52018,
2577 		.enable_mask = BIT(15),
2578 		.hw.init = &(const struct clk_init_data) {
2579 			.name = "gcc_qupv3_wrap3_s3_clk",
2580 			.parent_hws = (const struct clk_hw*[]) {
2581 				&gcc_qupv3_wrap3_s3_clk_src.clkr.hw,
2582 			},
2583 			.num_parents = 1,
2584 			.flags = CLK_SET_RATE_PARENT,
2585 			.ops = &clk_branch2_ops,
2586 		},
2587 	},
2588 };
2589 
2590 static struct clk_branch gcc_qupv3_wrap3_s4_clk = {
2591 	.halt_reg = 0xa83d0,
2592 	.halt_check = BRANCH_HALT_VOTED,
2593 	.clkr = {
2594 		.enable_reg = 0x52018,
2595 		.enable_mask = BIT(16),
2596 		.hw.init = &(const struct clk_init_data) {
2597 			.name = "gcc_qupv3_wrap3_s4_clk",
2598 			.parent_hws = (const struct clk_hw*[]) {
2599 				&gcc_qupv3_wrap3_s4_clk_src.clkr.hw,
2600 			},
2601 			.num_parents = 1,
2602 			.flags = CLK_SET_RATE_PARENT,
2603 			.ops = &clk_branch2_ops,
2604 		},
2605 	},
2606 };
2607 
2608 static struct clk_branch gcc_qupv3_wrap3_s5_clk = {
2609 	.halt_reg = 0xa850c,
2610 	.halt_check = BRANCH_HALT_VOTED,
2611 	.clkr = {
2612 		.enable_reg = 0x52018,
2613 		.enable_mask = BIT(17),
2614 		.hw.init = &(const struct clk_init_data) {
2615 			.name = "gcc_qupv3_wrap3_s5_clk",
2616 			.parent_hws = (const struct clk_hw*[]) {
2617 				&gcc_qupv3_wrap3_s5_clk_src.clkr.hw,
2618 			},
2619 			.num_parents = 1,
2620 			.flags = CLK_SET_RATE_PARENT,
2621 			.ops = &clk_branch2_ops,
2622 		},
2623 	},
2624 };
2625 
2626 static struct clk_branch gcc_qupv3_wrap4_core_2x_clk = {
2627 	.halt_reg = 0x23564,
2628 	.halt_check = BRANCH_HALT_VOTED,
2629 	.clkr = {
2630 		.enable_reg = 0x52018,
2631 		.enable_mask = BIT(25),
2632 		.hw.init = &(const struct clk_init_data) {
2633 			.name = "gcc_qupv3_wrap4_core_2x_clk",
2634 			.ops = &clk_branch2_ops,
2635 		},
2636 	},
2637 };
2638 
2639 static struct clk_branch gcc_qupv3_wrap4_core_clk = {
2640 	.halt_reg = 0x23550,
2641 	.halt_check = BRANCH_HALT_VOTED,
2642 	.clkr = {
2643 		.enable_reg = 0x52018,
2644 		.enable_mask = BIT(24),
2645 		.hw.init = &(const struct clk_init_data) {
2646 			.name = "gcc_qupv3_wrap4_core_clk",
2647 			.ops = &clk_branch2_ops,
2648 		},
2649 	},
2650 };
2651 
2652 static struct clk_branch gcc_qupv3_wrap4_s0_clk = {
2653 	.halt_reg = 0xa9004,
2654 	.halt_check = BRANCH_HALT_VOTED,
2655 	.clkr = {
2656 		.enable_reg = 0x52018,
2657 		.enable_mask = BIT(26),
2658 		.hw.init = &(const struct clk_init_data) {
2659 			.name = "gcc_qupv3_wrap4_s0_clk",
2660 			.parent_hws = (const struct clk_hw*[]) {
2661 				&gcc_qupv3_wrap4_s0_clk_src.clkr.hw,
2662 			},
2663 			.num_parents = 1,
2664 			.flags = CLK_SET_RATE_PARENT,
2665 			.ops = &clk_branch2_ops,
2666 		},
2667 	},
2668 };
2669 
2670 static struct clk_branch gcc_qupv3_wrap4_s1_clk = {
2671 	.halt_reg = 0xa9140,
2672 	.halt_check = BRANCH_HALT_VOTED,
2673 	.clkr = {
2674 		.enable_reg = 0x52018,
2675 		.enable_mask = BIT(27),
2676 		.hw.init = &(const struct clk_init_data) {
2677 			.name = "gcc_qupv3_wrap4_s1_clk",
2678 			.parent_hws = (const struct clk_hw*[]) {
2679 				&gcc_qupv3_wrap4_s1_clk_src.clkr.hw,
2680 			},
2681 			.num_parents = 1,
2682 			.flags = CLK_SET_RATE_PARENT,
2683 			.ops = &clk_branch2_ops,
2684 		},
2685 	},
2686 };
2687 
2688 static struct clk_branch gcc_qupv3_wrap4_s2_clk = {
2689 	.halt_reg = 0xa927c,
2690 	.halt_check = BRANCH_HALT_VOTED,
2691 	.clkr = {
2692 		.enable_reg = 0x52018,
2693 		.enable_mask = BIT(28),
2694 		.hw.init = &(const struct clk_init_data) {
2695 			.name = "gcc_qupv3_wrap4_s2_clk",
2696 			.parent_hws = (const struct clk_hw*[]) {
2697 				&gcc_qupv3_wrap4_s2_clk_src.clkr.hw,
2698 			},
2699 			.num_parents = 1,
2700 			.flags = CLK_SET_RATE_PARENT,
2701 			.ops = &clk_branch2_ops,
2702 		},
2703 	},
2704 };
2705 
2706 static struct clk_branch gcc_qupv3_wrap4_s3_clk = {
2707 	.halt_reg = 0xa93b8,
2708 	.halt_check = BRANCH_HALT_VOTED,
2709 	.clkr = {
2710 		.enable_reg = 0x52018,
2711 		.enable_mask = BIT(29),
2712 		.hw.init = &(const struct clk_init_data) {
2713 			.name = "gcc_qupv3_wrap4_s3_clk",
2714 			.parent_hws = (const struct clk_hw*[]) {
2715 				&gcc_qupv3_wrap4_s3_clk_src.clkr.hw,
2716 			},
2717 			.num_parents = 1,
2718 			.flags = CLK_SET_RATE_PARENT,
2719 			.ops = &clk_branch2_ops,
2720 		},
2721 	},
2722 };
2723 
2724 static struct clk_branch gcc_qupv3_wrap4_s4_clk = {
2725 	.halt_reg = 0xa94f4,
2726 	.halt_check = BRANCH_HALT_VOTED,
2727 	.clkr = {
2728 		.enable_reg = 0x52018,
2729 		.enable_mask = BIT(30),
2730 		.hw.init = &(const struct clk_init_data) {
2731 			.name = "gcc_qupv3_wrap4_s4_clk",
2732 			.parent_hws = (const struct clk_hw*[]) {
2733 				&gcc_qupv3_wrap4_s4_clk_src.clkr.hw,
2734 			},
2735 			.num_parents = 1,
2736 			.flags = CLK_SET_RATE_PARENT,
2737 			.ops = &clk_branch2_ops,
2738 		},
2739 	},
2740 };
2741 
2742 static struct clk_branch gcc_qupv3_wrap_1_m_axi_clk = {
2743 	.halt_reg = 0x23140,
2744 	.halt_check = BRANCH_HALT_VOTED,
2745 	.hwcg_reg = 0x23140,
2746 	.hwcg_bit = 1,
2747 	.clkr = {
2748 		.enable_reg = 0x52008,
2749 		.enable_mask = BIT(20),
2750 		.hw.init = &(const struct clk_init_data) {
2751 			.name = "gcc_qupv3_wrap_1_m_axi_clk",
2752 			.ops = &clk_branch2_ops,
2753 		},
2754 	},
2755 };
2756 
2757 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
2758 	.halt_reg = 0x23144,
2759 	.halt_check = BRANCH_HALT_VOTED,
2760 	.hwcg_reg = 0x23144,
2761 	.hwcg_bit = 1,
2762 	.clkr = {
2763 		.enable_reg = 0x52008,
2764 		.enable_mask = BIT(21),
2765 		.hw.init = &(const struct clk_init_data) {
2766 			.name = "gcc_qupv3_wrap_1_s_ahb_clk",
2767 			.ops = &clk_branch2_ops,
2768 		},
2769 	},
2770 };
2771 
2772 static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
2773 	.halt_reg = 0x23298,
2774 	.halt_check = BRANCH_HALT_VOTED,
2775 	.hwcg_reg = 0x23298,
2776 	.hwcg_bit = 1,
2777 	.clkr = {
2778 		.enable_reg = 0x52010,
2779 		.enable_mask = BIT(2),
2780 		.hw.init = &(const struct clk_init_data) {
2781 			.name = "gcc_qupv3_wrap_2_m_ahb_clk",
2782 			.ops = &clk_branch2_ops,
2783 		},
2784 	},
2785 };
2786 
2787 static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
2788 	.halt_reg = 0x2329c,
2789 	.halt_check = BRANCH_HALT_VOTED,
2790 	.hwcg_reg = 0x2329c,
2791 	.hwcg_bit = 1,
2792 	.clkr = {
2793 		.enable_reg = 0x52010,
2794 		.enable_mask = BIT(1),
2795 		.hw.init = &(const struct clk_init_data) {
2796 			.name = "gcc_qupv3_wrap_2_s_ahb_clk",
2797 			.ops = &clk_branch2_ops,
2798 		},
2799 	},
2800 };
2801 
2802 static struct clk_branch gcc_qupv3_wrap_3_m_ahb_clk = {
2803 	.halt_reg = 0x233f0,
2804 	.halt_check = BRANCH_HALT_VOTED,
2805 	.hwcg_reg = 0x233f0,
2806 	.hwcg_bit = 1,
2807 	.clkr = {
2808 		.enable_reg = 0x52018,
2809 		.enable_mask = BIT(8),
2810 		.hw.init = &(const struct clk_init_data) {
2811 			.name = "gcc_qupv3_wrap_3_m_ahb_clk",
2812 			.ops = &clk_branch2_ops,
2813 		},
2814 	},
2815 };
2816 
2817 static struct clk_branch gcc_qupv3_wrap_3_s_ahb_clk = {
2818 	.halt_reg = 0x233f4,
2819 	.halt_check = BRANCH_HALT_VOTED,
2820 	.hwcg_reg = 0x233f4,
2821 	.hwcg_bit = 1,
2822 	.clkr = {
2823 		.enable_reg = 0x52018,
2824 		.enable_mask = BIT(9),
2825 		.hw.init = &(const struct clk_init_data) {
2826 			.name = "gcc_qupv3_wrap_3_s_ahb_clk",
2827 			.ops = &clk_branch2_ops,
2828 		},
2829 	},
2830 };
2831 
2832 static struct clk_branch gcc_qupv3_wrap_4_m_ahb_clk = {
2833 	.halt_reg = 0x23548,
2834 	.halt_check = BRANCH_HALT_VOTED,
2835 	.hwcg_reg = 0x23548,
2836 	.hwcg_bit = 1,
2837 	.clkr = {
2838 		.enable_reg = 0x52018,
2839 		.enable_mask = BIT(22),
2840 		.hw.init = &(const struct clk_init_data) {
2841 			.name = "gcc_qupv3_wrap_4_m_ahb_clk",
2842 			.ops = &clk_branch2_ops,
2843 		},
2844 	},
2845 };
2846 
2847 static struct clk_branch gcc_qupv3_wrap_4_s_ahb_clk = {
2848 	.halt_reg = 0x2354c,
2849 	.halt_check = BRANCH_HALT_VOTED,
2850 	.hwcg_reg = 0x2354c,
2851 	.hwcg_bit = 1,
2852 	.clkr = {
2853 		.enable_reg = 0x52018,
2854 		.enable_mask = BIT(23),
2855 		.hw.init = &(const struct clk_init_data) {
2856 			.name = "gcc_qupv3_wrap_4_s_ahb_clk",
2857 			.ops = &clk_branch2_ops,
2858 		},
2859 	},
2860 };
2861 
2862 static struct clk_branch gcc_sdcc2_ahb_clk = {
2863 	.halt_reg = 0x14014,
2864 	.halt_check = BRANCH_HALT,
2865 	.clkr = {
2866 		.enable_reg = 0x14014,
2867 		.enable_mask = BIT(0),
2868 		.hw.init = &(const struct clk_init_data) {
2869 			.name = "gcc_sdcc2_ahb_clk",
2870 			.ops = &clk_branch2_ops,
2871 		},
2872 	},
2873 };
2874 
2875 static struct clk_branch gcc_sdcc2_apps_clk = {
2876 	.halt_reg = 0x14004,
2877 	.halt_check = BRANCH_HALT,
2878 	.clkr = {
2879 		.enable_reg = 0x14004,
2880 		.enable_mask = BIT(0),
2881 		.hw.init = &(const struct clk_init_data) {
2882 			.name = "gcc_sdcc2_apps_clk",
2883 			.parent_hws = (const struct clk_hw*[]) {
2884 				&gcc_sdcc2_apps_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_sdcc4_ahb_clk = {
2894 	.halt_reg = 0x16014,
2895 	.halt_check = BRANCH_HALT,
2896 	.clkr = {
2897 		.enable_reg = 0x16014,
2898 		.enable_mask = BIT(0),
2899 		.hw.init = &(const struct clk_init_data) {
2900 			.name = "gcc_sdcc4_ahb_clk",
2901 			.ops = &clk_branch2_ops,
2902 		},
2903 	},
2904 };
2905 
2906 static struct clk_branch gcc_sdcc4_apps_clk = {
2907 	.halt_reg = 0x16004,
2908 	.halt_check = BRANCH_HALT,
2909 	.clkr = {
2910 		.enable_reg = 0x16004,
2911 		.enable_mask = BIT(0),
2912 		.hw.init = &(const struct clk_init_data) {
2913 			.name = "gcc_sdcc4_apps_clk",
2914 			.parent_hws = (const struct clk_hw*[]) {
2915 				&gcc_sdcc4_apps_clk_src.clkr.hw,
2916 			},
2917 			.num_parents = 1,
2918 			.flags = CLK_SET_RATE_PARENT,
2919 			.ops = &clk_branch2_ops,
2920 		},
2921 	},
2922 };
2923 
2924 static struct clk_branch gcc_ufs_phy_ahb_clk = {
2925 	.halt_reg = 0x77028,
2926 	.halt_check = BRANCH_HALT_VOTED,
2927 	.hwcg_reg = 0x77028,
2928 	.hwcg_bit = 1,
2929 	.clkr = {
2930 		.enable_reg = 0x77028,
2931 		.enable_mask = BIT(0),
2932 		.hw.init = &(const struct clk_init_data) {
2933 			.name = "gcc_ufs_phy_ahb_clk",
2934 			.ops = &clk_branch2_ops,
2935 		},
2936 	},
2937 };
2938 
2939 static struct clk_branch gcc_ufs_phy_axi_clk = {
2940 	.halt_reg = 0x77018,
2941 	.halt_check = BRANCH_HALT_VOTED,
2942 	.hwcg_reg = 0x77018,
2943 	.hwcg_bit = 1,
2944 	.clkr = {
2945 		.enable_reg = 0x77018,
2946 		.enable_mask = BIT(0),
2947 		.hw.init = &(const struct clk_init_data) {
2948 			.name = "gcc_ufs_phy_axi_clk",
2949 			.parent_hws = (const struct clk_hw*[]) {
2950 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
2951 			},
2952 			.num_parents = 1,
2953 			.flags = CLK_SET_RATE_PARENT,
2954 			.ops = &clk_branch2_ops,
2955 		},
2956 	},
2957 };
2958 
2959 static struct clk_branch gcc_ufs_phy_ice_core_clk = {
2960 	.halt_reg = 0x7707c,
2961 	.halt_check = BRANCH_HALT_VOTED,
2962 	.hwcg_reg = 0x7707c,
2963 	.hwcg_bit = 1,
2964 	.clkr = {
2965 		.enable_reg = 0x7707c,
2966 		.enable_mask = BIT(0),
2967 		.hw.init = &(const struct clk_init_data) {
2968 			.name = "gcc_ufs_phy_ice_core_clk",
2969 			.parent_hws = (const struct clk_hw*[]) {
2970 				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,
2971 			},
2972 			.num_parents = 1,
2973 			.flags = CLK_SET_RATE_PARENT,
2974 			.ops = &clk_branch2_ops,
2975 		},
2976 	},
2977 };
2978 
2979 static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
2980 	.halt_reg = 0x770bc,
2981 	.halt_check = BRANCH_HALT_VOTED,
2982 	.hwcg_reg = 0x770bc,
2983 	.hwcg_bit = 1,
2984 	.clkr = {
2985 		.enable_reg = 0x770bc,
2986 		.enable_mask = BIT(0),
2987 		.hw.init = &(const struct clk_init_data) {
2988 			.name = "gcc_ufs_phy_phy_aux_clk",
2989 			.parent_hws = (const struct clk_hw*[]) {
2990 				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2991 			},
2992 			.num_parents = 1,
2993 			.flags = CLK_SET_RATE_PARENT,
2994 			.ops = &clk_branch2_ops,
2995 		},
2996 	},
2997 };
2998 
2999 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
3000 	.halt_reg = 0x77030,
3001 	.halt_check = BRANCH_HALT_DELAY,
3002 	.clkr = {
3003 		.enable_reg = 0x77030,
3004 		.enable_mask = BIT(0),
3005 		.hw.init = &(const struct clk_init_data) {
3006 			.name = "gcc_ufs_phy_rx_symbol_0_clk",
3007 			.parent_hws = (const struct clk_hw*[]) {
3008 				&gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,
3009 			},
3010 			.num_parents = 1,
3011 			.flags = CLK_SET_RATE_PARENT,
3012 			.ops = &clk_branch2_ops,
3013 		},
3014 	},
3015 };
3016 
3017 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
3018 	.halt_reg = 0x770d8,
3019 	.halt_check = BRANCH_HALT_DELAY,
3020 	.clkr = {
3021 		.enable_reg = 0x770d8,
3022 		.enable_mask = BIT(0),
3023 		.hw.init = &(const struct clk_init_data) {
3024 			.name = "gcc_ufs_phy_rx_symbol_1_clk",
3025 			.parent_hws = (const struct clk_hw*[]) {
3026 				&gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,
3027 			},
3028 			.num_parents = 1,
3029 			.flags = CLK_SET_RATE_PARENT,
3030 			.ops = &clk_branch2_ops,
3031 		},
3032 	},
3033 };
3034 
3035 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
3036 	.halt_reg = 0x7702c,
3037 	.halt_check = BRANCH_HALT_DELAY,
3038 	.clkr = {
3039 		.enable_reg = 0x7702c,
3040 		.enable_mask = BIT(0),
3041 		.hw.init = &(const struct clk_init_data) {
3042 			.name = "gcc_ufs_phy_tx_symbol_0_clk",
3043 			.parent_hws = (const struct clk_hw*[]) {
3044 				&gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,
3045 			},
3046 			.num_parents = 1,
3047 			.flags = CLK_SET_RATE_PARENT,
3048 			.ops = &clk_branch2_ops,
3049 		},
3050 	},
3051 };
3052 
3053 static struct clk_branch gcc_ufs_phy_unipro_5_core_clk = {
3054 	.halt_reg = 0x7706c,
3055 	.halt_check = BRANCH_HALT_VOTED,
3056 	.hwcg_reg = 0x7706c,
3057 	.hwcg_bit = 1,
3058 	.clkr = {
3059 		.enable_reg = 0x7706c,
3060 		.enable_mask = BIT(0),
3061 		.hw.init = &(const struct clk_init_data) {
3062 			.name = "gcc_ufs_phy_unipro_5_core_clk",
3063 			.parent_hws = (const struct clk_hw*[]) {
3064 				&gcc_ufs_phy_unipro_5_core_clk_src.clkr.hw,
3065 			},
3066 			.num_parents = 1,
3067 			.flags = CLK_SET_RATE_PARENT,
3068 			.ops = &clk_branch2_ops,
3069 		},
3070 	},
3071 };
3072 
3073 static struct clk_branch gcc_usb30_prim_master_clk = {
3074 	.halt_reg = 0x39018,
3075 	.halt_check = BRANCH_HALT,
3076 	.clkr = {
3077 		.enable_reg = 0x39018,
3078 		.enable_mask = BIT(0),
3079 		.hw.init = &(const struct clk_init_data) {
3080 			.name = "gcc_usb30_prim_master_clk",
3081 			.parent_hws = (const struct clk_hw*[]) {
3082 				&gcc_usb30_prim_master_clk_src.clkr.hw,
3083 			},
3084 			.num_parents = 1,
3085 			.flags = CLK_SET_RATE_PARENT,
3086 			.ops = &clk_branch2_ops,
3087 		},
3088 	},
3089 };
3090 
3091 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
3092 	.halt_reg = 0x3902c,
3093 	.halt_check = BRANCH_HALT,
3094 	.clkr = {
3095 		.enable_reg = 0x3902c,
3096 		.enable_mask = BIT(0),
3097 		.hw.init = &(const struct clk_init_data) {
3098 			.name = "gcc_usb30_prim_mock_utmi_clk",
3099 			.parent_hws = (const struct clk_hw*[]) {
3100 				&gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
3101 			},
3102 			.num_parents = 1,
3103 			.flags = CLK_SET_RATE_PARENT,
3104 			.ops = &clk_branch2_ops,
3105 		},
3106 	},
3107 };
3108 
3109 static struct clk_branch gcc_usb30_prim_sleep_clk = {
3110 	.halt_reg = 0x39028,
3111 	.halt_check = BRANCH_HALT,
3112 	.clkr = {
3113 		.enable_reg = 0x39028,
3114 		.enable_mask = BIT(0),
3115 		.hw.init = &(const struct clk_init_data) {
3116 			.name = "gcc_usb30_prim_sleep_clk",
3117 			.ops = &clk_branch2_ops,
3118 		},
3119 	},
3120 };
3121 
3122 static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
3123 	.halt_reg = 0x39068,
3124 	.halt_check = BRANCH_HALT,
3125 	.clkr = {
3126 		.enable_reg = 0x39068,
3127 		.enable_mask = BIT(0),
3128 		.hw.init = &(const struct clk_init_data) {
3129 			.name = "gcc_usb3_prim_phy_aux_clk",
3130 			.parent_hws = (const struct clk_hw*[]) {
3131 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3132 			},
3133 			.num_parents = 1,
3134 			.flags = CLK_SET_RATE_PARENT,
3135 			.ops = &clk_branch2_ops,
3136 		},
3137 	},
3138 };
3139 
3140 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
3141 	.halt_reg = 0x3906c,
3142 	.halt_check = BRANCH_HALT,
3143 	.clkr = {
3144 		.enable_reg = 0x3906c,
3145 		.enable_mask = BIT(0),
3146 		.hw.init = &(const struct clk_init_data) {
3147 			.name = "gcc_usb3_prim_phy_com_aux_clk",
3148 			.parent_hws = (const struct clk_hw*[]) {
3149 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3150 			},
3151 			.num_parents = 1,
3152 			.flags = CLK_SET_RATE_PARENT,
3153 			.ops = &clk_branch2_ops,
3154 		},
3155 	},
3156 };
3157 
3158 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
3159 	.halt_reg = 0x39070,
3160 	.halt_check = BRANCH_HALT_DELAY,
3161 	.hwcg_reg = 0x39070,
3162 	.hwcg_bit = 1,
3163 	.clkr = {
3164 		.enable_reg = 0x39070,
3165 		.enable_mask = BIT(0),
3166 		.hw.init = &(const struct clk_init_data) {
3167 			.name = "gcc_usb3_prim_phy_pipe_clk",
3168 			.parent_hws = (const struct clk_hw*[]) {
3169 				&gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,
3170 			},
3171 			.num_parents = 1,
3172 			.flags = CLK_SET_RATE_PARENT,
3173 			.ops = &clk_branch2_ops,
3174 		},
3175 	},
3176 };
3177 
3178 static struct clk_branch gcc_video_axi0_clk = {
3179 	.halt_reg = 0x32018,
3180 	.halt_check = BRANCH_HALT_SKIP,
3181 	.hwcg_reg = 0x32018,
3182 	.hwcg_bit = 1,
3183 	.clkr = {
3184 		.enable_reg = 0x32018,
3185 		.enable_mask = BIT(0),
3186 		.hw.init = &(const struct clk_init_data) {
3187 			.name = "gcc_video_axi0_clk",
3188 			.ops = &clk_branch2_ops,
3189 		},
3190 	},
3191 };
3192 
3193 static struct clk_branch gcc_video_axi0c_clk = {
3194 	.halt_reg = 0x32020,
3195 	.halt_check = BRANCH_HALT_SKIP,
3196 	.hwcg_reg = 0x32020,
3197 	.hwcg_bit = 1,
3198 	.clkr = {
3199 		.enable_reg = 0x32020,
3200 		.enable_mask = BIT(0),
3201 		.hw.init = &(const struct clk_init_data) {
3202 			.name = "gcc_video_axi0c_clk",
3203 			.ops = &clk_branch2_ops,
3204 		},
3205 	},
3206 };
3207 
3208 static struct gdsc gcc_pcie_0_gdsc = {
3209 	.gdscr = 0x6b004,
3210 	.en_rest_wait_val = 0x2,
3211 	.en_few_wait_val = 0x2,
3212 	.clk_dis_wait_val = 0xf,
3213 	.collapse_ctrl = 0x52154,
3214 	.collapse_mask = BIT(0),
3215 	.pd = {
3216 		.name = "gcc_pcie_0_gdsc",
3217 	},
3218 	.pwrsts = PWRSTS_OFF_ON,
3219 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
3220 };
3221 
3222 static struct gdsc gcc_pcie_0_phy_gdsc = {
3223 	.gdscr = 0x6c000,
3224 	.en_rest_wait_val = 0x2,
3225 	.en_few_wait_val = 0x2,
3226 	.clk_dis_wait_val = 0x2,
3227 	.collapse_ctrl = 0x52154,
3228 	.collapse_mask = BIT(1),
3229 	.pd = {
3230 		.name = "gcc_pcie_0_phy_gdsc",
3231 	},
3232 	.pwrsts = PWRSTS_OFF_ON,
3233 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
3234 };
3235 
3236 static struct gdsc gcc_pcie_1_gdsc = {
3237 	.gdscr = 0x67004,
3238 	.en_rest_wait_val = 0x2,
3239 	.en_few_wait_val = 0x2,
3240 	.clk_dis_wait_val = 0xf,
3241 	.collapse_ctrl = 0x5214c,
3242 	.collapse_mask = BIT(2),
3243 	.pd = {
3244 		.name = "gcc_pcie_1_gdsc",
3245 	},
3246 	.pwrsts = PWRSTS_OFF_ON,
3247 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
3248 };
3249 
3250 static struct gdsc gcc_pcie_1_phy_gdsc = {
3251 	.gdscr = 0x68000,
3252 	.en_rest_wait_val = 0x2,
3253 	.en_few_wait_val = 0x2,
3254 	.clk_dis_wait_val = 0x2,
3255 	.collapse_ctrl = 0x5214c,
3256 	.collapse_mask = BIT(3),
3257 	.pd = {
3258 		.name = "gcc_pcie_1_phy_gdsc",
3259 	},
3260 	.pwrsts = PWRSTS_OFF_ON,
3261 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE | VOTABLE,
3262 };
3263 
3264 static struct gdsc gcc_ufs_mem_phy_gdsc = {
3265 	.gdscr = 0x9e000,
3266 	.en_rest_wait_val = 0x2,
3267 	.en_few_wait_val = 0x2,
3268 	.clk_dis_wait_val = 0x2,
3269 	.pd = {
3270 		.name = "gcc_ufs_mem_phy_gdsc",
3271 	},
3272 	.pwrsts = PWRSTS_OFF_ON,
3273 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3274 };
3275 
3276 static struct gdsc gcc_ufs_phy_gdsc = {
3277 	.gdscr = 0x77004,
3278 	.en_rest_wait_val = 0x2,
3279 	.en_few_wait_val = 0x2,
3280 	.clk_dis_wait_val = 0xf,
3281 	.pd = {
3282 		.name = "gcc_ufs_phy_gdsc",
3283 	},
3284 	.pwrsts = PWRSTS_OFF_ON,
3285 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3286 };
3287 
3288 static struct gdsc gcc_usb30_prim_gdsc = {
3289 	.gdscr = 0x39004,
3290 	.en_rest_wait_val = 0x2,
3291 	.en_few_wait_val = 0x2,
3292 	.clk_dis_wait_val = 0xf,
3293 	.pd = {
3294 		.name = "gcc_usb30_prim_gdsc",
3295 	},
3296 	.pwrsts = PWRSTS_OFF_ON,
3297 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3298 };
3299 
3300 static struct gdsc gcc_usb3_phy_gdsc = {
3301 	.gdscr = 0x50018,
3302 	.en_rest_wait_val = 0x2,
3303 	.en_few_wait_val = 0x2,
3304 	.clk_dis_wait_val = 0x2,
3305 	.pd = {
3306 		.name = "gcc_usb3_phy_gdsc",
3307 	},
3308 	.pwrsts = PWRSTS_OFF_ON,
3309 	.flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE,
3310 };
3311 
3312 static struct clk_regmap *gcc_hawi_clocks[] = {
3313 	[GCC_AGGRE_NOC_PCIE_AXI_CLK] = &gcc_aggre_noc_pcie_axi_clk.clkr,
3314 	[GCC_AGGRE_STARDUSTNOC_USB3_PRIM_AXI_CLK] = &gcc_aggre_stardustnoc_usb3_prim_axi_clk.clkr,
3315 	[GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
3316 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3317 	[GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
3318 	[GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
3319 	[GCC_CFG_NOC_PCIE_ANOC_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_ahb_clk.clkr,
3320 	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3321 	[GCC_CNOC_PCIE_SF_AXI_CLK] = &gcc_cnoc_pcie_sf_axi_clk.clkr,
3322 	[GCC_EVA_AXI0_CLK] = &gcc_eva_axi0_clk.clkr,
3323 	[GCC_EVA_AXI0C_CLK] = &gcc_eva_axi0c_clk.clkr,
3324 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3325 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3326 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3327 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3328 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3329 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3330 	[GCC_GPLL0] = &gcc_gpll0.clkr,
3331 	[GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,
3332 	[GCC_GPLL4] = &gcc_gpll4.clkr,
3333 	[GCC_GPLL5] = &gcc_gpll5.clkr,
3334 	[GCC_GPLL7] = &gcc_gpll7.clkr,
3335 	[GCC_GPLL9] = &gcc_gpll9.clkr,
3336 	[GCC_GPU_GEMNOC_GFX_CLK] = &gcc_gpu_gemnoc_gfx_clk.clkr,
3337 	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3338 	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3339 	[GCC_GPU_SMMU_VOTE_CLK] = &gcc_gpu_smmu_vote_clk.clkr,
3340 	[GCC_MMU_TCU_VOTE_CLK] = &gcc_mmu_tcu_vote_clk.clkr,
3341 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
3342 	[GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
3343 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
3344 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
3345 	[GCC_PCIE_0_PHY_AUX_CLK] = &gcc_pcie_0_phy_aux_clk.clkr,
3346 	[GCC_PCIE_0_PHY_AUX_CLK_SRC] = &gcc_pcie_0_phy_aux_clk_src.clkr,
3347 	[GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr,
3348 	[GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,
3349 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3350 	[GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr,
3351 	[GCC_PCIE_0_PIPE_DIV2_CLK] = &gcc_pcie_0_pipe_div2_clk.clkr,
3352 	[GCC_PCIE_0_PIPE_DIV_CLK_SRC] = &gcc_pcie_0_pipe_div_clk_src.clkr,
3353 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3354 	[GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
3355 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3356 	[GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
3357 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3358 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3359 	[GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr,
3360 	[GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr,
3361 	[GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr,
3362 	[GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,
3363 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3364 	[GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr,
3365 	[GCC_PCIE_1_PIPE_DIV2_CLK] = &gcc_pcie_1_pipe_div2_clk.clkr,
3366 	[GCC_PCIE_1_PIPE_DIV_CLK_SRC] = &gcc_pcie_1_pipe_div_clk_src.clkr,
3367 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3368 	[GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
3369 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3370 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3371 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3372 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3373 	[GCC_QUPV3_I2C_CORE_CLK] = &gcc_qupv3_i2c_core_clk.clkr,
3374 	[GCC_QUPV3_I2C_S0_CLK] = &gcc_qupv3_i2c_s0_clk.clkr,
3375 	[GCC_QUPV3_I2C_S0_CLK_SRC] = &gcc_qupv3_i2c_s0_clk_src.clkr,
3376 	[GCC_QUPV3_I2C_S1_CLK] = &gcc_qupv3_i2c_s1_clk.clkr,
3377 	[GCC_QUPV3_I2C_S1_CLK_SRC] = &gcc_qupv3_i2c_s1_clk_src.clkr,
3378 	[GCC_QUPV3_I2C_S2_CLK] = &gcc_qupv3_i2c_s2_clk.clkr,
3379 	[GCC_QUPV3_I2C_S2_CLK_SRC] = &gcc_qupv3_i2c_s2_clk_src.clkr,
3380 	[GCC_QUPV3_I2C_S3_CLK] = &gcc_qupv3_i2c_s3_clk.clkr,
3381 	[GCC_QUPV3_I2C_S3_CLK_SRC] = &gcc_qupv3_i2c_s3_clk_src.clkr,
3382 	[GCC_QUPV3_I2C_S4_CLK] = &gcc_qupv3_i2c_s4_clk.clkr,
3383 	[GCC_QUPV3_I2C_S4_CLK_SRC] = &gcc_qupv3_i2c_s4_clk_src.clkr,
3384 	[GCC_QUPV3_I2C_S_AHB_CLK] = &gcc_qupv3_i2c_s_ahb_clk.clkr,
3385 	[GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
3386 	[GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
3387 	[GCC_QUPV3_WRAP1_QSPI_REF_CLK] = &gcc_qupv3_wrap1_qspi_ref_clk.clkr,
3388 	[GCC_QUPV3_WRAP1_QSPI_REF_CLK_SRC] = &gcc_qupv3_wrap1_qspi_ref_clk_src.clkr,
3389 	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
3390 	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
3391 	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
3392 	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
3393 	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
3394 	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
3395 	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
3396 	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
3397 	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
3398 	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
3399 	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
3400 	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
3401 	[GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
3402 	[GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
3403 	[GCC_QUPV3_WRAP1_S7_CLK] = &gcc_qupv3_wrap1_s7_clk.clkr,
3404 	[GCC_QUPV3_WRAP1_S7_CLK_SRC] = &gcc_qupv3_wrap1_s7_clk_src.clkr,
3405 	[GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,
3406 	[GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,
3407 	[GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
3408 	[GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
3409 	[GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
3410 	[GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
3411 	[GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
3412 	[GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
3413 	[GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
3414 	[GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
3415 	[GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
3416 	[GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
3417 	[GCC_QUPV3_WRAP3_CORE_2X_CLK] = &gcc_qupv3_wrap3_core_2x_clk.clkr,
3418 	[GCC_QUPV3_WRAP3_CORE_CLK] = &gcc_qupv3_wrap3_core_clk.clkr,
3419 	[GCC_QUPV3_WRAP3_QSPI_REF_CLK] = &gcc_qupv3_wrap3_qspi_ref_clk.clkr,
3420 	[GCC_QUPV3_WRAP3_QSPI_REF_CLK_SRC] = &gcc_qupv3_wrap3_qspi_ref_clk_src.clkr,
3421 	[GCC_QUPV3_WRAP3_S0_CLK] = &gcc_qupv3_wrap3_s0_clk.clkr,
3422 	[GCC_QUPV3_WRAP3_S0_CLK_SRC] = &gcc_qupv3_wrap3_s0_clk_src.clkr,
3423 	[GCC_QUPV3_WRAP3_S1_CLK] = &gcc_qupv3_wrap3_s1_clk.clkr,
3424 	[GCC_QUPV3_WRAP3_S1_CLK_SRC] = &gcc_qupv3_wrap3_s1_clk_src.clkr,
3425 	[GCC_QUPV3_WRAP3_S2_CLK] = &gcc_qupv3_wrap3_s2_clk.clkr,
3426 	[GCC_QUPV3_WRAP3_S2_CLK_SRC] = &gcc_qupv3_wrap3_s2_clk_src.clkr,
3427 	[GCC_QUPV3_WRAP3_S3_CLK] = &gcc_qupv3_wrap3_s3_clk.clkr,
3428 	[GCC_QUPV3_WRAP3_S3_CLK_SRC] = &gcc_qupv3_wrap3_s3_clk_src.clkr,
3429 	[GCC_QUPV3_WRAP3_S4_CLK] = &gcc_qupv3_wrap3_s4_clk.clkr,
3430 	[GCC_QUPV3_WRAP3_S4_CLK_SRC] = &gcc_qupv3_wrap3_s4_clk_src.clkr,
3431 	[GCC_QUPV3_WRAP3_S5_CLK] = &gcc_qupv3_wrap3_s5_clk.clkr,
3432 	[GCC_QUPV3_WRAP3_S5_CLK_SRC] = &gcc_qupv3_wrap3_s5_clk_src.clkr,
3433 	[GCC_QUPV3_WRAP4_CORE_2X_CLK] = &gcc_qupv3_wrap4_core_2x_clk.clkr,
3434 	[GCC_QUPV3_WRAP4_CORE_CLK] = &gcc_qupv3_wrap4_core_clk.clkr,
3435 	[GCC_QUPV3_WRAP4_S0_CLK] = &gcc_qupv3_wrap4_s0_clk.clkr,
3436 	[GCC_QUPV3_WRAP4_S0_CLK_SRC] = &gcc_qupv3_wrap4_s0_clk_src.clkr,
3437 	[GCC_QUPV3_WRAP4_S1_CLK] = &gcc_qupv3_wrap4_s1_clk.clkr,
3438 	[GCC_QUPV3_WRAP4_S1_CLK_SRC] = &gcc_qupv3_wrap4_s1_clk_src.clkr,
3439 	[GCC_QUPV3_WRAP4_S2_CLK] = &gcc_qupv3_wrap4_s2_clk.clkr,
3440 	[GCC_QUPV3_WRAP4_S2_CLK_SRC] = &gcc_qupv3_wrap4_s2_clk_src.clkr,
3441 	[GCC_QUPV3_WRAP4_S3_CLK] = &gcc_qupv3_wrap4_s3_clk.clkr,
3442 	[GCC_QUPV3_WRAP4_S3_CLK_SRC] = &gcc_qupv3_wrap4_s3_clk_src.clkr,
3443 	[GCC_QUPV3_WRAP4_S4_CLK] = &gcc_qupv3_wrap4_s4_clk.clkr,
3444 	[GCC_QUPV3_WRAP4_S4_CLK_SRC] = &gcc_qupv3_wrap4_s4_clk_src.clkr,
3445 	[GCC_QUPV3_WRAP_1_M_AXI_CLK] = &gcc_qupv3_wrap_1_m_axi_clk.clkr,
3446 	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
3447 	[GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
3448 	[GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
3449 	[GCC_QUPV3_WRAP_3_M_AHB_CLK] = &gcc_qupv3_wrap_3_m_ahb_clk.clkr,
3450 	[GCC_QUPV3_WRAP_3_S_AHB_CLK] = &gcc_qupv3_wrap_3_s_ahb_clk.clkr,
3451 	[GCC_QUPV3_WRAP_4_M_AHB_CLK] = &gcc_qupv3_wrap_4_m_ahb_clk.clkr,
3452 	[GCC_QUPV3_WRAP_4_S_AHB_CLK] = &gcc_qupv3_wrap_4_s_ahb_clk.clkr,
3453 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3454 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3455 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
3456 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3457 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
3458 	[GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
3459 	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3460 	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3461 	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3462 	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3463 	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3464 	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3465 	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3466 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3467 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,
3468 	[GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
3469 	[GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,
3470 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3471 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,
3472 	[GCC_UFS_PHY_UNIPRO_5_CORE_CLK] = &gcc_ufs_phy_unipro_5_core_clk.clkr,
3473 	[GCC_UFS_PHY_UNIPRO_5_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_5_core_clk_src.clkr,
3474 	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3475 	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3476 	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3477 	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
3478 	[GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
3479 	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3480 	[GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
3481 	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3482 	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3483 	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3484 	[GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,
3485 	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
3486 	[GCC_VIDEO_AXI0C_CLK] = &gcc_video_axi0c_clk.clkr,
3487 };
3488 
3489 static struct gdsc *gcc_hawi_gdscs[] = {
3490 	[GCC_PCIE_0_GDSC] = &gcc_pcie_0_gdsc,
3491 	[GCC_PCIE_0_PHY_GDSC] = &gcc_pcie_0_phy_gdsc,
3492 	[GCC_PCIE_1_GDSC] = &gcc_pcie_1_gdsc,
3493 	[GCC_PCIE_1_PHY_GDSC] = &gcc_pcie_1_phy_gdsc,
3494 	[GCC_UFS_MEM_PHY_GDSC] = &gcc_ufs_mem_phy_gdsc,
3495 	[GCC_UFS_PHY_GDSC] = &gcc_ufs_phy_gdsc,
3496 	[GCC_USB30_PRIM_GDSC] = &gcc_usb30_prim_gdsc,
3497 	[GCC_USB3_PHY_GDSC] = &gcc_usb3_phy_gdsc,
3498 };
3499 
3500 static const struct qcom_reset_map gcc_hawi_resets[] = {
3501 	[GCC_CAMERA_BCR] = { 0x26000 },
3502 	[GCC_EVA_AXI0_CLK_ARES] = { 0x9f008, 2 },
3503 	[GCC_EVA_AXI0C_CLK_ARES] = { 0x9f010, 2 },
3504 	[GCC_EVA_BCR] = { 0x9f000 },
3505 	[GCC_GPU_BCR] = { 0x71000 },
3506 	[GCC_PCIE_0_BCR] = { 0x6b000 },
3507 	[GCC_PCIE_0_LINK_DOWN_BCR] = { 0x6c014 },
3508 	[GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x6c020 },
3509 	[GCC_PCIE_0_PHY_BCR] = { 0x6c01c },
3510 	[GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x6c028 },
3511 	[GCC_PCIE_1_BCR] = { 0x67000 },
3512 	[GCC_PCIE_1_LINK_DOWN_BCR] = { 0x8e014 },
3513 	[GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x8e020 },
3514 	[GCC_PCIE_1_PHY_BCR] = { 0x8e01c },
3515 	[GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x8e024 },
3516 	[GCC_PCIE_PHY_BCR] = { 0x6f000 },
3517 	[GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x6f00c },
3518 	[GCC_PCIE_PHY_COM_BCR] = { 0x6f010 },
3519 	[GCC_PCIE_RSCC_BCR] = { 0x11000 },
3520 	[GCC_PDM_BCR] = { 0x33000 },
3521 	[GCC_QUPV3_WRAPPER_1_BCR] = { 0x18000 },
3522 	[GCC_QUPV3_WRAPPER_2_BCR] = { 0x1e000 },
3523 	[GCC_QUPV3_WRAPPER_3_BCR] = { 0xa8000 },
3524 	[GCC_QUPV3_WRAPPER_4_BCR] = { 0xa9000 },
3525 	[GCC_QUPV3_WRAPPER_I2C_BCR] = { 0x17000 },
3526 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x12000 },
3527 	[GCC_QUSB2PHY_SEC_BCR] = { 0x12004 },
3528 	[GCC_SDCC2_BCR] = { 0x14000 },
3529 	[GCC_SDCC4_BCR] = { 0x16000 },
3530 	[GCC_TCSR_PCIE_BCR] = { 0x6f018 },
3531 	[GCC_UFS_PHY_BCR] = { 0x77000 },
3532 	[GCC_USB30_PRIM_BCR] = { 0x39000 },
3533 	[GCC_USB3_DP_PHY_PRIM_BCR] = { 0x50008 },
3534 	[GCC_USB3_DP_PHY_SEC_BCR] = { 0x50014 },
3535 	[GCC_USB3_PHY_PRIM_BCR] = { 0x50000 },
3536 	[GCC_USB3_PHY_SEC_BCR] = { 0x5000c },
3537 	[GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 },
3538 	[GCC_USB3PHY_PHY_SEC_BCR] = { 0x50010 },
3539 	[GCC_VIDEO_AXI0_CLK_ARES] = { 0x32018, 2 },
3540 	[GCC_VIDEO_AXI0C_CLK_ARES] = { 0x32020, 2 },
3541 	[GCC_VIDEO_BCR] = { 0x32000 },
3542 	[GCC_VIDEO_XO_CLK_ARES] = { 0x32028, 2 },
3543 };
3544 
3545 static const u32 gcc_hawi_critical_cbcrs[] = {
3546 	0xa0004, /* GCC_CAM_BIST_MCLK_AHB_CLK */
3547 	0x26004, /* GCC_CAMERA_AHB_CLK */
3548 	0x26028, /* GCC_CAMERA_RSC_CORE_CLK */
3549 	0x26024, /* GCC_CAMERA_XO_CLK */
3550 	0x9f004, /* GCC_EVA_AHB_CLK */
3551 	0x9f018, /* GCC_EVA_XO_CLK */
3552 	0x71004, /* GCC_GPU_CFG_AHB_CLK */
3553 	0x7101c, /* GCC_GPU_RSC_CORE_CLK */
3554 	0x67084, /* GCC_PCIE_1_RSC_CORE_CLK */
3555 	0x43014, /* GCC_PCIE_LINK_XO_CLK */
3556 	0x6b088, /* GCC_PCIE_RSC_CORE_CLK */
3557 	0x52010, /* GCC_PCIE_RSCC_CFG_AHB_CLK */
3558 	0x52010, /* GCC_PCIE_RSCC_XO_CLK */
3559 	0x32004, /* GCC_VIDEO_AHB_CLK */
3560 	0x32028, /* GCC_VIDEO_XO_CLK */
3561 };
3562 
3563 static const struct clk_rcg_dfs_data gcc_hawi_dfs_clocks[] = {
3564 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_qspi_ref_clk_src),
3565 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
3566 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
3567 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
3568 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
3569 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
3570 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),
3571 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s7_clk_src),
3572 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),
3573 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),
3574 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),
3575 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),
3576 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),
3577 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_qspi_ref_clk_src),
3578 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_s0_clk_src),
3579 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_s2_clk_src),
3580 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_s3_clk_src),
3581 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_s4_clk_src),
3582 	DEFINE_RCG_DFS(gcc_qupv3_wrap3_s5_clk_src),
3583 	DEFINE_RCG_DFS(gcc_qupv3_wrap4_s0_clk_src),
3584 	DEFINE_RCG_DFS(gcc_qupv3_wrap4_s1_clk_src),
3585 	DEFINE_RCG_DFS(gcc_qupv3_wrap4_s2_clk_src),
3586 	DEFINE_RCG_DFS(gcc_qupv3_wrap4_s3_clk_src),
3587 	DEFINE_RCG_DFS(gcc_qupv3_wrap4_s4_clk_src),
3588 };
3589 
3590 static const struct regmap_config gcc_hawi_regmap_config = {
3591 	.reg_bits = 32,
3592 	.reg_stride = 4,
3593 	.val_bits = 32,
3594 	.max_register = 0x1f41f4,
3595 	.fast_io = true,
3596 };
3597 
3598 static void clk_hawi_regs_configure(struct device *dev, struct regmap *regmap)
3599 {
3600 	/* FORCE_MEM_CORE_ON for ufs phy ice core clocks */
3601 	qcom_branch_set_force_mem_core(regmap, gcc_ufs_phy_ice_core_clk, true);
3602 }
3603 
3604 static const struct qcom_cc_driver_data gcc_hawi_driver_data = {
3605 	.clk_cbcrs = gcc_hawi_critical_cbcrs,
3606 	.num_clk_cbcrs = ARRAY_SIZE(gcc_hawi_critical_cbcrs),
3607 	.dfs_rcgs = gcc_hawi_dfs_clocks,
3608 	.num_dfs_rcgs = ARRAY_SIZE(gcc_hawi_dfs_clocks),
3609 	.clk_regs_configure = clk_hawi_regs_configure,
3610 };
3611 
3612 static const struct qcom_cc_desc gcc_hawi_desc = {
3613 	.config = &gcc_hawi_regmap_config,
3614 	.clks = gcc_hawi_clocks,
3615 	.num_clks = ARRAY_SIZE(gcc_hawi_clocks),
3616 	.resets = gcc_hawi_resets,
3617 	.num_resets = ARRAY_SIZE(gcc_hawi_resets),
3618 	.gdscs = gcc_hawi_gdscs,
3619 	.num_gdscs = ARRAY_SIZE(gcc_hawi_gdscs),
3620 	.use_rpm = true,
3621 	.driver_data = &gcc_hawi_driver_data,
3622 };
3623 
3624 static const struct of_device_id gcc_hawi_match_table[] = {
3625 	{ .compatible = "qcom,hawi-gcc" },
3626 	{ }
3627 };
3628 MODULE_DEVICE_TABLE(of, gcc_hawi_match_table);
3629 
3630 static int gcc_hawi_probe(struct platform_device *pdev)
3631 {
3632 	return qcom_cc_probe(pdev, &gcc_hawi_desc);
3633 }
3634 
3635 static struct platform_driver gcc_hawi_driver = {
3636 	.probe = gcc_hawi_probe,
3637 	.driver = {
3638 		.name = "gcc-hawi",
3639 		.of_match_table = gcc_hawi_match_table,
3640 	},
3641 };
3642 
3643 static int __init gcc_hawi_init(void)
3644 {
3645 	return platform_driver_register(&gcc_hawi_driver);
3646 }
3647 subsys_initcall(gcc_hawi_init);
3648 
3649 static void __exit gcc_hawi_exit(void)
3650 {
3651 	platform_driver_unregister(&gcc_hawi_driver);
3652 }
3653 module_exit(gcc_hawi_exit);
3654 
3655 MODULE_DESCRIPTION("QTI GCC HAWI Driver");
3656 MODULE_LICENSE("GPL");
3657