xref: /openbmc/linux/drivers/clk/qcom/gcc-apq8084.c (revision bc33f5e5)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (c) 2014, The Linux Foundation. All rights reserved.
4  */
5 
6 #include <linux/kernel.h>
7 #include <linux/bitops.h>
8 #include <linux/err.h>
9 #include <linux/platform_device.h>
10 #include <linux/module.h>
11 #include <linux/of.h>
12 #include <linux/of_device.h>
13 #include <linux/clk-provider.h>
14 #include <linux/regmap.h>
15 #include <linux/reset-controller.h>
16 
17 #include <dt-bindings/clock/qcom,gcc-apq8084.h>
18 #include <dt-bindings/reset/qcom,gcc-apq8084.h>
19 
20 #include "common.h"
21 #include "clk-regmap.h"
22 #include "clk-pll.h"
23 #include "clk-rcg.h"
24 #include "clk-branch.h"
25 #include "reset.h"
26 #include "gdsc.h"
27 
28 enum {
29 	P_XO,
30 	P_GPLL0,
31 	P_GPLL1,
32 	P_GPLL4,
33 	P_PCIE_0_1_PIPE_CLK,
34 	P_SATA_ASIC0_CLK,
35 	P_SATA_RX_CLK,
36 	P_SLEEP_CLK,
37 };
38 
39 static const struct parent_map gcc_xo_gpll0_map[] = {
40 	{ P_XO, 0 },
41 	{ P_GPLL0, 1 }
42 };
43 
44 static const char * const gcc_xo_gpll0[] = {
45 	"xo",
46 	"gpll0_vote",
47 };
48 
49 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
50 	{ P_XO, 0 },
51 	{ P_GPLL0, 1 },
52 	{ P_GPLL4, 5 }
53 };
54 
55 static const char * const gcc_xo_gpll0_gpll4[] = {
56 	"xo",
57 	"gpll0_vote",
58 	"gpll4_vote",
59 };
60 
61 static const struct parent_map gcc_xo_sata_asic0_map[] = {
62 	{ P_XO, 0 },
63 	{ P_SATA_ASIC0_CLK, 2 }
64 };
65 
66 static const char * const gcc_xo_sata_asic0[] = {
67 	"xo",
68 	"sata_asic0_clk",
69 };
70 
71 static const struct parent_map gcc_xo_sata_rx_map[] = {
72 	{ P_XO, 0 },
73 	{ P_SATA_RX_CLK, 2}
74 };
75 
76 static const char * const gcc_xo_sata_rx[] = {
77 	"xo",
78 	"sata_rx_clk",
79 };
80 
81 static const struct parent_map gcc_xo_pcie_map[] = {
82 	{ P_XO, 0 },
83 	{ P_PCIE_0_1_PIPE_CLK, 2 }
84 };
85 
86 static const char * const gcc_xo_pcie[] = {
87 	"xo",
88 	"pcie_pipe",
89 };
90 
91 static const struct parent_map gcc_xo_pcie_sleep_map[] = {
92 	{ P_XO, 0 },
93 	{ P_SLEEP_CLK, 6 }
94 };
95 
96 static const char * const gcc_xo_pcie_sleep[] = {
97 	"xo",
98 	"sleep_clk_src",
99 };
100 
101 static struct clk_pll gpll0 = {
102 	.l_reg = 0x0004,
103 	.m_reg = 0x0008,
104 	.n_reg = 0x000c,
105 	.config_reg = 0x0014,
106 	.mode_reg = 0x0000,
107 	.status_reg = 0x001c,
108 	.status_bit = 17,
109 	.clkr.hw.init = &(struct clk_init_data){
110 		.name = "gpll0",
111 		.parent_names = (const char *[]){ "xo" },
112 		.num_parents = 1,
113 		.ops = &clk_pll_ops,
114 	},
115 };
116 
117 static struct clk_regmap gpll0_vote = {
118 	.enable_reg = 0x1480,
119 	.enable_mask = BIT(0),
120 	.hw.init = &(struct clk_init_data){
121 		.name = "gpll0_vote",
122 		.parent_names = (const char *[]){ "gpll0" },
123 		.num_parents = 1,
124 		.ops = &clk_pll_vote_ops,
125 	},
126 };
127 
128 static struct clk_rcg2 config_noc_clk_src = {
129 	.cmd_rcgr = 0x0150,
130 	.hid_width = 5,
131 	.parent_map = gcc_xo_gpll0_map,
132 	.clkr.hw.init = &(struct clk_init_data){
133 		.name = "config_noc_clk_src",
134 		.parent_names = gcc_xo_gpll0,
135 		.num_parents = 2,
136 		.ops = &clk_rcg2_ops,
137 	},
138 };
139 
140 static struct clk_rcg2 periph_noc_clk_src = {
141 	.cmd_rcgr = 0x0190,
142 	.hid_width = 5,
143 	.parent_map = gcc_xo_gpll0_map,
144 	.clkr.hw.init = &(struct clk_init_data){
145 		.name = "periph_noc_clk_src",
146 		.parent_names = gcc_xo_gpll0,
147 		.num_parents = 2,
148 		.ops = &clk_rcg2_ops,
149 	},
150 };
151 
152 static struct clk_rcg2 system_noc_clk_src = {
153 	.cmd_rcgr = 0x0120,
154 	.hid_width = 5,
155 	.parent_map = gcc_xo_gpll0_map,
156 	.clkr.hw.init = &(struct clk_init_data){
157 		.name = "system_noc_clk_src",
158 		.parent_names = gcc_xo_gpll0,
159 		.num_parents = 2,
160 		.ops = &clk_rcg2_ops,
161 	},
162 };
163 
164 static struct clk_pll gpll1 = {
165 	.l_reg = 0x0044,
166 	.m_reg = 0x0048,
167 	.n_reg = 0x004c,
168 	.config_reg = 0x0054,
169 	.mode_reg = 0x0040,
170 	.status_reg = 0x005c,
171 	.status_bit = 17,
172 	.clkr.hw.init = &(struct clk_init_data){
173 		.name = "gpll1",
174 		.parent_names = (const char *[]){ "xo" },
175 		.num_parents = 1,
176 		.ops = &clk_pll_ops,
177 	},
178 };
179 
180 static struct clk_regmap gpll1_vote = {
181 	.enable_reg = 0x1480,
182 	.enable_mask = BIT(1),
183 	.hw.init = &(struct clk_init_data){
184 		.name = "gpll1_vote",
185 		.parent_names = (const char *[]){ "gpll1" },
186 		.num_parents = 1,
187 		.ops = &clk_pll_vote_ops,
188 	},
189 };
190 
191 static struct clk_pll gpll4 = {
192 	.l_reg = 0x1dc4,
193 	.m_reg = 0x1dc8,
194 	.n_reg = 0x1dcc,
195 	.config_reg = 0x1dd4,
196 	.mode_reg = 0x1dc0,
197 	.status_reg = 0x1ddc,
198 	.status_bit = 17,
199 	.clkr.hw.init = &(struct clk_init_data){
200 		.name = "gpll4",
201 		.parent_names = (const char *[]){ "xo" },
202 		.num_parents = 1,
203 		.ops = &clk_pll_ops,
204 	},
205 };
206 
207 static struct clk_regmap gpll4_vote = {
208 	.enable_reg = 0x1480,
209 	.enable_mask = BIT(4),
210 	.hw.init = &(struct clk_init_data){
211 		.name = "gpll4_vote",
212 		.parent_names = (const char *[]){ "gpll4" },
213 		.num_parents = 1,
214 		.ops = &clk_pll_vote_ops,
215 	},
216 };
217 
218 static const struct freq_tbl ftbl_gcc_ufs_axi_clk[] = {
219 	F(100000000, P_GPLL0, 6, 0, 0),
220 	F(200000000, P_GPLL0, 3, 0, 0),
221 	F(240000000, P_GPLL0, 2.5, 0, 0),
222 	{ }
223 };
224 
225 static struct clk_rcg2 ufs_axi_clk_src = {
226 	.cmd_rcgr = 0x1d64,
227 	.mnd_width = 8,
228 	.hid_width = 5,
229 	.parent_map = gcc_xo_gpll0_map,
230 	.freq_tbl = ftbl_gcc_ufs_axi_clk,
231 	.clkr.hw.init = &(struct clk_init_data){
232 		.name = "ufs_axi_clk_src",
233 		.parent_names = gcc_xo_gpll0,
234 		.num_parents = 2,
235 		.ops = &clk_rcg2_ops,
236 	},
237 };
238 
239 static const struct freq_tbl ftbl_gcc_usb30_master_clk[] = {
240 	F(125000000, P_GPLL0, 1, 5, 24),
241 	{ }
242 };
243 
244 static struct clk_rcg2 usb30_master_clk_src = {
245 	.cmd_rcgr = 0x03d4,
246 	.mnd_width = 8,
247 	.hid_width = 5,
248 	.parent_map = gcc_xo_gpll0_map,
249 	.freq_tbl = ftbl_gcc_usb30_master_clk,
250 	.clkr.hw.init = &(struct clk_init_data){
251 		.name = "usb30_master_clk_src",
252 		.parent_names = gcc_xo_gpll0,
253 		.num_parents = 2,
254 		.ops = &clk_rcg2_ops,
255 	},
256 };
257 
258 static const struct freq_tbl ftbl_gcc_usb30_sec_master_clk[] = {
259 	F(125000000, P_GPLL0, 1, 5, 24),
260 	{ }
261 };
262 
263 static struct clk_rcg2 usb30_sec_master_clk_src = {
264 	.cmd_rcgr = 0x1bd4,
265 	.mnd_width = 8,
266 	.hid_width = 5,
267 	.parent_map = gcc_xo_gpll0_map,
268 	.freq_tbl = ftbl_gcc_usb30_sec_master_clk,
269 	.clkr.hw.init = &(struct clk_init_data){
270 		.name = "usb30_sec_master_clk_src",
271 		.parent_names = gcc_xo_gpll0,
272 		.num_parents = 2,
273 		.ops = &clk_rcg2_ops,
274 	},
275 };
276 
277 static struct clk_branch gcc_usb30_sec_mock_utmi_clk = {
278 	.halt_reg = 0x1bd0,
279 	.clkr = {
280 		.enable_reg = 0x1bd0,
281 		.enable_mask = BIT(0),
282 		.hw.init = &(struct clk_init_data){
283 			.name = "gcc_usb30_sec_mock_utmi_clk",
284 			.parent_names = (const char *[]){
285 				"usb30_sec_mock_utmi_clk_src",
286 			},
287 			.num_parents = 1,
288 			.flags = CLK_SET_RATE_PARENT,
289 			.ops = &clk_branch2_ops,
290 		},
291 	},
292 };
293 
294 static struct clk_branch gcc_usb30_sec_sleep_clk = {
295 	.halt_reg = 0x1bcc,
296 	.clkr = {
297 		.enable_reg = 0x1bcc,
298 		.enable_mask = BIT(0),
299 		.hw.init = &(struct clk_init_data){
300 			.name = "gcc_usb30_sec_sleep_clk",
301 			.parent_names = (const char *[]){
302 				"sleep_clk_src",
303 			},
304 			.num_parents = 1,
305 			.flags = CLK_SET_RATE_PARENT,
306 			.ops = &clk_branch2_ops,
307 		},
308 	},
309 };
310 
311 static const struct freq_tbl ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk[] = {
312 	F(19200000, P_XO, 1, 0, 0),
313 	F(50000000, P_GPLL0, 12, 0, 0),
314 	{ }
315 };
316 
317 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
318 	.cmd_rcgr = 0x0660,
319 	.hid_width = 5,
320 	.parent_map = gcc_xo_gpll0_map,
321 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
322 	.clkr.hw.init = &(struct clk_init_data){
323 		.name = "blsp1_qup1_i2c_apps_clk_src",
324 		.parent_names = gcc_xo_gpll0,
325 		.num_parents = 2,
326 		.ops = &clk_rcg2_ops,
327 	},
328 };
329 
330 static const struct freq_tbl ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk[] = {
331 	F(960000, P_XO, 10, 1, 2),
332 	F(4800000, P_XO, 4, 0, 0),
333 	F(9600000, P_XO, 2, 0, 0),
334 	F(15000000, P_GPLL0, 10, 1, 4),
335 	F(19200000, P_XO, 1, 0, 0),
336 	F(25000000, P_GPLL0, 12, 1, 2),
337 	F(50000000, P_GPLL0, 12, 0, 0),
338 	{ }
339 };
340 
341 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
342 	.cmd_rcgr = 0x064c,
343 	.mnd_width = 8,
344 	.hid_width = 5,
345 	.parent_map = gcc_xo_gpll0_map,
346 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
347 	.clkr.hw.init = &(struct clk_init_data){
348 		.name = "blsp1_qup1_spi_apps_clk_src",
349 		.parent_names = gcc_xo_gpll0,
350 		.num_parents = 2,
351 		.ops = &clk_rcg2_ops,
352 	},
353 };
354 
355 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
356 	.cmd_rcgr = 0x06e0,
357 	.hid_width = 5,
358 	.parent_map = gcc_xo_gpll0_map,
359 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
360 	.clkr.hw.init = &(struct clk_init_data){
361 		.name = "blsp1_qup2_i2c_apps_clk_src",
362 		.parent_names = gcc_xo_gpll0,
363 		.num_parents = 2,
364 		.ops = &clk_rcg2_ops,
365 	},
366 };
367 
368 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
369 	.cmd_rcgr = 0x06cc,
370 	.mnd_width = 8,
371 	.hid_width = 5,
372 	.parent_map = gcc_xo_gpll0_map,
373 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
374 	.clkr.hw.init = &(struct clk_init_data){
375 		.name = "blsp1_qup2_spi_apps_clk_src",
376 		.parent_names = gcc_xo_gpll0,
377 		.num_parents = 2,
378 		.ops = &clk_rcg2_ops,
379 	},
380 };
381 
382 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
383 	.cmd_rcgr = 0x0760,
384 	.hid_width = 5,
385 	.parent_map = gcc_xo_gpll0_map,
386 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
387 	.clkr.hw.init = &(struct clk_init_data){
388 		.name = "blsp1_qup3_i2c_apps_clk_src",
389 		.parent_names = gcc_xo_gpll0,
390 		.num_parents = 2,
391 		.ops = &clk_rcg2_ops,
392 	},
393 };
394 
395 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
396 	.cmd_rcgr = 0x074c,
397 	.mnd_width = 8,
398 	.hid_width = 5,
399 	.parent_map = gcc_xo_gpll0_map,
400 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
401 	.clkr.hw.init = &(struct clk_init_data){
402 		.name = "blsp1_qup3_spi_apps_clk_src",
403 		.parent_names = gcc_xo_gpll0,
404 		.num_parents = 2,
405 		.ops = &clk_rcg2_ops,
406 	},
407 };
408 
409 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
410 	.cmd_rcgr = 0x07e0,
411 	.hid_width = 5,
412 	.parent_map = gcc_xo_gpll0_map,
413 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
414 	.clkr.hw.init = &(struct clk_init_data){
415 		.name = "blsp1_qup4_i2c_apps_clk_src",
416 		.parent_names = gcc_xo_gpll0,
417 		.num_parents = 2,
418 		.ops = &clk_rcg2_ops,
419 	},
420 };
421 
422 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
423 	.cmd_rcgr = 0x07cc,
424 	.mnd_width = 8,
425 	.hid_width = 5,
426 	.parent_map = gcc_xo_gpll0_map,
427 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
428 	.clkr.hw.init = &(struct clk_init_data){
429 		.name = "blsp1_qup4_spi_apps_clk_src",
430 		.parent_names = gcc_xo_gpll0,
431 		.num_parents = 2,
432 		.ops = &clk_rcg2_ops,
433 	},
434 };
435 
436 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
437 	.cmd_rcgr = 0x0860,
438 	.hid_width = 5,
439 	.parent_map = gcc_xo_gpll0_map,
440 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
441 	.clkr.hw.init = &(struct clk_init_data){
442 		.name = "blsp1_qup5_i2c_apps_clk_src",
443 		.parent_names = gcc_xo_gpll0,
444 		.num_parents = 2,
445 		.ops = &clk_rcg2_ops,
446 	},
447 };
448 
449 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
450 	.cmd_rcgr = 0x084c,
451 	.mnd_width = 8,
452 	.hid_width = 5,
453 	.parent_map = gcc_xo_gpll0_map,
454 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
455 	.clkr.hw.init = &(struct clk_init_data){
456 		.name = "blsp1_qup5_spi_apps_clk_src",
457 		.parent_names = gcc_xo_gpll0,
458 		.num_parents = 2,
459 		.ops = &clk_rcg2_ops,
460 	},
461 };
462 
463 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
464 	.cmd_rcgr = 0x08e0,
465 	.hid_width = 5,
466 	.parent_map = gcc_xo_gpll0_map,
467 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
468 	.clkr.hw.init = &(struct clk_init_data){
469 		.name = "blsp1_qup6_i2c_apps_clk_src",
470 		.parent_names = gcc_xo_gpll0,
471 		.num_parents = 2,
472 		.ops = &clk_rcg2_ops,
473 	},
474 };
475 
476 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
477 	.cmd_rcgr = 0x08cc,
478 	.mnd_width = 8,
479 	.hid_width = 5,
480 	.parent_map = gcc_xo_gpll0_map,
481 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
482 	.clkr.hw.init = &(struct clk_init_data){
483 		.name = "blsp1_qup6_spi_apps_clk_src",
484 		.parent_names = gcc_xo_gpll0,
485 		.num_parents = 2,
486 		.ops = &clk_rcg2_ops,
487 	},
488 };
489 
490 static const struct freq_tbl ftbl_gcc_blsp1_2_uart1_6_apps_clk[] = {
491 	F(3686400, P_GPLL0, 1, 96, 15625),
492 	F(7372800, P_GPLL0, 1, 192, 15625),
493 	F(14745600, P_GPLL0, 1, 384, 15625),
494 	F(16000000, P_GPLL0, 5, 2, 15),
495 	F(19200000, P_XO, 1, 0, 0),
496 	F(24000000, P_GPLL0, 5, 1, 5),
497 	F(32000000, P_GPLL0, 1, 4, 75),
498 	F(40000000, P_GPLL0, 15, 0, 0),
499 	F(46400000, P_GPLL0, 1, 29, 375),
500 	F(48000000, P_GPLL0, 12.5, 0, 0),
501 	F(51200000, P_GPLL0, 1, 32, 375),
502 	F(56000000, P_GPLL0, 1, 7, 75),
503 	F(58982400, P_GPLL0, 1, 1536, 15625),
504 	F(60000000, P_GPLL0, 10, 0, 0),
505 	F(63160000, P_GPLL0, 9.5, 0, 0),
506 	{ }
507 };
508 
509 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
510 	.cmd_rcgr = 0x068c,
511 	.mnd_width = 16,
512 	.hid_width = 5,
513 	.parent_map = gcc_xo_gpll0_map,
514 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
515 	.clkr.hw.init = &(struct clk_init_data){
516 		.name = "blsp1_uart1_apps_clk_src",
517 		.parent_names = gcc_xo_gpll0,
518 		.num_parents = 2,
519 		.ops = &clk_rcg2_ops,
520 	},
521 };
522 
523 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
524 	.cmd_rcgr = 0x070c,
525 	.mnd_width = 16,
526 	.hid_width = 5,
527 	.parent_map = gcc_xo_gpll0_map,
528 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
529 	.clkr.hw.init = &(struct clk_init_data){
530 		.name = "blsp1_uart2_apps_clk_src",
531 		.parent_names = gcc_xo_gpll0,
532 		.num_parents = 2,
533 		.ops = &clk_rcg2_ops,
534 	},
535 };
536 
537 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
538 	.cmd_rcgr = 0x078c,
539 	.mnd_width = 16,
540 	.hid_width = 5,
541 	.parent_map = gcc_xo_gpll0_map,
542 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
543 	.clkr.hw.init = &(struct clk_init_data){
544 		.name = "blsp1_uart3_apps_clk_src",
545 		.parent_names = gcc_xo_gpll0,
546 		.num_parents = 2,
547 		.ops = &clk_rcg2_ops,
548 	},
549 };
550 
551 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
552 	.cmd_rcgr = 0x080c,
553 	.mnd_width = 16,
554 	.hid_width = 5,
555 	.parent_map = gcc_xo_gpll0_map,
556 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
557 	.clkr.hw.init = &(struct clk_init_data){
558 		.name = "blsp1_uart4_apps_clk_src",
559 		.parent_names = gcc_xo_gpll0,
560 		.num_parents = 2,
561 		.ops = &clk_rcg2_ops,
562 	},
563 };
564 
565 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
566 	.cmd_rcgr = 0x088c,
567 	.mnd_width = 16,
568 	.hid_width = 5,
569 	.parent_map = gcc_xo_gpll0_map,
570 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
571 	.clkr.hw.init = &(struct clk_init_data){
572 		.name = "blsp1_uart5_apps_clk_src",
573 		.parent_names = gcc_xo_gpll0,
574 		.num_parents = 2,
575 		.ops = &clk_rcg2_ops,
576 	},
577 };
578 
579 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
580 	.cmd_rcgr = 0x090c,
581 	.mnd_width = 16,
582 	.hid_width = 5,
583 	.parent_map = gcc_xo_gpll0_map,
584 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
585 	.clkr.hw.init = &(struct clk_init_data){
586 		.name = "blsp1_uart6_apps_clk_src",
587 		.parent_names = gcc_xo_gpll0,
588 		.num_parents = 2,
589 		.ops = &clk_rcg2_ops,
590 	},
591 };
592 
593 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
594 	.cmd_rcgr = 0x09a0,
595 	.hid_width = 5,
596 	.parent_map = gcc_xo_gpll0_map,
597 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
598 	.clkr.hw.init = &(struct clk_init_data){
599 		.name = "blsp2_qup1_i2c_apps_clk_src",
600 		.parent_names = gcc_xo_gpll0,
601 		.num_parents = 2,
602 		.ops = &clk_rcg2_ops,
603 	},
604 };
605 
606 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
607 	.cmd_rcgr = 0x098c,
608 	.mnd_width = 8,
609 	.hid_width = 5,
610 	.parent_map = gcc_xo_gpll0_map,
611 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
612 	.clkr.hw.init = &(struct clk_init_data){
613 		.name = "blsp2_qup1_spi_apps_clk_src",
614 		.parent_names = gcc_xo_gpll0,
615 		.num_parents = 2,
616 		.ops = &clk_rcg2_ops,
617 	},
618 };
619 
620 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
621 	.cmd_rcgr = 0x0a20,
622 	.hid_width = 5,
623 	.parent_map = gcc_xo_gpll0_map,
624 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
625 	.clkr.hw.init = &(struct clk_init_data){
626 		.name = "blsp2_qup2_i2c_apps_clk_src",
627 		.parent_names = gcc_xo_gpll0,
628 		.num_parents = 2,
629 		.ops = &clk_rcg2_ops,
630 	},
631 };
632 
633 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
634 	.cmd_rcgr = 0x0a0c,
635 	.mnd_width = 8,
636 	.hid_width = 5,
637 	.parent_map = gcc_xo_gpll0_map,
638 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
639 	.clkr.hw.init = &(struct clk_init_data){
640 		.name = "blsp2_qup2_spi_apps_clk_src",
641 		.parent_names = gcc_xo_gpll0,
642 		.num_parents = 2,
643 		.ops = &clk_rcg2_ops,
644 	},
645 };
646 
647 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
648 	.cmd_rcgr = 0x0aa0,
649 	.hid_width = 5,
650 	.parent_map = gcc_xo_gpll0_map,
651 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
652 	.clkr.hw.init = &(struct clk_init_data){
653 		.name = "blsp2_qup3_i2c_apps_clk_src",
654 		.parent_names = gcc_xo_gpll0,
655 		.num_parents = 2,
656 		.ops = &clk_rcg2_ops,
657 	},
658 };
659 
660 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
661 	.cmd_rcgr = 0x0a8c,
662 	.mnd_width = 8,
663 	.hid_width = 5,
664 	.parent_map = gcc_xo_gpll0_map,
665 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
666 	.clkr.hw.init = &(struct clk_init_data){
667 		.name = "blsp2_qup3_spi_apps_clk_src",
668 		.parent_names = gcc_xo_gpll0,
669 		.num_parents = 2,
670 		.ops = &clk_rcg2_ops,
671 	},
672 };
673 
674 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
675 	.cmd_rcgr = 0x0b20,
676 	.hid_width = 5,
677 	.parent_map = gcc_xo_gpll0_map,
678 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
679 	.clkr.hw.init = &(struct clk_init_data){
680 		.name = "blsp2_qup4_i2c_apps_clk_src",
681 		.parent_names = gcc_xo_gpll0,
682 		.num_parents = 2,
683 		.ops = &clk_rcg2_ops,
684 	},
685 };
686 
687 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
688 	.cmd_rcgr = 0x0b0c,
689 	.mnd_width = 8,
690 	.hid_width = 5,
691 	.parent_map = gcc_xo_gpll0_map,
692 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
693 	.clkr.hw.init = &(struct clk_init_data){
694 		.name = "blsp2_qup4_spi_apps_clk_src",
695 		.parent_names = gcc_xo_gpll0,
696 		.num_parents = 2,
697 		.ops = &clk_rcg2_ops,
698 	},
699 };
700 
701 static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
702 	.cmd_rcgr = 0x0ba0,
703 	.hid_width = 5,
704 	.parent_map = gcc_xo_gpll0_map,
705 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
706 	.clkr.hw.init = &(struct clk_init_data){
707 		.name = "blsp2_qup5_i2c_apps_clk_src",
708 		.parent_names = gcc_xo_gpll0,
709 		.num_parents = 2,
710 		.ops = &clk_rcg2_ops,
711 	},
712 };
713 
714 static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
715 	.cmd_rcgr = 0x0b8c,
716 	.mnd_width = 8,
717 	.hid_width = 5,
718 	.parent_map = gcc_xo_gpll0_map,
719 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
720 	.clkr.hw.init = &(struct clk_init_data){
721 		.name = "blsp2_qup5_spi_apps_clk_src",
722 		.parent_names = gcc_xo_gpll0,
723 		.num_parents = 2,
724 		.ops = &clk_rcg2_ops,
725 	},
726 };
727 
728 static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
729 	.cmd_rcgr = 0x0c20,
730 	.hid_width = 5,
731 	.parent_map = gcc_xo_gpll0_map,
732 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk,
733 	.clkr.hw.init = &(struct clk_init_data){
734 		.name = "blsp2_qup6_i2c_apps_clk_src",
735 		.parent_names = gcc_xo_gpll0,
736 		.num_parents = 2,
737 		.ops = &clk_rcg2_ops,
738 	},
739 };
740 
741 static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
742 	.cmd_rcgr = 0x0c0c,
743 	.mnd_width = 8,
744 	.hid_width = 5,
745 	.parent_map = gcc_xo_gpll0_map,
746 	.freq_tbl = ftbl_gcc_blsp1_2_qup1_6_spi_apps_clk,
747 	.clkr.hw.init = &(struct clk_init_data){
748 		.name = "blsp2_qup6_spi_apps_clk_src",
749 		.parent_names = gcc_xo_gpll0,
750 		.num_parents = 2,
751 		.ops = &clk_rcg2_ops,
752 	},
753 };
754 
755 static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
756 	.cmd_rcgr = 0x09cc,
757 	.mnd_width = 16,
758 	.hid_width = 5,
759 	.parent_map = gcc_xo_gpll0_map,
760 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
761 	.clkr.hw.init = &(struct clk_init_data){
762 		.name = "blsp2_uart1_apps_clk_src",
763 		.parent_names = gcc_xo_gpll0,
764 		.num_parents = 2,
765 		.ops = &clk_rcg2_ops,
766 	},
767 };
768 
769 static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
770 	.cmd_rcgr = 0x0a4c,
771 	.mnd_width = 16,
772 	.hid_width = 5,
773 	.parent_map = gcc_xo_gpll0_map,
774 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
775 	.clkr.hw.init = &(struct clk_init_data){
776 		.name = "blsp2_uart2_apps_clk_src",
777 		.parent_names = gcc_xo_gpll0,
778 		.num_parents = 2,
779 		.ops = &clk_rcg2_ops,
780 	},
781 };
782 
783 static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
784 	.cmd_rcgr = 0x0acc,
785 	.mnd_width = 16,
786 	.hid_width = 5,
787 	.parent_map = gcc_xo_gpll0_map,
788 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
789 	.clkr.hw.init = &(struct clk_init_data){
790 		.name = "blsp2_uart3_apps_clk_src",
791 		.parent_names = gcc_xo_gpll0,
792 		.num_parents = 2,
793 		.ops = &clk_rcg2_ops,
794 	},
795 };
796 
797 static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
798 	.cmd_rcgr = 0x0b4c,
799 	.mnd_width = 16,
800 	.hid_width = 5,
801 	.parent_map = gcc_xo_gpll0_map,
802 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
803 	.clkr.hw.init = &(struct clk_init_data){
804 		.name = "blsp2_uart4_apps_clk_src",
805 		.parent_names = gcc_xo_gpll0,
806 		.num_parents = 2,
807 		.ops = &clk_rcg2_ops,
808 	},
809 };
810 
811 static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
812 	.cmd_rcgr = 0x0bcc,
813 	.mnd_width = 16,
814 	.hid_width = 5,
815 	.parent_map = gcc_xo_gpll0_map,
816 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
817 	.clkr.hw.init = &(struct clk_init_data){
818 		.name = "blsp2_uart5_apps_clk_src",
819 		.parent_names = gcc_xo_gpll0,
820 		.num_parents = 2,
821 		.ops = &clk_rcg2_ops,
822 	},
823 };
824 
825 static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
826 	.cmd_rcgr = 0x0c4c,
827 	.mnd_width = 16,
828 	.hid_width = 5,
829 	.parent_map = gcc_xo_gpll0_map,
830 	.freq_tbl = ftbl_gcc_blsp1_2_uart1_6_apps_clk,
831 	.clkr.hw.init = &(struct clk_init_data){
832 		.name = "blsp2_uart6_apps_clk_src",
833 		.parent_names = gcc_xo_gpll0,
834 		.num_parents = 2,
835 		.ops = &clk_rcg2_ops,
836 	},
837 };
838 
839 static const struct freq_tbl ftbl_gcc_ce1_clk[] = {
840 	F(50000000, P_GPLL0, 12, 0, 0),
841 	F(85710000, P_GPLL0, 7, 0, 0),
842 	F(100000000, P_GPLL0, 6, 0, 0),
843 	F(171430000, P_GPLL0, 3.5, 0, 0),
844 	{ }
845 };
846 
847 static struct clk_rcg2 ce1_clk_src = {
848 	.cmd_rcgr = 0x1050,
849 	.hid_width = 5,
850 	.parent_map = gcc_xo_gpll0_map,
851 	.freq_tbl = ftbl_gcc_ce1_clk,
852 	.clkr.hw.init = &(struct clk_init_data){
853 		.name = "ce1_clk_src",
854 		.parent_names = gcc_xo_gpll0,
855 		.num_parents = 2,
856 		.ops = &clk_rcg2_ops,
857 	},
858 };
859 
860 static const struct freq_tbl ftbl_gcc_ce2_clk[] = {
861 	F(50000000, P_GPLL0, 12, 0, 0),
862 	F(85710000, P_GPLL0, 7, 0, 0),
863 	F(100000000, P_GPLL0, 6, 0, 0),
864 	F(171430000, P_GPLL0, 3.5, 0, 0),
865 	{ }
866 };
867 
868 static struct clk_rcg2 ce2_clk_src = {
869 	.cmd_rcgr = 0x1090,
870 	.hid_width = 5,
871 	.parent_map = gcc_xo_gpll0_map,
872 	.freq_tbl = ftbl_gcc_ce2_clk,
873 	.clkr.hw.init = &(struct clk_init_data){
874 		.name = "ce2_clk_src",
875 		.parent_names = gcc_xo_gpll0,
876 		.num_parents = 2,
877 		.ops = &clk_rcg2_ops,
878 	},
879 };
880 
881 static const struct freq_tbl ftbl_gcc_ce3_clk[] = {
882 	F(50000000, P_GPLL0, 12, 0, 0),
883 	F(85710000, P_GPLL0, 7, 0, 0),
884 	F(100000000, P_GPLL0, 6, 0, 0),
885 	F(171430000, P_GPLL0, 3.5, 0, 0),
886 	{ }
887 };
888 
889 static struct clk_rcg2 ce3_clk_src = {
890 	.cmd_rcgr = 0x1d10,
891 	.hid_width = 5,
892 	.parent_map = gcc_xo_gpll0_map,
893 	.freq_tbl = ftbl_gcc_ce3_clk,
894 	.clkr.hw.init = &(struct clk_init_data){
895 		.name = "ce3_clk_src",
896 		.parent_names = gcc_xo_gpll0,
897 		.num_parents = 2,
898 		.ops = &clk_rcg2_ops,
899 	},
900 };
901 
902 static const struct freq_tbl ftbl_gcc_gp_clk[] = {
903 	F(19200000, P_XO, 1, 0, 0),
904 	F(100000000, P_GPLL0, 6, 0, 0),
905 	F(200000000, P_GPLL0, 3, 0, 0),
906 	{ }
907 };
908 
909 static struct clk_rcg2 gp1_clk_src = {
910 	.cmd_rcgr = 0x1904,
911 	.mnd_width = 8,
912 	.hid_width = 5,
913 	.parent_map = gcc_xo_gpll0_map,
914 	.freq_tbl = ftbl_gcc_gp_clk,
915 	.clkr.hw.init = &(struct clk_init_data){
916 		.name = "gp1_clk_src",
917 		.parent_names = gcc_xo_gpll0,
918 		.num_parents = 2,
919 		.ops = &clk_rcg2_ops,
920 	},
921 };
922 
923 static struct clk_rcg2 gp2_clk_src = {
924 	.cmd_rcgr = 0x1944,
925 	.mnd_width = 8,
926 	.hid_width = 5,
927 	.parent_map = gcc_xo_gpll0_map,
928 	.freq_tbl = ftbl_gcc_gp_clk,
929 	.clkr.hw.init = &(struct clk_init_data){
930 		.name = "gp2_clk_src",
931 		.parent_names = gcc_xo_gpll0,
932 		.num_parents = 2,
933 		.ops = &clk_rcg2_ops,
934 	},
935 };
936 
937 static struct clk_rcg2 gp3_clk_src = {
938 	.cmd_rcgr = 0x1984,
939 	.mnd_width = 8,
940 	.hid_width = 5,
941 	.parent_map = gcc_xo_gpll0_map,
942 	.freq_tbl = ftbl_gcc_gp_clk,
943 	.clkr.hw.init = &(struct clk_init_data){
944 		.name = "gp3_clk_src",
945 		.parent_names = gcc_xo_gpll0,
946 		.num_parents = 2,
947 		.ops = &clk_rcg2_ops,
948 	},
949 };
950 
951 static const struct freq_tbl ftbl_gcc_pcie_0_1_aux_clk[] = {
952 	F(1010000, P_XO, 1, 1, 19),
953 	{ }
954 };
955 
956 static struct clk_rcg2 pcie_0_aux_clk_src = {
957 	.cmd_rcgr = 0x1b2c,
958 	.mnd_width = 16,
959 	.hid_width = 5,
960 	.parent_map = gcc_xo_pcie_sleep_map,
961 	.freq_tbl = ftbl_gcc_pcie_0_1_aux_clk,
962 	.clkr.hw.init = &(struct clk_init_data){
963 		.name = "pcie_0_aux_clk_src",
964 		.parent_names = gcc_xo_pcie_sleep,
965 		.num_parents = 2,
966 		.ops = &clk_rcg2_ops,
967 	},
968 };
969 
970 static struct clk_rcg2 pcie_1_aux_clk_src = {
971 	.cmd_rcgr = 0x1bac,
972 	.mnd_width = 16,
973 	.hid_width = 5,
974 	.parent_map = gcc_xo_pcie_sleep_map,
975 	.freq_tbl = ftbl_gcc_pcie_0_1_aux_clk,
976 	.clkr.hw.init = &(struct clk_init_data){
977 		.name = "pcie_1_aux_clk_src",
978 		.parent_names = gcc_xo_pcie_sleep,
979 		.num_parents = 2,
980 		.ops = &clk_rcg2_ops,
981 	},
982 };
983 
984 static const struct freq_tbl ftbl_gcc_pcie_0_1_pipe_clk[] = {
985 	F(125000000, P_PCIE_0_1_PIPE_CLK, 1, 0, 0),
986 	F(250000000, P_PCIE_0_1_PIPE_CLK, 1, 0, 0),
987 	{ }
988 };
989 
990 static struct clk_rcg2 pcie_0_pipe_clk_src = {
991 	.cmd_rcgr = 0x1b18,
992 	.hid_width = 5,
993 	.parent_map = gcc_xo_pcie_map,
994 	.freq_tbl = ftbl_gcc_pcie_0_1_pipe_clk,
995 	.clkr.hw.init = &(struct clk_init_data){
996 		.name = "pcie_0_pipe_clk_src",
997 		.parent_names = gcc_xo_pcie,
998 		.num_parents = 2,
999 		.ops = &clk_rcg2_ops,
1000 	},
1001 };
1002 
1003 static struct clk_rcg2 pcie_1_pipe_clk_src = {
1004 	.cmd_rcgr = 0x1b98,
1005 	.hid_width = 5,
1006 	.parent_map = gcc_xo_pcie_map,
1007 	.freq_tbl = ftbl_gcc_pcie_0_1_pipe_clk,
1008 	.clkr.hw.init = &(struct clk_init_data){
1009 		.name = "pcie_1_pipe_clk_src",
1010 		.parent_names = gcc_xo_pcie,
1011 		.num_parents = 2,
1012 		.ops = &clk_rcg2_ops,
1013 	},
1014 };
1015 
1016 static const struct freq_tbl ftbl_gcc_pdm2_clk[] = {
1017 	F(60000000, P_GPLL0, 10, 0, 0),
1018 	{ }
1019 };
1020 
1021 static struct clk_rcg2 pdm2_clk_src = {
1022 	.cmd_rcgr = 0x0cd0,
1023 	.hid_width = 5,
1024 	.parent_map = gcc_xo_gpll0_map,
1025 	.freq_tbl = ftbl_gcc_pdm2_clk,
1026 	.clkr.hw.init = &(struct clk_init_data){
1027 		.name = "pdm2_clk_src",
1028 		.parent_names = gcc_xo_gpll0,
1029 		.num_parents = 2,
1030 		.ops = &clk_rcg2_ops,
1031 	},
1032 };
1033 
1034 static const struct freq_tbl ftbl_gcc_sata_asic0_clk[] = {
1035 	F(75000000, P_SATA_ASIC0_CLK, 1, 0, 0),
1036 	F(150000000, P_SATA_ASIC0_CLK, 1, 0, 0),
1037 	F(300000000, P_SATA_ASIC0_CLK, 1, 0, 0),
1038 	{ }
1039 };
1040 
1041 static struct clk_rcg2 sata_asic0_clk_src = {
1042 	.cmd_rcgr = 0x1c94,
1043 	.hid_width = 5,
1044 	.parent_map = gcc_xo_sata_asic0_map,
1045 	.freq_tbl = ftbl_gcc_sata_asic0_clk,
1046 	.clkr.hw.init = &(struct clk_init_data){
1047 		.name = "sata_asic0_clk_src",
1048 		.parent_names = gcc_xo_sata_asic0,
1049 		.num_parents = 2,
1050 		.ops = &clk_rcg2_ops,
1051 	},
1052 };
1053 
1054 static const struct freq_tbl ftbl_gcc_sata_pmalive_clk[] = {
1055 	F(19200000, P_XO, 1, 0, 0),
1056 	F(50000000, P_GPLL0, 12, 0, 0),
1057 	F(100000000, P_GPLL0, 6, 0, 0),
1058 	{ }
1059 };
1060 
1061 static struct clk_rcg2 sata_pmalive_clk_src = {
1062 	.cmd_rcgr = 0x1c80,
1063 	.hid_width = 5,
1064 	.parent_map = gcc_xo_gpll0_map,
1065 	.freq_tbl = ftbl_gcc_sata_pmalive_clk,
1066 	.clkr.hw.init = &(struct clk_init_data){
1067 		.name = "sata_pmalive_clk_src",
1068 		.parent_names = gcc_xo_gpll0,
1069 		.num_parents = 2,
1070 		.ops = &clk_rcg2_ops,
1071 	},
1072 };
1073 
1074 static const struct freq_tbl ftbl_gcc_sata_rx_clk[] = {
1075 	F(75000000, P_SATA_RX_CLK, 1, 0, 0),
1076 	F(150000000, P_SATA_RX_CLK, 1, 0, 0),
1077 	F(300000000, P_SATA_RX_CLK, 1, 0, 0),
1078 	{ }
1079 };
1080 
1081 static struct clk_rcg2 sata_rx_clk_src = {
1082 	.cmd_rcgr = 0x1ca8,
1083 	.hid_width = 5,
1084 	.parent_map = gcc_xo_sata_rx_map,
1085 	.freq_tbl = ftbl_gcc_sata_rx_clk,
1086 	.clkr.hw.init = &(struct clk_init_data){
1087 		.name = "sata_rx_clk_src",
1088 		.parent_names = gcc_xo_sata_rx,
1089 		.num_parents = 2,
1090 		.ops = &clk_rcg2_ops,
1091 	},
1092 };
1093 
1094 static const struct freq_tbl ftbl_gcc_sata_rx_oob_clk[] = {
1095 	F(100000000, P_GPLL0, 6, 0, 0),
1096 	{ }
1097 };
1098 
1099 static struct clk_rcg2 sata_rx_oob_clk_src = {
1100 	.cmd_rcgr = 0x1c5c,
1101 	.hid_width = 5,
1102 	.parent_map = gcc_xo_gpll0_map,
1103 	.freq_tbl = ftbl_gcc_sata_rx_oob_clk,
1104 	.clkr.hw.init = &(struct clk_init_data){
1105 		.name = "sata_rx_oob_clk_src",
1106 		.parent_names = gcc_xo_gpll0,
1107 		.num_parents = 2,
1108 		.ops = &clk_rcg2_ops,
1109 	},
1110 };
1111 
1112 static const struct freq_tbl ftbl_gcc_sdcc1_4_apps_clk[] = {
1113 	F(144000, P_XO, 16, 3, 25),
1114 	F(400000, P_XO, 12, 1, 4),
1115 	F(20000000, P_GPLL0, 15, 1, 2),
1116 	F(25000000, P_GPLL0, 12, 1, 2),
1117 	F(50000000, P_GPLL0, 12, 0, 0),
1118 	F(100000000, P_GPLL0, 6, 0, 0),
1119 	F(192000000, P_GPLL4, 4, 0, 0),
1120 	F(200000000, P_GPLL0, 3, 0, 0),
1121 	F(384000000, P_GPLL4, 2, 0, 0),
1122 	{ }
1123 };
1124 
1125 static struct clk_rcg2 sdcc1_apps_clk_src = {
1126 	.cmd_rcgr = 0x04d0,
1127 	.mnd_width = 8,
1128 	.hid_width = 5,
1129 	.parent_map = gcc_xo_gpll0_gpll4_map,
1130 	.freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1131 	.clkr.hw.init = &(struct clk_init_data){
1132 		.name = "sdcc1_apps_clk_src",
1133 		.parent_names = gcc_xo_gpll0_gpll4,
1134 		.num_parents = 3,
1135 		.ops = &clk_rcg2_floor_ops,
1136 	},
1137 };
1138 
1139 static struct clk_rcg2 sdcc2_apps_clk_src = {
1140 	.cmd_rcgr = 0x0510,
1141 	.mnd_width = 8,
1142 	.hid_width = 5,
1143 	.parent_map = gcc_xo_gpll0_map,
1144 	.freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1145 	.clkr.hw.init = &(struct clk_init_data){
1146 		.name = "sdcc2_apps_clk_src",
1147 		.parent_names = gcc_xo_gpll0,
1148 		.num_parents = 2,
1149 		.ops = &clk_rcg2_floor_ops,
1150 	},
1151 };
1152 
1153 static struct clk_rcg2 sdcc3_apps_clk_src = {
1154 	.cmd_rcgr = 0x0550,
1155 	.mnd_width = 8,
1156 	.hid_width = 5,
1157 	.parent_map = gcc_xo_gpll0_map,
1158 	.freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1159 	.clkr.hw.init = &(struct clk_init_data){
1160 		.name = "sdcc3_apps_clk_src",
1161 		.parent_names = gcc_xo_gpll0,
1162 		.num_parents = 2,
1163 		.ops = &clk_rcg2_floor_ops,
1164 	},
1165 };
1166 
1167 static struct clk_rcg2 sdcc4_apps_clk_src = {
1168 	.cmd_rcgr = 0x0590,
1169 	.mnd_width = 8,
1170 	.hid_width = 5,
1171 	.parent_map = gcc_xo_gpll0_map,
1172 	.freq_tbl = ftbl_gcc_sdcc1_4_apps_clk,
1173 	.clkr.hw.init = &(struct clk_init_data){
1174 		.name = "sdcc4_apps_clk_src",
1175 		.parent_names = gcc_xo_gpll0,
1176 		.num_parents = 2,
1177 		.ops = &clk_rcg2_floor_ops,
1178 	},
1179 };
1180 
1181 static const struct freq_tbl ftbl_gcc_tsif_ref_clk[] = {
1182 	F(105000, P_XO, 2, 1, 91),
1183 	{ }
1184 };
1185 
1186 static struct clk_rcg2 tsif_ref_clk_src = {
1187 	.cmd_rcgr = 0x0d90,
1188 	.mnd_width = 8,
1189 	.hid_width = 5,
1190 	.parent_map = gcc_xo_gpll0_map,
1191 	.freq_tbl = ftbl_gcc_tsif_ref_clk,
1192 	.clkr.hw.init = &(struct clk_init_data){
1193 		.name = "tsif_ref_clk_src",
1194 		.parent_names = gcc_xo_gpll0,
1195 		.num_parents = 2,
1196 		.ops = &clk_rcg2_ops,
1197 	},
1198 };
1199 
1200 static const struct freq_tbl ftbl_gcc_usb30_mock_utmi_clk[] = {
1201 	F(60000000, P_GPLL0, 10, 0, 0),
1202 	{ }
1203 };
1204 
1205 static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1206 	.cmd_rcgr = 0x03e8,
1207 	.hid_width = 5,
1208 	.parent_map = gcc_xo_gpll0_map,
1209 	.freq_tbl = ftbl_gcc_usb30_mock_utmi_clk,
1210 	.clkr.hw.init = &(struct clk_init_data){
1211 		.name = "usb30_mock_utmi_clk_src",
1212 		.parent_names = gcc_xo_gpll0,
1213 		.num_parents = 2,
1214 		.ops = &clk_rcg2_ops,
1215 	},
1216 };
1217 
1218 static const struct freq_tbl ftbl_gcc_usb30_sec_mock_utmi_clk[] = {
1219 	F(125000000, P_GPLL0, 1, 5, 24),
1220 	{ }
1221 };
1222 
1223 static struct clk_rcg2 usb30_sec_mock_utmi_clk_src = {
1224 	.cmd_rcgr = 0x1be8,
1225 	.hid_width = 5,
1226 	.parent_map = gcc_xo_gpll0_map,
1227 	.freq_tbl = ftbl_gcc_usb30_sec_mock_utmi_clk,
1228 	.clkr.hw.init = &(struct clk_init_data){
1229 		.name = "usb30_sec_mock_utmi_clk_src",
1230 		.parent_names = gcc_xo_gpll0,
1231 		.num_parents = 2,
1232 		.ops = &clk_rcg2_ops,
1233 	},
1234 };
1235 
1236 static const struct freq_tbl ftbl_gcc_usb_hs_system_clk[] = {
1237 	F(75000000, P_GPLL0, 8, 0, 0),
1238 	{ }
1239 };
1240 
1241 static struct clk_rcg2 usb_hs_system_clk_src = {
1242 	.cmd_rcgr = 0x0490,
1243 	.hid_width = 5,
1244 	.parent_map = gcc_xo_gpll0_map,
1245 	.freq_tbl = ftbl_gcc_usb_hs_system_clk,
1246 	.clkr.hw.init = &(struct clk_init_data){
1247 		.name = "usb_hs_system_clk_src",
1248 		.parent_names = gcc_xo_gpll0,
1249 		.num_parents = 2,
1250 		.ops = &clk_rcg2_ops,
1251 	},
1252 };
1253 
1254 static const struct freq_tbl ftbl_gcc_usb_hsic_clk[] = {
1255 	F(480000000, P_GPLL1, 1, 0, 0),
1256 	{ }
1257 };
1258 
1259 static const struct parent_map usb_hsic_clk_src_map[] = {
1260 	{ P_XO, 0 },
1261 	{ P_GPLL1, 4 }
1262 };
1263 
1264 static struct clk_rcg2 usb_hsic_clk_src = {
1265 	.cmd_rcgr = 0x0440,
1266 	.hid_width = 5,
1267 	.parent_map = usb_hsic_clk_src_map,
1268 	.freq_tbl = ftbl_gcc_usb_hsic_clk,
1269 	.clkr.hw.init = &(struct clk_init_data){
1270 		.name = "usb_hsic_clk_src",
1271 		.parent_names = (const char *[]){
1272 			"xo",
1273 			"gpll1_vote",
1274 		},
1275 		.num_parents = 2,
1276 		.ops = &clk_rcg2_ops,
1277 	},
1278 };
1279 
1280 static const struct freq_tbl ftbl_gcc_usb_hsic_ahb_clk_src[] = {
1281 	F(60000000, P_GPLL1, 8, 0, 0),
1282 	{ }
1283 };
1284 
1285 static struct clk_rcg2 usb_hsic_ahb_clk_src = {
1286 	.cmd_rcgr = 0x046c,
1287 	.mnd_width = 8,
1288 	.hid_width = 5,
1289 	.parent_map = usb_hsic_clk_src_map,
1290 	.freq_tbl = ftbl_gcc_usb_hsic_ahb_clk_src,
1291 	.clkr.hw.init = &(struct clk_init_data){
1292 		.name = "usb_hsic_ahb_clk_src",
1293 		.parent_names = (const char *[]){
1294 			"xo",
1295 			"gpll1_vote",
1296 		},
1297 		.num_parents = 2,
1298 		.ops = &clk_rcg2_ops,
1299 	},
1300 };
1301 
1302 static const struct freq_tbl ftbl_gcc_usb_hsic_io_cal_clk[] = {
1303 	F(9600000, P_XO, 2, 0, 0),
1304 	{ }
1305 };
1306 
1307 static struct clk_rcg2 usb_hsic_io_cal_clk_src = {
1308 	.cmd_rcgr = 0x0458,
1309 	.hid_width = 5,
1310 	.parent_map = gcc_xo_gpll0_map,
1311 	.freq_tbl = ftbl_gcc_usb_hsic_io_cal_clk,
1312 	.clkr.hw.init = &(struct clk_init_data){
1313 		.name = "usb_hsic_io_cal_clk_src",
1314 		.parent_names = gcc_xo_gpll0,
1315 		.num_parents = 1,
1316 		.ops = &clk_rcg2_ops,
1317 	},
1318 };
1319 
1320 static struct clk_branch gcc_usb_hsic_mock_utmi_clk = {
1321 	.halt_reg = 0x1f14,
1322 	.clkr = {
1323 		.enable_reg = 0x1f14,
1324 		.enable_mask = BIT(0),
1325 		.hw.init = &(struct clk_init_data){
1326 			.name = "gcc_usb_hsic_mock_utmi_clk",
1327 			.parent_names = (const char *[]){
1328 				"usb_hsic_mock_utmi_clk_src",
1329 			},
1330 			.num_parents = 1,
1331 			.flags = CLK_SET_RATE_PARENT,
1332 			.ops = &clk_branch2_ops,
1333 		},
1334 	},
1335 };
1336 
1337 static const struct freq_tbl ftbl_gcc_usb_hsic_mock_utmi_clk[] = {
1338 	F(60000000, P_GPLL0, 10, 0, 0),
1339 	{ }
1340 };
1341 
1342 static struct clk_rcg2 usb_hsic_mock_utmi_clk_src = {
1343 	.cmd_rcgr = 0x1f00,
1344 	.hid_width = 5,
1345 	.parent_map = gcc_xo_gpll0_map,
1346 	.freq_tbl = ftbl_gcc_usb_hsic_mock_utmi_clk,
1347 	.clkr.hw.init = &(struct clk_init_data){
1348 		.name = "usb_hsic_mock_utmi_clk_src",
1349 		.parent_names = gcc_xo_gpll0,
1350 		.num_parents = 1,
1351 		.ops = &clk_rcg2_ops,
1352 	},
1353 };
1354 
1355 static const struct freq_tbl ftbl_gcc_usb_hsic_system_clk[] = {
1356 	F(75000000, P_GPLL0, 8, 0, 0),
1357 	{ }
1358 };
1359 
1360 static struct clk_rcg2 usb_hsic_system_clk_src = {
1361 	.cmd_rcgr = 0x041c,
1362 	.hid_width = 5,
1363 	.parent_map = gcc_xo_gpll0_map,
1364 	.freq_tbl = ftbl_gcc_usb_hsic_system_clk,
1365 	.clkr.hw.init = &(struct clk_init_data){
1366 		.name = "usb_hsic_system_clk_src",
1367 		.parent_names = gcc_xo_gpll0,
1368 		.num_parents = 2,
1369 		.ops = &clk_rcg2_ops,
1370 	},
1371 };
1372 
1373 static struct clk_branch gcc_bam_dma_ahb_clk = {
1374 	.halt_reg = 0x0d44,
1375 	.halt_check = BRANCH_HALT_VOTED,
1376 	.clkr = {
1377 		.enable_reg = 0x1484,
1378 		.enable_mask = BIT(12),
1379 		.hw.init = &(struct clk_init_data){
1380 			.name = "gcc_bam_dma_ahb_clk",
1381 			.parent_names = (const char *[]){
1382 				"periph_noc_clk_src",
1383 			},
1384 			.num_parents = 1,
1385 			.ops = &clk_branch2_ops,
1386 		},
1387 	},
1388 };
1389 
1390 static struct clk_branch gcc_blsp1_ahb_clk = {
1391 	.halt_reg = 0x05c4,
1392 	.halt_check = BRANCH_HALT_VOTED,
1393 	.clkr = {
1394 		.enable_reg = 0x1484,
1395 		.enable_mask = BIT(17),
1396 		.hw.init = &(struct clk_init_data){
1397 			.name = "gcc_blsp1_ahb_clk",
1398 			.parent_names = (const char *[]){
1399 				"periph_noc_clk_src",
1400 			},
1401 			.num_parents = 1,
1402 			.ops = &clk_branch2_ops,
1403 		},
1404 	},
1405 };
1406 
1407 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1408 	.halt_reg = 0x0648,
1409 	.clkr = {
1410 		.enable_reg = 0x0648,
1411 		.enable_mask = BIT(0),
1412 		.hw.init = &(struct clk_init_data){
1413 			.name = "gcc_blsp1_qup1_i2c_apps_clk",
1414 			.parent_names = (const char *[]){
1415 				"blsp1_qup1_i2c_apps_clk_src",
1416 			},
1417 			.num_parents = 1,
1418 			.flags = CLK_SET_RATE_PARENT,
1419 			.ops = &clk_branch2_ops,
1420 		},
1421 	},
1422 };
1423 
1424 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1425 	.halt_reg = 0x0644,
1426 	.clkr = {
1427 		.enable_reg = 0x0644,
1428 		.enable_mask = BIT(0),
1429 		.hw.init = &(struct clk_init_data){
1430 			.name = "gcc_blsp1_qup1_spi_apps_clk",
1431 			.parent_names = (const char *[]){
1432 				"blsp1_qup1_spi_apps_clk_src",
1433 			},
1434 			.num_parents = 1,
1435 			.flags = CLK_SET_RATE_PARENT,
1436 			.ops = &clk_branch2_ops,
1437 		},
1438 	},
1439 };
1440 
1441 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1442 	.halt_reg = 0x06c8,
1443 	.clkr = {
1444 		.enable_reg = 0x06c8,
1445 		.enable_mask = BIT(0),
1446 		.hw.init = &(struct clk_init_data){
1447 			.name = "gcc_blsp1_qup2_i2c_apps_clk",
1448 			.parent_names = (const char *[]){
1449 				"blsp1_qup2_i2c_apps_clk_src",
1450 			},
1451 			.num_parents = 1,
1452 			.flags = CLK_SET_RATE_PARENT,
1453 			.ops = &clk_branch2_ops,
1454 		},
1455 	},
1456 };
1457 
1458 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1459 	.halt_reg = 0x06c4,
1460 	.clkr = {
1461 		.enable_reg = 0x06c4,
1462 		.enable_mask = BIT(0),
1463 		.hw.init = &(struct clk_init_data){
1464 			.name = "gcc_blsp1_qup2_spi_apps_clk",
1465 			.parent_names = (const char *[]){
1466 				"blsp1_qup2_spi_apps_clk_src",
1467 			},
1468 			.num_parents = 1,
1469 			.flags = CLK_SET_RATE_PARENT,
1470 			.ops = &clk_branch2_ops,
1471 		},
1472 	},
1473 };
1474 
1475 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1476 	.halt_reg = 0x0748,
1477 	.clkr = {
1478 		.enable_reg = 0x0748,
1479 		.enable_mask = BIT(0),
1480 		.hw.init = &(struct clk_init_data){
1481 			.name = "gcc_blsp1_qup3_i2c_apps_clk",
1482 			.parent_names = (const char *[]){
1483 				"blsp1_qup3_i2c_apps_clk_src",
1484 			},
1485 			.num_parents = 1,
1486 			.flags = CLK_SET_RATE_PARENT,
1487 			.ops = &clk_branch2_ops,
1488 		},
1489 	},
1490 };
1491 
1492 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1493 	.halt_reg = 0x0744,
1494 	.clkr = {
1495 		.enable_reg = 0x0744,
1496 		.enable_mask = BIT(0),
1497 		.hw.init = &(struct clk_init_data){
1498 			.name = "gcc_blsp1_qup3_spi_apps_clk",
1499 			.parent_names = (const char *[]){
1500 				"blsp1_qup3_spi_apps_clk_src",
1501 			},
1502 			.num_parents = 1,
1503 			.flags = CLK_SET_RATE_PARENT,
1504 			.ops = &clk_branch2_ops,
1505 		},
1506 	},
1507 };
1508 
1509 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1510 	.halt_reg = 0x07c8,
1511 	.clkr = {
1512 		.enable_reg = 0x07c8,
1513 		.enable_mask = BIT(0),
1514 		.hw.init = &(struct clk_init_data){
1515 			.name = "gcc_blsp1_qup4_i2c_apps_clk",
1516 			.parent_names = (const char *[]){
1517 				"blsp1_qup4_i2c_apps_clk_src",
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_blsp1_qup4_spi_apps_clk = {
1527 	.halt_reg = 0x07c4,
1528 	.clkr = {
1529 		.enable_reg = 0x07c4,
1530 		.enable_mask = BIT(0),
1531 		.hw.init = &(struct clk_init_data){
1532 			.name = "gcc_blsp1_qup4_spi_apps_clk",
1533 			.parent_names = (const char *[]){
1534 				"blsp1_qup4_spi_apps_clk_src",
1535 			},
1536 			.num_parents = 1,
1537 			.flags = CLK_SET_RATE_PARENT,
1538 			.ops = &clk_branch2_ops,
1539 		},
1540 	},
1541 };
1542 
1543 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1544 	.halt_reg = 0x0848,
1545 	.clkr = {
1546 		.enable_reg = 0x0848,
1547 		.enable_mask = BIT(0),
1548 		.hw.init = &(struct clk_init_data){
1549 			.name = "gcc_blsp1_qup5_i2c_apps_clk",
1550 			.parent_names = (const char *[]){
1551 				"blsp1_qup5_i2c_apps_clk_src",
1552 			},
1553 			.num_parents = 1,
1554 			.flags = CLK_SET_RATE_PARENT,
1555 			.ops = &clk_branch2_ops,
1556 		},
1557 	},
1558 };
1559 
1560 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1561 	.halt_reg = 0x0844,
1562 	.clkr = {
1563 		.enable_reg = 0x0844,
1564 		.enable_mask = BIT(0),
1565 		.hw.init = &(struct clk_init_data){
1566 			.name = "gcc_blsp1_qup5_spi_apps_clk",
1567 			.parent_names = (const char *[]){
1568 				"blsp1_qup5_spi_apps_clk_src",
1569 			},
1570 			.num_parents = 1,
1571 			.flags = CLK_SET_RATE_PARENT,
1572 			.ops = &clk_branch2_ops,
1573 		},
1574 	},
1575 };
1576 
1577 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1578 	.halt_reg = 0x08c8,
1579 	.clkr = {
1580 		.enable_reg = 0x08c8,
1581 		.enable_mask = BIT(0),
1582 		.hw.init = &(struct clk_init_data){
1583 			.name = "gcc_blsp1_qup6_i2c_apps_clk",
1584 			.parent_names = (const char *[]){
1585 				"blsp1_qup6_i2c_apps_clk_src",
1586 			},
1587 			.num_parents = 1,
1588 			.flags = CLK_SET_RATE_PARENT,
1589 			.ops = &clk_branch2_ops,
1590 		},
1591 	},
1592 };
1593 
1594 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1595 	.halt_reg = 0x08c4,
1596 	.clkr = {
1597 		.enable_reg = 0x08c4,
1598 		.enable_mask = BIT(0),
1599 		.hw.init = &(struct clk_init_data){
1600 			.name = "gcc_blsp1_qup6_spi_apps_clk",
1601 			.parent_names = (const char *[]){
1602 				"blsp1_qup6_spi_apps_clk_src",
1603 			},
1604 			.num_parents = 1,
1605 			.flags = CLK_SET_RATE_PARENT,
1606 			.ops = &clk_branch2_ops,
1607 		},
1608 	},
1609 };
1610 
1611 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1612 	.halt_reg = 0x0684,
1613 	.clkr = {
1614 		.enable_reg = 0x0684,
1615 		.enable_mask = BIT(0),
1616 		.hw.init = &(struct clk_init_data){
1617 			.name = "gcc_blsp1_uart1_apps_clk",
1618 			.parent_names = (const char *[]){
1619 				"blsp1_uart1_apps_clk_src",
1620 			},
1621 			.num_parents = 1,
1622 			.flags = CLK_SET_RATE_PARENT,
1623 			.ops = &clk_branch2_ops,
1624 		},
1625 	},
1626 };
1627 
1628 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1629 	.halt_reg = 0x0704,
1630 	.clkr = {
1631 		.enable_reg = 0x0704,
1632 		.enable_mask = BIT(0),
1633 		.hw.init = &(struct clk_init_data){
1634 			.name = "gcc_blsp1_uart2_apps_clk",
1635 			.parent_names = (const char *[]){
1636 				"blsp1_uart2_apps_clk_src",
1637 			},
1638 			.num_parents = 1,
1639 			.flags = CLK_SET_RATE_PARENT,
1640 			.ops = &clk_branch2_ops,
1641 		},
1642 	},
1643 };
1644 
1645 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1646 	.halt_reg = 0x0784,
1647 	.clkr = {
1648 		.enable_reg = 0x0784,
1649 		.enable_mask = BIT(0),
1650 		.hw.init = &(struct clk_init_data){
1651 			.name = "gcc_blsp1_uart3_apps_clk",
1652 			.parent_names = (const char *[]){
1653 				"blsp1_uart3_apps_clk_src",
1654 			},
1655 			.num_parents = 1,
1656 			.flags = CLK_SET_RATE_PARENT,
1657 			.ops = &clk_branch2_ops,
1658 		},
1659 	},
1660 };
1661 
1662 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1663 	.halt_reg = 0x0804,
1664 	.clkr = {
1665 		.enable_reg = 0x0804,
1666 		.enable_mask = BIT(0),
1667 		.hw.init = &(struct clk_init_data){
1668 			.name = "gcc_blsp1_uart4_apps_clk",
1669 			.parent_names = (const char *[]){
1670 				"blsp1_uart4_apps_clk_src",
1671 			},
1672 			.num_parents = 1,
1673 			.flags = CLK_SET_RATE_PARENT,
1674 			.ops = &clk_branch2_ops,
1675 		},
1676 	},
1677 };
1678 
1679 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1680 	.halt_reg = 0x0884,
1681 	.clkr = {
1682 		.enable_reg = 0x0884,
1683 		.enable_mask = BIT(0),
1684 		.hw.init = &(struct clk_init_data){
1685 			.name = "gcc_blsp1_uart5_apps_clk",
1686 			.parent_names = (const char *[]){
1687 				"blsp1_uart5_apps_clk_src",
1688 			},
1689 			.num_parents = 1,
1690 			.flags = CLK_SET_RATE_PARENT,
1691 			.ops = &clk_branch2_ops,
1692 		},
1693 	},
1694 };
1695 
1696 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1697 	.halt_reg = 0x0904,
1698 	.clkr = {
1699 		.enable_reg = 0x0904,
1700 		.enable_mask = BIT(0),
1701 		.hw.init = &(struct clk_init_data){
1702 			.name = "gcc_blsp1_uart6_apps_clk",
1703 			.parent_names = (const char *[]){
1704 				"blsp1_uart6_apps_clk_src",
1705 			},
1706 			.num_parents = 1,
1707 			.flags = CLK_SET_RATE_PARENT,
1708 			.ops = &clk_branch2_ops,
1709 		},
1710 	},
1711 };
1712 
1713 static struct clk_branch gcc_blsp2_ahb_clk = {
1714 	.halt_reg = 0x0944,
1715 	.halt_check = BRANCH_HALT_VOTED,
1716 	.clkr = {
1717 		.enable_reg = 0x1484,
1718 		.enable_mask = BIT(15),
1719 		.hw.init = &(struct clk_init_data){
1720 			.name = "gcc_blsp2_ahb_clk",
1721 			.parent_names = (const char *[]){
1722 				"periph_noc_clk_src",
1723 			},
1724 			.num_parents = 1,
1725 			.ops = &clk_branch2_ops,
1726 		},
1727 	},
1728 };
1729 
1730 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1731 	.halt_reg = 0x0988,
1732 	.clkr = {
1733 		.enable_reg = 0x0988,
1734 		.enable_mask = BIT(0),
1735 		.hw.init = &(struct clk_init_data){
1736 			.name = "gcc_blsp2_qup1_i2c_apps_clk",
1737 			.parent_names = (const char *[]){
1738 				"blsp2_qup1_i2c_apps_clk_src",
1739 			},
1740 			.num_parents = 1,
1741 			.flags = CLK_SET_RATE_PARENT,
1742 			.ops = &clk_branch2_ops,
1743 		},
1744 	},
1745 };
1746 
1747 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1748 	.halt_reg = 0x0984,
1749 	.clkr = {
1750 		.enable_reg = 0x0984,
1751 		.enable_mask = BIT(0),
1752 		.hw.init = &(struct clk_init_data){
1753 			.name = "gcc_blsp2_qup1_spi_apps_clk",
1754 			.parent_names = (const char *[]){
1755 				"blsp2_qup1_spi_apps_clk_src",
1756 			},
1757 			.num_parents = 1,
1758 			.flags = CLK_SET_RATE_PARENT,
1759 			.ops = &clk_branch2_ops,
1760 		},
1761 	},
1762 };
1763 
1764 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1765 	.halt_reg = 0x0a08,
1766 	.clkr = {
1767 		.enable_reg = 0x0a08,
1768 		.enable_mask = BIT(0),
1769 		.hw.init = &(struct clk_init_data){
1770 			.name = "gcc_blsp2_qup2_i2c_apps_clk",
1771 			.parent_names = (const char *[]){
1772 				"blsp2_qup2_i2c_apps_clk_src",
1773 			},
1774 			.num_parents = 1,
1775 			.flags = CLK_SET_RATE_PARENT,
1776 			.ops = &clk_branch2_ops,
1777 		},
1778 	},
1779 };
1780 
1781 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1782 	.halt_reg = 0x0a04,
1783 	.clkr = {
1784 		.enable_reg = 0x0a04,
1785 		.enable_mask = BIT(0),
1786 		.hw.init = &(struct clk_init_data){
1787 			.name = "gcc_blsp2_qup2_spi_apps_clk",
1788 			.parent_names = (const char *[]){
1789 				"blsp2_qup2_spi_apps_clk_src",
1790 			},
1791 			.num_parents = 1,
1792 			.flags = CLK_SET_RATE_PARENT,
1793 			.ops = &clk_branch2_ops,
1794 		},
1795 	},
1796 };
1797 
1798 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1799 	.halt_reg = 0x0a88,
1800 	.clkr = {
1801 		.enable_reg = 0x0a88,
1802 		.enable_mask = BIT(0),
1803 		.hw.init = &(struct clk_init_data){
1804 			.name = "gcc_blsp2_qup3_i2c_apps_clk",
1805 			.parent_names = (const char *[]){
1806 				"blsp2_qup3_i2c_apps_clk_src",
1807 			},
1808 			.num_parents = 1,
1809 			.flags = CLK_SET_RATE_PARENT,
1810 			.ops = &clk_branch2_ops,
1811 		},
1812 	},
1813 };
1814 
1815 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1816 	.halt_reg = 0x0a84,
1817 	.clkr = {
1818 		.enable_reg = 0x0a84,
1819 		.enable_mask = BIT(0),
1820 		.hw.init = &(struct clk_init_data){
1821 			.name = "gcc_blsp2_qup3_spi_apps_clk",
1822 			.parent_names = (const char *[]){
1823 				"blsp2_qup3_spi_apps_clk_src",
1824 			},
1825 			.num_parents = 1,
1826 			.flags = CLK_SET_RATE_PARENT,
1827 			.ops = &clk_branch2_ops,
1828 		},
1829 	},
1830 };
1831 
1832 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1833 	.halt_reg = 0x0b08,
1834 	.clkr = {
1835 		.enable_reg = 0x0b08,
1836 		.enable_mask = BIT(0),
1837 		.hw.init = &(struct clk_init_data){
1838 			.name = "gcc_blsp2_qup4_i2c_apps_clk",
1839 			.parent_names = (const char *[]){
1840 				"blsp2_qup4_i2c_apps_clk_src",
1841 			},
1842 			.num_parents = 1,
1843 			.flags = CLK_SET_RATE_PARENT,
1844 			.ops = &clk_branch2_ops,
1845 		},
1846 	},
1847 };
1848 
1849 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1850 	.halt_reg = 0x0b04,
1851 	.clkr = {
1852 		.enable_reg = 0x0b04,
1853 		.enable_mask = BIT(0),
1854 		.hw.init = &(struct clk_init_data){
1855 			.name = "gcc_blsp2_qup4_spi_apps_clk",
1856 			.parent_names = (const char *[]){
1857 				"blsp2_qup4_spi_apps_clk_src",
1858 			},
1859 			.num_parents = 1,
1860 			.flags = CLK_SET_RATE_PARENT,
1861 			.ops = &clk_branch2_ops,
1862 		},
1863 	},
1864 };
1865 
1866 static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1867 	.halt_reg = 0x0b88,
1868 	.clkr = {
1869 		.enable_reg = 0x0b88,
1870 		.enable_mask = BIT(0),
1871 		.hw.init = &(struct clk_init_data){
1872 			.name = "gcc_blsp2_qup5_i2c_apps_clk",
1873 			.parent_names = (const char *[]){
1874 				"blsp2_qup5_i2c_apps_clk_src",
1875 			},
1876 			.num_parents = 1,
1877 			.flags = CLK_SET_RATE_PARENT,
1878 			.ops = &clk_branch2_ops,
1879 		},
1880 	},
1881 };
1882 
1883 static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1884 	.halt_reg = 0x0b84,
1885 	.clkr = {
1886 		.enable_reg = 0x0b84,
1887 		.enable_mask = BIT(0),
1888 		.hw.init = &(struct clk_init_data){
1889 			.name = "gcc_blsp2_qup5_spi_apps_clk",
1890 			.parent_names = (const char *[]){
1891 				"blsp2_qup5_spi_apps_clk_src",
1892 			},
1893 			.num_parents = 1,
1894 			.flags = CLK_SET_RATE_PARENT,
1895 			.ops = &clk_branch2_ops,
1896 		},
1897 	},
1898 };
1899 
1900 static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1901 	.halt_reg = 0x0c08,
1902 	.clkr = {
1903 		.enable_reg = 0x0c08,
1904 		.enable_mask = BIT(0),
1905 		.hw.init = &(struct clk_init_data){
1906 			.name = "gcc_blsp2_qup6_i2c_apps_clk",
1907 			.parent_names = (const char *[]){
1908 				"blsp2_qup6_i2c_apps_clk_src",
1909 			},
1910 			.num_parents = 1,
1911 			.flags = CLK_SET_RATE_PARENT,
1912 			.ops = &clk_branch2_ops,
1913 		},
1914 	},
1915 };
1916 
1917 static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1918 	.halt_reg = 0x0c04,
1919 	.clkr = {
1920 		.enable_reg = 0x0c04,
1921 		.enable_mask = BIT(0),
1922 		.hw.init = &(struct clk_init_data){
1923 			.name = "gcc_blsp2_qup6_spi_apps_clk",
1924 			.parent_names = (const char *[]){
1925 				"blsp2_qup6_spi_apps_clk_src",
1926 			},
1927 			.num_parents = 1,
1928 			.flags = CLK_SET_RATE_PARENT,
1929 			.ops = &clk_branch2_ops,
1930 		},
1931 	},
1932 };
1933 
1934 static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1935 	.halt_reg = 0x09c4,
1936 	.clkr = {
1937 		.enable_reg = 0x09c4,
1938 		.enable_mask = BIT(0),
1939 		.hw.init = &(struct clk_init_data){
1940 			.name = "gcc_blsp2_uart1_apps_clk",
1941 			.parent_names = (const char *[]){
1942 				"blsp2_uart1_apps_clk_src",
1943 			},
1944 			.num_parents = 1,
1945 			.flags = CLK_SET_RATE_PARENT,
1946 			.ops = &clk_branch2_ops,
1947 		},
1948 	},
1949 };
1950 
1951 static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1952 	.halt_reg = 0x0a44,
1953 	.clkr = {
1954 		.enable_reg = 0x0a44,
1955 		.enable_mask = BIT(0),
1956 		.hw.init = &(struct clk_init_data){
1957 			.name = "gcc_blsp2_uart2_apps_clk",
1958 			.parent_names = (const char *[]){
1959 				"blsp2_uart2_apps_clk_src",
1960 			},
1961 			.num_parents = 1,
1962 			.flags = CLK_SET_RATE_PARENT,
1963 			.ops = &clk_branch2_ops,
1964 		},
1965 	},
1966 };
1967 
1968 static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1969 	.halt_reg = 0x0ac4,
1970 	.clkr = {
1971 		.enable_reg = 0x0ac4,
1972 		.enable_mask = BIT(0),
1973 		.hw.init = &(struct clk_init_data){
1974 			.name = "gcc_blsp2_uart3_apps_clk",
1975 			.parent_names = (const char *[]){
1976 				"blsp2_uart3_apps_clk_src",
1977 			},
1978 			.num_parents = 1,
1979 			.flags = CLK_SET_RATE_PARENT,
1980 			.ops = &clk_branch2_ops,
1981 		},
1982 	},
1983 };
1984 
1985 static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1986 	.halt_reg = 0x0b44,
1987 	.clkr = {
1988 		.enable_reg = 0x0b44,
1989 		.enable_mask = BIT(0),
1990 		.hw.init = &(struct clk_init_data){
1991 			.name = "gcc_blsp2_uart4_apps_clk",
1992 			.parent_names = (const char *[]){
1993 				"blsp2_uart4_apps_clk_src",
1994 			},
1995 			.num_parents = 1,
1996 			.flags = CLK_SET_RATE_PARENT,
1997 			.ops = &clk_branch2_ops,
1998 		},
1999 	},
2000 };
2001 
2002 static struct clk_branch gcc_blsp2_uart5_apps_clk = {
2003 	.halt_reg = 0x0bc4,
2004 	.clkr = {
2005 		.enable_reg = 0x0bc4,
2006 		.enable_mask = BIT(0),
2007 		.hw.init = &(struct clk_init_data){
2008 			.name = "gcc_blsp2_uart5_apps_clk",
2009 			.parent_names = (const char *[]){
2010 				"blsp2_uart5_apps_clk_src",
2011 			},
2012 			.num_parents = 1,
2013 			.flags = CLK_SET_RATE_PARENT,
2014 			.ops = &clk_branch2_ops,
2015 		},
2016 	},
2017 };
2018 
2019 static struct clk_branch gcc_blsp2_uart6_apps_clk = {
2020 	.halt_reg = 0x0c44,
2021 	.clkr = {
2022 		.enable_reg = 0x0c44,
2023 		.enable_mask = BIT(0),
2024 		.hw.init = &(struct clk_init_data){
2025 			.name = "gcc_blsp2_uart6_apps_clk",
2026 			.parent_names = (const char *[]){
2027 				"blsp2_uart6_apps_clk_src",
2028 			},
2029 			.num_parents = 1,
2030 			.flags = CLK_SET_RATE_PARENT,
2031 			.ops = &clk_branch2_ops,
2032 		},
2033 	},
2034 };
2035 
2036 static struct clk_branch gcc_boot_rom_ahb_clk = {
2037 	.halt_reg = 0x0e04,
2038 	.halt_check = BRANCH_HALT_VOTED,
2039 	.clkr = {
2040 		.enable_reg = 0x1484,
2041 		.enable_mask = BIT(10),
2042 		.hw.init = &(struct clk_init_data){
2043 			.name = "gcc_boot_rom_ahb_clk",
2044 			.parent_names = (const char *[]){
2045 				"config_noc_clk_src",
2046 			},
2047 			.num_parents = 1,
2048 			.ops = &clk_branch2_ops,
2049 		},
2050 	},
2051 };
2052 
2053 static struct clk_branch gcc_ce1_ahb_clk = {
2054 	.halt_reg = 0x104c,
2055 	.halt_check = BRANCH_HALT_VOTED,
2056 	.clkr = {
2057 		.enable_reg = 0x1484,
2058 		.enable_mask = BIT(3),
2059 		.hw.init = &(struct clk_init_data){
2060 			.name = "gcc_ce1_ahb_clk",
2061 			.parent_names = (const char *[]){
2062 				"config_noc_clk_src",
2063 			},
2064 			.num_parents = 1,
2065 			.ops = &clk_branch2_ops,
2066 		},
2067 	},
2068 };
2069 
2070 static struct clk_branch gcc_ce1_axi_clk = {
2071 	.halt_reg = 0x1048,
2072 	.halt_check = BRANCH_HALT_VOTED,
2073 	.clkr = {
2074 		.enable_reg = 0x1484,
2075 		.enable_mask = BIT(4),
2076 		.hw.init = &(struct clk_init_data){
2077 			.name = "gcc_ce1_axi_clk",
2078 			.parent_names = (const char *[]){
2079 				"system_noc_clk_src",
2080 			},
2081 			.num_parents = 1,
2082 			.ops = &clk_branch2_ops,
2083 		},
2084 	},
2085 };
2086 
2087 static struct clk_branch gcc_ce1_clk = {
2088 	.halt_reg = 0x1050,
2089 	.halt_check = BRANCH_HALT_VOTED,
2090 	.clkr = {
2091 		.enable_reg = 0x1484,
2092 		.enable_mask = BIT(5),
2093 		.hw.init = &(struct clk_init_data){
2094 			.name = "gcc_ce1_clk",
2095 			.parent_names = (const char *[]){
2096 				"ce1_clk_src",
2097 			},
2098 			.num_parents = 1,
2099 			.flags = CLK_SET_RATE_PARENT,
2100 			.ops = &clk_branch2_ops,
2101 		},
2102 	},
2103 };
2104 
2105 static struct clk_branch gcc_ce2_ahb_clk = {
2106 	.halt_reg = 0x108c,
2107 	.halt_check = BRANCH_HALT_VOTED,
2108 	.clkr = {
2109 		.enable_reg = 0x1484,
2110 		.enable_mask = BIT(0),
2111 		.hw.init = &(struct clk_init_data){
2112 			.name = "gcc_ce2_ahb_clk",
2113 			.parent_names = (const char *[]){
2114 				"config_noc_clk_src",
2115 			},
2116 			.num_parents = 1,
2117 			.ops = &clk_branch2_ops,
2118 		},
2119 	},
2120 };
2121 
2122 static struct clk_branch gcc_ce2_axi_clk = {
2123 	.halt_reg = 0x1088,
2124 	.halt_check = BRANCH_HALT_VOTED,
2125 	.clkr = {
2126 		.enable_reg = 0x1484,
2127 		.enable_mask = BIT(1),
2128 		.hw.init = &(struct clk_init_data){
2129 			.name = "gcc_ce2_axi_clk",
2130 			.parent_names = (const char *[]){
2131 				"system_noc_clk_src",
2132 			},
2133 			.num_parents = 1,
2134 			.ops = &clk_branch2_ops,
2135 		},
2136 	},
2137 };
2138 
2139 static struct clk_branch gcc_ce2_clk = {
2140 	.halt_reg = 0x1090,
2141 	.halt_check = BRANCH_HALT_VOTED,
2142 	.clkr = {
2143 		.enable_reg = 0x1484,
2144 		.enable_mask = BIT(2),
2145 		.hw.init = &(struct clk_init_data){
2146 			.name = "gcc_ce2_clk",
2147 			.parent_names = (const char *[]){
2148 				"ce2_clk_src",
2149 			},
2150 			.num_parents = 1,
2151 			.flags = CLK_SET_RATE_PARENT,
2152 			.ops = &clk_branch2_ops,
2153 		},
2154 	},
2155 };
2156 
2157 static struct clk_branch gcc_ce3_ahb_clk = {
2158 	.halt_reg = 0x1d0c,
2159 	.halt_check = BRANCH_HALT_VOTED,
2160 	.clkr = {
2161 		.enable_reg = 0x1d0c,
2162 		.enable_mask = BIT(0),
2163 		.hw.init = &(struct clk_init_data){
2164 			.name = "gcc_ce3_ahb_clk",
2165 			.parent_names = (const char *[]){
2166 				"config_noc_clk_src",
2167 			},
2168 			.num_parents = 1,
2169 			.ops = &clk_branch2_ops,
2170 		},
2171 	},
2172 };
2173 
2174 static struct clk_branch gcc_ce3_axi_clk = {
2175 	.halt_reg = 0x1088,
2176 	.halt_check = BRANCH_HALT_VOTED,
2177 	.clkr = {
2178 		.enable_reg = 0x1d08,
2179 		.enable_mask = BIT(0),
2180 		.hw.init = &(struct clk_init_data){
2181 			.name = "gcc_ce3_axi_clk",
2182 			.parent_names = (const char *[]){
2183 				"system_noc_clk_src",
2184 			},
2185 			.num_parents = 1,
2186 			.ops = &clk_branch2_ops,
2187 		},
2188 	},
2189 };
2190 
2191 static struct clk_branch gcc_ce3_clk = {
2192 	.halt_reg = 0x1090,
2193 	.halt_check = BRANCH_HALT_VOTED,
2194 	.clkr = {
2195 		.enable_reg = 0x1d04,
2196 		.enable_mask = BIT(0),
2197 		.hw.init = &(struct clk_init_data){
2198 			.name = "gcc_ce3_clk",
2199 			.parent_names = (const char *[]){
2200 				"ce3_clk_src",
2201 			},
2202 			.num_parents = 1,
2203 			.flags = CLK_SET_RATE_PARENT,
2204 			.ops = &clk_branch2_ops,
2205 		},
2206 	},
2207 };
2208 
2209 static struct clk_branch gcc_gp1_clk = {
2210 	.halt_reg = 0x1900,
2211 	.clkr = {
2212 		.enable_reg = 0x1900,
2213 		.enable_mask = BIT(0),
2214 		.hw.init = &(struct clk_init_data){
2215 			.name = "gcc_gp1_clk",
2216 			.parent_names = (const char *[]){
2217 				"gp1_clk_src",
2218 			},
2219 			.num_parents = 1,
2220 			.flags = CLK_SET_RATE_PARENT,
2221 			.ops = &clk_branch2_ops,
2222 		},
2223 	},
2224 };
2225 
2226 static struct clk_branch gcc_gp2_clk = {
2227 	.halt_reg = 0x1940,
2228 	.clkr = {
2229 		.enable_reg = 0x1940,
2230 		.enable_mask = BIT(0),
2231 		.hw.init = &(struct clk_init_data){
2232 			.name = "gcc_gp2_clk",
2233 			.parent_names = (const char *[]){
2234 				"gp2_clk_src",
2235 			},
2236 			.num_parents = 1,
2237 			.flags = CLK_SET_RATE_PARENT,
2238 			.ops = &clk_branch2_ops,
2239 		},
2240 	},
2241 };
2242 
2243 static struct clk_branch gcc_gp3_clk = {
2244 	.halt_reg = 0x1980,
2245 	.clkr = {
2246 		.enable_reg = 0x1980,
2247 		.enable_mask = BIT(0),
2248 		.hw.init = &(struct clk_init_data){
2249 			.name = "gcc_gp3_clk",
2250 			.parent_names = (const char *[]){
2251 				"gp3_clk_src",
2252 			},
2253 			.num_parents = 1,
2254 			.flags = CLK_SET_RATE_PARENT,
2255 			.ops = &clk_branch2_ops,
2256 		},
2257 	},
2258 };
2259 
2260 static struct clk_branch gcc_ocmem_noc_cfg_ahb_clk = {
2261 	.halt_reg = 0x0248,
2262 	.clkr = {
2263 		.enable_reg = 0x0248,
2264 		.enable_mask = BIT(0),
2265 		.hw.init = &(struct clk_init_data){
2266 			.name = "gcc_ocmem_noc_cfg_ahb_clk",
2267 			.parent_names = (const char *[]){
2268 				"config_noc_clk_src",
2269 			},
2270 			.num_parents = 1,
2271 			.ops = &clk_branch2_ops,
2272 		},
2273 	},
2274 };
2275 
2276 static struct clk_branch gcc_pcie_0_aux_clk = {
2277 	.halt_reg = 0x1b10,
2278 	.clkr = {
2279 		.enable_reg = 0x1b10,
2280 		.enable_mask = BIT(0),
2281 		.hw.init = &(struct clk_init_data){
2282 			.name = "gcc_pcie_0_aux_clk",
2283 			.parent_names = (const char *[]){
2284 				"pcie_0_aux_clk_src",
2285 			},
2286 			.num_parents = 1,
2287 			.flags = CLK_SET_RATE_PARENT,
2288 			.ops = &clk_branch2_ops,
2289 		},
2290 	},
2291 };
2292 
2293 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
2294 	.halt_reg = 0x1b0c,
2295 	.clkr = {
2296 		.enable_reg = 0x1b0c,
2297 		.enable_mask = BIT(0),
2298 		.hw.init = &(struct clk_init_data){
2299 			.name = "gcc_pcie_0_cfg_ahb_clk",
2300 			.parent_names = (const char *[]){
2301 				"config_noc_clk_src",
2302 			},
2303 			.num_parents = 1,
2304 			.flags = CLK_SET_RATE_PARENT,
2305 			.ops = &clk_branch2_ops,
2306 		},
2307 	},
2308 };
2309 
2310 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
2311 	.halt_reg = 0x1b08,
2312 	.clkr = {
2313 		.enable_reg = 0x1b08,
2314 		.enable_mask = BIT(0),
2315 		.hw.init = &(struct clk_init_data){
2316 			.name = "gcc_pcie_0_mstr_axi_clk",
2317 			.parent_names = (const char *[]){
2318 				"config_noc_clk_src",
2319 			},
2320 			.num_parents = 1,
2321 			.flags = CLK_SET_RATE_PARENT,
2322 			.ops = &clk_branch2_ops,
2323 		},
2324 	},
2325 };
2326 
2327 static struct clk_branch gcc_pcie_0_pipe_clk = {
2328 	.halt_reg = 0x1b14,
2329 	.clkr = {
2330 		.enable_reg = 0x1b14,
2331 		.enable_mask = BIT(0),
2332 		.hw.init = &(struct clk_init_data){
2333 			.name = "gcc_pcie_0_pipe_clk",
2334 			.parent_names = (const char *[]){
2335 				"pcie_0_pipe_clk_src",
2336 			},
2337 			.num_parents = 1,
2338 			.flags = CLK_SET_RATE_PARENT,
2339 			.ops = &clk_branch2_ops,
2340 		},
2341 	},
2342 };
2343 
2344 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
2345 	.halt_reg = 0x1b04,
2346 	.clkr = {
2347 		.enable_reg = 0x1b04,
2348 		.enable_mask = BIT(0),
2349 		.hw.init = &(struct clk_init_data){
2350 			.name = "gcc_pcie_0_slv_axi_clk",
2351 			.parent_names = (const char *[]){
2352 				"config_noc_clk_src",
2353 			},
2354 			.num_parents = 1,
2355 			.flags = CLK_SET_RATE_PARENT,
2356 			.ops = &clk_branch2_ops,
2357 		},
2358 	},
2359 };
2360 
2361 static struct clk_branch gcc_pcie_1_aux_clk = {
2362 	.halt_reg = 0x1b90,
2363 	.clkr = {
2364 		.enable_reg = 0x1b90,
2365 		.enable_mask = BIT(0),
2366 		.hw.init = &(struct clk_init_data){
2367 			.name = "gcc_pcie_1_aux_clk",
2368 			.parent_names = (const char *[]){
2369 				"pcie_1_aux_clk_src",
2370 			},
2371 			.num_parents = 1,
2372 			.flags = CLK_SET_RATE_PARENT,
2373 			.ops = &clk_branch2_ops,
2374 		},
2375 	},
2376 };
2377 
2378 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
2379 	.halt_reg = 0x1b8c,
2380 	.clkr = {
2381 		.enable_reg = 0x1b8c,
2382 		.enable_mask = BIT(0),
2383 		.hw.init = &(struct clk_init_data){
2384 			.name = "gcc_pcie_1_cfg_ahb_clk",
2385 			.parent_names = (const char *[]){
2386 				"config_noc_clk_src",
2387 			},
2388 			.num_parents = 1,
2389 			.flags = CLK_SET_RATE_PARENT,
2390 			.ops = &clk_branch2_ops,
2391 		},
2392 	},
2393 };
2394 
2395 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
2396 	.halt_reg = 0x1b88,
2397 	.clkr = {
2398 		.enable_reg = 0x1b88,
2399 		.enable_mask = BIT(0),
2400 		.hw.init = &(struct clk_init_data){
2401 			.name = "gcc_pcie_1_mstr_axi_clk",
2402 			.parent_names = (const char *[]){
2403 				"config_noc_clk_src",
2404 			},
2405 			.num_parents = 1,
2406 			.flags = CLK_SET_RATE_PARENT,
2407 			.ops = &clk_branch2_ops,
2408 		},
2409 	},
2410 };
2411 
2412 static struct clk_branch gcc_pcie_1_pipe_clk = {
2413 	.halt_reg = 0x1b94,
2414 	.clkr = {
2415 		.enable_reg = 0x1b94,
2416 		.enable_mask = BIT(0),
2417 		.hw.init = &(struct clk_init_data){
2418 			.name = "gcc_pcie_1_pipe_clk",
2419 			.parent_names = (const char *[]){
2420 				"pcie_1_pipe_clk_src",
2421 			},
2422 			.num_parents = 1,
2423 			.flags = CLK_SET_RATE_PARENT,
2424 			.ops = &clk_branch2_ops,
2425 		},
2426 	},
2427 };
2428 
2429 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
2430 	.halt_reg = 0x1b84,
2431 	.clkr = {
2432 		.enable_reg = 0x1b84,
2433 		.enable_mask = BIT(0),
2434 		.hw.init = &(struct clk_init_data){
2435 			.name = "gcc_pcie_1_slv_axi_clk",
2436 			.parent_names = (const char *[]){
2437 				"config_noc_clk_src",
2438 			},
2439 			.num_parents = 1,
2440 			.flags = CLK_SET_RATE_PARENT,
2441 			.ops = &clk_branch2_ops,
2442 		},
2443 	},
2444 };
2445 
2446 static struct clk_branch gcc_pdm2_clk = {
2447 	.halt_reg = 0x0ccc,
2448 	.clkr = {
2449 		.enable_reg = 0x0ccc,
2450 		.enable_mask = BIT(0),
2451 		.hw.init = &(struct clk_init_data){
2452 			.name = "gcc_pdm2_clk",
2453 			.parent_names = (const char *[]){
2454 				"pdm2_clk_src",
2455 			},
2456 			.num_parents = 1,
2457 			.flags = CLK_SET_RATE_PARENT,
2458 			.ops = &clk_branch2_ops,
2459 		},
2460 	},
2461 };
2462 
2463 static struct clk_branch gcc_pdm_ahb_clk = {
2464 	.halt_reg = 0x0cc4,
2465 	.clkr = {
2466 		.enable_reg = 0x0cc4,
2467 		.enable_mask = BIT(0),
2468 		.hw.init = &(struct clk_init_data){
2469 			.name = "gcc_pdm_ahb_clk",
2470 			.parent_names = (const char *[]){
2471 				"periph_noc_clk_src",
2472 			},
2473 			.num_parents = 1,
2474 			.ops = &clk_branch2_ops,
2475 		},
2476 	},
2477 };
2478 
2479 static struct clk_branch gcc_periph_noc_usb_hsic_ahb_clk = {
2480 	.halt_reg = 0x01a4,
2481 	.clkr = {
2482 		.enable_reg = 0x01a4,
2483 		.enable_mask = BIT(0),
2484 		.hw.init = &(struct clk_init_data){
2485 			.name = "gcc_periph_noc_usb_hsic_ahb_clk",
2486 			.parent_names = (const char *[]){
2487 				"usb_hsic_ahb_clk_src",
2488 			},
2489 			.num_parents = 1,
2490 			.flags = CLK_SET_RATE_PARENT,
2491 			.ops = &clk_branch2_ops,
2492 		},
2493 	},
2494 };
2495 
2496 static struct clk_branch gcc_prng_ahb_clk = {
2497 	.halt_reg = 0x0d04,
2498 	.halt_check = BRANCH_HALT_VOTED,
2499 	.clkr = {
2500 		.enable_reg = 0x1484,
2501 		.enable_mask = BIT(13),
2502 		.hw.init = &(struct clk_init_data){
2503 			.name = "gcc_prng_ahb_clk",
2504 			.parent_names = (const char *[]){
2505 				"periph_noc_clk_src",
2506 			},
2507 			.num_parents = 1,
2508 			.ops = &clk_branch2_ops,
2509 		},
2510 	},
2511 };
2512 
2513 static struct clk_branch gcc_sata_asic0_clk = {
2514 	.halt_reg = 0x1c54,
2515 	.clkr = {
2516 		.enable_reg = 0x1c54,
2517 		.enable_mask = BIT(0),
2518 		.hw.init = &(struct clk_init_data){
2519 			.name = "gcc_sata_asic0_clk",
2520 			.parent_names = (const char *[]){
2521 				"sata_asic0_clk_src",
2522 			},
2523 			.num_parents = 1,
2524 			.flags = CLK_SET_RATE_PARENT,
2525 			.ops = &clk_branch2_ops,
2526 		},
2527 	},
2528 };
2529 
2530 static struct clk_branch gcc_sata_axi_clk = {
2531 	.halt_reg = 0x1c44,
2532 	.clkr = {
2533 		.enable_reg = 0x1c44,
2534 		.enable_mask = BIT(0),
2535 		.hw.init = &(struct clk_init_data){
2536 			.name = "gcc_sata_axi_clk",
2537 			.parent_names = (const char *[]){
2538 				"config_noc_clk_src",
2539 			},
2540 			.num_parents = 1,
2541 			.flags = CLK_SET_RATE_PARENT,
2542 			.ops = &clk_branch2_ops,
2543 		},
2544 	},
2545 };
2546 
2547 static struct clk_branch gcc_sata_cfg_ahb_clk = {
2548 	.halt_reg = 0x1c48,
2549 	.clkr = {
2550 		.enable_reg = 0x1c48,
2551 		.enable_mask = BIT(0),
2552 		.hw.init = &(struct clk_init_data){
2553 			.name = "gcc_sata_cfg_ahb_clk",
2554 			.parent_names = (const char *[]){
2555 				"config_noc_clk_src",
2556 			},
2557 			.num_parents = 1,
2558 			.flags = CLK_SET_RATE_PARENT,
2559 			.ops = &clk_branch2_ops,
2560 		},
2561 	},
2562 };
2563 
2564 static struct clk_branch gcc_sata_pmalive_clk = {
2565 	.halt_reg = 0x1c50,
2566 	.clkr = {
2567 		.enable_reg = 0x1c50,
2568 		.enable_mask = BIT(0),
2569 		.hw.init = &(struct clk_init_data){
2570 			.name = "gcc_sata_pmalive_clk",
2571 			.parent_names = (const char *[]){
2572 				"sata_pmalive_clk_src",
2573 			},
2574 			.num_parents = 1,
2575 			.flags = CLK_SET_RATE_PARENT,
2576 			.ops = &clk_branch2_ops,
2577 		},
2578 	},
2579 };
2580 
2581 static struct clk_branch gcc_sata_rx_clk = {
2582 	.halt_reg = 0x1c58,
2583 	.clkr = {
2584 		.enable_reg = 0x1c58,
2585 		.enable_mask = BIT(0),
2586 		.hw.init = &(struct clk_init_data){
2587 			.name = "gcc_sata_rx_clk",
2588 			.parent_names = (const char *[]){
2589 				"sata_rx_clk_src",
2590 			},
2591 			.num_parents = 1,
2592 			.flags = CLK_SET_RATE_PARENT,
2593 			.ops = &clk_branch2_ops,
2594 		},
2595 	},
2596 };
2597 
2598 static struct clk_branch gcc_sata_rx_oob_clk = {
2599 	.halt_reg = 0x1c4c,
2600 	.clkr = {
2601 		.enable_reg = 0x1c4c,
2602 		.enable_mask = BIT(0),
2603 		.hw.init = &(struct clk_init_data){
2604 			.name = "gcc_sata_rx_oob_clk",
2605 			.parent_names = (const char *[]){
2606 				"sata_rx_oob_clk_src",
2607 			},
2608 			.num_parents = 1,
2609 			.flags = CLK_SET_RATE_PARENT,
2610 			.ops = &clk_branch2_ops,
2611 		},
2612 	},
2613 };
2614 
2615 static struct clk_branch gcc_sdcc1_ahb_clk = {
2616 	.halt_reg = 0x04c8,
2617 	.clkr = {
2618 		.enable_reg = 0x04c8,
2619 		.enable_mask = BIT(0),
2620 		.hw.init = &(struct clk_init_data){
2621 			.name = "gcc_sdcc1_ahb_clk",
2622 			.parent_names = (const char *[]){
2623 				"periph_noc_clk_src",
2624 			},
2625 			.num_parents = 1,
2626 			.ops = &clk_branch2_ops,
2627 		},
2628 	},
2629 };
2630 
2631 static struct clk_branch gcc_sdcc1_apps_clk = {
2632 	.halt_reg = 0x04c4,
2633 	.clkr = {
2634 		.enable_reg = 0x04c4,
2635 		.enable_mask = BIT(0),
2636 		.hw.init = &(struct clk_init_data){
2637 			.name = "gcc_sdcc1_apps_clk",
2638 			.parent_names = (const char *[]){
2639 				"sdcc1_apps_clk_src",
2640 			},
2641 			.num_parents = 1,
2642 			.flags = CLK_SET_RATE_PARENT,
2643 			.ops = &clk_branch2_ops,
2644 		},
2645 	},
2646 };
2647 
2648 static struct clk_branch gcc_sdcc1_cdccal_ff_clk = {
2649 	.halt_reg = 0x04e8,
2650 	.clkr = {
2651 		.enable_reg = 0x04e8,
2652 		.enable_mask = BIT(0),
2653 		.hw.init = &(struct clk_init_data){
2654 			.name = "gcc_sdcc1_cdccal_ff_clk",
2655 			.parent_names = (const char *[]){
2656 				"xo"
2657 			},
2658 			.num_parents = 1,
2659 			.ops = &clk_branch2_ops,
2660 		},
2661 	},
2662 };
2663 
2664 static struct clk_branch gcc_sdcc1_cdccal_sleep_clk = {
2665 	.halt_reg = 0x04e4,
2666 	.clkr = {
2667 		.enable_reg = 0x04e4,
2668 		.enable_mask = BIT(0),
2669 		.hw.init = &(struct clk_init_data){
2670 			.name = "gcc_sdcc1_cdccal_sleep_clk",
2671 			.parent_names = (const char *[]){
2672 				"sleep_clk_src"
2673 			},
2674 			.num_parents = 1,
2675 			.ops = &clk_branch2_ops,
2676 		},
2677 	},
2678 };
2679 
2680 static struct clk_branch gcc_sdcc2_ahb_clk = {
2681 	.halt_reg = 0x0508,
2682 	.clkr = {
2683 		.enable_reg = 0x0508,
2684 		.enable_mask = BIT(0),
2685 		.hw.init = &(struct clk_init_data){
2686 			.name = "gcc_sdcc2_ahb_clk",
2687 			.parent_names = (const char *[]){
2688 				"periph_noc_clk_src",
2689 			},
2690 			.num_parents = 1,
2691 			.ops = &clk_branch2_ops,
2692 		},
2693 	},
2694 };
2695 
2696 static struct clk_branch gcc_sdcc2_apps_clk = {
2697 	.halt_reg = 0x0504,
2698 	.clkr = {
2699 		.enable_reg = 0x0504,
2700 		.enable_mask = BIT(0),
2701 		.hw.init = &(struct clk_init_data){
2702 			.name = "gcc_sdcc2_apps_clk",
2703 			.parent_names = (const char *[]){
2704 				"sdcc2_apps_clk_src",
2705 			},
2706 			.num_parents = 1,
2707 			.flags = CLK_SET_RATE_PARENT,
2708 			.ops = &clk_branch2_ops,
2709 		},
2710 	},
2711 };
2712 
2713 static struct clk_branch gcc_sdcc3_ahb_clk = {
2714 	.halt_reg = 0x0548,
2715 	.clkr = {
2716 		.enable_reg = 0x0548,
2717 		.enable_mask = BIT(0),
2718 		.hw.init = &(struct clk_init_data){
2719 			.name = "gcc_sdcc3_ahb_clk",
2720 			.parent_names = (const char *[]){
2721 				"periph_noc_clk_src",
2722 			},
2723 			.num_parents = 1,
2724 			.ops = &clk_branch2_ops,
2725 		},
2726 	},
2727 };
2728 
2729 static struct clk_branch gcc_sdcc3_apps_clk = {
2730 	.halt_reg = 0x0544,
2731 	.clkr = {
2732 		.enable_reg = 0x0544,
2733 		.enable_mask = BIT(0),
2734 		.hw.init = &(struct clk_init_data){
2735 			.name = "gcc_sdcc3_apps_clk",
2736 			.parent_names = (const char *[]){
2737 				"sdcc3_apps_clk_src",
2738 			},
2739 			.num_parents = 1,
2740 			.flags = CLK_SET_RATE_PARENT,
2741 			.ops = &clk_branch2_ops,
2742 		},
2743 	},
2744 };
2745 
2746 static struct clk_branch gcc_sdcc4_ahb_clk = {
2747 	.halt_reg = 0x0588,
2748 	.clkr = {
2749 		.enable_reg = 0x0588,
2750 		.enable_mask = BIT(0),
2751 		.hw.init = &(struct clk_init_data){
2752 			.name = "gcc_sdcc4_ahb_clk",
2753 			.parent_names = (const char *[]){
2754 				"periph_noc_clk_src",
2755 			},
2756 			.num_parents = 1,
2757 			.ops = &clk_branch2_ops,
2758 		},
2759 	},
2760 };
2761 
2762 static struct clk_branch gcc_sdcc4_apps_clk = {
2763 	.halt_reg = 0x0584,
2764 	.clkr = {
2765 		.enable_reg = 0x0584,
2766 		.enable_mask = BIT(0),
2767 		.hw.init = &(struct clk_init_data){
2768 			.name = "gcc_sdcc4_apps_clk",
2769 			.parent_names = (const char *[]){
2770 				"sdcc4_apps_clk_src",
2771 			},
2772 			.num_parents = 1,
2773 			.flags = CLK_SET_RATE_PARENT,
2774 			.ops = &clk_branch2_ops,
2775 		},
2776 	},
2777 };
2778 
2779 static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
2780 	.halt_reg = 0x013c,
2781 	.clkr = {
2782 		.enable_reg = 0x013c,
2783 		.enable_mask = BIT(0),
2784 		.hw.init = &(struct clk_init_data){
2785 			.name = "gcc_sys_noc_ufs_axi_clk",
2786 			.parent_names = (const char *[]){
2787 				"ufs_axi_clk_src",
2788 			},
2789 			.num_parents = 1,
2790 			.flags = CLK_SET_RATE_PARENT,
2791 			.ops = &clk_branch2_ops,
2792 		},
2793 	},
2794 };
2795 
2796 static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2797 	.halt_reg = 0x0108,
2798 	.clkr = {
2799 		.enable_reg = 0x0108,
2800 		.enable_mask = BIT(0),
2801 		.hw.init = &(struct clk_init_data){
2802 			.name = "gcc_sys_noc_usb3_axi_clk",
2803 			.parent_names = (const char *[]){
2804 				"usb30_master_clk_src",
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_sys_noc_usb3_sec_axi_clk = {
2814 	.halt_reg = 0x0138,
2815 	.clkr = {
2816 		.enable_reg = 0x0138,
2817 		.enable_mask = BIT(0),
2818 		.hw.init = &(struct clk_init_data){
2819 			.name = "gcc_sys_noc_usb3_sec_axi_clk",
2820 			.parent_names = (const char *[]){
2821 				"usb30_sec_master_clk_src",
2822 			},
2823 			.num_parents = 1,
2824 			.flags = CLK_SET_RATE_PARENT,
2825 			.ops = &clk_branch2_ops,
2826 		},
2827 	},
2828 };
2829 
2830 static struct clk_branch gcc_tsif_ahb_clk = {
2831 	.halt_reg = 0x0d84,
2832 	.clkr = {
2833 		.enable_reg = 0x0d84,
2834 		.enable_mask = BIT(0),
2835 		.hw.init = &(struct clk_init_data){
2836 			.name = "gcc_tsif_ahb_clk",
2837 			.parent_names = (const char *[]){
2838 				"periph_noc_clk_src",
2839 			},
2840 			.num_parents = 1,
2841 			.ops = &clk_branch2_ops,
2842 		},
2843 	},
2844 };
2845 
2846 static struct clk_branch gcc_tsif_inactivity_timers_clk = {
2847 	.halt_reg = 0x0d8c,
2848 	.clkr = {
2849 		.enable_reg = 0x0d8c,
2850 		.enable_mask = BIT(0),
2851 		.hw.init = &(struct clk_init_data){
2852 			.name = "gcc_tsif_inactivity_timers_clk",
2853 			.parent_names = (const char *[]){
2854 				"sleep_clk_src",
2855 			},
2856 			.num_parents = 1,
2857 			.flags = CLK_SET_RATE_PARENT,
2858 			.ops = &clk_branch2_ops,
2859 		},
2860 	},
2861 };
2862 
2863 static struct clk_branch gcc_tsif_ref_clk = {
2864 	.halt_reg = 0x0d88,
2865 	.clkr = {
2866 		.enable_reg = 0x0d88,
2867 		.enable_mask = BIT(0),
2868 		.hw.init = &(struct clk_init_data){
2869 			.name = "gcc_tsif_ref_clk",
2870 			.parent_names = (const char *[]){
2871 				"tsif_ref_clk_src",
2872 			},
2873 			.num_parents = 1,
2874 			.flags = CLK_SET_RATE_PARENT,
2875 			.ops = &clk_branch2_ops,
2876 		},
2877 	},
2878 };
2879 
2880 static struct clk_branch gcc_ufs_ahb_clk = {
2881 	.halt_reg = 0x1d48,
2882 	.clkr = {
2883 		.enable_reg = 0x1d48,
2884 		.enable_mask = BIT(0),
2885 		.hw.init = &(struct clk_init_data){
2886 			.name = "gcc_ufs_ahb_clk",
2887 			.parent_names = (const char *[]){
2888 				"config_noc_clk_src",
2889 			},
2890 			.num_parents = 1,
2891 			.flags = CLK_SET_RATE_PARENT,
2892 			.ops = &clk_branch2_ops,
2893 		},
2894 	},
2895 };
2896 
2897 static struct clk_branch gcc_ufs_axi_clk = {
2898 	.halt_reg = 0x1d44,
2899 	.clkr = {
2900 		.enable_reg = 0x1d44,
2901 		.enable_mask = BIT(0),
2902 		.hw.init = &(struct clk_init_data){
2903 			.name = "gcc_ufs_axi_clk",
2904 			.parent_names = (const char *[]){
2905 				"ufs_axi_clk_src",
2906 			},
2907 			.num_parents = 1,
2908 			.flags = CLK_SET_RATE_PARENT,
2909 			.ops = &clk_branch2_ops,
2910 		},
2911 	},
2912 };
2913 
2914 static struct clk_branch gcc_ufs_rx_cfg_clk = {
2915 	.halt_reg = 0x1d50,
2916 	.clkr = {
2917 		.enable_reg = 0x1d50,
2918 		.enable_mask = BIT(0),
2919 		.hw.init = &(struct clk_init_data){
2920 			.name = "gcc_ufs_rx_cfg_clk",
2921 			.parent_names = (const char *[]){
2922 				"ufs_axi_clk_src",
2923 			},
2924 			.num_parents = 1,
2925 			.flags = CLK_SET_RATE_PARENT,
2926 			.ops = &clk_branch2_ops,
2927 		},
2928 	},
2929 };
2930 
2931 static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
2932 	.halt_reg = 0x1d5c,
2933 	.clkr = {
2934 		.enable_reg = 0x1d5c,
2935 		.enable_mask = BIT(0),
2936 		.hw.init = &(struct clk_init_data){
2937 			.name = "gcc_ufs_rx_symbol_0_clk",
2938 			.parent_names = (const char *[]){
2939 				"ufs_rx_symbol_0_clk_src",
2940 			},
2941 			.num_parents = 1,
2942 			.flags = CLK_SET_RATE_PARENT,
2943 			.ops = &clk_branch2_ops,
2944 		},
2945 	},
2946 };
2947 
2948 static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
2949 	.halt_reg = 0x1d60,
2950 	.clkr = {
2951 		.enable_reg = 0x1d60,
2952 		.enable_mask = BIT(0),
2953 		.hw.init = &(struct clk_init_data){
2954 			.name = "gcc_ufs_rx_symbol_1_clk",
2955 			.parent_names = (const char *[]){
2956 				"ufs_rx_symbol_1_clk_src",
2957 			},
2958 			.num_parents = 1,
2959 			.flags = CLK_SET_RATE_PARENT,
2960 			.ops = &clk_branch2_ops,
2961 		},
2962 	},
2963 };
2964 
2965 static struct clk_branch gcc_ufs_tx_cfg_clk = {
2966 	.halt_reg = 0x1d4c,
2967 	.clkr = {
2968 		.enable_reg = 0x1d4c,
2969 		.enable_mask = BIT(0),
2970 		.hw.init = &(struct clk_init_data){
2971 			.name = "gcc_ufs_tx_cfg_clk",
2972 			.parent_names = (const char *[]){
2973 				"ufs_axi_clk_src",
2974 			},
2975 			.num_parents = 1,
2976 			.flags = CLK_SET_RATE_PARENT,
2977 			.ops = &clk_branch2_ops,
2978 		},
2979 	},
2980 };
2981 
2982 static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
2983 	.halt_reg = 0x1d54,
2984 	.clkr = {
2985 		.enable_reg = 0x1d54,
2986 		.enable_mask = BIT(0),
2987 		.hw.init = &(struct clk_init_data){
2988 			.name = "gcc_ufs_tx_symbol_0_clk",
2989 			.parent_names = (const char *[]){
2990 				"ufs_tx_symbol_0_clk_src",
2991 			},
2992 			.num_parents = 1,
2993 			.flags = CLK_SET_RATE_PARENT,
2994 			.ops = &clk_branch2_ops,
2995 		},
2996 	},
2997 };
2998 
2999 static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
3000 	.halt_reg = 0x1d58,
3001 	.clkr = {
3002 		.enable_reg = 0x1d58,
3003 		.enable_mask = BIT(0),
3004 		.hw.init = &(struct clk_init_data){
3005 			.name = "gcc_ufs_tx_symbol_1_clk",
3006 			.parent_names = (const char *[]){
3007 				"ufs_tx_symbol_1_clk_src",
3008 			},
3009 			.num_parents = 1,
3010 			.flags = CLK_SET_RATE_PARENT,
3011 			.ops = &clk_branch2_ops,
3012 		},
3013 	},
3014 };
3015 
3016 static struct clk_branch gcc_usb2a_phy_sleep_clk = {
3017 	.halt_reg = 0x04ac,
3018 	.clkr = {
3019 		.enable_reg = 0x04ac,
3020 		.enable_mask = BIT(0),
3021 		.hw.init = &(struct clk_init_data){
3022 			.name = "gcc_usb2a_phy_sleep_clk",
3023 			.parent_names = (const char *[]){
3024 				"sleep_clk_src",
3025 			},
3026 			.num_parents = 1,
3027 			.ops = &clk_branch2_ops,
3028 		},
3029 	},
3030 };
3031 
3032 static struct clk_branch gcc_usb2b_phy_sleep_clk = {
3033 	.halt_reg = 0x04b4,
3034 	.clkr = {
3035 		.enable_reg = 0x04b4,
3036 		.enable_mask = BIT(0),
3037 		.hw.init = &(struct clk_init_data){
3038 			.name = "gcc_usb2b_phy_sleep_clk",
3039 			.parent_names = (const char *[]){
3040 				"sleep_clk_src",
3041 			},
3042 			.num_parents = 1,
3043 			.ops = &clk_branch2_ops,
3044 		},
3045 	},
3046 };
3047 
3048 static struct clk_branch gcc_usb30_master_clk = {
3049 	.halt_reg = 0x03c8,
3050 	.clkr = {
3051 		.enable_reg = 0x03c8,
3052 		.enable_mask = BIT(0),
3053 		.hw.init = &(struct clk_init_data){
3054 			.name = "gcc_usb30_master_clk",
3055 			.parent_names = (const char *[]){
3056 				"usb30_master_clk_src",
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_usb30_sec_master_clk = {
3066 	.halt_reg = 0x1bc8,
3067 	.clkr = {
3068 		.enable_reg = 0x1bc8,
3069 		.enable_mask = BIT(0),
3070 		.hw.init = &(struct clk_init_data){
3071 			.name = "gcc_usb30_sec_master_clk",
3072 			.parent_names = (const char *[]){
3073 				"usb30_sec_master_clk_src",
3074 			},
3075 			.num_parents = 1,
3076 			.flags = CLK_SET_RATE_PARENT,
3077 			.ops = &clk_branch2_ops,
3078 		},
3079 	},
3080 };
3081 
3082 static struct clk_branch gcc_usb30_mock_utmi_clk = {
3083 	.halt_reg = 0x03d0,
3084 	.clkr = {
3085 		.enable_reg = 0x03d0,
3086 		.enable_mask = BIT(0),
3087 		.hw.init = &(struct clk_init_data){
3088 			.name = "gcc_usb30_mock_utmi_clk",
3089 			.parent_names = (const char *[]){
3090 				"usb30_mock_utmi_clk_src",
3091 			},
3092 			.num_parents = 1,
3093 			.flags = CLK_SET_RATE_PARENT,
3094 			.ops = &clk_branch2_ops,
3095 		},
3096 	},
3097 };
3098 
3099 static struct clk_branch gcc_usb30_sleep_clk = {
3100 	.halt_reg = 0x03cc,
3101 	.clkr = {
3102 		.enable_reg = 0x03cc,
3103 		.enable_mask = BIT(0),
3104 		.hw.init = &(struct clk_init_data){
3105 			.name = "gcc_usb30_sleep_clk",
3106 			.parent_names = (const char *[]){
3107 				"sleep_clk_src",
3108 			},
3109 			.num_parents = 1,
3110 			.ops = &clk_branch2_ops,
3111 		},
3112 	},
3113 };
3114 
3115 static struct clk_branch gcc_usb_hs_ahb_clk = {
3116 	.halt_reg = 0x0488,
3117 	.clkr = {
3118 		.enable_reg = 0x0488,
3119 		.enable_mask = BIT(0),
3120 		.hw.init = &(struct clk_init_data){
3121 			.name = "gcc_usb_hs_ahb_clk",
3122 			.parent_names = (const char *[]){
3123 				"periph_noc_clk_src",
3124 			},
3125 			.num_parents = 1,
3126 			.ops = &clk_branch2_ops,
3127 		},
3128 	},
3129 };
3130 
3131 static struct clk_branch gcc_usb_hs_inactivity_timers_clk = {
3132 	.halt_reg = 0x048c,
3133 	.clkr = {
3134 		.enable_reg = 0x048c,
3135 		.enable_mask = BIT(0),
3136 		.hw.init = &(struct clk_init_data){
3137 			.name = "gcc_usb_hs_inactivity_timers_clk",
3138 			.parent_names = (const char *[]){
3139 				"sleep_clk_src",
3140 			},
3141 			.num_parents = 1,
3142 			.flags = CLK_SET_RATE_PARENT,
3143 			.ops = &clk_branch2_ops,
3144 		},
3145 	},
3146 };
3147 
3148 static struct clk_branch gcc_usb_hs_system_clk = {
3149 	.halt_reg = 0x0484,
3150 	.clkr = {
3151 		.enable_reg = 0x0484,
3152 		.enable_mask = BIT(0),
3153 		.hw.init = &(struct clk_init_data){
3154 			.name = "gcc_usb_hs_system_clk",
3155 			.parent_names = (const char *[]){
3156 				"usb_hs_system_clk_src",
3157 			},
3158 			.num_parents = 1,
3159 			.flags = CLK_SET_RATE_PARENT,
3160 			.ops = &clk_branch2_ops,
3161 		},
3162 	},
3163 };
3164 
3165 static struct clk_branch gcc_usb_hsic_ahb_clk = {
3166 	.halt_reg = 0x0408,
3167 	.clkr = {
3168 		.enable_reg = 0x0408,
3169 		.enable_mask = BIT(0),
3170 		.hw.init = &(struct clk_init_data){
3171 			.name = "gcc_usb_hsic_ahb_clk",
3172 			.parent_names = (const char *[]){
3173 				"periph_noc_clk_src",
3174 			},
3175 			.num_parents = 1,
3176 			.ops = &clk_branch2_ops,
3177 		},
3178 	},
3179 };
3180 
3181 static struct clk_branch gcc_usb_hsic_clk = {
3182 	.halt_reg = 0x0410,
3183 	.clkr = {
3184 		.enable_reg = 0x0410,
3185 		.enable_mask = BIT(0),
3186 		.hw.init = &(struct clk_init_data){
3187 			.name = "gcc_usb_hsic_clk",
3188 			.parent_names = (const char *[]){
3189 				"usb_hsic_clk_src",
3190 			},
3191 			.num_parents = 1,
3192 			.flags = CLK_SET_RATE_PARENT,
3193 			.ops = &clk_branch2_ops,
3194 		},
3195 	},
3196 };
3197 
3198 static struct clk_branch gcc_usb_hsic_io_cal_clk = {
3199 	.halt_reg = 0x0414,
3200 	.clkr = {
3201 		.enable_reg = 0x0414,
3202 		.enable_mask = BIT(0),
3203 		.hw.init = &(struct clk_init_data){
3204 			.name = "gcc_usb_hsic_io_cal_clk",
3205 			.parent_names = (const char *[]){
3206 				"usb_hsic_io_cal_clk_src",
3207 			},
3208 			.num_parents = 1,
3209 			.flags = CLK_SET_RATE_PARENT,
3210 			.ops = &clk_branch2_ops,
3211 		},
3212 	},
3213 };
3214 
3215 static struct clk_branch gcc_usb_hsic_io_cal_sleep_clk = {
3216 	.halt_reg = 0x0418,
3217 	.clkr = {
3218 		.enable_reg = 0x0418,
3219 		.enable_mask = BIT(0),
3220 		.hw.init = &(struct clk_init_data){
3221 			.name = "gcc_usb_hsic_io_cal_sleep_clk",
3222 			.parent_names = (const char *[]){
3223 				"sleep_clk_src",
3224 			},
3225 			.num_parents = 1,
3226 			.ops = &clk_branch2_ops,
3227 		},
3228 	},
3229 };
3230 
3231 static struct clk_branch gcc_usb_hsic_system_clk = {
3232 	.halt_reg = 0x040c,
3233 	.clkr = {
3234 		.enable_reg = 0x040c,
3235 		.enable_mask = BIT(0),
3236 		.hw.init = &(struct clk_init_data){
3237 			.name = "gcc_usb_hsic_system_clk",
3238 			.parent_names = (const char *[]){
3239 				"usb_hsic_system_clk_src",
3240 			},
3241 			.num_parents = 1,
3242 			.flags = CLK_SET_RATE_PARENT,
3243 			.ops = &clk_branch2_ops,
3244 		},
3245 	},
3246 };
3247 
3248 static struct gdsc usb_hs_hsic_gdsc = {
3249 	.gdscr = 0x404,
3250 	.pd = {
3251 		.name = "usb_hs_hsic",
3252 	},
3253 	.pwrsts = PWRSTS_OFF_ON,
3254 };
3255 
3256 static struct gdsc pcie0_gdsc = {
3257 	.gdscr = 0x1ac4,
3258 	.pd = {
3259 		.name = "pcie0",
3260 	},
3261 	.pwrsts = PWRSTS_OFF_ON,
3262 };
3263 
3264 static struct gdsc pcie1_gdsc = {
3265 	.gdscr = 0x1b44,
3266 	.pd = {
3267 		.name = "pcie1",
3268 	},
3269 	.pwrsts = PWRSTS_OFF_ON,
3270 };
3271 
3272 static struct gdsc usb30_gdsc = {
3273 	.gdscr = 0x1e84,
3274 	.pd = {
3275 		.name = "usb30",
3276 	},
3277 	.pwrsts = PWRSTS_OFF_ON,
3278 };
3279 
3280 static struct clk_regmap *gcc_apq8084_clocks[] = {
3281 	[GPLL0] = &gpll0.clkr,
3282 	[GPLL0_VOTE] = &gpll0_vote,
3283 	[GPLL1] = &gpll1.clkr,
3284 	[GPLL1_VOTE] = &gpll1_vote,
3285 	[GPLL4] = &gpll4.clkr,
3286 	[GPLL4_VOTE] = &gpll4_vote,
3287 	[CONFIG_NOC_CLK_SRC] = &config_noc_clk_src.clkr,
3288 	[PERIPH_NOC_CLK_SRC] = &periph_noc_clk_src.clkr,
3289 	[SYSTEM_NOC_CLK_SRC] = &system_noc_clk_src.clkr,
3290 	[UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
3291 	[USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
3292 	[USB30_SEC_MASTER_CLK_SRC] = &usb30_sec_master_clk_src.clkr,
3293 	[USB_HSIC_AHB_CLK_SRC] = &usb_hsic_ahb_clk_src.clkr,
3294 	[BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
3295 	[BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
3296 	[BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
3297 	[BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
3298 	[BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
3299 	[BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
3300 	[BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
3301 	[BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
3302 	[BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
3303 	[BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
3304 	[BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
3305 	[BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
3306 	[BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
3307 	[BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
3308 	[BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
3309 	[BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
3310 	[BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
3311 	[BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
3312 	[BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
3313 	[BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
3314 	[BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
3315 	[BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
3316 	[BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
3317 	[BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
3318 	[BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
3319 	[BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
3320 	[BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
3321 	[BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
3322 	[BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
3323 	[BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
3324 	[BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
3325 	[BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
3326 	[BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
3327 	[BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
3328 	[BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
3329 	[BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
3330 	[CE1_CLK_SRC] = &ce1_clk_src.clkr,
3331 	[CE2_CLK_SRC] = &ce2_clk_src.clkr,
3332 	[CE3_CLK_SRC] = &ce3_clk_src.clkr,
3333 	[GP1_CLK_SRC] = &gp1_clk_src.clkr,
3334 	[GP2_CLK_SRC] = &gp2_clk_src.clkr,
3335 	[GP3_CLK_SRC] = &gp3_clk_src.clkr,
3336 	[PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
3337 	[PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
3338 	[PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
3339 	[PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
3340 	[PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
3341 	[SATA_ASIC0_CLK_SRC] = &sata_asic0_clk_src.clkr,
3342 	[SATA_PMALIVE_CLK_SRC] = &sata_pmalive_clk_src.clkr,
3343 	[SATA_RX_CLK_SRC] = &sata_rx_clk_src.clkr,
3344 	[SATA_RX_OOB_CLK_SRC] = &sata_rx_oob_clk_src.clkr,
3345 	[SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
3346 	[SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
3347 	[SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
3348 	[SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
3349 	[TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
3350 	[USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
3351 	[USB30_SEC_MOCK_UTMI_CLK_SRC] = &usb30_sec_mock_utmi_clk_src.clkr,
3352 	[USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
3353 	[USB_HSIC_CLK_SRC] = &usb_hsic_clk_src.clkr,
3354 	[USB_HSIC_IO_CAL_CLK_SRC] = &usb_hsic_io_cal_clk_src.clkr,
3355 	[USB_HSIC_MOCK_UTMI_CLK_SRC] = &usb_hsic_mock_utmi_clk_src.clkr,
3356 	[USB_HSIC_SYSTEM_CLK_SRC] = &usb_hsic_system_clk_src.clkr,
3357 	[GCC_BAM_DMA_AHB_CLK] = &gcc_bam_dma_ahb_clk.clkr,
3358 	[GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
3359 	[GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
3360 	[GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
3361 	[GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
3362 	[GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
3363 	[GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
3364 	[GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
3365 	[GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
3366 	[GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
3367 	[GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
3368 	[GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
3369 	[GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
3370 	[GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
3371 	[GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
3372 	[GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
3373 	[GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
3374 	[GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
3375 	[GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
3376 	[GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
3377 	[GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
3378 	[GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
3379 	[GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
3380 	[GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
3381 	[GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
3382 	[GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
3383 	[GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
3384 	[GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
3385 	[GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
3386 	[GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
3387 	[GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
3388 	[GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
3389 	[GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
3390 	[GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
3391 	[GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
3392 	[GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
3393 	[GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
3394 	[GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
3395 	[GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
3396 	[GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
3397 	[GCC_CE1_AHB_CLK] = &gcc_ce1_ahb_clk.clkr,
3398 	[GCC_CE1_AXI_CLK] = &gcc_ce1_axi_clk.clkr,
3399 	[GCC_CE1_CLK] = &gcc_ce1_clk.clkr,
3400 	[GCC_CE2_AHB_CLK] = &gcc_ce2_ahb_clk.clkr,
3401 	[GCC_CE2_AXI_CLK] = &gcc_ce2_axi_clk.clkr,
3402 	[GCC_CE2_CLK] = &gcc_ce2_clk.clkr,
3403 	[GCC_CE3_AHB_CLK] = &gcc_ce3_ahb_clk.clkr,
3404 	[GCC_CE3_AXI_CLK] = &gcc_ce3_axi_clk.clkr,
3405 	[GCC_CE3_CLK] = &gcc_ce3_clk.clkr,
3406 	[GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
3407 	[GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
3408 	[GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
3409 	[GCC_OCMEM_NOC_CFG_AHB_CLK] = &gcc_ocmem_noc_cfg_ahb_clk.clkr,
3410 	[GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
3411 	[GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
3412 	[GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
3413 	[GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
3414 	[GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
3415 	[GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
3416 	[GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
3417 	[GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
3418 	[GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
3419 	[GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
3420 	[GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
3421 	[GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
3422 	[GCC_PERIPH_NOC_USB_HSIC_AHB_CLK] = &gcc_periph_noc_usb_hsic_ahb_clk.clkr,
3423 	[GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
3424 	[GCC_SATA_ASIC0_CLK] = &gcc_sata_asic0_clk.clkr,
3425 	[GCC_SATA_AXI_CLK] = &gcc_sata_axi_clk.clkr,
3426 	[GCC_SATA_CFG_AHB_CLK] = &gcc_sata_cfg_ahb_clk.clkr,
3427 	[GCC_SATA_PMALIVE_CLK] = &gcc_sata_pmalive_clk.clkr,
3428 	[GCC_SATA_RX_CLK] = &gcc_sata_rx_clk.clkr,
3429 	[GCC_SATA_RX_OOB_CLK] = &gcc_sata_rx_oob_clk.clkr,
3430 	[GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
3431 	[GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
3432 	[GCC_SDCC1_CDCCAL_FF_CLK] = &gcc_sdcc1_cdccal_ff_clk.clkr,
3433 	[GCC_SDCC1_CDCCAL_SLEEP_CLK] = &gcc_sdcc1_cdccal_sleep_clk.clkr,
3434 	[GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
3435 	[GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
3436 	[GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
3437 	[GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
3438 	[GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
3439 	[GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
3440 	[GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
3441 	[GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
3442 	[GCC_SYS_NOC_USB3_SEC_AXI_CLK] = &gcc_sys_noc_usb3_sec_axi_clk.clkr,
3443 	[GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
3444 	[GCC_TSIF_INACTIVITY_TIMERS_CLK] = &gcc_tsif_inactivity_timers_clk.clkr,
3445 	[GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
3446 	[GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
3447 	[GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
3448 	[GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
3449 	[GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
3450 	[GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
3451 	[GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
3452 	[GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
3453 	[GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
3454 	[GCC_USB2A_PHY_SLEEP_CLK] = &gcc_usb2a_phy_sleep_clk.clkr,
3455 	[GCC_USB2B_PHY_SLEEP_CLK] = &gcc_usb2b_phy_sleep_clk.clkr,
3456 	[GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
3457 	[GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
3458 	[GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
3459 	[GCC_USB30_SEC_MASTER_CLK] = &gcc_usb30_sec_master_clk.clkr,
3460 	[GCC_USB30_SEC_MOCK_UTMI_CLK] = &gcc_usb30_sec_mock_utmi_clk.clkr,
3461 	[GCC_USB30_SEC_SLEEP_CLK] = &gcc_usb30_sec_sleep_clk.clkr,
3462 	[GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
3463 	[GCC_USB_HS_INACTIVITY_TIMERS_CLK] = &gcc_usb_hs_inactivity_timers_clk.clkr,
3464 	[GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
3465 	[GCC_USB_HSIC_AHB_CLK] = &gcc_usb_hsic_ahb_clk.clkr,
3466 	[GCC_USB_HSIC_CLK] = &gcc_usb_hsic_clk.clkr,
3467 	[GCC_USB_HSIC_IO_CAL_CLK] = &gcc_usb_hsic_io_cal_clk.clkr,
3468 	[GCC_USB_HSIC_IO_CAL_SLEEP_CLK] = &gcc_usb_hsic_io_cal_sleep_clk.clkr,
3469 	[GCC_USB_HSIC_MOCK_UTMI_CLK] = &gcc_usb_hsic_mock_utmi_clk.clkr,
3470 	[GCC_USB_HSIC_SYSTEM_CLK] = &gcc_usb_hsic_system_clk.clkr,
3471 };
3472 
3473 static struct gdsc *gcc_apq8084_gdscs[] = {
3474 	[USB_HS_HSIC_GDSC] = &usb_hs_hsic_gdsc,
3475 	[PCIE0_GDSC] = &pcie0_gdsc,
3476 	[PCIE1_GDSC] = &pcie1_gdsc,
3477 	[USB30_GDSC] = &usb30_gdsc,
3478 };
3479 
3480 static const struct qcom_reset_map gcc_apq8084_resets[] = {
3481 	[GCC_SYSTEM_NOC_BCR] = { 0x0100 },
3482 	[GCC_CONFIG_NOC_BCR] = { 0x0140 },
3483 	[GCC_PERIPH_NOC_BCR] = { 0x0180 },
3484 	[GCC_IMEM_BCR] = { 0x0200 },
3485 	[GCC_MMSS_BCR] = { 0x0240 },
3486 	[GCC_QDSS_BCR] = { 0x0300 },
3487 	[GCC_USB_30_BCR] = { 0x03c0 },
3488 	[GCC_USB3_PHY_BCR] = { 0x03fc },
3489 	[GCC_USB_HS_HSIC_BCR] = { 0x0400 },
3490 	[GCC_USB_HS_BCR] = { 0x0480 },
3491 	[GCC_USB2A_PHY_BCR] = { 0x04a8 },
3492 	[GCC_USB2B_PHY_BCR] = { 0x04b0 },
3493 	[GCC_SDCC1_BCR] = { 0x04c0 },
3494 	[GCC_SDCC2_BCR] = { 0x0500 },
3495 	[GCC_SDCC3_BCR] = { 0x0540 },
3496 	[GCC_SDCC4_BCR] = { 0x0580 },
3497 	[GCC_BLSP1_BCR] = { 0x05c0 },
3498 	[GCC_BLSP1_QUP1_BCR] = { 0x0640 },
3499 	[GCC_BLSP1_UART1_BCR] = { 0x0680 },
3500 	[GCC_BLSP1_QUP2_BCR] = { 0x06c0 },
3501 	[GCC_BLSP1_UART2_BCR] = { 0x0700 },
3502 	[GCC_BLSP1_QUP3_BCR] = { 0x0740 },
3503 	[GCC_BLSP1_UART3_BCR] = { 0x0780 },
3504 	[GCC_BLSP1_QUP4_BCR] = { 0x07c0 },
3505 	[GCC_BLSP1_UART4_BCR] = { 0x0800 },
3506 	[GCC_BLSP1_QUP5_BCR] = { 0x0840 },
3507 	[GCC_BLSP1_UART5_BCR] = { 0x0880 },
3508 	[GCC_BLSP1_QUP6_BCR] = { 0x08c0 },
3509 	[GCC_BLSP1_UART6_BCR] = { 0x0900 },
3510 	[GCC_BLSP2_BCR] = { 0x0940 },
3511 	[GCC_BLSP2_QUP1_BCR] = { 0x0980 },
3512 	[GCC_BLSP2_UART1_BCR] = { 0x09c0 },
3513 	[GCC_BLSP2_QUP2_BCR] = { 0x0a00 },
3514 	[GCC_BLSP2_UART2_BCR] = { 0x0a40 },
3515 	[GCC_BLSP2_QUP3_BCR] = { 0x0a80 },
3516 	[GCC_BLSP2_UART3_BCR] = { 0x0ac0 },
3517 	[GCC_BLSP2_QUP4_BCR] = { 0x0b00 },
3518 	[GCC_BLSP2_UART4_BCR] = { 0x0b40 },
3519 	[GCC_BLSP2_QUP5_BCR] = { 0x0b80 },
3520 	[GCC_BLSP2_UART5_BCR] = { 0x0bc0 },
3521 	[GCC_BLSP2_QUP6_BCR] = { 0x0c00 },
3522 	[GCC_BLSP2_UART6_BCR] = { 0x0c40 },
3523 	[GCC_PDM_BCR] = { 0x0cc0 },
3524 	[GCC_PRNG_BCR] = { 0x0d00 },
3525 	[GCC_BAM_DMA_BCR] = { 0x0d40 },
3526 	[GCC_TSIF_BCR] = { 0x0d80 },
3527 	[GCC_TCSR_BCR] = { 0x0dc0 },
3528 	[GCC_BOOT_ROM_BCR] = { 0x0e00 },
3529 	[GCC_MSG_RAM_BCR] = { 0x0e40 },
3530 	[GCC_TLMM_BCR] = { 0x0e80 },
3531 	[GCC_MPM_BCR] = { 0x0ec0 },
3532 	[GCC_MPM_AHB_RESET] = { 0x0ec4, 1 },
3533 	[GCC_MPM_NON_AHB_RESET] = { 0x0ec4, 2 },
3534 	[GCC_SEC_CTRL_BCR] = { 0x0f40 },
3535 	[GCC_SPMI_BCR] = { 0x0fc0 },
3536 	[GCC_SPDM_BCR] = { 0x1000 },
3537 	[GCC_CE1_BCR] = { 0x1040 },
3538 	[GCC_CE2_BCR] = { 0x1080 },
3539 	[GCC_BIMC_BCR] = { 0x1100 },
3540 	[GCC_SNOC_BUS_TIMEOUT0_BCR] = { 0x1240 },
3541 	[GCC_SNOC_BUS_TIMEOUT2_BCR] = { 0x1248 },
3542 	[GCC_PNOC_BUS_TIMEOUT0_BCR] = { 0x1280 },
3543 	[GCC_PNOC_BUS_TIMEOUT1_BCR] = { 0x1288 },
3544 	[GCC_PNOC_BUS_TIMEOUT2_BCR] = { 0x1290 },
3545 	[GCC_PNOC_BUS_TIMEOUT3_BCR] = { 0x1298 },
3546 	[GCC_PNOC_BUS_TIMEOUT4_BCR] = { 0x12a0 },
3547 	[GCC_CNOC_BUS_TIMEOUT0_BCR] = { 0x12c0 },
3548 	[GCC_CNOC_BUS_TIMEOUT1_BCR] = { 0x12c8 },
3549 	[GCC_CNOC_BUS_TIMEOUT2_BCR] = { 0x12d0 },
3550 	[GCC_CNOC_BUS_TIMEOUT3_BCR] = { 0x12d8 },
3551 	[GCC_CNOC_BUS_TIMEOUT4_BCR] = { 0x12e0 },
3552 	[GCC_CNOC_BUS_TIMEOUT5_BCR] = { 0x12e8 },
3553 	[GCC_CNOC_BUS_TIMEOUT6_BCR] = { 0x12f0 },
3554 	[GCC_DEHR_BCR] = { 0x1300 },
3555 	[GCC_RBCPR_BCR] = { 0x1380 },
3556 	[GCC_MSS_RESTART] = { 0x1680 },
3557 	[GCC_LPASS_RESTART] = { 0x16c0 },
3558 	[GCC_WCSS_RESTART] = { 0x1700 },
3559 	[GCC_VENUS_RESTART] = { 0x1740 },
3560 	[GCC_COPSS_SMMU_BCR] = { 0x1a40 },
3561 	[GCC_SPSS_BCR] = { 0x1a80 },
3562 	[GCC_PCIE_0_BCR] = { 0x1ac0 },
3563 	[GCC_PCIE_0_PHY_BCR] = { 0x1b00 },
3564 	[GCC_PCIE_1_BCR] = { 0x1b40 },
3565 	[GCC_PCIE_1_PHY_BCR] = { 0x1b80 },
3566 	[GCC_USB_30_SEC_BCR] = { 0x1bc0 },
3567 	[GCC_USB3_SEC_PHY_BCR] = { 0x1bfc },
3568 	[GCC_SATA_BCR] = { 0x1c40 },
3569 	[GCC_CE3_BCR] = { 0x1d00 },
3570 	[GCC_UFS_BCR] = { 0x1d40 },
3571 	[GCC_USB30_PHY_COM_BCR] = { 0x1e80 },
3572 };
3573 
3574 static const struct regmap_config gcc_apq8084_regmap_config = {
3575 	.reg_bits	= 32,
3576 	.reg_stride	= 4,
3577 	.val_bits	= 32,
3578 	.max_register	= 0x1fc0,
3579 	.fast_io	= true,
3580 };
3581 
3582 static const struct qcom_cc_desc gcc_apq8084_desc = {
3583 	.config = &gcc_apq8084_regmap_config,
3584 	.clks = gcc_apq8084_clocks,
3585 	.num_clks = ARRAY_SIZE(gcc_apq8084_clocks),
3586 	.resets = gcc_apq8084_resets,
3587 	.num_resets = ARRAY_SIZE(gcc_apq8084_resets),
3588 	.gdscs = gcc_apq8084_gdscs,
3589 	.num_gdscs = ARRAY_SIZE(gcc_apq8084_gdscs),
3590 };
3591 
3592 static const struct of_device_id gcc_apq8084_match_table[] = {
3593 	{ .compatible = "qcom,gcc-apq8084" },
3594 	{ }
3595 };
3596 MODULE_DEVICE_TABLE(of, gcc_apq8084_match_table);
3597 
3598 static int gcc_apq8084_probe(struct platform_device *pdev)
3599 {
3600 	int ret;
3601 	struct device *dev = &pdev->dev;
3602 
3603 	ret = qcom_cc_register_board_clk(dev, "xo_board", "xo", 19200000);
3604 	if (ret)
3605 		return ret;
3606 
3607 	ret = qcom_cc_register_sleep_clk(dev);
3608 	if (ret)
3609 		return ret;
3610 
3611 	return qcom_cc_probe(pdev, &gcc_apq8084_desc);
3612 }
3613 
3614 static struct platform_driver gcc_apq8084_driver = {
3615 	.probe		= gcc_apq8084_probe,
3616 	.driver		= {
3617 		.name	= "gcc-apq8084",
3618 		.of_match_table = gcc_apq8084_match_table,
3619 	},
3620 };
3621 
3622 static int __init gcc_apq8084_init(void)
3623 {
3624 	return platform_driver_register(&gcc_apq8084_driver);
3625 }
3626 core_initcall(gcc_apq8084_init);
3627 
3628 static void __exit gcc_apq8084_exit(void)
3629 {
3630 	platform_driver_unregister(&gcc_apq8084_driver);
3631 }
3632 module_exit(gcc_apq8084_exit);
3633 
3634 MODULE_DESCRIPTION("QCOM GCC APQ8084 Driver");
3635 MODULE_LICENSE("GPL v2");
3636 MODULE_ALIAS("platform:gcc-apq8084");
3637