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