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