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