xref: /linux/drivers/clk/qcom/gcc-sm8450.c (revision 7f71507851fc7764b36a3221839607d3a45c2025)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
4  * Copyright (c) 2021, Linaro Limited
5  */
6 
7 #include <linux/clk-provider.h>
8 #include <linux/module.h>
9 #include <linux/of.h>
10 #include <linux/platform_device.h>
11 #include <linux/regmap.h>
12 
13 #include <dt-bindings/clock/qcom,gcc-sm8450.h>
14 
15 #include "clk-alpha-pll.h"
16 #include "clk-branch.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 "gdsc.h"
23 #include "reset.h"
24 
25 enum {
26 	P_BI_TCXO,
27 	P_GCC_GPLL0_OUT_EVEN,
28 	P_GCC_GPLL0_OUT_MAIN,
29 	P_SM8475_GCC_GPLL2_OUT_EVEN,
30 	P_SM8475_GCC_GPLL3_OUT_EVEN,
31 	P_GCC_GPLL4_OUT_MAIN,
32 	P_GCC_GPLL9_OUT_MAIN,
33 	P_PCIE_1_PHY_AUX_CLK,
34 	P_SLEEP_CLK,
35 	P_UFS_PHY_RX_SYMBOL_0_CLK,
36 	P_UFS_PHY_RX_SYMBOL_1_CLK,
37 	P_UFS_PHY_TX_SYMBOL_0_CLK,
38 	P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK,
39 };
40 
41 static struct clk_init_data sm8475_gcc_gpll0_init = {
42 	.name = "gcc_gpll0",
43 	.parent_data = &(const struct clk_parent_data){
44 		.fw_name = "bi_tcxo",
45 	},
46 	.num_parents = 1,
47 	.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
48 };
49 
50 static struct clk_alpha_pll gcc_gpll0 = {
51 	.offset = 0x0,
52 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
53 	.clkr = {
54 		.enable_reg = 0x62018,
55 		.enable_mask = BIT(0),
56 		.hw.init = &(struct clk_init_data){
57 			.name = "gcc_gpll0",
58 			.parent_data = &(const struct clk_parent_data){
59 				.fw_name = "bi_tcxo",
60 			},
61 			.num_parents = 1,
62 			.ops = &clk_alpha_pll_fixed_lucid_evo_ops,
63 		},
64 	},
65 };
66 
67 static struct clk_init_data sm8475_gcc_gpll0_out_even_init = {
68 	.name = "gcc_gpll0_out_even",
69 	.parent_hws = (const struct clk_hw*[]) {
70 		&gcc_gpll0.clkr.hw,
71 	},
72 	.num_parents = 1,
73 	.ops = &clk_alpha_pll_postdiv_lucid_ole_ops,
74 };
75 
76 static const struct clk_div_table post_div_table_gcc_gpll0_out_even[] = {
77 	{ 0x1, 2 },
78 	{ }
79 };
80 
81 static struct clk_alpha_pll_postdiv gcc_gpll0_out_even = {
82 	.offset = 0x0,
83 	.post_div_shift = 10,
84 	.post_div_table = post_div_table_gcc_gpll0_out_even,
85 	.num_post_div = ARRAY_SIZE(post_div_table_gcc_gpll0_out_even),
86 	.width = 4,
87 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
88 	.clkr.hw.init = &(struct clk_init_data){
89 		.name = "gcc_gpll0_out_even",
90 		.parent_hws = (const struct clk_hw*[]) {
91 			&gcc_gpll0.clkr.hw,
92 		},
93 		.num_parents = 1,
94 		.ops = &clk_alpha_pll_postdiv_lucid_evo_ops,
95 	},
96 };
97 
98 static struct clk_alpha_pll sm8475_gcc_gpll2 = {
99 	.offset = 0x2000,
100 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
101 	.clkr = {
102 		.enable_reg = 0x62018,
103 		.enable_mask = BIT(2),
104 		.hw.init = &(struct clk_init_data){
105 			.name = "gcc_gpll2",
106 			.parent_data = &(const struct clk_parent_data){
107 				.fw_name = "bi_tcxo",
108 			},
109 			.num_parents = 1,
110 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
111 		},
112 	},
113 };
114 
115 static struct clk_alpha_pll sm8475_gcc_gpll3 = {
116 	.offset = 0x3000,
117 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE],
118 	.clkr = {
119 		.enable_reg = 0x62018,
120 		.enable_mask = BIT(3),
121 		.hw.init = &(struct clk_init_data){
122 			.name = "gcc_gpll3",
123 			.parent_data = &(const struct clk_parent_data){
124 				.fw_name = "bi_tcxo",
125 			},
126 			.num_parents = 1,
127 			.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
128 		},
129 	},
130 };
131 
132 static struct clk_init_data sm8475_gcc_gpll4_init = {
133 	.name = "gcc_gpll4",
134 	.parent_data = &(const struct clk_parent_data){
135 		.fw_name = "bi_tcxo",
136 	},
137 	.num_parents = 1,
138 	.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
139 };
140 
141 static struct clk_alpha_pll gcc_gpll4 = {
142 	.offset = 0x4000,
143 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
144 	.clkr = {
145 		.enable_reg = 0x62018,
146 		.enable_mask = BIT(4),
147 		.hw.init = &(struct clk_init_data){
148 			.name = "gcc_gpll4",
149 			.parent_data = &(const struct clk_parent_data){
150 				.fw_name = "bi_tcxo",
151 			},
152 			.num_parents = 1,
153 			.ops = &clk_alpha_pll_fixed_lucid_evo_ops,
154 		},
155 	},
156 };
157 
158 static struct clk_init_data sm8475_gcc_gpll9_init = {
159 	.name = "gcc_gpll9",
160 	.parent_data = &(const struct clk_parent_data){
161 		.fw_name = "bi_tcxo",
162 	},
163 	.num_parents = 1,
164 	.ops = &clk_alpha_pll_fixed_lucid_ole_ops,
165 };
166 
167 static struct clk_alpha_pll gcc_gpll9 = {
168 	.offset = 0x9000,
169 	.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_EVO],
170 	.clkr = {
171 		.enable_reg = 0x62018,
172 		.enable_mask = BIT(9),
173 		.hw.init = &(struct clk_init_data){
174 			.name = "gcc_gpll9",
175 			.parent_data = &(const struct clk_parent_data){
176 				.fw_name = "bi_tcxo",
177 			},
178 			.num_parents = 1,
179 			.ops = &clk_alpha_pll_fixed_lucid_evo_ops,
180 		},
181 	},
182 };
183 
184 static const struct parent_map gcc_parent_map_0[] = {
185 	{ P_BI_TCXO, 0 },
186 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
187 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
188 };
189 
190 static const struct clk_parent_data gcc_parent_data_0[] = {
191 	{ .fw_name = "bi_tcxo" },
192 	{ .hw = &gcc_gpll0.clkr.hw },
193 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
194 };
195 
196 static const struct parent_map gcc_parent_map_1[] = {
197 	{ P_BI_TCXO, 0 },
198 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
199 	{ P_SLEEP_CLK, 5 },
200 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
201 };
202 
203 static const struct clk_parent_data gcc_parent_data_1[] = {
204 	{ .fw_name = "bi_tcxo" },
205 	{ .hw = &gcc_gpll0.clkr.hw },
206 	{ .fw_name = "sleep_clk" },
207 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
208 };
209 
210 static const struct parent_map gcc_parent_map_2[] = {
211 	{ P_BI_TCXO, 0 },
212 	{ P_SLEEP_CLK, 5 },
213 };
214 
215 static const struct clk_parent_data gcc_parent_data_2[] = {
216 	{ .fw_name = "bi_tcxo" },
217 	{ .fw_name = "sleep_clk" },
218 };
219 
220 static const struct parent_map gcc_parent_map_3[] = {
221 	{ P_BI_TCXO, 0 },
222 };
223 
224 static const struct clk_parent_data gcc_parent_data_3[] = {
225 	{ .fw_name = "bi_tcxo" },
226 };
227 
228 static const struct parent_map sm8475_gcc_parent_map_3[] = {
229 	{ P_BI_TCXO, 0 },
230 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
231 	{ P_SM8475_GCC_GPLL2_OUT_EVEN, 2 },
232 	{ P_SM8475_GCC_GPLL3_OUT_EVEN, 3 },
233 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
234 };
235 
236 static const struct clk_parent_data sm8475_gcc_parent_data_3[] = {
237 	{ .fw_name = "bi_tcxo" },
238 	{ .hw = &gcc_gpll0.clkr.hw },
239 	{ .hw = &sm8475_gcc_gpll2.clkr.hw },
240 	{ .hw = &sm8475_gcc_gpll3.clkr.hw },
241 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
242 };
243 
244 static const struct parent_map gcc_parent_map_5[] = {
245 	{ P_PCIE_1_PHY_AUX_CLK, 0 },
246 	{ P_BI_TCXO, 2 },
247 };
248 
249 static const struct clk_parent_data gcc_parent_data_5[] = {
250 	{ .fw_name = "pcie_1_phy_aux_clk" },
251 	{ .fw_name = "bi_tcxo" },
252 };
253 
254 static const struct parent_map gcc_parent_map_7[] = {
255 	{ P_BI_TCXO, 0 },
256 	{ P_GCC_GPLL0_OUT_MAIN, 1 },
257 	{ P_GCC_GPLL9_OUT_MAIN, 2 },
258 	{ P_GCC_GPLL4_OUT_MAIN, 5 },
259 	{ P_GCC_GPLL0_OUT_EVEN, 6 },
260 };
261 
262 static const struct clk_parent_data gcc_parent_data_7[] = {
263 	{ .fw_name = "bi_tcxo" },
264 	{ .hw = &gcc_gpll0.clkr.hw },
265 	{ .hw = &gcc_gpll9.clkr.hw },
266 	{ .hw = &gcc_gpll4.clkr.hw },
267 	{ .hw = &gcc_gpll0_out_even.clkr.hw },
268 };
269 
270 static const struct parent_map gcc_parent_map_8[] = {
271 	{ P_UFS_PHY_RX_SYMBOL_0_CLK, 0 },
272 	{ P_BI_TCXO, 2 },
273 };
274 
275 static const struct clk_parent_data gcc_parent_data_8[] = {
276 	{ .fw_name = "ufs_phy_rx_symbol_0_clk" },
277 	{ .fw_name = "bi_tcxo" },
278 };
279 
280 static const struct parent_map gcc_parent_map_9[] = {
281 	{ P_UFS_PHY_RX_SYMBOL_1_CLK, 0 },
282 	{ P_BI_TCXO, 2 },
283 };
284 
285 static const struct clk_parent_data gcc_parent_data_9[] = {
286 	{ .fw_name = "ufs_phy_rx_symbol_1_clk" },
287 	{ .fw_name = "bi_tcxo" },
288 };
289 
290 static const struct parent_map gcc_parent_map_10[] = {
291 	{ P_UFS_PHY_TX_SYMBOL_0_CLK, 0 },
292 	{ P_BI_TCXO, 2 },
293 };
294 
295 static const struct clk_parent_data gcc_parent_data_10[] = {
296 	{ .fw_name = "ufs_phy_tx_symbol_0_clk" },
297 	{ .fw_name = "bi_tcxo" },
298 };
299 
300 static const struct parent_map gcc_parent_map_11[] = {
301 	{ P_USB3_PHY_WRAPPER_GCC_USB30_PIPE_CLK, 0 },
302 	{ P_BI_TCXO, 2 },
303 };
304 
305 static const struct clk_parent_data gcc_parent_data_11[] = {
306 	{ .fw_name = "usb3_phy_wrapper_gcc_usb30_pipe_clk" },
307 	{ .fw_name = "bi_tcxo" },
308 };
309 
310 static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = {
311 	.reg = 0x7b060,
312 	.clkr = {
313 		.hw.init = &(struct clk_init_data){
314 			.name = "gcc_pcie_0_pipe_clk_src",
315 			.parent_data = &(const struct clk_parent_data){
316 				.fw_name = "pcie_0_pipe_clk",
317 			},
318 			.num_parents = 1,
319 			.ops = &clk_regmap_phy_mux_ops,
320 		},
321 	},
322 };
323 
324 static struct clk_regmap_mux gcc_pcie_1_phy_aux_clk_src = {
325 	.reg = 0x9d080,
326 	.shift = 0,
327 	.width = 2,
328 	.parent_map = gcc_parent_map_5,
329 	.clkr = {
330 		.hw.init = &(struct clk_init_data){
331 			.name = "gcc_pcie_1_phy_aux_clk_src",
332 			.parent_data = gcc_parent_data_5,
333 			.num_parents = ARRAY_SIZE(gcc_parent_data_5),
334 			.ops = &clk_regmap_mux_closest_ops,
335 		},
336 	},
337 };
338 
339 static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = {
340 	.reg = 0x9d064,
341 	.clkr = {
342 		.hw.init = &(struct clk_init_data){
343 			.name = "gcc_pcie_1_pipe_clk_src",
344 			.parent_data = &(const struct clk_parent_data){
345 				.fw_name = "pcie_1_pipe_clk",
346 			},
347 			.num_parents = 1,
348 			.ops = &clk_regmap_phy_mux_ops,
349 		},
350 	},
351 };
352 
353 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_0_clk_src = {
354 	.reg = 0x87060,
355 	.shift = 0,
356 	.width = 2,
357 	.parent_map = gcc_parent_map_8,
358 	.clkr = {
359 		.hw.init = &(struct clk_init_data){
360 			.name = "gcc_ufs_phy_rx_symbol_0_clk_src",
361 			.parent_data = gcc_parent_data_8,
362 			.num_parents = ARRAY_SIZE(gcc_parent_data_8),
363 			.ops = &clk_regmap_mux_closest_ops,
364 		},
365 	},
366 };
367 
368 static struct clk_regmap_mux gcc_ufs_phy_rx_symbol_1_clk_src = {
369 	.reg = 0x870d0,
370 	.shift = 0,
371 	.width = 2,
372 	.parent_map = gcc_parent_map_9,
373 	.clkr = {
374 		.hw.init = &(struct clk_init_data){
375 			.name = "gcc_ufs_phy_rx_symbol_1_clk_src",
376 			.parent_data = gcc_parent_data_9,
377 			.num_parents = ARRAY_SIZE(gcc_parent_data_9),
378 			.ops = &clk_regmap_mux_closest_ops,
379 		},
380 	},
381 };
382 
383 static struct clk_regmap_mux gcc_ufs_phy_tx_symbol_0_clk_src = {
384 	.reg = 0x87050,
385 	.shift = 0,
386 	.width = 2,
387 	.parent_map = gcc_parent_map_10,
388 	.clkr = {
389 		.hw.init = &(struct clk_init_data){
390 			.name = "gcc_ufs_phy_tx_symbol_0_clk_src",
391 			.parent_data = gcc_parent_data_10,
392 			.num_parents = ARRAY_SIZE(gcc_parent_data_10),
393 			.ops = &clk_regmap_mux_closest_ops,
394 		},
395 	},
396 };
397 
398 static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = {
399 	.reg = 0x49068,
400 	.shift = 0,
401 	.width = 2,
402 	.parent_map = gcc_parent_map_11,
403 	.clkr = {
404 		.hw.init = &(struct clk_init_data){
405 			.name = "gcc_usb3_prim_phy_pipe_clk_src",
406 			.parent_data = gcc_parent_data_11,
407 			.num_parents = ARRAY_SIZE(gcc_parent_data_11),
408 			.ops = &clk_regmap_mux_closest_ops,
409 		},
410 	},
411 };
412 
413 static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = {
414 	F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
415 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
416 	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
417 	{ }
418 };
419 
420 static struct clk_rcg2 gcc_gp1_clk_src = {
421 	.cmd_rcgr = 0x74004,
422 	.mnd_width = 8,
423 	.hid_width = 5,
424 	.parent_map = gcc_parent_map_1,
425 	.freq_tbl = ftbl_gcc_gp1_clk_src,
426 	.hw_clk_ctrl = true,
427 	.clkr.hw.init = &(struct clk_init_data){
428 		.name = "gcc_gp1_clk_src",
429 		.parent_data = gcc_parent_data_1,
430 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
431 		.flags = CLK_SET_RATE_PARENT,
432 		.ops = &clk_rcg2_ops,
433 	},
434 };
435 
436 static struct clk_rcg2 gcc_gp2_clk_src = {
437 	.cmd_rcgr = 0x75004,
438 	.mnd_width = 8,
439 	.hid_width = 5,
440 	.parent_map = gcc_parent_map_1,
441 	.freq_tbl = ftbl_gcc_gp1_clk_src,
442 	.hw_clk_ctrl = true,
443 	.clkr.hw.init = &(struct clk_init_data){
444 		.name = "gcc_gp2_clk_src",
445 		.parent_data = gcc_parent_data_1,
446 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
447 		.flags = CLK_SET_RATE_PARENT,
448 		.ops = &clk_rcg2_ops,
449 	},
450 };
451 
452 static struct clk_rcg2 gcc_gp3_clk_src = {
453 	.cmd_rcgr = 0x76004,
454 	.mnd_width = 8,
455 	.hid_width = 5,
456 	.parent_map = gcc_parent_map_1,
457 	.freq_tbl = ftbl_gcc_gp1_clk_src,
458 	.hw_clk_ctrl = true,
459 	.clkr.hw.init = &(struct clk_init_data){
460 		.name = "gcc_gp3_clk_src",
461 		.parent_data = gcc_parent_data_1,
462 		.num_parents = ARRAY_SIZE(gcc_parent_data_1),
463 		.flags = CLK_SET_RATE_PARENT,
464 		.ops = &clk_rcg2_ops,
465 	},
466 };
467 
468 static const struct freq_tbl ftbl_gcc_pcie_0_aux_clk_src[] = {
469 	F(19200000, P_BI_TCXO, 1, 0, 0),
470 	{ }
471 };
472 
473 static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
474 	.cmd_rcgr = 0x7b064,
475 	.mnd_width = 16,
476 	.hid_width = 5,
477 	.parent_map = gcc_parent_map_2,
478 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
479 	.hw_clk_ctrl = true,
480 	.clkr.hw.init = &(struct clk_init_data){
481 		.name = "gcc_pcie_0_aux_clk_src",
482 		.parent_data = gcc_parent_data_2,
483 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
484 		.flags = CLK_SET_RATE_PARENT,
485 		.ops = &clk_rcg2_ops,
486 	},
487 };
488 
489 static const struct freq_tbl ftbl_gcc_pcie_0_phy_rchng_clk_src[] = {
490 	F(19200000, P_BI_TCXO, 1, 0, 0),
491 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
492 	{ }
493 };
494 
495 static struct clk_rcg2 gcc_pcie_0_phy_rchng_clk_src = {
496 	.cmd_rcgr = 0x7b048,
497 	.mnd_width = 0,
498 	.hid_width = 5,
499 	.parent_map = gcc_parent_map_0,
500 	.freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
501 	.hw_clk_ctrl = true,
502 	.clkr.hw.init = &(struct clk_init_data){
503 		.name = "gcc_pcie_0_phy_rchng_clk_src",
504 		.parent_data = gcc_parent_data_0,
505 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
506 		.flags = CLK_SET_RATE_PARENT,
507 		.ops = &clk_rcg2_ops,
508 	},
509 };
510 
511 static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
512 	.cmd_rcgr = 0x9d068,
513 	.mnd_width = 16,
514 	.hid_width = 5,
515 	.parent_map = gcc_parent_map_2,
516 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
517 	.hw_clk_ctrl = true,
518 	.clkr.hw.init = &(struct clk_init_data){
519 		.name = "gcc_pcie_1_aux_clk_src",
520 		.parent_data = gcc_parent_data_2,
521 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
522 		.flags = CLK_SET_RATE_PARENT,
523 		.ops = &clk_rcg2_ops,
524 	},
525 };
526 
527 static struct clk_rcg2 gcc_pcie_1_phy_rchng_clk_src = {
528 	.cmd_rcgr = 0x9d04c,
529 	.mnd_width = 0,
530 	.hid_width = 5,
531 	.parent_map = gcc_parent_map_0,
532 	.freq_tbl = ftbl_gcc_pcie_0_phy_rchng_clk_src,
533 	.hw_clk_ctrl = true,
534 	.clkr.hw.init = &(struct clk_init_data){
535 		.name = "gcc_pcie_1_phy_rchng_clk_src",
536 		.parent_data = gcc_parent_data_0,
537 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
538 		.flags = CLK_SET_RATE_PARENT,
539 		.ops = &clk_rcg2_ops,
540 	},
541 };
542 
543 static const struct freq_tbl ftbl_gcc_pdm2_clk_src[] = {
544 	F(60000000, P_GCC_GPLL0_OUT_MAIN, 10, 0, 0),
545 	{ }
546 };
547 
548 static struct clk_rcg2 gcc_pdm2_clk_src = {
549 	.cmd_rcgr = 0x43010,
550 	.mnd_width = 0,
551 	.hid_width = 5,
552 	.parent_map = gcc_parent_map_0,
553 	.freq_tbl = ftbl_gcc_pdm2_clk_src,
554 	.hw_clk_ctrl = true,
555 	.clkr.hw.init = &(struct clk_init_data){
556 		.name = "gcc_pdm2_clk_src",
557 		.parent_data = gcc_parent_data_0,
558 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
559 		.flags = CLK_SET_RATE_PARENT,
560 		.ops = &clk_rcg2_ops,
561 	},
562 };
563 
564 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s0_clk_src[] = {
565 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
566 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
567 	F(19200000, P_BI_TCXO, 1, 0, 0),
568 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
569 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
570 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
571 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
572 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
573 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
574 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
575 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
576 	{ }
577 };
578 
579 static struct clk_init_data gcc_qupv3_wrap0_s0_clk_src_init = {
580 	.name = "gcc_qupv3_wrap0_s0_clk_src",
581 	.parent_data = gcc_parent_data_0,
582 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
583 	.flags = CLK_SET_RATE_PARENT,
584 	.ops = &clk_rcg2_ops,
585 };
586 
587 static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
588 	.cmd_rcgr = 0x27014,
589 	.mnd_width = 16,
590 	.hid_width = 5,
591 	.parent_map = gcc_parent_map_0,
592 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
593 	.hw_clk_ctrl = true,
594 	.clkr.hw.init = &gcc_qupv3_wrap0_s0_clk_src_init,
595 };
596 
597 static struct clk_init_data gcc_qupv3_wrap0_s1_clk_src_init = {
598 	.name = "gcc_qupv3_wrap0_s1_clk_src",
599 	.parent_data = gcc_parent_data_0,
600 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
601 	.flags = CLK_SET_RATE_PARENT,
602 	.ops = &clk_rcg2_ops,
603 };
604 
605 static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
606 	.cmd_rcgr = 0x27148,
607 	.mnd_width = 16,
608 	.hid_width = 5,
609 	.parent_map = gcc_parent_map_0,
610 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
611 	.hw_clk_ctrl = true,
612 	.clkr.hw.init = &gcc_qupv3_wrap0_s1_clk_src_init,
613 };
614 
615 static struct clk_init_data gcc_qupv3_wrap0_s2_clk_src_init = {
616 	.name = "gcc_qupv3_wrap0_s2_clk_src",
617 	.parent_data = gcc_parent_data_0,
618 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
619 	.flags = CLK_SET_RATE_PARENT,
620 	.ops = &clk_rcg2_ops,
621 };
622 
623 static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
624 	.cmd_rcgr = 0x2727c,
625 	.mnd_width = 16,
626 	.hid_width = 5,
627 	.parent_map = gcc_parent_map_0,
628 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
629 	.hw_clk_ctrl = true,
630 	.clkr.hw.init = &gcc_qupv3_wrap0_s2_clk_src_init,
631 };
632 
633 static struct clk_init_data gcc_qupv3_wrap0_s3_clk_src_init = {
634 	.name = "gcc_qupv3_wrap0_s3_clk_src",
635 	.parent_data = gcc_parent_data_0,
636 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
637 	.flags = CLK_SET_RATE_PARENT,
638 	.ops = &clk_rcg2_ops,
639 };
640 
641 static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
642 	.cmd_rcgr = 0x273b0,
643 	.mnd_width = 16,
644 	.hid_width = 5,
645 	.parent_map = gcc_parent_map_0,
646 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
647 	.hw_clk_ctrl = true,
648 	.clkr.hw.init = &gcc_qupv3_wrap0_s3_clk_src_init,
649 };
650 
651 static struct clk_init_data gcc_qupv3_wrap0_s4_clk_src_init = {
652 	.name = "gcc_qupv3_wrap0_s4_clk_src",
653 	.parent_data = gcc_parent_data_0,
654 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
655 	.flags = CLK_SET_RATE_PARENT,
656 	.ops = &clk_rcg2_ops,
657 };
658 
659 static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
660 	.cmd_rcgr = 0x274e4,
661 	.mnd_width = 16,
662 	.hid_width = 5,
663 	.parent_map = gcc_parent_map_0,
664 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
665 	.hw_clk_ctrl = true,
666 	.clkr.hw.init = &gcc_qupv3_wrap0_s4_clk_src_init,
667 };
668 
669 static const struct freq_tbl ftbl_gcc_qupv3_wrap0_s5_clk_src[] = {
670 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
671 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
672 	F(19200000, P_BI_TCXO, 1, 0, 0),
673 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
674 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
675 	F(37500000, P_GCC_GPLL0_OUT_EVEN, 8, 0, 0),
676 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
677 	F(50000000, P_GCC_GPLL0_OUT_MAIN, 12, 0, 0),
678 	{ }
679 };
680 
681 static struct clk_init_data gcc_qupv3_wrap0_s5_clk_src_init = {
682 	.name = "gcc_qupv3_wrap0_s5_clk_src",
683 	.parent_data = gcc_parent_data_0,
684 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
685 	.flags = CLK_SET_RATE_PARENT,
686 	.ops = &clk_rcg2_ops,
687 };
688 
689 static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
690 	.cmd_rcgr = 0x27618,
691 	.mnd_width = 16,
692 	.hid_width = 5,
693 	.parent_map = gcc_parent_map_0,
694 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s5_clk_src,
695 	.hw_clk_ctrl = true,
696 	.clkr.hw.init = &gcc_qupv3_wrap0_s5_clk_src_init,
697 };
698 
699 static struct clk_init_data gcc_qupv3_wrap0_s6_clk_src_init = {
700 	.name = "gcc_qupv3_wrap0_s6_clk_src",
701 	.parent_data = gcc_parent_data_0,
702 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
703 	.flags = CLK_SET_RATE_PARENT,
704 	.ops = &clk_rcg2_ops,
705 };
706 
707 static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
708 	.cmd_rcgr = 0x2774c,
709 	.mnd_width = 16,
710 	.hid_width = 5,
711 	.parent_map = gcc_parent_map_0,
712 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
713 	.hw_clk_ctrl = true,
714 	.clkr.hw.init = &gcc_qupv3_wrap0_s6_clk_src_init,
715 };
716 
717 static struct clk_init_data gcc_qupv3_wrap0_s7_clk_src_init = {
718 	.name = "gcc_qupv3_wrap0_s7_clk_src",
719 	.parent_data = gcc_parent_data_0,
720 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
721 	.flags = CLK_SET_RATE_PARENT,
722 	.ops = &clk_rcg2_ops,
723 };
724 
725 static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
726 	.cmd_rcgr = 0x27880,
727 	.mnd_width = 16,
728 	.hid_width = 5,
729 	.parent_map = gcc_parent_map_0,
730 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
731 	.hw_clk_ctrl = true,
732 	.clkr.hw.init = &gcc_qupv3_wrap0_s7_clk_src_init,
733 };
734 
735 static const struct freq_tbl ftbl_gcc_qupv3_wrap1_s0_clk_src[] = {
736 	F(7372800, P_GCC_GPLL0_OUT_EVEN, 1, 384, 15625),
737 	F(14745600, P_GCC_GPLL0_OUT_EVEN, 1, 768, 15625),
738 	F(19200000, P_BI_TCXO, 1, 0, 0),
739 	F(29491200, P_GCC_GPLL0_OUT_EVEN, 1, 1536, 15625),
740 	F(32000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 75),
741 	F(48000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 25),
742 	F(64000000, P_GCC_GPLL0_OUT_EVEN, 1, 16, 75),
743 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
744 	F(80000000, P_GCC_GPLL0_OUT_EVEN, 1, 4, 15),
745 	F(96000000, P_GCC_GPLL0_OUT_EVEN, 1, 8, 25),
746 	F(100000000, P_GCC_GPLL0_OUT_MAIN, 6, 0, 0),
747 	F(102400000, P_GCC_GPLL0_OUT_EVEN, 1, 128, 375),
748 	F(112000000, P_GCC_GPLL0_OUT_EVEN, 1, 28, 75),
749 	F(117964800, P_GCC_GPLL0_OUT_EVEN, 1, 6144, 15625),
750 	F(120000000, P_GCC_GPLL0_OUT_MAIN, 5, 0, 0),
751 	{ }
752 };
753 
754 static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = {
755 	.name = "gcc_qupv3_wrap1_s0_clk_src",
756 	.parent_data = gcc_parent_data_0,
757 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
758 	.flags = CLK_SET_RATE_PARENT,
759 	.ops = &clk_rcg2_ops,
760 };
761 
762 static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
763 	.cmd_rcgr = 0x28014,
764 	.mnd_width = 16,
765 	.hid_width = 5,
766 	.parent_map = gcc_parent_map_0,
767 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
768 	.hw_clk_ctrl = true,
769 	.clkr.hw.init = &gcc_qupv3_wrap1_s0_clk_src_init,
770 };
771 
772 static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = {
773 	.name = "gcc_qupv3_wrap1_s1_clk_src",
774 	.parent_data = gcc_parent_data_0,
775 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
776 	.flags = CLK_SET_RATE_PARENT,
777 	.ops = &clk_rcg2_ops,
778 };
779 
780 static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
781 	.cmd_rcgr = 0x28148,
782 	.mnd_width = 16,
783 	.hid_width = 5,
784 	.parent_map = gcc_parent_map_0,
785 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
786 	.hw_clk_ctrl = true,
787 	.clkr.hw.init = &gcc_qupv3_wrap1_s1_clk_src_init,
788 };
789 
790 static struct clk_init_data gcc_qupv3_wrap1_s2_clk_src_init = {
791 	.name = "gcc_qupv3_wrap1_s2_clk_src",
792 	.parent_data = gcc_parent_data_0,
793 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
794 	.flags = CLK_SET_RATE_PARENT,
795 	.ops = &clk_rcg2_ops,
796 };
797 
798 static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
799 	.cmd_rcgr = 0x2827c,
800 	.mnd_width = 16,
801 	.hid_width = 5,
802 	.parent_map = gcc_parent_map_0,
803 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
804 	.hw_clk_ctrl = true,
805 	.clkr.hw.init = &gcc_qupv3_wrap1_s2_clk_src_init,
806 };
807 
808 static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = {
809 	.name = "gcc_qupv3_wrap1_s3_clk_src",
810 	.parent_data = gcc_parent_data_0,
811 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
812 	.flags = CLK_SET_RATE_PARENT,
813 	.ops = &clk_rcg2_ops,
814 };
815 
816 static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
817 	.cmd_rcgr = 0x283b0,
818 	.mnd_width = 16,
819 	.hid_width = 5,
820 	.parent_map = gcc_parent_map_0,
821 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
822 	.hw_clk_ctrl = true,
823 	.clkr.hw.init = &gcc_qupv3_wrap1_s3_clk_src_init,
824 };
825 
826 static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = {
827 	.name = "gcc_qupv3_wrap1_s4_clk_src",
828 	.parent_data = gcc_parent_data_0,
829 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
830 	.flags = CLK_SET_RATE_PARENT,
831 	.ops = &clk_rcg2_ops,
832 };
833 
834 static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
835 	.cmd_rcgr = 0x284e4,
836 	.mnd_width = 16,
837 	.hid_width = 5,
838 	.parent_map = gcc_parent_map_0,
839 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
840 	.hw_clk_ctrl = true,
841 	.clkr.hw.init = &gcc_qupv3_wrap1_s4_clk_src_init,
842 };
843 
844 static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = {
845 	.name = "gcc_qupv3_wrap1_s5_clk_src",
846 	.parent_data = gcc_parent_data_0,
847 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
848 	.flags = CLK_SET_RATE_PARENT,
849 	.ops = &clk_rcg2_ops,
850 };
851 
852 static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
853 	.cmd_rcgr = 0x28618,
854 	.mnd_width = 16,
855 	.hid_width = 5,
856 	.parent_map = gcc_parent_map_0,
857 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
858 	.hw_clk_ctrl = true,
859 	.clkr.hw.init = &gcc_qupv3_wrap1_s5_clk_src_init,
860 };
861 
862 static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = {
863 	.name = "gcc_qupv3_wrap1_s6_clk_src",
864 	.parent_data = gcc_parent_data_0,
865 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
866 	.flags = CLK_SET_RATE_PARENT,
867 	.ops = &clk_rcg2_ops,
868 };
869 
870 static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = {
871 	.cmd_rcgr = 0x2874c,
872 	.mnd_width = 16,
873 	.hid_width = 5,
874 	.parent_map = gcc_parent_map_0,
875 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
876 	.hw_clk_ctrl = true,
877 	.clkr.hw.init = &gcc_qupv3_wrap1_s6_clk_src_init,
878 };
879 
880 static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = {
881 	.name = "gcc_qupv3_wrap2_s0_clk_src",
882 	.parent_data = gcc_parent_data_0,
883 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
884 	.flags = CLK_SET_RATE_PARENT,
885 	.ops = &clk_rcg2_ops,
886 };
887 
888 static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
889 	.cmd_rcgr = 0x2e014,
890 	.mnd_width = 16,
891 	.hid_width = 5,
892 	.parent_map = gcc_parent_map_0,
893 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
894 	.hw_clk_ctrl = true,
895 	.clkr.hw.init = &gcc_qupv3_wrap2_s0_clk_src_init,
896 };
897 
898 static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = {
899 	.name = "gcc_qupv3_wrap2_s1_clk_src",
900 	.parent_data = gcc_parent_data_0,
901 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
902 	.flags = CLK_SET_RATE_PARENT,
903 	.ops = &clk_rcg2_ops,
904 };
905 
906 static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
907 	.cmd_rcgr = 0x2e148,
908 	.mnd_width = 16,
909 	.hid_width = 5,
910 	.parent_map = gcc_parent_map_0,
911 	.freq_tbl = ftbl_gcc_qupv3_wrap1_s0_clk_src,
912 	.hw_clk_ctrl = true,
913 	.clkr.hw.init = &gcc_qupv3_wrap2_s1_clk_src_init,
914 };
915 
916 static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = {
917 	.name = "gcc_qupv3_wrap2_s2_clk_src",
918 	.parent_data = gcc_parent_data_0,
919 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
920 	.flags = CLK_SET_RATE_PARENT,
921 	.ops = &clk_rcg2_ops,
922 };
923 
924 static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
925 	.cmd_rcgr = 0x2e27c,
926 	.mnd_width = 16,
927 	.hid_width = 5,
928 	.parent_map = gcc_parent_map_0,
929 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
930 	.hw_clk_ctrl = true,
931 	.clkr.hw.init = &gcc_qupv3_wrap2_s2_clk_src_init,
932 };
933 
934 static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = {
935 	.name = "gcc_qupv3_wrap2_s3_clk_src",
936 	.parent_data = gcc_parent_data_0,
937 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
938 	.flags = CLK_SET_RATE_PARENT,
939 	.ops = &clk_rcg2_ops,
940 };
941 
942 static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
943 	.cmd_rcgr = 0x2e3b0,
944 	.mnd_width = 16,
945 	.hid_width = 5,
946 	.parent_map = gcc_parent_map_0,
947 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
948 	.hw_clk_ctrl = true,
949 	.clkr.hw.init = &gcc_qupv3_wrap2_s3_clk_src_init,
950 };
951 
952 static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = {
953 	.name = "gcc_qupv3_wrap2_s4_clk_src",
954 	.parent_data = gcc_parent_data_0,
955 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
956 	.flags = CLK_SET_RATE_PARENT,
957 	.ops = &clk_rcg2_ops,
958 };
959 
960 static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
961 	.cmd_rcgr = 0x2e4e4,
962 	.mnd_width = 16,
963 	.hid_width = 5,
964 	.parent_map = gcc_parent_map_0,
965 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
966 	.hw_clk_ctrl = true,
967 	.clkr.hw.init = &gcc_qupv3_wrap2_s4_clk_src_init,
968 };
969 
970 static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = {
971 	.name = "gcc_qupv3_wrap2_s5_clk_src",
972 	.parent_data = gcc_parent_data_0,
973 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
974 	.flags = CLK_SET_RATE_PARENT,
975 	.ops = &clk_rcg2_ops,
976 };
977 
978 static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
979 	.cmd_rcgr = 0x2e618,
980 	.mnd_width = 16,
981 	.hid_width = 5,
982 	.parent_map = gcc_parent_map_0,
983 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
984 	.hw_clk_ctrl = true,
985 	.clkr.hw.init = &gcc_qupv3_wrap2_s5_clk_src_init,
986 };
987 
988 static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = {
989 	.name = "gcc_qupv3_wrap2_s6_clk_src",
990 	.parent_data = gcc_parent_data_0,
991 	.num_parents = ARRAY_SIZE(gcc_parent_data_0),
992 	.flags = CLK_SET_RATE_PARENT,
993 	.ops = &clk_rcg2_ops,
994 };
995 
996 static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = {
997 	.cmd_rcgr = 0x2e74c,
998 	.mnd_width = 16,
999 	.hid_width = 5,
1000 	.parent_map = gcc_parent_map_0,
1001 	.freq_tbl = ftbl_gcc_qupv3_wrap0_s0_clk_src,
1002 	.hw_clk_ctrl = true,
1003 	.clkr.hw.init = &gcc_qupv3_wrap2_s6_clk_src_init,
1004 };
1005 
1006 static const struct freq_tbl sm8475_ftbl_gcc_sdcc2_apps_clk_src[] = {
1007 	F(400000, P_BI_TCXO, 12, 1, 4),
1008 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1009 	F(37000000, P_GCC_GPLL9_OUT_MAIN, 16, 0, 0),
1010 	F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
1011 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1012 	F(148000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),
1013 	{ }
1014 };
1015 
1016 static const struct freq_tbl ftbl_gcc_sdcc2_apps_clk_src[] = {
1017 	F(400000, P_BI_TCXO, 12, 1, 4),
1018 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1019 	F(50000000, P_GCC_GPLL0_OUT_EVEN, 6, 0, 0),
1020 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1021 	F(202000000, P_GCC_GPLL9_OUT_MAIN, 4, 0, 0),
1022 	{ }
1023 };
1024 
1025 static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
1026 	.cmd_rcgr = 0x24014,
1027 	.mnd_width = 8,
1028 	.hid_width = 5,
1029 	.parent_map = gcc_parent_map_7,
1030 	.freq_tbl = ftbl_gcc_sdcc2_apps_clk_src,
1031 	.hw_clk_ctrl = true,
1032 	.clkr.hw.init = &(struct clk_init_data){
1033 		.name = "gcc_sdcc2_apps_clk_src",
1034 		.parent_data = gcc_parent_data_7,
1035 		.num_parents = ARRAY_SIZE(gcc_parent_data_7),
1036 		.flags = CLK_SET_RATE_PARENT,
1037 		.ops = &clk_rcg2_floor_ops,
1038 	},
1039 };
1040 
1041 static const struct freq_tbl ftbl_gcc_sdcc4_apps_clk_src[] = {
1042 	F(400000, P_BI_TCXO, 12, 1, 4),
1043 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1044 	F(100000000, P_GCC_GPLL0_OUT_EVEN, 3, 0, 0),
1045 	{ }
1046 };
1047 
1048 static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
1049 	.cmd_rcgr = 0x26014,
1050 	.mnd_width = 8,
1051 	.hid_width = 5,
1052 	.parent_map = gcc_parent_map_0,
1053 	.freq_tbl = ftbl_gcc_sdcc4_apps_clk_src,
1054 	.hw_clk_ctrl = true,
1055 	.clkr.hw.init = &(struct clk_init_data){
1056 		.name = "gcc_sdcc4_apps_clk_src",
1057 		.parent_data = gcc_parent_data_0,
1058 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1059 		.flags = CLK_SET_RATE_PARENT,
1060 		.ops = &clk_rcg2_floor_ops,
1061 	},
1062 };
1063 
1064 static const struct freq_tbl sm8475_ftbl_gcc_ufs_phy_axi_clk_src[] = {
1065 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1066 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1067 	F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1068 	F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1069 	F(600000000, P_GCC_GPLL0_OUT_MAIN, 1, 0, 0),
1070 	F(806400000, P_SM8475_GCC_GPLL2_OUT_EVEN, 1, 0, 0),
1071 	F(850000000, P_SM8475_GCC_GPLL2_OUT_EVEN, 1, 0, 0),
1072 	{ }
1073 };
1074 
1075 static struct clk_init_data sm8475_gcc_ufs_phy_axi_clk_src_init = {
1076 	.name = "gcc_ufs_phy_axi_clk_src",
1077 	.parent_data = sm8475_gcc_parent_data_3,
1078 	.num_parents = ARRAY_SIZE(sm8475_gcc_parent_map_3),
1079 	.flags = CLK_SET_RATE_PARENT,
1080 	.ops = &clk_rcg2_ops,
1081 };
1082 
1083 static const struct freq_tbl ftbl_gcc_ufs_phy_axi_clk_src[] = {
1084 	F(25000000, P_GCC_GPLL0_OUT_EVEN, 12, 0, 0),
1085 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1086 	F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1087 	F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1088 	{ }
1089 };
1090 
1091 static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
1092 	.cmd_rcgr = 0x8702c,
1093 	.mnd_width = 8,
1094 	.hid_width = 5,
1095 	.parent_map = gcc_parent_map_0,
1096 	.freq_tbl = ftbl_gcc_ufs_phy_axi_clk_src,
1097 	.hw_clk_ctrl = true,
1098 	.clkr.hw.init = &(struct clk_init_data){
1099 		.name = "gcc_ufs_phy_axi_clk_src",
1100 		.parent_data = gcc_parent_data_0,
1101 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1102 		.flags = CLK_SET_RATE_PARENT,
1103 		.ops = &clk_rcg2_ops,
1104 	},
1105 };
1106 
1107 static const struct freq_tbl sm8475_ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
1108 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1109 	F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1110 	F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1111 	F(600000000, P_GCC_GPLL0_OUT_MAIN, 1, 0, 0),
1112 	F(806400000, P_SM8475_GCC_GPLL2_OUT_EVEN, 1, 0, 0),
1113 	F(850000000, P_SM8475_GCC_GPLL2_OUT_EVEN, 1, 0, 0),
1114 	{ }
1115 };
1116 
1117 static struct clk_init_data sm8475_gcc_ufs_phy_ice_core_clk_src_init = {
1118 	.name = "gcc_ufs_phy_ice_core_clk_src",
1119 	.parent_data = sm8475_gcc_parent_data_3,
1120 	.num_parents = ARRAY_SIZE(sm8475_gcc_parent_map_3),
1121 	.flags = CLK_SET_RATE_PARENT,
1122 	.ops = &clk_rcg2_ops,
1123 };
1124 
1125 static const struct freq_tbl ftbl_gcc_ufs_phy_ice_core_clk_src[] = {
1126 	F(75000000, P_GCC_GPLL0_OUT_EVEN, 4, 0, 0),
1127 	F(150000000, P_GCC_GPLL0_OUT_MAIN, 4, 0, 0),
1128 	F(300000000, P_GCC_GPLL0_OUT_MAIN, 2, 0, 0),
1129 	{ }
1130 };
1131 
1132 static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
1133 	.cmd_rcgr = 0x87074,
1134 	.mnd_width = 0,
1135 	.hid_width = 5,
1136 	.parent_map = gcc_parent_map_0,
1137 	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
1138 	.hw_clk_ctrl = true,
1139 	.clkr.hw.init = &(struct clk_init_data){
1140 		.name = "gcc_ufs_phy_ice_core_clk_src",
1141 		.parent_data = gcc_parent_data_0,
1142 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1143 		.flags = CLK_SET_RATE_PARENT,
1144 		.ops = &clk_rcg2_ops,
1145 	},
1146 };
1147 
1148 static const struct freq_tbl ftbl_gcc_ufs_phy_phy_aux_clk_src[] = {
1149 	F(9600000, P_BI_TCXO, 2, 0, 0),
1150 	F(19200000, P_BI_TCXO, 1, 0, 0),
1151 	{ }
1152 };
1153 
1154 static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
1155 	.cmd_rcgr = 0x870a8,
1156 	.mnd_width = 0,
1157 	.hid_width = 5,
1158 	.parent_map = gcc_parent_map_3,
1159 	.freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src,
1160 	.hw_clk_ctrl = true,
1161 	.clkr.hw.init = &(struct clk_init_data){
1162 		.name = "gcc_ufs_phy_phy_aux_clk_src",
1163 		.parent_data = gcc_parent_data_3,
1164 		.num_parents = ARRAY_SIZE(gcc_parent_data_3),
1165 		.flags = CLK_SET_RATE_PARENT,
1166 		.ops = &clk_rcg2_ops,
1167 	},
1168 };
1169 
1170 static struct clk_init_data sm8475_gcc_ufs_phy_unipro_core_clk_src_init = {
1171 	.name = "gcc_ufs_phy_unipro_core_clk_src",
1172 	.parent_data = sm8475_gcc_parent_data_3,
1173 	.num_parents = ARRAY_SIZE(sm8475_gcc_parent_map_3),
1174 	.flags = CLK_SET_RATE_PARENT,
1175 	.ops = &clk_rcg2_ops,
1176 };
1177 
1178 static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
1179 	.cmd_rcgr = 0x8708c,
1180 	.mnd_width = 0,
1181 	.hid_width = 5,
1182 	.parent_map = gcc_parent_map_0,
1183 	.freq_tbl = ftbl_gcc_ufs_phy_ice_core_clk_src,
1184 	.hw_clk_ctrl = true,
1185 	.clkr.hw.init = &(struct clk_init_data){
1186 		.name = "gcc_ufs_phy_unipro_core_clk_src",
1187 		.parent_data = gcc_parent_data_0,
1188 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1189 		.flags = CLK_SET_RATE_PARENT,
1190 		.ops = &clk_rcg2_ops,
1191 	},
1192 };
1193 
1194 static const struct freq_tbl ftbl_gcc_usb30_prim_master_clk_src[] = {
1195 	F(66666667, P_GCC_GPLL0_OUT_EVEN, 4.5, 0, 0),
1196 	F(133333333, P_GCC_GPLL0_OUT_MAIN, 4.5, 0, 0),
1197 	F(200000000, P_GCC_GPLL0_OUT_MAIN, 3, 0, 0),
1198 	F(240000000, P_GCC_GPLL0_OUT_MAIN, 2.5, 0, 0),
1199 	{ }
1200 };
1201 
1202 static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
1203 	.cmd_rcgr = 0x49028,
1204 	.mnd_width = 8,
1205 	.hid_width = 5,
1206 	.parent_map = gcc_parent_map_0,
1207 	.freq_tbl = ftbl_gcc_usb30_prim_master_clk_src,
1208 	.hw_clk_ctrl = true,
1209 	.clkr.hw.init = &(struct clk_init_data){
1210 		.name = "gcc_usb30_prim_master_clk_src",
1211 		.parent_data = gcc_parent_data_0,
1212 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1213 		.flags = CLK_SET_RATE_PARENT,
1214 		.ops = &clk_rcg2_ops,
1215 	},
1216 };
1217 
1218 static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
1219 	.cmd_rcgr = 0x49040,
1220 	.mnd_width = 0,
1221 	.hid_width = 5,
1222 	.parent_map = gcc_parent_map_0,
1223 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1224 	.hw_clk_ctrl = true,
1225 	.clkr.hw.init = &(struct clk_init_data){
1226 		.name = "gcc_usb30_prim_mock_utmi_clk_src",
1227 		.parent_data = gcc_parent_data_0,
1228 		.num_parents = ARRAY_SIZE(gcc_parent_data_0),
1229 		.flags = CLK_SET_RATE_PARENT,
1230 		.ops = &clk_rcg2_ops,
1231 	},
1232 };
1233 
1234 static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
1235 	.cmd_rcgr = 0x4906c,
1236 	.mnd_width = 0,
1237 	.hid_width = 5,
1238 	.parent_map = gcc_parent_map_2,
1239 	.freq_tbl = ftbl_gcc_pcie_0_aux_clk_src,
1240 	.hw_clk_ctrl = true,
1241 	.clkr.hw.init = &(struct clk_init_data){
1242 		.name = "gcc_usb3_prim_phy_aux_clk_src",
1243 		.parent_data = gcc_parent_data_2,
1244 		.num_parents = ARRAY_SIZE(gcc_parent_data_2),
1245 		.flags = CLK_SET_RATE_PARENT,
1246 		.ops = &clk_rcg2_ops,
1247 	},
1248 };
1249 
1250 static struct clk_regmap_div gcc_usb30_prim_mock_utmi_postdiv_clk_src = {
1251 	.reg = 0x49058,
1252 	.shift = 0,
1253 	.width = 4,
1254 	.clkr.hw.init = &(struct clk_init_data) {
1255 		.name = "gcc_usb30_prim_mock_utmi_postdiv_clk_src",
1256 		.parent_hws = (const struct clk_hw*[]) {
1257 			&gcc_usb30_prim_mock_utmi_clk_src.clkr.hw,
1258 		},
1259 		.num_parents = 1,
1260 		.flags = CLK_SET_RATE_PARENT,
1261 		.ops = &clk_regmap_div_ro_ops,
1262 	},
1263 };
1264 
1265 static struct clk_branch gcc_aggre_noc_pcie_0_axi_clk = {
1266 	.halt_reg = 0x7b08c,
1267 	.halt_check = BRANCH_HALT_SKIP,
1268 	.hwcg_reg = 0x7b08c,
1269 	.hwcg_bit = 1,
1270 	.clkr = {
1271 		.enable_reg = 0x62000,
1272 		.enable_mask = BIT(12),
1273 		.hw.init = &(struct clk_init_data){
1274 			.name = "gcc_aggre_noc_pcie_0_axi_clk",
1275 			.ops = &clk_branch2_ops,
1276 		},
1277 	},
1278 };
1279 
1280 static struct clk_branch gcc_aggre_noc_pcie_1_axi_clk = {
1281 	.halt_reg = 0x9d098,
1282 	.halt_check = BRANCH_HALT_SKIP,
1283 	.hwcg_reg = 0x9d098,
1284 	.hwcg_bit = 1,
1285 	.clkr = {
1286 		.enable_reg = 0x62000,
1287 		.enable_mask = BIT(11),
1288 		.hw.init = &(struct clk_init_data){
1289 			.name = "gcc_aggre_noc_pcie_1_axi_clk",
1290 			.ops = &clk_branch2_ops,
1291 		},
1292 	},
1293 };
1294 
1295 static struct clk_branch gcc_aggre_ufs_phy_axi_clk = {
1296 	.halt_reg = 0x870d4,
1297 	.halt_check = BRANCH_HALT_VOTED,
1298 	.hwcg_reg = 0x870d4,
1299 	.hwcg_bit = 1,
1300 	.clkr = {
1301 		.enable_reg = 0x870d4,
1302 		.enable_mask = BIT(0),
1303 		.hw.init = &(struct clk_init_data){
1304 			.name = "gcc_aggre_ufs_phy_axi_clk",
1305 			.parent_hws = (const struct clk_hw*[]) {
1306 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
1307 			},
1308 			.num_parents = 1,
1309 			.flags = CLK_SET_RATE_PARENT,
1310 			.ops = &clk_branch2_ops,
1311 		},
1312 	},
1313 };
1314 
1315 static struct clk_branch gcc_aggre_ufs_phy_axi_hw_ctl_clk = {
1316 	.halt_reg = 0x870d4,
1317 	.halt_check = BRANCH_HALT_VOTED,
1318 	.hwcg_reg = 0x870d4,
1319 	.hwcg_bit = 1,
1320 	.clkr = {
1321 		.enable_reg = 0x870d4,
1322 		.enable_mask = BIT(1),
1323 		.hw.init = &(struct clk_init_data){
1324 			.name = "gcc_aggre_ufs_phy_axi_hw_ctl_clk",
1325 			.parent_hws = (const struct clk_hw*[]) {
1326 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
1327 			},
1328 			.num_parents = 1,
1329 			.flags = CLK_SET_RATE_PARENT,
1330 			.ops = &clk_branch2_ops,
1331 		},
1332 	},
1333 };
1334 
1335 static struct clk_branch gcc_aggre_usb3_prim_axi_clk = {
1336 	.halt_reg = 0x49088,
1337 	.halt_check = BRANCH_HALT_VOTED,
1338 	.hwcg_reg = 0x49088,
1339 	.hwcg_bit = 1,
1340 	.clkr = {
1341 		.enable_reg = 0x49088,
1342 		.enable_mask = BIT(0),
1343 		.hw.init = &(struct clk_init_data){
1344 			.name = "gcc_aggre_usb3_prim_axi_clk",
1345 			.parent_hws = (const struct clk_hw*[]) {
1346 				&gcc_usb30_prim_master_clk_src.clkr.hw,
1347 			},
1348 			.num_parents = 1,
1349 			.flags = CLK_SET_RATE_PARENT,
1350 			.ops = &clk_branch2_ops,
1351 		},
1352 	},
1353 };
1354 
1355 static struct clk_branch gcc_boot_rom_ahb_clk = {
1356 	.halt_reg = 0x48004,
1357 	.halt_check = BRANCH_HALT_VOTED,
1358 	.hwcg_reg = 0x48004,
1359 	.hwcg_bit = 1,
1360 	.clkr = {
1361 		.enable_reg = 0x62000,
1362 		.enable_mask = BIT(10),
1363 		.hw.init = &(struct clk_init_data){
1364 			.name = "gcc_boot_rom_ahb_clk",
1365 			.ops = &clk_branch2_ops,
1366 		},
1367 	},
1368 };
1369 
1370 static struct clk_branch gcc_camera_hf_axi_clk = {
1371 	.halt_reg = 0x36010,
1372 	.halt_check = BRANCH_HALT_SKIP,
1373 	.hwcg_reg = 0x36010,
1374 	.hwcg_bit = 1,
1375 	.clkr = {
1376 		.enable_reg = 0x36010,
1377 		.enable_mask = BIT(0),
1378 		.hw.init = &(struct clk_init_data){
1379 			.name = "gcc_camera_hf_axi_clk",
1380 			.ops = &clk_branch2_ops,
1381 		},
1382 	},
1383 };
1384 
1385 static struct clk_branch gcc_camera_sf_axi_clk = {
1386 	.halt_reg = 0x36018,
1387 	.halt_check = BRANCH_HALT_SKIP,
1388 	.hwcg_reg = 0x36018,
1389 	.hwcg_bit = 1,
1390 	.clkr = {
1391 		.enable_reg = 0x36018,
1392 		.enable_mask = BIT(0),
1393 		.hw.init = &(struct clk_init_data){
1394 			.name = "gcc_camera_sf_axi_clk",
1395 			.ops = &clk_branch2_ops,
1396 		},
1397 	},
1398 };
1399 
1400 static struct clk_branch gcc_cfg_noc_pcie_anoc_ahb_clk = {
1401 	.halt_reg = 0x20030,
1402 	.halt_check = BRANCH_HALT_VOTED,
1403 	.hwcg_reg = 0x20030,
1404 	.hwcg_bit = 1,
1405 	.clkr = {
1406 		.enable_reg = 0x62000,
1407 		.enable_mask = BIT(20),
1408 		.hw.init = &(struct clk_init_data){
1409 			.name = "gcc_cfg_noc_pcie_anoc_ahb_clk",
1410 			.ops = &clk_branch2_ops,
1411 		},
1412 	},
1413 };
1414 
1415 static struct clk_branch gcc_cfg_noc_usb3_prim_axi_clk = {
1416 	.halt_reg = 0x49084,
1417 	.halt_check = BRANCH_HALT_VOTED,
1418 	.hwcg_reg = 0x49084,
1419 	.hwcg_bit = 1,
1420 	.clkr = {
1421 		.enable_reg = 0x49084,
1422 		.enable_mask = BIT(0),
1423 		.hw.init = &(struct clk_init_data){
1424 			.name = "gcc_cfg_noc_usb3_prim_axi_clk",
1425 			.parent_hws = (const struct clk_hw*[]) {
1426 				&gcc_usb30_prim_master_clk_src.clkr.hw,
1427 			},
1428 			.num_parents = 1,
1429 			.flags = CLK_SET_RATE_PARENT,
1430 			.ops = &clk_branch2_ops,
1431 		},
1432 	},
1433 };
1434 
1435 static struct clk_branch gcc_ddrss_gpu_axi_clk = {
1436 	.halt_reg = 0x81154,
1437 	.halt_check = BRANCH_HALT_SKIP,
1438 	.hwcg_reg = 0x81154,
1439 	.hwcg_bit = 1,
1440 	.clkr = {
1441 		.enable_reg = 0x81154,
1442 		.enable_mask = BIT(0),
1443 		.hw.init = &(struct clk_init_data){
1444 			.name = "gcc_ddrss_gpu_axi_clk",
1445 			.ops = &clk_branch2_aon_ops,
1446 		},
1447 	},
1448 };
1449 
1450 static struct clk_branch gcc_ddrss_pcie_sf_tbu_clk = {
1451 	.halt_reg = 0x9d094,
1452 	.halt_check = BRANCH_HALT_SKIP,
1453 	.hwcg_reg = 0x9d094,
1454 	.hwcg_bit = 1,
1455 	.clkr = {
1456 		.enable_reg = 0x62000,
1457 		.enable_mask = BIT(19),
1458 		.hw.init = &(struct clk_init_data){
1459 			.name = "gcc_ddrss_pcie_sf_tbu_clk",
1460 			.ops = &clk_branch2_ops,
1461 		},
1462 	},
1463 };
1464 
1465 static struct clk_branch gcc_disp_hf_axi_clk = {
1466 	.halt_reg = 0x3700c,
1467 	.halt_check = BRANCH_HALT_SKIP,
1468 	.hwcg_reg = 0x3700c,
1469 	.hwcg_bit = 1,
1470 	.clkr = {
1471 		.enable_reg = 0x3700c,
1472 		.enable_mask = BIT(0),
1473 		.hw.init = &(struct clk_init_data){
1474 			.name = "gcc_disp_hf_axi_clk",
1475 			.ops = &clk_branch2_ops,
1476 		},
1477 	},
1478 };
1479 
1480 static struct clk_branch gcc_disp_sf_axi_clk = {
1481 	.halt_reg = 0x37014,
1482 	.halt_check = BRANCH_HALT_SKIP,
1483 	.hwcg_reg = 0x37014,
1484 	.hwcg_bit = 1,
1485 	.clkr = {
1486 		.enable_reg = 0x37014,
1487 		.enable_mask = BIT(0),
1488 		.hw.init = &(struct clk_init_data){
1489 			.name = "gcc_disp_sf_axi_clk",
1490 			.ops = &clk_branch2_ops,
1491 		},
1492 	},
1493 };
1494 
1495 static struct clk_branch gcc_eusb3_0_clkref_en = {
1496 	.halt_reg = 0x9c00c,
1497 	.halt_check = BRANCH_HALT,
1498 	.clkr = {
1499 		.enable_reg = 0x9c00c,
1500 		.enable_mask = BIT(0),
1501 		.hw.init = &(struct clk_init_data){
1502 			.name = "gcc_eusb3_0_clkref_en",
1503 			.ops = &clk_branch2_ops,
1504 		},
1505 	},
1506 };
1507 
1508 static struct clk_branch gcc_gp1_clk = {
1509 	.halt_reg = 0x74000,
1510 	.halt_check = BRANCH_HALT,
1511 	.clkr = {
1512 		.enable_reg = 0x74000,
1513 		.enable_mask = BIT(0),
1514 		.hw.init = &(struct clk_init_data){
1515 			.name = "gcc_gp1_clk",
1516 			.parent_hws = (const struct clk_hw*[]) {
1517 				&gcc_gp1_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_gp2_clk = {
1527 	.halt_reg = 0x75000,
1528 	.halt_check = BRANCH_HALT,
1529 	.clkr = {
1530 		.enable_reg = 0x75000,
1531 		.enable_mask = BIT(0),
1532 		.hw.init = &(struct clk_init_data){
1533 			.name = "gcc_gp2_clk",
1534 			.parent_hws = (const struct clk_hw*[]) {
1535 				&gcc_gp2_clk_src.clkr.hw,
1536 			},
1537 			.num_parents = 1,
1538 			.flags = CLK_SET_RATE_PARENT,
1539 			.ops = &clk_branch2_ops,
1540 		},
1541 	},
1542 };
1543 
1544 static struct clk_branch gcc_gp3_clk = {
1545 	.halt_reg = 0x76000,
1546 	.halt_check = BRANCH_HALT,
1547 	.clkr = {
1548 		.enable_reg = 0x76000,
1549 		.enable_mask = BIT(0),
1550 		.hw.init = &(struct clk_init_data){
1551 			.name = "gcc_gp3_clk",
1552 			.parent_hws = (const struct clk_hw*[]) {
1553 				&gcc_gp3_clk_src.clkr.hw,
1554 			},
1555 			.num_parents = 1,
1556 			.flags = CLK_SET_RATE_PARENT,
1557 			.ops = &clk_branch2_ops,
1558 		},
1559 	},
1560 };
1561 
1562 static struct clk_branch gcc_gpu_gpll0_clk_src = {
1563 	.halt_check = BRANCH_HALT_DELAY,
1564 	.clkr = {
1565 		.enable_reg = 0x62000,
1566 		.enable_mask = BIT(15),
1567 		.hw.init = &(struct clk_init_data){
1568 			.name = "gcc_gpu_gpll0_clk_src",
1569 			.parent_hws = (const struct clk_hw*[]) {
1570 				&gcc_gpll0.clkr.hw,
1571 			},
1572 			.num_parents = 1,
1573 			.flags = CLK_SET_RATE_PARENT,
1574 			.ops = &clk_branch2_ops,
1575 		},
1576 	},
1577 };
1578 
1579 static struct clk_branch gcc_gpu_gpll0_div_clk_src = {
1580 	.halt_check = BRANCH_HALT_DELAY,
1581 	.clkr = {
1582 		.enable_reg = 0x62000,
1583 		.enable_mask = BIT(16),
1584 		.hw.init = &(struct clk_init_data){
1585 			.name = "gcc_gpu_gpll0_div_clk_src",
1586 			.parent_hws = (const struct clk_hw*[]) {
1587 				&gcc_gpll0_out_even.clkr.hw,
1588 			},
1589 			.num_parents = 1,
1590 			.flags = CLK_SET_RATE_PARENT,
1591 			.ops = &clk_branch2_ops,
1592 		},
1593 	},
1594 };
1595 
1596 static struct clk_branch gcc_gpu_memnoc_gfx_clk = {
1597 	.halt_reg = 0x81010,
1598 	.halt_check = BRANCH_HALT_VOTED,
1599 	.hwcg_reg = 0x81010,
1600 	.hwcg_bit = 1,
1601 	.clkr = {
1602 		.enable_reg = 0x81010,
1603 		.enable_mask = BIT(0),
1604 		.hw.init = &(struct clk_init_data){
1605 			.name = "gcc_gpu_memnoc_gfx_clk",
1606 			.ops = &clk_branch2_ops,
1607 		},
1608 	},
1609 };
1610 
1611 static struct clk_branch gcc_gpu_snoc_dvm_gfx_clk = {
1612 	.halt_reg = 0x81018,
1613 	.halt_check = BRANCH_HALT_DELAY,
1614 	.clkr = {
1615 		.enable_reg = 0x81018,
1616 		.enable_mask = BIT(0),
1617 		.hw.init = &(struct clk_init_data){
1618 			.name = "gcc_gpu_snoc_dvm_gfx_clk",
1619 			.ops = &clk_branch2_ops,
1620 		},
1621 	},
1622 };
1623 
1624 static struct clk_branch gcc_pcie_0_aux_clk = {
1625 	.halt_reg = 0x7b034,
1626 	.halt_check = BRANCH_HALT_VOTED,
1627 	.clkr = {
1628 		.enable_reg = 0x62008,
1629 		.enable_mask = BIT(3),
1630 		.hw.init = &(struct clk_init_data){
1631 			.name = "gcc_pcie_0_aux_clk",
1632 			.parent_hws = (const struct clk_hw*[]) {
1633 				&gcc_pcie_0_aux_clk_src.clkr.hw,
1634 			},
1635 			.num_parents = 1,
1636 			.flags = CLK_SET_RATE_PARENT,
1637 			.ops = &clk_branch2_ops,
1638 		},
1639 	},
1640 };
1641 
1642 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1643 	.halt_reg = 0x7b030,
1644 	.halt_check = BRANCH_HALT_VOTED,
1645 	.hwcg_reg = 0x7b030,
1646 	.hwcg_bit = 1,
1647 	.clkr = {
1648 		.enable_reg = 0x62008,
1649 		.enable_mask = BIT(2),
1650 		.hw.init = &(struct clk_init_data){
1651 			.name = "gcc_pcie_0_cfg_ahb_clk",
1652 			.ops = &clk_branch2_ops,
1653 		},
1654 	},
1655 };
1656 
1657 static struct clk_branch gcc_pcie_0_clkref_en = {
1658 	.halt_reg = 0x9c004,
1659 	.halt_check = BRANCH_HALT,
1660 	.clkr = {
1661 		.enable_reg = 0x9c004,
1662 		.enable_mask = BIT(0),
1663 		.hw.init = &(struct clk_init_data){
1664 			.name = "gcc_pcie_0_clkref_en",
1665 			.ops = &clk_branch2_ops,
1666 		},
1667 	},
1668 };
1669 
1670 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1671 	.halt_reg = 0x7b028,
1672 	.halt_check = BRANCH_HALT_SKIP,
1673 	.clkr = {
1674 		.enable_reg = 0x62008,
1675 		.enable_mask = BIT(1),
1676 		.hw.init = &(struct clk_init_data){
1677 			.name = "gcc_pcie_0_mstr_axi_clk",
1678 			.ops = &clk_branch2_ops,
1679 		},
1680 	},
1681 };
1682 
1683 static struct clk_branch gcc_pcie_0_phy_rchng_clk = {
1684 	.halt_reg = 0x7b044,
1685 	.halt_check = BRANCH_HALT_VOTED,
1686 	.clkr = {
1687 		.enable_reg = 0x62000,
1688 		.enable_mask = BIT(22),
1689 		.hw.init = &(struct clk_init_data){
1690 			.name = "gcc_pcie_0_phy_rchng_clk",
1691 			.parent_hws = (const struct clk_hw*[]) {
1692 				&gcc_pcie_0_phy_rchng_clk_src.clkr.hw,
1693 			},
1694 			.num_parents = 1,
1695 			.flags = CLK_SET_RATE_PARENT,
1696 			.ops = &clk_branch2_ops,
1697 		},
1698 	},
1699 };
1700 
1701 static struct clk_branch gcc_pcie_0_pipe_clk = {
1702 	.halt_reg = 0x7b03c,
1703 	.halt_check = BRANCH_HALT_SKIP,
1704 	.clkr = {
1705 		.enable_reg = 0x62008,
1706 		.enable_mask = BIT(4),
1707 		.hw.init = &(struct clk_init_data){
1708 			.name = "gcc_pcie_0_pipe_clk",
1709 			.parent_hws = (const struct clk_hw*[]) {
1710 				&gcc_pcie_0_pipe_clk_src.clkr.hw,
1711 			},
1712 			.num_parents = 1,
1713 			.flags = CLK_SET_RATE_PARENT,
1714 			.ops = &clk_branch2_ops,
1715 		},
1716 	},
1717 };
1718 
1719 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1720 	.halt_reg = 0x7b020,
1721 	.halt_check = BRANCH_HALT_VOTED,
1722 	.hwcg_reg = 0x7b020,
1723 	.hwcg_bit = 1,
1724 	.clkr = {
1725 		.enable_reg = 0x62008,
1726 		.enable_mask = BIT(0),
1727 		.hw.init = &(struct clk_init_data){
1728 			.name = "gcc_pcie_0_slv_axi_clk",
1729 			.ops = &clk_branch2_ops,
1730 		},
1731 	},
1732 };
1733 
1734 static struct clk_branch gcc_pcie_0_slv_q2a_axi_clk = {
1735 	.halt_reg = 0x7b01c,
1736 	.halt_check = BRANCH_HALT_VOTED,
1737 	.clkr = {
1738 		.enable_reg = 0x62008,
1739 		.enable_mask = BIT(5),
1740 		.hw.init = &(struct clk_init_data){
1741 			.name = "gcc_pcie_0_slv_q2a_axi_clk",
1742 			.ops = &clk_branch2_ops,
1743 		},
1744 	},
1745 };
1746 
1747 static struct clk_branch gcc_pcie_1_aux_clk = {
1748 	.halt_reg = 0x9d030,
1749 	.halt_check = BRANCH_HALT_VOTED,
1750 	.clkr = {
1751 		.enable_reg = 0x62000,
1752 		.enable_mask = BIT(29),
1753 		.hw.init = &(struct clk_init_data){
1754 			.name = "gcc_pcie_1_aux_clk",
1755 			.parent_hws = (const struct clk_hw*[]) {
1756 				&gcc_pcie_1_aux_clk_src.clkr.hw,
1757 			},
1758 			.num_parents = 1,
1759 			.flags = CLK_SET_RATE_PARENT,
1760 			.ops = &clk_branch2_ops,
1761 		},
1762 	},
1763 };
1764 
1765 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1766 	.halt_reg = 0x9d02c,
1767 	.halt_check = BRANCH_HALT_VOTED,
1768 	.hwcg_reg = 0x9d02c,
1769 	.hwcg_bit = 1,
1770 	.clkr = {
1771 		.enable_reg = 0x62000,
1772 		.enable_mask = BIT(28),
1773 		.hw.init = &(struct clk_init_data){
1774 			.name = "gcc_pcie_1_cfg_ahb_clk",
1775 			.ops = &clk_branch2_ops,
1776 		},
1777 	},
1778 };
1779 
1780 static struct clk_branch gcc_pcie_1_clkref_en = {
1781 	.halt_reg = 0x9c008,
1782 	.halt_check = BRANCH_HALT,
1783 	.clkr = {
1784 		.enable_reg = 0x9c008,
1785 		.enable_mask = BIT(0),
1786 		.hw.init = &(struct clk_init_data){
1787 			.name = "gcc_pcie_1_clkref_en",
1788 			.ops = &clk_branch2_ops,
1789 		},
1790 	},
1791 };
1792 
1793 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1794 	.halt_reg = 0x9d024,
1795 	.halt_check = BRANCH_HALT_SKIP,
1796 	.clkr = {
1797 		.enable_reg = 0x62000,
1798 		.enable_mask = BIT(27),
1799 		.hw.init = &(struct clk_init_data){
1800 			.name = "gcc_pcie_1_mstr_axi_clk",
1801 			.ops = &clk_branch2_ops,
1802 		},
1803 	},
1804 };
1805 
1806 static struct clk_branch gcc_pcie_1_phy_aux_clk = {
1807 	.halt_reg = 0x9d038,
1808 	.halt_check = BRANCH_HALT_VOTED,
1809 	.clkr = {
1810 		.enable_reg = 0x62000,
1811 		.enable_mask = BIT(24),
1812 		.hw.init = &(struct clk_init_data){
1813 			.name = "gcc_pcie_1_phy_aux_clk",
1814 			.parent_hws = (const struct clk_hw*[]) {
1815 				&gcc_pcie_1_phy_aux_clk_src.clkr.hw,
1816 			},
1817 			.num_parents = 1,
1818 			.flags = CLK_SET_RATE_PARENT,
1819 			.ops = &clk_branch2_ops,
1820 		},
1821 	},
1822 };
1823 
1824 static struct clk_branch gcc_pcie_1_phy_rchng_clk = {
1825 	.halt_reg = 0x9d048,
1826 	.halt_check = BRANCH_HALT_VOTED,
1827 	.clkr = {
1828 		.enable_reg = 0x62000,
1829 		.enable_mask = BIT(23),
1830 		.hw.init = &(struct clk_init_data){
1831 			.name = "gcc_pcie_1_phy_rchng_clk",
1832 			.parent_hws = (const struct clk_hw*[]) {
1833 				&gcc_pcie_1_phy_rchng_clk_src.clkr.hw,
1834 			},
1835 			.num_parents = 1,
1836 			.flags = CLK_SET_RATE_PARENT,
1837 			.ops = &clk_branch2_ops,
1838 		},
1839 	},
1840 };
1841 
1842 static struct clk_branch gcc_pcie_1_pipe_clk = {
1843 	.halt_reg = 0x9d040,
1844 	.halt_check = BRANCH_HALT_SKIP,
1845 	.clkr = {
1846 		.enable_reg = 0x62000,
1847 		.enable_mask = BIT(30),
1848 		.hw.init = &(struct clk_init_data){
1849 			.name = "gcc_pcie_1_pipe_clk",
1850 			.parent_hws = (const struct clk_hw*[]) {
1851 				&gcc_pcie_1_pipe_clk_src.clkr.hw,
1852 			},
1853 			.num_parents = 1,
1854 			.flags = CLK_SET_RATE_PARENT,
1855 			.ops = &clk_branch2_ops,
1856 		},
1857 	},
1858 };
1859 
1860 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1861 	.halt_reg = 0x9d01c,
1862 	.halt_check = BRANCH_HALT_VOTED,
1863 	.hwcg_reg = 0x9d01c,
1864 	.hwcg_bit = 1,
1865 	.clkr = {
1866 		.enable_reg = 0x62000,
1867 		.enable_mask = BIT(26),
1868 		.hw.init = &(struct clk_init_data){
1869 			.name = "gcc_pcie_1_slv_axi_clk",
1870 			.ops = &clk_branch2_ops,
1871 		},
1872 	},
1873 };
1874 
1875 static struct clk_branch gcc_pcie_1_slv_q2a_axi_clk = {
1876 	.halt_reg = 0x9d018,
1877 	.halt_check = BRANCH_HALT_VOTED,
1878 	.clkr = {
1879 		.enable_reg = 0x62000,
1880 		.enable_mask = BIT(25),
1881 		.hw.init = &(struct clk_init_data){
1882 			.name = "gcc_pcie_1_slv_q2a_axi_clk",
1883 			.ops = &clk_branch2_ops,
1884 		},
1885 	},
1886 };
1887 
1888 static struct clk_branch gcc_pdm2_clk = {
1889 	.halt_reg = 0x4300c,
1890 	.halt_check = BRANCH_HALT,
1891 	.clkr = {
1892 		.enable_reg = 0x4300c,
1893 		.enable_mask = BIT(0),
1894 		.hw.init = &(struct clk_init_data){
1895 			.name = "gcc_pdm2_clk",
1896 			.parent_hws = (const struct clk_hw*[]) {
1897 				&gcc_pdm2_clk_src.clkr.hw,
1898 			},
1899 			.num_parents = 1,
1900 			.flags = CLK_SET_RATE_PARENT,
1901 			.ops = &clk_branch2_ops,
1902 		},
1903 	},
1904 };
1905 
1906 static struct clk_branch gcc_pdm_ahb_clk = {
1907 	.halt_reg = 0x43004,
1908 	.halt_check = BRANCH_HALT_VOTED,
1909 	.hwcg_reg = 0x43004,
1910 	.hwcg_bit = 1,
1911 	.clkr = {
1912 		.enable_reg = 0x43004,
1913 		.enable_mask = BIT(0),
1914 		.hw.init = &(struct clk_init_data){
1915 			.name = "gcc_pdm_ahb_clk",
1916 			.ops = &clk_branch2_ops,
1917 		},
1918 	},
1919 };
1920 
1921 static struct clk_branch gcc_pdm_xo4_clk = {
1922 	.halt_reg = 0x43008,
1923 	.halt_check = BRANCH_HALT,
1924 	.clkr = {
1925 		.enable_reg = 0x43008,
1926 		.enable_mask = BIT(0),
1927 		.hw.init = &(struct clk_init_data){
1928 			.name = "gcc_pdm_xo4_clk",
1929 			.ops = &clk_branch2_ops,
1930 		},
1931 	},
1932 };
1933 
1934 static struct clk_branch gcc_qmip_camera_nrt_ahb_clk = {
1935 	.halt_reg = 0x36008,
1936 	.halt_check = BRANCH_HALT_VOTED,
1937 	.hwcg_reg = 0x36008,
1938 	.hwcg_bit = 1,
1939 	.clkr = {
1940 		.enable_reg = 0x36008,
1941 		.enable_mask = BIT(0),
1942 		.hw.init = &(struct clk_init_data){
1943 			.name = "gcc_qmip_camera_nrt_ahb_clk",
1944 			.ops = &clk_branch2_ops,
1945 		},
1946 	},
1947 };
1948 
1949 static struct clk_branch gcc_qmip_camera_rt_ahb_clk = {
1950 	.halt_reg = 0x3600c,
1951 	.halt_check = BRANCH_HALT_VOTED,
1952 	.hwcg_reg = 0x3600c,
1953 	.hwcg_bit = 1,
1954 	.clkr = {
1955 		.enable_reg = 0x3600c,
1956 		.enable_mask = BIT(0),
1957 		.hw.init = &(struct clk_init_data){
1958 			.name = "gcc_qmip_camera_rt_ahb_clk",
1959 			.ops = &clk_branch2_ops,
1960 		},
1961 	},
1962 };
1963 
1964 static struct clk_branch gcc_qmip_disp_ahb_clk = {
1965 	.halt_reg = 0x37008,
1966 	.halt_check = BRANCH_HALT_VOTED,
1967 	.hwcg_reg = 0x37008,
1968 	.hwcg_bit = 1,
1969 	.clkr = {
1970 		.enable_reg = 0x37008,
1971 		.enable_mask = BIT(0),
1972 		.hw.init = &(struct clk_init_data){
1973 			.name = "gcc_qmip_disp_ahb_clk",
1974 			.ops = &clk_branch2_ops,
1975 		},
1976 	},
1977 };
1978 
1979 static struct clk_branch gcc_qmip_gpu_ahb_clk = {
1980 	.halt_reg = 0x81008,
1981 	.halt_check = BRANCH_HALT_VOTED,
1982 	.hwcg_reg = 0x81008,
1983 	.hwcg_bit = 1,
1984 	.clkr = {
1985 		.enable_reg = 0x81008,
1986 		.enable_mask = BIT(0),
1987 		.hw.init = &(struct clk_init_data){
1988 			.name = "gcc_qmip_gpu_ahb_clk",
1989 			.ops = &clk_branch2_ops,
1990 		},
1991 	},
1992 };
1993 
1994 static struct clk_branch gcc_qmip_pcie_ahb_clk = {
1995 	.halt_reg = 0x7b018,
1996 	.halt_check = BRANCH_HALT_VOTED,
1997 	.hwcg_reg = 0x7b018,
1998 	.hwcg_bit = 1,
1999 	.clkr = {
2000 		.enable_reg = 0x7b018,
2001 		.enable_mask = BIT(0),
2002 		.hw.init = &(struct clk_init_data){
2003 			.name = "gcc_qmip_pcie_ahb_clk",
2004 			.ops = &clk_branch2_ops,
2005 		},
2006 	},
2007 };
2008 
2009 static struct clk_branch gcc_qmip_video_cv_cpu_ahb_clk = {
2010 	.halt_reg = 0x42014,
2011 	.halt_check = BRANCH_HALT_VOTED,
2012 	.hwcg_reg = 0x42014,
2013 	.hwcg_bit = 1,
2014 	.clkr = {
2015 		.enable_reg = 0x42014,
2016 		.enable_mask = BIT(0),
2017 		.hw.init = &(struct clk_init_data){
2018 			.name = "gcc_qmip_video_cv_cpu_ahb_clk",
2019 			.ops = &clk_branch2_ops,
2020 		},
2021 	},
2022 };
2023 
2024 static struct clk_branch gcc_qmip_video_cvp_ahb_clk = {
2025 	.halt_reg = 0x42008,
2026 	.halt_check = BRANCH_HALT_VOTED,
2027 	.hwcg_reg = 0x42008,
2028 	.hwcg_bit = 1,
2029 	.clkr = {
2030 		.enable_reg = 0x42008,
2031 		.enable_mask = BIT(0),
2032 		.hw.init = &(struct clk_init_data){
2033 			.name = "gcc_qmip_video_cvp_ahb_clk",
2034 			.ops = &clk_branch2_ops,
2035 		},
2036 	},
2037 };
2038 
2039 static struct clk_branch gcc_qmip_video_v_cpu_ahb_clk = {
2040 	.halt_reg = 0x42010,
2041 	.halt_check = BRANCH_HALT_VOTED,
2042 	.hwcg_reg = 0x42010,
2043 	.hwcg_bit = 1,
2044 	.clkr = {
2045 		.enable_reg = 0x42010,
2046 		.enable_mask = BIT(0),
2047 		.hw.init = &(struct clk_init_data){
2048 			.name = "gcc_qmip_video_v_cpu_ahb_clk",
2049 			.ops = &clk_branch2_ops,
2050 		},
2051 	},
2052 };
2053 
2054 static struct clk_branch gcc_qmip_video_vcodec_ahb_clk = {
2055 	.halt_reg = 0x4200c,
2056 	.halt_check = BRANCH_HALT_VOTED,
2057 	.hwcg_reg = 0x4200c,
2058 	.hwcg_bit = 1,
2059 	.clkr = {
2060 		.enable_reg = 0x4200c,
2061 		.enable_mask = BIT(0),
2062 		.hw.init = &(struct clk_init_data){
2063 			.name = "gcc_qmip_video_vcodec_ahb_clk",
2064 			.ops = &clk_branch2_ops,
2065 		},
2066 	},
2067 };
2068 
2069 static struct clk_branch gcc_qupv3_wrap0_core_2x_clk = {
2070 	.halt_reg = 0x3300c,
2071 	.halt_check = BRANCH_HALT_VOTED,
2072 	.clkr = {
2073 		.enable_reg = 0x62008,
2074 		.enable_mask = BIT(9),
2075 		.hw.init = &(struct clk_init_data){
2076 			.name = "gcc_qupv3_wrap0_core_2x_clk",
2077 			.ops = &clk_branch2_ops,
2078 		},
2079 	},
2080 };
2081 
2082 static struct clk_branch gcc_qupv3_wrap0_core_clk = {
2083 	.halt_reg = 0x33000,
2084 	.halt_check = BRANCH_HALT_VOTED,
2085 	.clkr = {
2086 		.enable_reg = 0x62008,
2087 		.enable_mask = BIT(8),
2088 		.hw.init = &(struct clk_init_data){
2089 			.name = "gcc_qupv3_wrap0_core_clk",
2090 			.ops = &clk_branch2_ops,
2091 		},
2092 	},
2093 };
2094 
2095 static struct clk_branch gcc_qupv3_wrap0_s0_clk = {
2096 	.halt_reg = 0x2700c,
2097 	.halt_check = BRANCH_HALT_VOTED,
2098 	.clkr = {
2099 		.enable_reg = 0x62008,
2100 		.enable_mask = BIT(10),
2101 		.hw.init = &(struct clk_init_data){
2102 			.name = "gcc_qupv3_wrap0_s0_clk",
2103 			.parent_hws = (const struct clk_hw*[]) {
2104 				&gcc_qupv3_wrap0_s0_clk_src.clkr.hw,
2105 			},
2106 			.num_parents = 1,
2107 			.flags = CLK_SET_RATE_PARENT,
2108 			.ops = &clk_branch2_ops,
2109 		},
2110 	},
2111 };
2112 
2113 static struct clk_branch gcc_qupv3_wrap0_s1_clk = {
2114 	.halt_reg = 0x27140,
2115 	.halt_check = BRANCH_HALT_VOTED,
2116 	.clkr = {
2117 		.enable_reg = 0x62008,
2118 		.enable_mask = BIT(11),
2119 		.hw.init = &(struct clk_init_data){
2120 			.name = "gcc_qupv3_wrap0_s1_clk",
2121 			.parent_hws = (const struct clk_hw*[]) {
2122 				&gcc_qupv3_wrap0_s1_clk_src.clkr.hw,
2123 			},
2124 			.num_parents = 1,
2125 			.flags = CLK_SET_RATE_PARENT,
2126 			.ops = &clk_branch2_ops,
2127 		},
2128 	},
2129 };
2130 
2131 static struct clk_branch gcc_qupv3_wrap0_s2_clk = {
2132 	.halt_reg = 0x27274,
2133 	.halt_check = BRANCH_HALT_VOTED,
2134 	.clkr = {
2135 		.enable_reg = 0x62008,
2136 		.enable_mask = BIT(12),
2137 		.hw.init = &(struct clk_init_data){
2138 			.name = "gcc_qupv3_wrap0_s2_clk",
2139 			.parent_hws = (const struct clk_hw*[]) {
2140 				&gcc_qupv3_wrap0_s2_clk_src.clkr.hw,
2141 			},
2142 			.num_parents = 1,
2143 			.flags = CLK_SET_RATE_PARENT,
2144 			.ops = &clk_branch2_ops,
2145 		},
2146 	},
2147 };
2148 
2149 static struct clk_branch gcc_qupv3_wrap0_s3_clk = {
2150 	.halt_reg = 0x273a8,
2151 	.halt_check = BRANCH_HALT_VOTED,
2152 	.clkr = {
2153 		.enable_reg = 0x62008,
2154 		.enable_mask = BIT(13),
2155 		.hw.init = &(struct clk_init_data){
2156 			.name = "gcc_qupv3_wrap0_s3_clk",
2157 			.parent_hws = (const struct clk_hw*[]) {
2158 				&gcc_qupv3_wrap0_s3_clk_src.clkr.hw,
2159 			},
2160 			.num_parents = 1,
2161 			.flags = CLK_SET_RATE_PARENT,
2162 			.ops = &clk_branch2_ops,
2163 		},
2164 	},
2165 };
2166 
2167 static struct clk_branch gcc_qupv3_wrap0_s4_clk = {
2168 	.halt_reg = 0x274dc,
2169 	.halt_check = BRANCH_HALT_VOTED,
2170 	.clkr = {
2171 		.enable_reg = 0x62008,
2172 		.enable_mask = BIT(14),
2173 		.hw.init = &(struct clk_init_data){
2174 			.name = "gcc_qupv3_wrap0_s4_clk",
2175 			.parent_hws = (const struct clk_hw*[]) {
2176 				&gcc_qupv3_wrap0_s4_clk_src.clkr.hw,
2177 			},
2178 			.num_parents = 1,
2179 			.flags = CLK_SET_RATE_PARENT,
2180 			.ops = &clk_branch2_ops,
2181 		},
2182 	},
2183 };
2184 
2185 static struct clk_branch gcc_qupv3_wrap0_s5_clk = {
2186 	.halt_reg = 0x27610,
2187 	.halt_check = BRANCH_HALT_VOTED,
2188 	.clkr = {
2189 		.enable_reg = 0x62008,
2190 		.enable_mask = BIT(15),
2191 		.hw.init = &(struct clk_init_data){
2192 			.name = "gcc_qupv3_wrap0_s5_clk",
2193 			.parent_hws = (const struct clk_hw*[]) {
2194 				&gcc_qupv3_wrap0_s5_clk_src.clkr.hw,
2195 			},
2196 			.num_parents = 1,
2197 			.flags = CLK_SET_RATE_PARENT,
2198 			.ops = &clk_branch2_ops,
2199 		},
2200 	},
2201 };
2202 
2203 static struct clk_branch gcc_qupv3_wrap0_s6_clk = {
2204 	.halt_reg = 0x27744,
2205 	.halt_check = BRANCH_HALT_VOTED,
2206 	.clkr = {
2207 		.enable_reg = 0x62008,
2208 		.enable_mask = BIT(16),
2209 		.hw.init = &(struct clk_init_data){
2210 			.name = "gcc_qupv3_wrap0_s6_clk",
2211 			.parent_hws = (const struct clk_hw*[]) {
2212 				&gcc_qupv3_wrap0_s6_clk_src.clkr.hw,
2213 			},
2214 			.num_parents = 1,
2215 			.flags = CLK_SET_RATE_PARENT,
2216 			.ops = &clk_branch2_ops,
2217 		},
2218 	},
2219 };
2220 
2221 static struct clk_branch gcc_qupv3_wrap0_s7_clk = {
2222 	.halt_reg = 0x27878,
2223 	.halt_check = BRANCH_HALT_VOTED,
2224 	.clkr = {
2225 		.enable_reg = 0x62008,
2226 		.enable_mask = BIT(17),
2227 		.hw.init = &(struct clk_init_data){
2228 			.name = "gcc_qupv3_wrap0_s7_clk",
2229 			.parent_hws = (const struct clk_hw*[]) {
2230 				&gcc_qupv3_wrap0_s7_clk_src.clkr.hw,
2231 			},
2232 			.num_parents = 1,
2233 			.flags = CLK_SET_RATE_PARENT,
2234 			.ops = &clk_branch2_ops,
2235 		},
2236 	},
2237 };
2238 
2239 static struct clk_branch gcc_qupv3_wrap1_core_2x_clk = {
2240 	.halt_reg = 0x3314c,
2241 	.halt_check = BRANCH_HALT_VOTED,
2242 	.clkr = {
2243 		.enable_reg = 0x62008,
2244 		.enable_mask = BIT(18),
2245 		.hw.init = &(struct clk_init_data){
2246 			.name = "gcc_qupv3_wrap1_core_2x_clk",
2247 			.ops = &clk_branch2_ops,
2248 		},
2249 	},
2250 };
2251 
2252 static struct clk_branch gcc_qupv3_wrap1_core_clk = {
2253 	.halt_reg = 0x33140,
2254 	.halt_check = BRANCH_HALT_VOTED,
2255 	.clkr = {
2256 		.enable_reg = 0x62008,
2257 		.enable_mask = BIT(19),
2258 		.hw.init = &(struct clk_init_data){
2259 			.name = "gcc_qupv3_wrap1_core_clk",
2260 			.ops = &clk_branch2_ops,
2261 		},
2262 	},
2263 };
2264 
2265 static struct clk_branch gcc_qupv3_wrap1_s0_clk = {
2266 	.halt_reg = 0x2800c,
2267 	.halt_check = BRANCH_HALT_VOTED,
2268 	.clkr = {
2269 		.enable_reg = 0x62008,
2270 		.enable_mask = BIT(22),
2271 		.hw.init = &(struct clk_init_data){
2272 			.name = "gcc_qupv3_wrap1_s0_clk",
2273 			.parent_hws = (const struct clk_hw*[]) {
2274 				&gcc_qupv3_wrap1_s0_clk_src.clkr.hw,
2275 			},
2276 			.num_parents = 1,
2277 			.flags = CLK_SET_RATE_PARENT,
2278 			.ops = &clk_branch2_ops,
2279 		},
2280 	},
2281 };
2282 
2283 static struct clk_branch gcc_qupv3_wrap1_s1_clk = {
2284 	.halt_reg = 0x28140,
2285 	.halt_check = BRANCH_HALT_VOTED,
2286 	.clkr = {
2287 		.enable_reg = 0x62008,
2288 		.enable_mask = BIT(23),
2289 		.hw.init = &(struct clk_init_data){
2290 			.name = "gcc_qupv3_wrap1_s1_clk",
2291 			.parent_hws = (const struct clk_hw*[]) {
2292 				&gcc_qupv3_wrap1_s1_clk_src.clkr.hw,
2293 			},
2294 			.num_parents = 1,
2295 			.flags = CLK_SET_RATE_PARENT,
2296 			.ops = &clk_branch2_ops,
2297 		},
2298 	},
2299 };
2300 
2301 static struct clk_branch gcc_qupv3_wrap1_s2_clk = {
2302 	.halt_reg = 0x28274,
2303 	.halt_check = BRANCH_HALT_VOTED,
2304 	.clkr = {
2305 		.enable_reg = 0x62008,
2306 		.enable_mask = BIT(24),
2307 		.hw.init = &(struct clk_init_data){
2308 			.name = "gcc_qupv3_wrap1_s2_clk",
2309 			.parent_hws = (const struct clk_hw*[]) {
2310 				&gcc_qupv3_wrap1_s2_clk_src.clkr.hw,
2311 			},
2312 			.num_parents = 1,
2313 			.flags = CLK_SET_RATE_PARENT,
2314 			.ops = &clk_branch2_ops,
2315 		},
2316 	},
2317 };
2318 
2319 static struct clk_branch gcc_qupv3_wrap1_s3_clk = {
2320 	.halt_reg = 0x283a8,
2321 	.halt_check = BRANCH_HALT_VOTED,
2322 	.clkr = {
2323 		.enable_reg = 0x62008,
2324 		.enable_mask = BIT(25),
2325 		.hw.init = &(struct clk_init_data){
2326 			.name = "gcc_qupv3_wrap1_s3_clk",
2327 			.parent_hws = (const struct clk_hw*[]) {
2328 				&gcc_qupv3_wrap1_s3_clk_src.clkr.hw,
2329 			},
2330 			.num_parents = 1,
2331 			.flags = CLK_SET_RATE_PARENT,
2332 			.ops = &clk_branch2_ops,
2333 		},
2334 	},
2335 };
2336 
2337 static struct clk_branch gcc_qupv3_wrap1_s4_clk = {
2338 	.halt_reg = 0x284dc,
2339 	.halt_check = BRANCH_HALT_VOTED,
2340 	.clkr = {
2341 		.enable_reg = 0x62008,
2342 		.enable_mask = BIT(26),
2343 		.hw.init = &(struct clk_init_data){
2344 			.name = "gcc_qupv3_wrap1_s4_clk",
2345 			.parent_hws = (const struct clk_hw*[]) {
2346 				&gcc_qupv3_wrap1_s4_clk_src.clkr.hw,
2347 			},
2348 			.num_parents = 1,
2349 			.flags = CLK_SET_RATE_PARENT,
2350 			.ops = &clk_branch2_ops,
2351 		},
2352 	},
2353 };
2354 
2355 static struct clk_branch gcc_qupv3_wrap1_s5_clk = {
2356 	.halt_reg = 0x28610,
2357 	.halt_check = BRANCH_HALT_VOTED,
2358 	.clkr = {
2359 		.enable_reg = 0x62008,
2360 		.enable_mask = BIT(27),
2361 		.hw.init = &(struct clk_init_data){
2362 			.name = "gcc_qupv3_wrap1_s5_clk",
2363 			.parent_hws = (const struct clk_hw*[]) {
2364 				&gcc_qupv3_wrap1_s5_clk_src.clkr.hw,
2365 			},
2366 			.num_parents = 1,
2367 			.flags = CLK_SET_RATE_PARENT,
2368 			.ops = &clk_branch2_ops,
2369 		},
2370 	},
2371 };
2372 
2373 static struct clk_branch gcc_qupv3_wrap1_s6_clk = {
2374 	.halt_reg = 0x28744,
2375 	.halt_check = BRANCH_HALT_VOTED,
2376 	.clkr = {
2377 		.enable_reg = 0x62008,
2378 		.enable_mask = BIT(28),
2379 		.hw.init = &(struct clk_init_data){
2380 			.name = "gcc_qupv3_wrap1_s6_clk",
2381 			.parent_hws = (const struct clk_hw*[]) {
2382 				&gcc_qupv3_wrap1_s6_clk_src.clkr.hw,
2383 			},
2384 			.num_parents = 1,
2385 			.flags = CLK_SET_RATE_PARENT,
2386 			.ops = &clk_branch2_ops,
2387 		},
2388 	},
2389 };
2390 
2391 static struct clk_branch gcc_qupv3_wrap2_core_2x_clk = {
2392 	.halt_reg = 0x3328c,
2393 	.halt_check = BRANCH_HALT_VOTED,
2394 	.clkr = {
2395 		.enable_reg = 0x62010,
2396 		.enable_mask = BIT(3),
2397 		.hw.init = &(struct clk_init_data){
2398 			.name = "gcc_qupv3_wrap2_core_2x_clk",
2399 			.ops = &clk_branch2_ops,
2400 		},
2401 	},
2402 };
2403 
2404 static struct clk_branch gcc_qupv3_wrap2_core_clk = {
2405 	.halt_reg = 0x33280,
2406 	.halt_check = BRANCH_HALT_VOTED,
2407 	.clkr = {
2408 		.enable_reg = 0x62010,
2409 		.enable_mask = BIT(0),
2410 		.hw.init = &(struct clk_init_data){
2411 			.name = "gcc_qupv3_wrap2_core_clk",
2412 			.ops = &clk_branch2_ops,
2413 		},
2414 	},
2415 };
2416 
2417 static struct clk_branch gcc_qupv3_wrap2_s0_clk = {
2418 	.halt_reg = 0x2e00c,
2419 	.halt_check = BRANCH_HALT_VOTED,
2420 	.clkr = {
2421 		.enable_reg = 0x62010,
2422 		.enable_mask = BIT(4),
2423 		.hw.init = &(struct clk_init_data){
2424 			.name = "gcc_qupv3_wrap2_s0_clk",
2425 			.parent_hws = (const struct clk_hw*[]) {
2426 				&gcc_qupv3_wrap2_s0_clk_src.clkr.hw,
2427 			},
2428 			.num_parents = 1,
2429 			.flags = CLK_SET_RATE_PARENT,
2430 			.ops = &clk_branch2_ops,
2431 		},
2432 	},
2433 };
2434 
2435 static struct clk_branch gcc_qupv3_wrap2_s1_clk = {
2436 	.halt_reg = 0x2e140,
2437 	.halt_check = BRANCH_HALT_VOTED,
2438 	.clkr = {
2439 		.enable_reg = 0x62010,
2440 		.enable_mask = BIT(5),
2441 		.hw.init = &(struct clk_init_data){
2442 			.name = "gcc_qupv3_wrap2_s1_clk",
2443 			.parent_hws = (const struct clk_hw*[]) {
2444 				&gcc_qupv3_wrap2_s1_clk_src.clkr.hw,
2445 			},
2446 			.num_parents = 1,
2447 			.flags = CLK_SET_RATE_PARENT,
2448 			.ops = &clk_branch2_ops,
2449 		},
2450 	},
2451 };
2452 
2453 static struct clk_branch gcc_qupv3_wrap2_s2_clk = {
2454 	.halt_reg = 0x2e274,
2455 	.halt_check = BRANCH_HALT_VOTED,
2456 	.clkr = {
2457 		.enable_reg = 0x62010,
2458 		.enable_mask = BIT(6),
2459 		.hw.init = &(struct clk_init_data){
2460 			.name = "gcc_qupv3_wrap2_s2_clk",
2461 			.parent_hws = (const struct clk_hw*[]) {
2462 				&gcc_qupv3_wrap2_s2_clk_src.clkr.hw,
2463 			},
2464 			.num_parents = 1,
2465 			.flags = CLK_SET_RATE_PARENT,
2466 			.ops = &clk_branch2_ops,
2467 		},
2468 	},
2469 };
2470 
2471 static struct clk_branch gcc_qupv3_wrap2_s3_clk = {
2472 	.halt_reg = 0x2e3a8,
2473 	.halt_check = BRANCH_HALT_VOTED,
2474 	.clkr = {
2475 		.enable_reg = 0x62010,
2476 		.enable_mask = BIT(7),
2477 		.hw.init = &(struct clk_init_data){
2478 			.name = "gcc_qupv3_wrap2_s3_clk",
2479 			.parent_hws = (const struct clk_hw*[]) {
2480 				&gcc_qupv3_wrap2_s3_clk_src.clkr.hw,
2481 			},
2482 			.num_parents = 1,
2483 			.flags = CLK_SET_RATE_PARENT,
2484 			.ops = &clk_branch2_ops,
2485 		},
2486 	},
2487 };
2488 
2489 static struct clk_branch gcc_qupv3_wrap2_s4_clk = {
2490 	.halt_reg = 0x2e4dc,
2491 	.halt_check = BRANCH_HALT_VOTED,
2492 	.clkr = {
2493 		.enable_reg = 0x62010,
2494 		.enable_mask = BIT(8),
2495 		.hw.init = &(struct clk_init_data){
2496 			.name = "gcc_qupv3_wrap2_s4_clk",
2497 			.parent_hws = (const struct clk_hw*[]) {
2498 				&gcc_qupv3_wrap2_s4_clk_src.clkr.hw,
2499 			},
2500 			.num_parents = 1,
2501 			.flags = CLK_SET_RATE_PARENT,
2502 			.ops = &clk_branch2_ops,
2503 		},
2504 	},
2505 };
2506 
2507 static struct clk_branch gcc_qupv3_wrap2_s5_clk = {
2508 	.halt_reg = 0x2e610,
2509 	.halt_check = BRANCH_HALT_VOTED,
2510 	.clkr = {
2511 		.enable_reg = 0x62010,
2512 		.enable_mask = BIT(9),
2513 		.hw.init = &(struct clk_init_data){
2514 			.name = "gcc_qupv3_wrap2_s5_clk",
2515 			.parent_hws = (const struct clk_hw*[]) {
2516 				&gcc_qupv3_wrap2_s5_clk_src.clkr.hw,
2517 			},
2518 			.num_parents = 1,
2519 			.flags = CLK_SET_RATE_PARENT,
2520 			.ops = &clk_branch2_ops,
2521 		},
2522 	},
2523 };
2524 
2525 static struct clk_branch gcc_qupv3_wrap2_s6_clk = {
2526 	.halt_reg = 0x2e744,
2527 	.halt_check = BRANCH_HALT_VOTED,
2528 	.clkr = {
2529 		.enable_reg = 0x62010,
2530 		.enable_mask = BIT(10),
2531 		.hw.init = &(struct clk_init_data){
2532 			.name = "gcc_qupv3_wrap2_s6_clk",
2533 			.parent_hws = (const struct clk_hw*[]) {
2534 				&gcc_qupv3_wrap2_s6_clk_src.clkr.hw,
2535 			},
2536 			.num_parents = 1,
2537 			.flags = CLK_SET_RATE_PARENT,
2538 			.ops = &clk_branch2_ops,
2539 		},
2540 	},
2541 };
2542 
2543 static struct clk_branch gcc_qupv3_wrap_0_m_ahb_clk = {
2544 	.halt_reg = 0x27004,
2545 	.halt_check = BRANCH_HALT_VOTED,
2546 	.hwcg_reg = 0x27004,
2547 	.hwcg_bit = 1,
2548 	.clkr = {
2549 		.enable_reg = 0x62008,
2550 		.enable_mask = BIT(6),
2551 		.hw.init = &(struct clk_init_data){
2552 			.name = "gcc_qupv3_wrap_0_m_ahb_clk",
2553 			.ops = &clk_branch2_ops,
2554 		},
2555 	},
2556 };
2557 
2558 static struct clk_branch gcc_qupv3_wrap_0_s_ahb_clk = {
2559 	.halt_reg = 0x27008,
2560 	.halt_check = BRANCH_HALT_VOTED,
2561 	.hwcg_reg = 0x27008,
2562 	.hwcg_bit = 1,
2563 	.clkr = {
2564 		.enable_reg = 0x62008,
2565 		.enable_mask = BIT(7),
2566 		.hw.init = &(struct clk_init_data){
2567 			.name = "gcc_qupv3_wrap_0_s_ahb_clk",
2568 			.ops = &clk_branch2_ops,
2569 		},
2570 	},
2571 };
2572 
2573 static struct clk_branch gcc_qupv3_wrap_1_m_ahb_clk = {
2574 	.halt_reg = 0x28004,
2575 	.halt_check = BRANCH_HALT_VOTED,
2576 	.hwcg_reg = 0x28004,
2577 	.hwcg_bit = 1,
2578 	.clkr = {
2579 		.enable_reg = 0x62008,
2580 		.enable_mask = BIT(20),
2581 		.hw.init = &(struct clk_init_data){
2582 			.name = "gcc_qupv3_wrap_1_m_ahb_clk",
2583 			.ops = &clk_branch2_ops,
2584 		},
2585 	},
2586 };
2587 
2588 static struct clk_branch gcc_qupv3_wrap_1_s_ahb_clk = {
2589 	.halt_reg = 0x28008,
2590 	.halt_check = BRANCH_HALT_VOTED,
2591 	.hwcg_reg = 0x28008,
2592 	.hwcg_bit = 1,
2593 	.clkr = {
2594 		.enable_reg = 0x62008,
2595 		.enable_mask = BIT(21),
2596 		.hw.init = &(struct clk_init_data){
2597 			.name = "gcc_qupv3_wrap_1_s_ahb_clk",
2598 			.ops = &clk_branch2_ops,
2599 		},
2600 	},
2601 };
2602 
2603 static struct clk_branch gcc_qupv3_wrap_2_m_ahb_clk = {
2604 	.halt_reg = 0x2e004,
2605 	.halt_check = BRANCH_HALT_VOTED,
2606 	.hwcg_reg = 0x2e004,
2607 	.hwcg_bit = 1,
2608 	.clkr = {
2609 		.enable_reg = 0x62010,
2610 		.enable_mask = BIT(2),
2611 		.hw.init = &(struct clk_init_data){
2612 			.name = "gcc_qupv3_wrap_2_m_ahb_clk",
2613 			.ops = &clk_branch2_ops,
2614 		},
2615 	},
2616 };
2617 
2618 static struct clk_branch gcc_qupv3_wrap_2_s_ahb_clk = {
2619 	.halt_reg = 0x2e008,
2620 	.halt_check = BRANCH_HALT_VOTED,
2621 	.hwcg_reg = 0x2e008,
2622 	.hwcg_bit = 1,
2623 	.clkr = {
2624 		.enable_reg = 0x62010,
2625 		.enable_mask = BIT(1),
2626 		.hw.init = &(struct clk_init_data){
2627 			.name = "gcc_qupv3_wrap_2_s_ahb_clk",
2628 			.ops = &clk_branch2_ops,
2629 		},
2630 	},
2631 };
2632 
2633 static struct clk_branch gcc_sdcc2_ahb_clk = {
2634 	.halt_reg = 0x2400c,
2635 	.halt_check = BRANCH_HALT,
2636 	.clkr = {
2637 		.enable_reg = 0x2400c,
2638 		.enable_mask = BIT(0),
2639 		.hw.init = &(struct clk_init_data){
2640 			.name = "gcc_sdcc2_ahb_clk",
2641 			.ops = &clk_branch2_ops,
2642 		},
2643 	},
2644 };
2645 
2646 static struct clk_branch gcc_sdcc2_apps_clk = {
2647 	.halt_reg = 0x24004,
2648 	.halt_check = BRANCH_HALT,
2649 	.clkr = {
2650 		.enable_reg = 0x24004,
2651 		.enable_mask = BIT(0),
2652 		.hw.init = &(struct clk_init_data){
2653 			.name = "gcc_sdcc2_apps_clk",
2654 			.parent_hws = (const struct clk_hw*[]) {
2655 				&gcc_sdcc2_apps_clk_src.clkr.hw,
2656 			},
2657 			.num_parents = 1,
2658 			.flags = CLK_SET_RATE_PARENT,
2659 			.ops = &clk_branch2_ops,
2660 		},
2661 	},
2662 };
2663 
2664 static struct clk_branch gcc_sdcc2_at_clk = {
2665 	.halt_reg = 0x24010,
2666 	.halt_check = BRANCH_HALT_VOTED,
2667 	.hwcg_reg = 0x24010,
2668 	.hwcg_bit = 1,
2669 	.clkr = {
2670 		.enable_reg = 0x24010,
2671 		.enable_mask = BIT(0),
2672 		.hw.init = &(struct clk_init_data){
2673 			.name = "gcc_sdcc2_at_clk",
2674 			.ops = &clk_branch2_ops,
2675 		},
2676 	},
2677 };
2678 
2679 static struct clk_branch gcc_sdcc4_ahb_clk = {
2680 	.halt_reg = 0x2600c,
2681 	.halt_check = BRANCH_HALT,
2682 	.clkr = {
2683 		.enable_reg = 0x2600c,
2684 		.enable_mask = BIT(0),
2685 		.hw.init = &(struct clk_init_data){
2686 			.name = "gcc_sdcc4_ahb_clk",
2687 			.ops = &clk_branch2_ops,
2688 		},
2689 	},
2690 };
2691 
2692 static struct clk_branch gcc_sdcc4_apps_clk = {
2693 	.halt_reg = 0x26004,
2694 	.halt_check = BRANCH_HALT,
2695 	.clkr = {
2696 		.enable_reg = 0x26004,
2697 		.enable_mask = BIT(0),
2698 		.hw.init = &(struct clk_init_data){
2699 			.name = "gcc_sdcc4_apps_clk",
2700 			.parent_hws = (const struct clk_hw*[]) {
2701 				&gcc_sdcc4_apps_clk_src.clkr.hw,
2702 			},
2703 			.num_parents = 1,
2704 			.flags = CLK_SET_RATE_PARENT,
2705 			.ops = &clk_branch2_ops,
2706 		},
2707 	},
2708 };
2709 
2710 static struct clk_branch gcc_sdcc4_at_clk = {
2711 	.halt_reg = 0x26010,
2712 	.halt_check = BRANCH_HALT_VOTED,
2713 	.hwcg_reg = 0x26010,
2714 	.hwcg_bit = 1,
2715 	.clkr = {
2716 		.enable_reg = 0x26010,
2717 		.enable_mask = BIT(0),
2718 		.hw.init = &(struct clk_init_data){
2719 			.name = "gcc_sdcc4_at_clk",
2720 			.ops = &clk_branch2_ops,
2721 		},
2722 	},
2723 };
2724 
2725 static struct clk_branch gcc_ufs_0_clkref_en = {
2726 	.halt_reg = 0x9c000,
2727 	.halt_check = BRANCH_HALT,
2728 	.clkr = {
2729 		.enable_reg = 0x9c000,
2730 		.enable_mask = BIT(0),
2731 		.hw.init = &(struct clk_init_data){
2732 			.name = "gcc_ufs_0_clkref_en",
2733 			.ops = &clk_branch2_ops,
2734 		},
2735 	},
2736 };
2737 
2738 static struct clk_branch gcc_ufs_phy_ahb_clk = {
2739 	.halt_reg = 0x87020,
2740 	.halt_check = BRANCH_HALT_VOTED,
2741 	.hwcg_reg = 0x87020,
2742 	.hwcg_bit = 1,
2743 	.clkr = {
2744 		.enable_reg = 0x87020,
2745 		.enable_mask = BIT(0),
2746 		.hw.init = &(struct clk_init_data){
2747 			.name = "gcc_ufs_phy_ahb_clk",
2748 			.ops = &clk_branch2_ops,
2749 		},
2750 	},
2751 };
2752 
2753 static struct clk_branch gcc_ufs_phy_axi_clk = {
2754 	.halt_reg = 0x87018,
2755 	.halt_check = BRANCH_HALT_VOTED,
2756 	.hwcg_reg = 0x87018,
2757 	.hwcg_bit = 1,
2758 	.clkr = {
2759 		.enable_reg = 0x87018,
2760 		.enable_mask = BIT(0),
2761 		.hw.init = &(struct clk_init_data){
2762 			.name = "gcc_ufs_phy_axi_clk",
2763 			.parent_hws = (const struct clk_hw*[]) {
2764 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
2765 			},
2766 			.num_parents = 1,
2767 			.flags = CLK_SET_RATE_PARENT,
2768 			.ops = &clk_branch2_ops,
2769 		},
2770 	},
2771 };
2772 
2773 static struct clk_branch gcc_ufs_phy_axi_hw_ctl_clk = {
2774 	.halt_reg = 0x87018,
2775 	.halt_check = BRANCH_HALT_VOTED,
2776 	.hwcg_reg = 0x87018,
2777 	.hwcg_bit = 1,
2778 	.clkr = {
2779 		.enable_reg = 0x87018,
2780 		.enable_mask = BIT(1),
2781 		.hw.init = &(struct clk_init_data){
2782 			.name = "gcc_ufs_phy_axi_hw_ctl_clk",
2783 			.parent_hws = (const struct clk_hw*[]) {
2784 				&gcc_ufs_phy_axi_clk_src.clkr.hw,
2785 			},
2786 			.num_parents = 1,
2787 			.flags = CLK_SET_RATE_PARENT,
2788 			.ops = &clk_branch2_ops,
2789 		},
2790 	},
2791 };
2792 
2793 static struct clk_branch gcc_ufs_phy_ice_core_clk = {
2794 	.halt_reg = 0x8706c,
2795 	.halt_check = BRANCH_HALT_VOTED,
2796 	.hwcg_reg = 0x8706c,
2797 	.hwcg_bit = 1,
2798 	.clkr = {
2799 		.enable_reg = 0x8706c,
2800 		.enable_mask = BIT(0),
2801 		.hw.init = &(struct clk_init_data){
2802 			.name = "gcc_ufs_phy_ice_core_clk",
2803 			.parent_hws = (const struct clk_hw*[]) {
2804 				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,
2805 			},
2806 			.num_parents = 1,
2807 			.flags = CLK_SET_RATE_PARENT,
2808 			.ops = &clk_branch2_ops,
2809 		},
2810 	},
2811 };
2812 
2813 static struct clk_branch gcc_ufs_phy_ice_core_hw_ctl_clk = {
2814 	.halt_reg = 0x8706c,
2815 	.halt_check = BRANCH_HALT_VOTED,
2816 	.hwcg_reg = 0x8706c,
2817 	.hwcg_bit = 1,
2818 	.clkr = {
2819 		.enable_reg = 0x8706c,
2820 		.enable_mask = BIT(1),
2821 		.hw.init = &(struct clk_init_data){
2822 			.name = "gcc_ufs_phy_ice_core_hw_ctl_clk",
2823 			.parent_hws = (const struct clk_hw*[]) {
2824 				&gcc_ufs_phy_ice_core_clk_src.clkr.hw,
2825 			},
2826 			.num_parents = 1,
2827 			.flags = CLK_SET_RATE_PARENT,
2828 			.ops = &clk_branch2_ops,
2829 		},
2830 	},
2831 };
2832 
2833 static struct clk_branch gcc_ufs_phy_phy_aux_clk = {
2834 	.halt_reg = 0x870a4,
2835 	.halt_check = BRANCH_HALT_VOTED,
2836 	.hwcg_reg = 0x870a4,
2837 	.hwcg_bit = 1,
2838 	.clkr = {
2839 		.enable_reg = 0x870a4,
2840 		.enable_mask = BIT(0),
2841 		.hw.init = &(struct clk_init_data){
2842 			.name = "gcc_ufs_phy_phy_aux_clk",
2843 			.parent_hws = (const struct clk_hw*[]) {
2844 				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2845 			},
2846 			.num_parents = 1,
2847 			.flags = CLK_SET_RATE_PARENT,
2848 			.ops = &clk_branch2_ops,
2849 		},
2850 	},
2851 };
2852 
2853 static struct clk_branch gcc_ufs_phy_phy_aux_hw_ctl_clk = {
2854 	.halt_reg = 0x870a4,
2855 	.halt_check = BRANCH_HALT_VOTED,
2856 	.hwcg_reg = 0x870a4,
2857 	.hwcg_bit = 1,
2858 	.clkr = {
2859 		.enable_reg = 0x870a4,
2860 		.enable_mask = BIT(1),
2861 		.hw.init = &(struct clk_init_data){
2862 			.name = "gcc_ufs_phy_phy_aux_hw_ctl_clk",
2863 			.parent_hws = (const struct clk_hw*[]) {
2864 				&gcc_ufs_phy_phy_aux_clk_src.clkr.hw,
2865 			},
2866 			.num_parents = 1,
2867 			.flags = CLK_SET_RATE_PARENT,
2868 			.ops = &clk_branch2_ops,
2869 		},
2870 	},
2871 };
2872 
2873 static struct clk_branch gcc_ufs_phy_rx_symbol_0_clk = {
2874 	.halt_reg = 0x87028,
2875 	.halt_check = BRANCH_HALT_DELAY,
2876 	.clkr = {
2877 		.enable_reg = 0x87028,
2878 		.enable_mask = BIT(0),
2879 		.hw.init = &(struct clk_init_data){
2880 			.name = "gcc_ufs_phy_rx_symbol_0_clk",
2881 			.parent_hws = (const struct clk_hw*[]) {
2882 				&gcc_ufs_phy_rx_symbol_0_clk_src.clkr.hw,
2883 			},
2884 			.num_parents = 1,
2885 			.flags = CLK_SET_RATE_PARENT,
2886 			.ops = &clk_branch2_ops,
2887 		},
2888 	},
2889 };
2890 
2891 static struct clk_branch gcc_ufs_phy_rx_symbol_1_clk = {
2892 	.halt_reg = 0x870c0,
2893 	.halt_check = BRANCH_HALT_DELAY,
2894 	.clkr = {
2895 		.enable_reg = 0x870c0,
2896 		.enable_mask = BIT(0),
2897 		.hw.init = &(struct clk_init_data){
2898 			.name = "gcc_ufs_phy_rx_symbol_1_clk",
2899 			.parent_hws = (const struct clk_hw*[]) {
2900 				&gcc_ufs_phy_rx_symbol_1_clk_src.clkr.hw,
2901 			},
2902 			.num_parents = 1,
2903 			.flags = CLK_SET_RATE_PARENT,
2904 			.ops = &clk_branch2_ops,
2905 		},
2906 	},
2907 };
2908 
2909 static struct clk_branch gcc_ufs_phy_tx_symbol_0_clk = {
2910 	.halt_reg = 0x87024,
2911 	.halt_check = BRANCH_HALT_DELAY,
2912 	.clkr = {
2913 		.enable_reg = 0x87024,
2914 		.enable_mask = BIT(0),
2915 		.hw.init = &(struct clk_init_data){
2916 			.name = "gcc_ufs_phy_tx_symbol_0_clk",
2917 			.parent_hws = (const struct clk_hw*[]) {
2918 				&gcc_ufs_phy_tx_symbol_0_clk_src.clkr.hw,
2919 			},
2920 			.num_parents = 1,
2921 			.flags = CLK_SET_RATE_PARENT,
2922 			.ops = &clk_branch2_ops,
2923 		},
2924 	},
2925 };
2926 
2927 static struct clk_branch gcc_ufs_phy_unipro_core_clk = {
2928 	.halt_reg = 0x87064,
2929 	.halt_check = BRANCH_HALT_VOTED,
2930 	.hwcg_reg = 0x87064,
2931 	.hwcg_bit = 1,
2932 	.clkr = {
2933 		.enable_reg = 0x87064,
2934 		.enable_mask = BIT(0),
2935 		.hw.init = &(struct clk_init_data){
2936 			.name = "gcc_ufs_phy_unipro_core_clk",
2937 			.parent_hws = (const struct clk_hw*[]) {
2938 				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
2939 			},
2940 			.num_parents = 1,
2941 			.flags = CLK_SET_RATE_PARENT,
2942 			.ops = &clk_branch2_ops,
2943 		},
2944 	},
2945 };
2946 
2947 static struct clk_branch gcc_ufs_phy_unipro_core_hw_ctl_clk = {
2948 	.halt_reg = 0x87064,
2949 	.halt_check = BRANCH_HALT_VOTED,
2950 	.hwcg_reg = 0x87064,
2951 	.hwcg_bit = 1,
2952 	.clkr = {
2953 		.enable_reg = 0x87064,
2954 		.enable_mask = BIT(1),
2955 		.hw.init = &(struct clk_init_data){
2956 			.name = "gcc_ufs_phy_unipro_core_hw_ctl_clk",
2957 			.parent_hws = (const struct clk_hw*[]) {
2958 				&gcc_ufs_phy_unipro_core_clk_src.clkr.hw,
2959 			},
2960 			.num_parents = 1,
2961 			.flags = CLK_SET_RATE_PARENT,
2962 			.ops = &clk_branch2_ops,
2963 		},
2964 	},
2965 };
2966 
2967 static struct clk_branch gcc_usb30_prim_master_clk = {
2968 	.halt_reg = 0x49018,
2969 	.halt_check = BRANCH_HALT,
2970 	.clkr = {
2971 		.enable_reg = 0x49018,
2972 		.enable_mask = BIT(0),
2973 		.hw.init = &(struct clk_init_data){
2974 			.name = "gcc_usb30_prim_master_clk",
2975 			.parent_hws = (const struct clk_hw*[]) {
2976 				&gcc_usb30_prim_master_clk_src.clkr.hw,
2977 			},
2978 			.num_parents = 1,
2979 			.flags = CLK_SET_RATE_PARENT,
2980 			.ops = &clk_branch2_ops,
2981 		},
2982 	},
2983 };
2984 
2985 static struct clk_branch gcc_usb30_prim_mock_utmi_clk = {
2986 	.halt_reg = 0x49024,
2987 	.halt_check = BRANCH_HALT,
2988 	.clkr = {
2989 		.enable_reg = 0x49024,
2990 		.enable_mask = BIT(0),
2991 		.hw.init = &(struct clk_init_data){
2992 			.name = "gcc_usb30_prim_mock_utmi_clk",
2993 			.parent_hws = (const struct clk_hw*[]) {
2994 				&gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr.hw,
2995 			},
2996 			.num_parents = 1,
2997 			.flags = CLK_SET_RATE_PARENT,
2998 			.ops = &clk_branch2_ops,
2999 		},
3000 	},
3001 };
3002 
3003 static struct clk_branch gcc_usb30_prim_sleep_clk = {
3004 	.halt_reg = 0x49020,
3005 	.halt_check = BRANCH_HALT,
3006 	.clkr = {
3007 		.enable_reg = 0x49020,
3008 		.enable_mask = BIT(0),
3009 		.hw.init = &(struct clk_init_data){
3010 			.name = "gcc_usb30_prim_sleep_clk",
3011 			.ops = &clk_branch2_ops,
3012 		},
3013 	},
3014 };
3015 
3016 static struct clk_branch gcc_usb3_0_clkref_en = {
3017 	.halt_reg = 0x9c010,
3018 	.halt_check = BRANCH_HALT,
3019 	.clkr = {
3020 		.enable_reg = 0x9c010,
3021 		.enable_mask = BIT(0),
3022 		.hw.init = &(struct clk_init_data){
3023 			.name = "gcc_usb3_0_clkref_en",
3024 			.ops = &clk_branch2_ops,
3025 		},
3026 	},
3027 };
3028 
3029 static struct clk_branch gcc_usb3_prim_phy_aux_clk = {
3030 	.halt_reg = 0x4905c,
3031 	.halt_check = BRANCH_HALT,
3032 	.clkr = {
3033 		.enable_reg = 0x4905c,
3034 		.enable_mask = BIT(0),
3035 		.hw.init = &(struct clk_init_data){
3036 			.name = "gcc_usb3_prim_phy_aux_clk",
3037 			.parent_hws = (const struct clk_hw*[]) {
3038 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3039 			},
3040 			.num_parents = 1,
3041 			.flags = CLK_SET_RATE_PARENT,
3042 			.ops = &clk_branch2_ops,
3043 		},
3044 	},
3045 };
3046 
3047 static struct clk_branch gcc_usb3_prim_phy_com_aux_clk = {
3048 	.halt_reg = 0x49060,
3049 	.halt_check = BRANCH_HALT,
3050 	.clkr = {
3051 		.enable_reg = 0x49060,
3052 		.enable_mask = BIT(0),
3053 		.hw.init = &(struct clk_init_data){
3054 			.name = "gcc_usb3_prim_phy_com_aux_clk",
3055 			.parent_hws = (const struct clk_hw*[]) {
3056 				&gcc_usb3_prim_phy_aux_clk_src.clkr.hw,
3057 			},
3058 			.num_parents = 1,
3059 			.flags = CLK_SET_RATE_PARENT,
3060 			.ops = &clk_branch2_ops,
3061 		},
3062 	},
3063 };
3064 
3065 static struct clk_branch gcc_usb3_prim_phy_pipe_clk = {
3066 	.halt_reg = 0x49064,
3067 	.halt_check = BRANCH_HALT_DELAY,
3068 	.hwcg_reg = 0x49064,
3069 	.hwcg_bit = 1,
3070 	.clkr = {
3071 		.enable_reg = 0x49064,
3072 		.enable_mask = BIT(0),
3073 		.hw.init = &(struct clk_init_data){
3074 			.name = "gcc_usb3_prim_phy_pipe_clk",
3075 			.parent_hws = (const struct clk_hw*[]) {
3076 				&gcc_usb3_prim_phy_pipe_clk_src.clkr.hw,
3077 			},
3078 			.num_parents = 1,
3079 			.flags = CLK_SET_RATE_PARENT,
3080 			.ops = &clk_branch2_ops,
3081 		},
3082 	},
3083 };
3084 
3085 static struct clk_branch gcc_video_axi0_clk = {
3086 	.halt_reg = 0x42018,
3087 	.halt_check = BRANCH_HALT_SKIP,
3088 	.hwcg_reg = 0x42018,
3089 	.hwcg_bit = 1,
3090 	.clkr = {
3091 		.enable_reg = 0x42018,
3092 		.enable_mask = BIT(0),
3093 		.hw.init = &(struct clk_init_data){
3094 			.name = "gcc_video_axi0_clk",
3095 			.ops = &clk_branch2_ops,
3096 		},
3097 	},
3098 };
3099 
3100 static struct clk_branch gcc_video_axi1_clk = {
3101 	.halt_reg = 0x42020,
3102 	.halt_check = BRANCH_HALT_SKIP,
3103 	.hwcg_reg = 0x42020,
3104 	.hwcg_bit = 1,
3105 	.clkr = {
3106 		.enable_reg = 0x42020,
3107 		.enable_mask = BIT(0),
3108 		.hw.init = &(struct clk_init_data){
3109 			.name = "gcc_video_axi1_clk",
3110 			.ops = &clk_branch2_ops,
3111 		},
3112 	},
3113 };
3114 
3115 static struct gdsc pcie_0_gdsc = {
3116 	.gdscr = 0x7b004,
3117 	.pd = {
3118 		.name = "pcie_0_gdsc",
3119 	},
3120 	.pwrsts = PWRSTS_RET_ON,
3121 };
3122 
3123 static struct gdsc pcie_1_gdsc = {
3124 	.gdscr = 0x9d004,
3125 	.pd = {
3126 		.name = "pcie_1_gdsc",
3127 	},
3128 	.pwrsts = PWRSTS_RET_ON,
3129 };
3130 
3131 static struct gdsc ufs_phy_gdsc = {
3132 	.gdscr = 0x87004,
3133 	.pd = {
3134 		.name = "ufs_phy_gdsc",
3135 	},
3136 	.pwrsts = PWRSTS_OFF_ON,
3137 };
3138 
3139 static struct gdsc usb30_prim_gdsc = {
3140 	.gdscr = 0x49004,
3141 	.pd = {
3142 		.name = "usb30_prim_gdsc",
3143 	},
3144 	.pwrsts = PWRSTS_OFF_ON,
3145 };
3146 
3147 static struct clk_regmap *gcc_sm8450_clocks[] = {
3148 	[GCC_AGGRE_NOC_PCIE_0_AXI_CLK] = &gcc_aggre_noc_pcie_0_axi_clk.clkr,
3149 	[GCC_AGGRE_NOC_PCIE_1_AXI_CLK] = &gcc_aggre_noc_pcie_1_axi_clk.clkr,
3150 	[GCC_AGGRE_UFS_PHY_AXI_CLK] = &gcc_aggre_ufs_phy_axi_clk.clkr,
3151 	[GCC_AGGRE_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_aggre_ufs_phy_axi_hw_ctl_clk.clkr,
3152 	[GCC_AGGRE_USB3_PRIM_AXI_CLK] = &gcc_aggre_usb3_prim_axi_clk.clkr,
3153 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3154 	[GCC_CAMERA_HF_AXI_CLK] = &gcc_camera_hf_axi_clk.clkr,
3155 	[GCC_CAMERA_SF_AXI_CLK] = &gcc_camera_sf_axi_clk.clkr,
3156 	[GCC_CFG_NOC_PCIE_ANOC_AHB_CLK] = &gcc_cfg_noc_pcie_anoc_ahb_clk.clkr,
3157 	[GCC_CFG_NOC_USB3_PRIM_AXI_CLK] = &gcc_cfg_noc_usb3_prim_axi_clk.clkr,
3158 	[GCC_DDRSS_GPU_AXI_CLK] = &gcc_ddrss_gpu_axi_clk.clkr,
3159 	[GCC_DDRSS_PCIE_SF_TBU_CLK] = &gcc_ddrss_pcie_sf_tbu_clk.clkr,
3160 	[GCC_DISP_HF_AXI_CLK] = &gcc_disp_hf_axi_clk.clkr,
3161 	[GCC_DISP_SF_AXI_CLK] = &gcc_disp_sf_axi_clk.clkr,
3162 	[GCC_EUSB3_0_CLKREF_EN] = &gcc_eusb3_0_clkref_en.clkr,
3163 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3164 	[GCC_GP1_CLK_SRC] = &gcc_gp1_clk_src.clkr,
3165 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3166 	[GCC_GP2_CLK_SRC] = &gcc_gp2_clk_src.clkr,
3167 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3168 	[GCC_GP3_CLK_SRC] = &gcc_gp3_clk_src.clkr,
3169 	[GCC_GPLL0] = &gcc_gpll0.clkr,
3170 	[GCC_GPLL0_OUT_EVEN] = &gcc_gpll0_out_even.clkr,
3171 	[GCC_GPLL4] = &gcc_gpll4.clkr,
3172 	[GCC_GPLL9] = &gcc_gpll9.clkr,
3173 	[GCC_GPU_GPLL0_CLK_SRC] = &gcc_gpu_gpll0_clk_src.clkr,
3174 	[GCC_GPU_GPLL0_DIV_CLK_SRC] = &gcc_gpu_gpll0_div_clk_src.clkr,
3175 	[GCC_GPU_MEMNOC_GFX_CLK] = &gcc_gpu_memnoc_gfx_clk.clkr,
3176 	[GCC_GPU_SNOC_DVM_GFX_CLK] = &gcc_gpu_snoc_dvm_gfx_clk.clkr,
3177 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
3178 	[GCC_PCIE_0_AUX_CLK_SRC] = &gcc_pcie_0_aux_clk_src.clkr,
3179 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
3180 	[GCC_PCIE_0_CLKREF_EN] = &gcc_pcie_0_clkref_en.clkr,
3181 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
3182 	[GCC_PCIE_0_PHY_RCHNG_CLK] = &gcc_pcie_0_phy_rchng_clk.clkr,
3183 	[GCC_PCIE_0_PHY_RCHNG_CLK_SRC] = &gcc_pcie_0_phy_rchng_clk_src.clkr,
3184 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3185 	[GCC_PCIE_0_PIPE_CLK_SRC] = &gcc_pcie_0_pipe_clk_src.clkr,
3186 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3187 	[GCC_PCIE_0_SLV_Q2A_AXI_CLK] = &gcc_pcie_0_slv_q2a_axi_clk.clkr,
3188 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3189 	[GCC_PCIE_1_AUX_CLK_SRC] = &gcc_pcie_1_aux_clk_src.clkr,
3190 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3191 	[GCC_PCIE_1_CLKREF_EN] = &gcc_pcie_1_clkref_en.clkr,
3192 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3193 	[GCC_PCIE_1_PHY_AUX_CLK] = &gcc_pcie_1_phy_aux_clk.clkr,
3194 	[GCC_PCIE_1_PHY_AUX_CLK_SRC] = &gcc_pcie_1_phy_aux_clk_src.clkr,
3195 	[GCC_PCIE_1_PHY_RCHNG_CLK] = &gcc_pcie_1_phy_rchng_clk.clkr,
3196 	[GCC_PCIE_1_PHY_RCHNG_CLK_SRC] = &gcc_pcie_1_phy_rchng_clk_src.clkr,
3197 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3198 	[GCC_PCIE_1_PIPE_CLK_SRC] = &gcc_pcie_1_pipe_clk_src.clkr,
3199 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3200 	[GCC_PCIE_1_SLV_Q2A_AXI_CLK] = &gcc_pcie_1_slv_q2a_axi_clk.clkr,
3201 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3202 	[GCC_PDM2_CLK_SRC] = &gcc_pdm2_clk_src.clkr,
3203 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3204 	[GCC_PDM_XO4_CLK] = &gcc_pdm_xo4_clk.clkr,
3205 	[GCC_QMIP_CAMERA_NRT_AHB_CLK] = &gcc_qmip_camera_nrt_ahb_clk.clkr,
3206 	[GCC_QMIP_CAMERA_RT_AHB_CLK] = &gcc_qmip_camera_rt_ahb_clk.clkr,
3207 	[GCC_QMIP_DISP_AHB_CLK] = &gcc_qmip_disp_ahb_clk.clkr,
3208 	[GCC_QMIP_GPU_AHB_CLK] = &gcc_qmip_gpu_ahb_clk.clkr,
3209 	[GCC_QMIP_PCIE_AHB_CLK] = &gcc_qmip_pcie_ahb_clk.clkr,
3210 	[GCC_QMIP_VIDEO_CV_CPU_AHB_CLK] = &gcc_qmip_video_cv_cpu_ahb_clk.clkr,
3211 	[GCC_QMIP_VIDEO_CVP_AHB_CLK] = &gcc_qmip_video_cvp_ahb_clk.clkr,
3212 	[GCC_QMIP_VIDEO_V_CPU_AHB_CLK] = &gcc_qmip_video_v_cpu_ahb_clk.clkr,
3213 	[GCC_QMIP_VIDEO_VCODEC_AHB_CLK] = &gcc_qmip_video_vcodec_ahb_clk.clkr,
3214 	[GCC_QUPV3_WRAP0_CORE_2X_CLK] = &gcc_qupv3_wrap0_core_2x_clk.clkr,
3215 	[GCC_QUPV3_WRAP0_CORE_CLK] = &gcc_qupv3_wrap0_core_clk.clkr,
3216 	[GCC_QUPV3_WRAP0_S0_CLK] = &gcc_qupv3_wrap0_s0_clk.clkr,
3217 	[GCC_QUPV3_WRAP0_S0_CLK_SRC] = &gcc_qupv3_wrap0_s0_clk_src.clkr,
3218 	[GCC_QUPV3_WRAP0_S1_CLK] = &gcc_qupv3_wrap0_s1_clk.clkr,
3219 	[GCC_QUPV3_WRAP0_S1_CLK_SRC] = &gcc_qupv3_wrap0_s1_clk_src.clkr,
3220 	[GCC_QUPV3_WRAP0_S2_CLK] = &gcc_qupv3_wrap0_s2_clk.clkr,
3221 	[GCC_QUPV3_WRAP0_S2_CLK_SRC] = &gcc_qupv3_wrap0_s2_clk_src.clkr,
3222 	[GCC_QUPV3_WRAP0_S3_CLK] = &gcc_qupv3_wrap0_s3_clk.clkr,
3223 	[GCC_QUPV3_WRAP0_S3_CLK_SRC] = &gcc_qupv3_wrap0_s3_clk_src.clkr,
3224 	[GCC_QUPV3_WRAP0_S4_CLK] = &gcc_qupv3_wrap0_s4_clk.clkr,
3225 	[GCC_QUPV3_WRAP0_S4_CLK_SRC] = &gcc_qupv3_wrap0_s4_clk_src.clkr,
3226 	[GCC_QUPV3_WRAP0_S5_CLK] = &gcc_qupv3_wrap0_s5_clk.clkr,
3227 	[GCC_QUPV3_WRAP0_S5_CLK_SRC] = &gcc_qupv3_wrap0_s5_clk_src.clkr,
3228 	[GCC_QUPV3_WRAP0_S6_CLK] = &gcc_qupv3_wrap0_s6_clk.clkr,
3229 	[GCC_QUPV3_WRAP0_S6_CLK_SRC] = &gcc_qupv3_wrap0_s6_clk_src.clkr,
3230 	[GCC_QUPV3_WRAP0_S7_CLK] = &gcc_qupv3_wrap0_s7_clk.clkr,
3231 	[GCC_QUPV3_WRAP0_S7_CLK_SRC] = &gcc_qupv3_wrap0_s7_clk_src.clkr,
3232 	[GCC_QUPV3_WRAP1_CORE_2X_CLK] = &gcc_qupv3_wrap1_core_2x_clk.clkr,
3233 	[GCC_QUPV3_WRAP1_CORE_CLK] = &gcc_qupv3_wrap1_core_clk.clkr,
3234 	[GCC_QUPV3_WRAP1_S0_CLK] = &gcc_qupv3_wrap1_s0_clk.clkr,
3235 	[GCC_QUPV3_WRAP1_S0_CLK_SRC] = &gcc_qupv3_wrap1_s0_clk_src.clkr,
3236 	[GCC_QUPV3_WRAP1_S1_CLK] = &gcc_qupv3_wrap1_s1_clk.clkr,
3237 	[GCC_QUPV3_WRAP1_S1_CLK_SRC] = &gcc_qupv3_wrap1_s1_clk_src.clkr,
3238 	[GCC_QUPV3_WRAP1_S2_CLK] = &gcc_qupv3_wrap1_s2_clk.clkr,
3239 	[GCC_QUPV3_WRAP1_S2_CLK_SRC] = &gcc_qupv3_wrap1_s2_clk_src.clkr,
3240 	[GCC_QUPV3_WRAP1_S3_CLK] = &gcc_qupv3_wrap1_s3_clk.clkr,
3241 	[GCC_QUPV3_WRAP1_S3_CLK_SRC] = &gcc_qupv3_wrap1_s3_clk_src.clkr,
3242 	[GCC_QUPV3_WRAP1_S4_CLK] = &gcc_qupv3_wrap1_s4_clk.clkr,
3243 	[GCC_QUPV3_WRAP1_S4_CLK_SRC] = &gcc_qupv3_wrap1_s4_clk_src.clkr,
3244 	[GCC_QUPV3_WRAP1_S5_CLK] = &gcc_qupv3_wrap1_s5_clk.clkr,
3245 	[GCC_QUPV3_WRAP1_S5_CLK_SRC] = &gcc_qupv3_wrap1_s5_clk_src.clkr,
3246 	[GCC_QUPV3_WRAP1_S6_CLK] = &gcc_qupv3_wrap1_s6_clk.clkr,
3247 	[GCC_QUPV3_WRAP1_S6_CLK_SRC] = &gcc_qupv3_wrap1_s6_clk_src.clkr,
3248 	[GCC_QUPV3_WRAP2_CORE_2X_CLK] = &gcc_qupv3_wrap2_core_2x_clk.clkr,
3249 	[GCC_QUPV3_WRAP2_CORE_CLK] = &gcc_qupv3_wrap2_core_clk.clkr,
3250 	[GCC_QUPV3_WRAP2_S0_CLK] = &gcc_qupv3_wrap2_s0_clk.clkr,
3251 	[GCC_QUPV3_WRAP2_S0_CLK_SRC] = &gcc_qupv3_wrap2_s0_clk_src.clkr,
3252 	[GCC_QUPV3_WRAP2_S1_CLK] = &gcc_qupv3_wrap2_s1_clk.clkr,
3253 	[GCC_QUPV3_WRAP2_S1_CLK_SRC] = &gcc_qupv3_wrap2_s1_clk_src.clkr,
3254 	[GCC_QUPV3_WRAP2_S2_CLK] = &gcc_qupv3_wrap2_s2_clk.clkr,
3255 	[GCC_QUPV3_WRAP2_S2_CLK_SRC] = &gcc_qupv3_wrap2_s2_clk_src.clkr,
3256 	[GCC_QUPV3_WRAP2_S3_CLK] = &gcc_qupv3_wrap2_s3_clk.clkr,
3257 	[GCC_QUPV3_WRAP2_S3_CLK_SRC] = &gcc_qupv3_wrap2_s3_clk_src.clkr,
3258 	[GCC_QUPV3_WRAP2_S4_CLK] = &gcc_qupv3_wrap2_s4_clk.clkr,
3259 	[GCC_QUPV3_WRAP2_S4_CLK_SRC] = &gcc_qupv3_wrap2_s4_clk_src.clkr,
3260 	[GCC_QUPV3_WRAP2_S5_CLK] = &gcc_qupv3_wrap2_s5_clk.clkr,
3261 	[GCC_QUPV3_WRAP2_S5_CLK_SRC] = &gcc_qupv3_wrap2_s5_clk_src.clkr,
3262 	[GCC_QUPV3_WRAP2_S6_CLK] = &gcc_qupv3_wrap2_s6_clk.clkr,
3263 	[GCC_QUPV3_WRAP2_S6_CLK_SRC] = &gcc_qupv3_wrap2_s6_clk_src.clkr,
3264 	[GCC_QUPV3_WRAP_0_M_AHB_CLK] = &gcc_qupv3_wrap_0_m_ahb_clk.clkr,
3265 	[GCC_QUPV3_WRAP_0_S_AHB_CLK] = &gcc_qupv3_wrap_0_s_ahb_clk.clkr,
3266 	[GCC_QUPV3_WRAP_1_M_AHB_CLK] = &gcc_qupv3_wrap_1_m_ahb_clk.clkr,
3267 	[GCC_QUPV3_WRAP_1_S_AHB_CLK] = &gcc_qupv3_wrap_1_s_ahb_clk.clkr,
3268 	[GCC_QUPV3_WRAP_2_M_AHB_CLK] = &gcc_qupv3_wrap_2_m_ahb_clk.clkr,
3269 	[GCC_QUPV3_WRAP_2_S_AHB_CLK] = &gcc_qupv3_wrap_2_s_ahb_clk.clkr,
3270 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3271 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3272 	[GCC_SDCC2_APPS_CLK_SRC] = &gcc_sdcc2_apps_clk_src.clkr,
3273 	[GCC_SDCC2_AT_CLK] = &gcc_sdcc2_at_clk.clkr,
3274 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3275 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
3276 	[GCC_SDCC4_APPS_CLK_SRC] = &gcc_sdcc4_apps_clk_src.clkr,
3277 	[GCC_SDCC4_AT_CLK] = &gcc_sdcc4_at_clk.clkr,
3278 	[GCC_UFS_0_CLKREF_EN] = &gcc_ufs_0_clkref_en.clkr,
3279 	[GCC_UFS_PHY_AHB_CLK] = &gcc_ufs_phy_ahb_clk.clkr,
3280 	[GCC_UFS_PHY_AXI_CLK] = &gcc_ufs_phy_axi_clk.clkr,
3281 	[GCC_UFS_PHY_AXI_CLK_SRC] = &gcc_ufs_phy_axi_clk_src.clkr,
3282 	[GCC_UFS_PHY_AXI_HW_CTL_CLK] = &gcc_ufs_phy_axi_hw_ctl_clk.clkr,
3283 	[GCC_UFS_PHY_ICE_CORE_CLK] = &gcc_ufs_phy_ice_core_clk.clkr,
3284 	[GCC_UFS_PHY_ICE_CORE_CLK_SRC] = &gcc_ufs_phy_ice_core_clk_src.clkr,
3285 	[GCC_UFS_PHY_ICE_CORE_HW_CTL_CLK] = &gcc_ufs_phy_ice_core_hw_ctl_clk.clkr,
3286 	[GCC_UFS_PHY_PHY_AUX_CLK] = &gcc_ufs_phy_phy_aux_clk.clkr,
3287 	[GCC_UFS_PHY_PHY_AUX_CLK_SRC] = &gcc_ufs_phy_phy_aux_clk_src.clkr,
3288 	[GCC_UFS_PHY_PHY_AUX_HW_CTL_CLK] = &gcc_ufs_phy_phy_aux_hw_ctl_clk.clkr,
3289 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK] = &gcc_ufs_phy_rx_symbol_0_clk.clkr,
3290 	[GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_rx_symbol_0_clk_src.clkr,
3291 	[GCC_UFS_PHY_RX_SYMBOL_1_CLK] = &gcc_ufs_phy_rx_symbol_1_clk.clkr,
3292 	[GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC] = &gcc_ufs_phy_rx_symbol_1_clk_src.clkr,
3293 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK] = &gcc_ufs_phy_tx_symbol_0_clk.clkr,
3294 	[GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC] = &gcc_ufs_phy_tx_symbol_0_clk_src.clkr,
3295 	[GCC_UFS_PHY_UNIPRO_CORE_CLK] = &gcc_ufs_phy_unipro_core_clk.clkr,
3296 	[GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC] = &gcc_ufs_phy_unipro_core_clk_src.clkr,
3297 	[GCC_UFS_PHY_UNIPRO_CORE_HW_CTL_CLK] = &gcc_ufs_phy_unipro_core_hw_ctl_clk.clkr,
3298 	[GCC_USB30_PRIM_MASTER_CLK] = &gcc_usb30_prim_master_clk.clkr,
3299 	[GCC_USB30_PRIM_MASTER_CLK_SRC] = &gcc_usb30_prim_master_clk_src.clkr,
3300 	[GCC_USB30_PRIM_MOCK_UTMI_CLK] = &gcc_usb30_prim_mock_utmi_clk.clkr,
3301 	[GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC] = &gcc_usb30_prim_mock_utmi_clk_src.clkr,
3302 	[GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_prim_mock_utmi_postdiv_clk_src.clkr,
3303 	[GCC_USB30_PRIM_SLEEP_CLK] = &gcc_usb30_prim_sleep_clk.clkr,
3304 	[GCC_USB3_0_CLKREF_EN] = &gcc_usb3_0_clkref_en.clkr,
3305 	[GCC_USB3_PRIM_PHY_AUX_CLK] = &gcc_usb3_prim_phy_aux_clk.clkr,
3306 	[GCC_USB3_PRIM_PHY_AUX_CLK_SRC] = &gcc_usb3_prim_phy_aux_clk_src.clkr,
3307 	[GCC_USB3_PRIM_PHY_COM_AUX_CLK] = &gcc_usb3_prim_phy_com_aux_clk.clkr,
3308 	[GCC_USB3_PRIM_PHY_PIPE_CLK] = &gcc_usb3_prim_phy_pipe_clk.clkr,
3309 	[GCC_USB3_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb3_prim_phy_pipe_clk_src.clkr,
3310 	[GCC_VIDEO_AXI0_CLK] = &gcc_video_axi0_clk.clkr,
3311 	[GCC_VIDEO_AXI1_CLK] = &gcc_video_axi1_clk.clkr,
3312 	[SM8475_GCC_GPLL2] = NULL,
3313 	[SM8475_GCC_GPLL3] = NULL,
3314 };
3315 
3316 static const struct qcom_reset_map gcc_sm8450_resets[] = {
3317 	[GCC_CAMERA_BCR] = { 0x36000 },
3318 	[GCC_DISPLAY_BCR] = { 0x37000 },
3319 	[GCC_GPU_BCR] = { 0x81000 },
3320 	[GCC_PCIE_0_BCR] = { 0x7b000 },
3321 	[GCC_PCIE_0_LINK_DOWN_BCR] = { 0x7c014 },
3322 	[GCC_PCIE_0_NOCSR_COM_PHY_BCR] = { 0x7c020 },
3323 	[GCC_PCIE_0_PHY_BCR] = { 0x7c01c },
3324 	[GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR] = { 0x7c028 },
3325 	[GCC_PCIE_1_BCR] = { 0x9d000 },
3326 	[GCC_PCIE_1_LINK_DOWN_BCR] = { 0x9e014 },
3327 	[GCC_PCIE_1_NOCSR_COM_PHY_BCR] = { 0x9e020 },
3328 	[GCC_PCIE_1_PHY_BCR] = { 0x9e01c },
3329 	[GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR] = { 0x9e000 },
3330 	[GCC_PCIE_PHY_BCR] = { 0x7f000 },
3331 	[GCC_PCIE_PHY_CFG_AHB_BCR] = { 0x7f00c },
3332 	[GCC_PCIE_PHY_COM_BCR] = { 0x7f010 },
3333 	[GCC_PDM_BCR] = { 0x43000 },
3334 	[GCC_QUPV3_WRAPPER_0_BCR] = { 0x27000 },
3335 	[GCC_QUPV3_WRAPPER_1_BCR] = { 0x28000 },
3336 	[GCC_QUPV3_WRAPPER_2_BCR] = { 0x2e000 },
3337 	[GCC_QUSB2PHY_PRIM_BCR] = { 0x22000 },
3338 	[GCC_QUSB2PHY_SEC_BCR] = { 0x22004 },
3339 	[GCC_SDCC2_BCR] = { 0x24000 },
3340 	[GCC_SDCC4_BCR] = { 0x26000 },
3341 	[GCC_UFS_PHY_BCR] = { 0x87000 },
3342 	[GCC_USB30_PRIM_BCR] = { 0x49000 },
3343 	[GCC_USB3_DP_PHY_PRIM_BCR] = { 0x60008 },
3344 	[GCC_USB3_DP_PHY_SEC_BCR] = { 0x60014 },
3345 	[GCC_USB3_PHY_PRIM_BCR] = { 0x60000 },
3346 	[GCC_USB3_PHY_SEC_BCR] = { 0x6000c },
3347 	[GCC_USB3PHY_PHY_PRIM_BCR] = { 0x60004 },
3348 	[GCC_USB3PHY_PHY_SEC_BCR] = { 0x60010 },
3349 	[GCC_USB_PHY_CFG_AHB2PHY_BCR] = { 0x7a000 },
3350 	[GCC_VIDEO_AXI0_CLK_ARES] = { .reg = 0x42018, .bit = 2, .udelay = 1000 },
3351 	[GCC_VIDEO_AXI1_CLK_ARES] = { .reg = 0x42020, .bit = 2, .udelay = 1000 },
3352 	[GCC_VIDEO_BCR] = { 0x42000 },
3353 };
3354 
3355 static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
3356 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s0_clk_src),
3357 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s1_clk_src),
3358 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s2_clk_src),
3359 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s3_clk_src),
3360 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s4_clk_src),
3361 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s5_clk_src),
3362 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s6_clk_src),
3363 	DEFINE_RCG_DFS(gcc_qupv3_wrap0_s7_clk_src),
3364 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s0_clk_src),
3365 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s1_clk_src),
3366 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s2_clk_src),
3367 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s3_clk_src),
3368 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s4_clk_src),
3369 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s5_clk_src),
3370 	DEFINE_RCG_DFS(gcc_qupv3_wrap1_s6_clk_src),
3371 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s0_clk_src),
3372 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s1_clk_src),
3373 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s2_clk_src),
3374 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s3_clk_src),
3375 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s4_clk_src),
3376 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s5_clk_src),
3377 	DEFINE_RCG_DFS(gcc_qupv3_wrap2_s6_clk_src),
3378 };
3379 
3380 static struct gdsc *gcc_sm8450_gdscs[] = {
3381 	[PCIE_0_GDSC] = &pcie_0_gdsc,
3382 	[PCIE_1_GDSC] = &pcie_1_gdsc,
3383 	[UFS_PHY_GDSC] = &ufs_phy_gdsc,
3384 	[USB30_PRIM_GDSC] = &usb30_prim_gdsc,
3385 };
3386 
3387 static const struct regmap_config gcc_sm8450_regmap_config = {
3388 	.reg_bits = 32,
3389 	.reg_stride = 4,
3390 	.val_bits = 32,
3391 	.max_register = 0x1f1030,
3392 	.fast_io = true,
3393 };
3394 
3395 static const struct qcom_cc_desc gcc_sm8450_desc = {
3396 	.config = &gcc_sm8450_regmap_config,
3397 	.clks = gcc_sm8450_clocks,
3398 	.num_clks = ARRAY_SIZE(gcc_sm8450_clocks),
3399 	.resets = gcc_sm8450_resets,
3400 	.num_resets = ARRAY_SIZE(gcc_sm8450_resets),
3401 	.gdscs = gcc_sm8450_gdscs,
3402 	.num_gdscs = ARRAY_SIZE(gcc_sm8450_gdscs),
3403 };
3404 
3405 static const struct of_device_id gcc_sm8450_match_table[] = {
3406 	{ .compatible = "qcom,gcc-sm8450" },
3407 	{ .compatible = "qcom,sm8475-gcc" },
3408 	{ }
3409 };
3410 MODULE_DEVICE_TABLE(of, gcc_sm8450_match_table);
3411 
3412 static int gcc_sm8450_probe(struct platform_device *pdev)
3413 {
3414 	struct regmap *regmap;
3415 	int ret;
3416 
3417 	regmap = qcom_cc_map(pdev, &gcc_sm8450_desc);
3418 	if (IS_ERR(regmap))
3419 		return PTR_ERR(regmap);
3420 
3421 	ret = qcom_cc_register_rcg_dfs(regmap, gcc_dfs_clocks,
3422 				       ARRAY_SIZE(gcc_dfs_clocks));
3423 	if (ret)
3424 		return ret;
3425 
3426 	if (of_device_is_compatible(pdev->dev.of_node, "qcom,sm8475-gcc")) {
3427 		/* Update GCC PLL0 */
3428 		gcc_gpll0.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE];
3429 		gcc_gpll0.clkr.hw.init = &sm8475_gcc_gpll0_init;
3430 		gcc_gpll0_out_even.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE];
3431 		gcc_gpll0_out_even.clkr.hw.init = &sm8475_gcc_gpll0_out_even_init;
3432 
3433 		/* Update GCC PLL4 */
3434 		gcc_gpll4.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE];
3435 		gcc_gpll4.clkr.hw.init = &sm8475_gcc_gpll4_init;
3436 
3437 		/* Update GCC PLL9 */
3438 		gcc_gpll9.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_LUCID_OLE];
3439 		gcc_gpll9.clkr.hw.init = &sm8475_gcc_gpll9_init;
3440 
3441 		gcc_sdcc2_apps_clk_src.freq_tbl = sm8475_ftbl_gcc_sdcc2_apps_clk_src;
3442 
3443 		gcc_ufs_phy_axi_clk_src.parent_map = sm8475_gcc_parent_map_3;
3444 		gcc_ufs_phy_axi_clk_src.freq_tbl = sm8475_ftbl_gcc_ufs_phy_axi_clk_src;
3445 		gcc_ufs_phy_axi_clk_src.clkr.hw.init = &sm8475_gcc_ufs_phy_axi_clk_src_init;
3446 
3447 		gcc_ufs_phy_ice_core_clk_src.parent_map = sm8475_gcc_parent_map_3;
3448 		gcc_ufs_phy_ice_core_clk_src.freq_tbl = sm8475_ftbl_gcc_ufs_phy_ice_core_clk_src;
3449 		gcc_ufs_phy_ice_core_clk_src.clkr.hw.init = &sm8475_gcc_ufs_phy_ice_core_clk_src_init;
3450 
3451 		gcc_ufs_phy_unipro_core_clk_src.parent_map = sm8475_gcc_parent_map_3;
3452 		gcc_ufs_phy_unipro_core_clk_src.freq_tbl = sm8475_ftbl_gcc_ufs_phy_ice_core_clk_src;
3453 		gcc_ufs_phy_unipro_core_clk_src.clkr.hw.init = &sm8475_gcc_ufs_phy_unipro_core_clk_src_init;
3454 
3455 		gcc_sm8450_desc.clks[SM8475_GCC_GPLL2] = &sm8475_gcc_gpll2.clkr;
3456 		gcc_sm8450_desc.clks[SM8475_GCC_GPLL3] = &sm8475_gcc_gpll3.clkr;
3457 	}
3458 
3459 	/* FORCE_MEM_CORE_ON for ufs phy ice core clocks */
3460 	regmap_update_bits(regmap, gcc_ufs_phy_ice_core_clk.halt_reg, BIT(14), BIT(14));
3461 
3462 	/* Keep some clocks always-on */
3463 	qcom_branch_set_clk_en(regmap, 0x36004); /* GCC_CAMERA_AHB_CLK */
3464 	qcom_branch_set_clk_en(regmap, 0x36020); /* GCC_CAMERA_XO_CLK */
3465 	qcom_branch_set_clk_en(regmap, 0x37004); /* GCC_DISP_AHB_CLK */
3466 	qcom_branch_set_clk_en(regmap, 0x3701c); /* GCC_DISP_XO_CLK */
3467 	qcom_branch_set_clk_en(regmap, 0x81004); /* GCC_GPU_CFG_AHB_CLK */
3468 	qcom_branch_set_clk_en(regmap, 0x42004); /* GCC_VIDEO_AHB_CLK */
3469 	qcom_branch_set_clk_en(regmap, 0x42028); /* GCC_VIDEO_XO_CLK */
3470 
3471 	return qcom_cc_really_probe(&pdev->dev, &gcc_sm8450_desc, regmap);
3472 }
3473 
3474 static struct platform_driver gcc_sm8450_driver = {
3475 	.probe = gcc_sm8450_probe,
3476 	.driver = {
3477 		.name = "gcc-sm8450",
3478 		.of_match_table = gcc_sm8450_match_table,
3479 	},
3480 };
3481 
3482 static int __init gcc_sm8450_init(void)
3483 {
3484 	return platform_driver_register(&gcc_sm8450_driver);
3485 }
3486 subsys_initcall(gcc_sm8450_init);
3487 
3488 static void __exit gcc_sm8450_exit(void)
3489 {
3490 	platform_driver_unregister(&gcc_sm8450_driver);
3491 }
3492 module_exit(gcc_sm8450_exit);
3493 
3494 MODULE_DESCRIPTION("QTI GCC SM8450 / SM8475 Driver");
3495 MODULE_LICENSE("GPL v2");
3496