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