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