Merge tag 'selinux-pr-20181015' of git://git.kernel.org/pub/scm/linux/kernel/git...
[platform/kernel/linux-starfive.git] / drivers / clk / qcom / gcc-msm8994.c
1 /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
2  *
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License version 2 and
5  * only version 2 as published by the Free Software Foundation.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  */
12
13 #include <linux/kernel.h>
14 #include <linux/init.h>
15 #include <linux/err.h>
16 #include <linux/ctype.h>
17 #include <linux/io.h>
18 #include <linux/of.h>
19 #include <linux/platform_device.h>
20 #include <linux/module.h>
21 #include <linux/regmap.h>
22
23 #include <dt-bindings/clock/qcom,gcc-msm8994.h>
24
25 #include "common.h"
26 #include "clk-regmap.h"
27 #include "clk-alpha-pll.h"
28 #include "clk-rcg.h"
29 #include "clk-branch.h"
30 #include "reset.h"
31
32 enum {
33         P_XO,
34         P_GPLL0,
35         P_GPLL4,
36 };
37
38 static const struct parent_map gcc_xo_gpll0_map[] = {
39         { P_XO, 0 },
40         { P_GPLL0, 1 },
41 };
42
43 static const char * const gcc_xo_gpll0[] = {
44         "xo",
45         "gpll0",
46 };
47
48 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
49         { P_XO, 0 },
50         { P_GPLL0, 1 },
51         { P_GPLL4, 5 },
52 };
53
54 static const char * const gcc_xo_gpll0_gpll4[] = {
55         "xo",
56         "gpll0",
57         "gpll4",
58 };
59
60 static struct clk_fixed_factor xo = {
61         .mult = 1,
62         .div = 1,
63         .hw.init = &(struct clk_init_data)
64         {
65                 .name = "xo",
66                 .parent_names = (const char *[]) { "xo_board" },
67                 .num_parents = 1,
68                 .ops = &clk_fixed_factor_ops,
69         },
70 };
71
72 static struct clk_alpha_pll gpll0_early = {
73         .offset = 0x00000,
74         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
75         .clkr = {
76                 .enable_reg = 0x1480,
77                 .enable_mask = BIT(0),
78                 .hw.init = &(struct clk_init_data)
79                 {
80                         .name = "gpll0_early",
81                         .parent_names = (const char *[]) { "xo" },
82                         .num_parents = 1,
83                         .ops = &clk_alpha_pll_ops,
84                 },
85         },
86 };
87
88 static struct clk_alpha_pll_postdiv gpll0 = {
89         .offset = 0x00000,
90         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
91         .clkr.hw.init = &(struct clk_init_data)
92         {
93                 .name = "gpll0",
94                 .parent_names = (const char *[]) { "gpll0_early" },
95                 .num_parents = 1,
96                 .ops = &clk_alpha_pll_postdiv_ops,
97         },
98 };
99
100 static struct clk_alpha_pll gpll4_early = {
101         .offset = 0x1dc0,
102         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
103         .clkr = {
104                 .enable_reg = 0x1480,
105                 .enable_mask = BIT(4),
106                 .hw.init = &(struct clk_init_data)
107                 {
108                         .name = "gpll4_early",
109                         .parent_names = (const char *[]) { "xo" },
110                         .num_parents = 1,
111                         .ops = &clk_alpha_pll_ops,
112                 },
113         },
114 };
115
116 static struct clk_alpha_pll_postdiv gpll4 = {
117         .offset = 0x1dc0,
118         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
119         .clkr.hw.init = &(struct clk_init_data)
120         {
121                 .name = "gpll4",
122                 .parent_names = (const char *[]) { "gpll4_early" },
123                 .num_parents = 1,
124                 .ops = &clk_alpha_pll_postdiv_ops,
125         },
126 };
127
128 static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
129         F(50000000, P_GPLL0, 12, 0, 0),
130         F(100000000, P_GPLL0, 6, 0, 0),
131         F(150000000, P_GPLL0, 4, 0, 0),
132         F(171430000, P_GPLL0, 3.5, 0, 0),
133         F(200000000, P_GPLL0, 3, 0, 0),
134         F(240000000, P_GPLL0, 2.5, 0, 0),
135         { }
136 };
137
138 static struct clk_rcg2 ufs_axi_clk_src = {
139         .cmd_rcgr = 0x1d68,
140         .mnd_width = 8,
141         .hid_width = 5,
142         .parent_map = gcc_xo_gpll0_map,
143         .freq_tbl = ftbl_ufs_axi_clk_src,
144         .clkr.hw.init = &(struct clk_init_data)
145         {
146                 .name = "ufs_axi_clk_src",
147                 .parent_names = gcc_xo_gpll0,
148                 .num_parents = 2,
149                 .ops = &clk_rcg2_ops,
150         },
151 };
152
153 static struct freq_tbl ftbl_usb30_master_clk_src[] = {
154         F(19200000, P_XO, 1, 0, 0),
155         F(125000000, P_GPLL0, 1, 5, 24),
156         { }
157 };
158
159 static struct clk_rcg2 usb30_master_clk_src = {
160         .cmd_rcgr = 0x03d4,
161         .mnd_width = 8,
162         .hid_width = 5,
163         .parent_map = gcc_xo_gpll0_map,
164         .freq_tbl = ftbl_usb30_master_clk_src,
165         .clkr.hw.init = &(struct clk_init_data)
166         {
167                 .name = "usb30_master_clk_src",
168                 .parent_names = gcc_xo_gpll0,
169                 .num_parents = 2,
170                 .ops = &clk_rcg2_ops,
171         },
172 };
173
174 static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
175         F(19200000, P_XO, 1, 0, 0),
176         F(50000000, P_GPLL0, 12, 0, 0),
177         { }
178 };
179
180 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
181         .cmd_rcgr = 0x0660,
182         .hid_width = 5,
183         .parent_map = gcc_xo_gpll0_map,
184         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
185         .clkr.hw.init = &(struct clk_init_data)
186         {
187                 .name = "blsp1_qup1_i2c_apps_clk_src",
188                 .parent_names = gcc_xo_gpll0,
189                 .num_parents = 2,
190                 .ops = &clk_rcg2_ops,
191         },
192 };
193
194 static struct freq_tbl ftbl_blspqup_spi_apps_clk_src[] = {
195         F(960000, P_XO, 10, 1, 2),
196         F(4800000, P_XO, 4, 0, 0),
197         F(9600000, P_XO, 2, 0, 0),
198         F(15000000, P_GPLL0, 10, 1, 4),
199         F(19200000, P_XO, 1, 0, 0),
200         F(24000000, P_GPLL0, 12.5, 1, 2),
201         F(25000000, P_GPLL0, 12, 1, 2),
202         F(48000000, P_GPLL0, 12.5, 0, 0),
203         F(50000000, P_GPLL0, 12, 0, 0),
204         { }
205 };
206
207 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
208         .cmd_rcgr = 0x064c,
209         .mnd_width = 8,
210         .hid_width = 5,
211         .parent_map = gcc_xo_gpll0_map,
212         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
213         .clkr.hw.init = &(struct clk_init_data)
214         {
215                 .name = "blsp1_qup1_spi_apps_clk_src",
216                 .parent_names = gcc_xo_gpll0,
217                 .num_parents = 2,
218                 .ops = &clk_rcg2_ops,
219         },
220 };
221
222 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
223         .cmd_rcgr = 0x06e0,
224         .hid_width = 5,
225         .parent_map = gcc_xo_gpll0_map,
226         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
227         .clkr.hw.init = &(struct clk_init_data)
228         {
229                 .name = "blsp1_qup2_i2c_apps_clk_src",
230                 .parent_names = gcc_xo_gpll0,
231                 .num_parents = 2,
232                 .ops = &clk_rcg2_ops,
233         },
234 };
235
236 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
237         .cmd_rcgr = 0x06cc,
238         .mnd_width = 8,
239         .hid_width = 5,
240         .parent_map = gcc_xo_gpll0_map,
241         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
242         .clkr.hw.init = &(struct clk_init_data)
243         {
244                 .name = "blsp1_qup2_spi_apps_clk_src",
245                 .parent_names = gcc_xo_gpll0,
246                 .num_parents = 2,
247                 .ops = &clk_rcg2_ops,
248         },
249 };
250
251 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
252         .cmd_rcgr = 0x0760,
253         .hid_width = 5,
254         .parent_map = gcc_xo_gpll0_map,
255         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
256         .clkr.hw.init = &(struct clk_init_data)
257         {
258                 .name = "blsp1_qup3_i2c_apps_clk_src",
259                 .parent_names = gcc_xo_gpll0,
260                 .num_parents = 2,
261                 .ops = &clk_rcg2_ops,
262         },
263 };
264
265 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
266         .cmd_rcgr = 0x074c,
267         .mnd_width = 8,
268         .hid_width = 5,
269         .parent_map = gcc_xo_gpll0_map,
270         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
271         .clkr.hw.init = &(struct clk_init_data)
272         {
273                 .name = "blsp1_qup3_spi_apps_clk_src",
274                 .parent_names = gcc_xo_gpll0,
275                 .num_parents = 2,
276                 .ops = &clk_rcg2_ops,
277         },
278 };
279
280 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
281         .cmd_rcgr = 0x07e0,
282         .hid_width = 5,
283         .parent_map = gcc_xo_gpll0_map,
284         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
285         .clkr.hw.init = &(struct clk_init_data)
286         {
287                 .name = "blsp1_qup4_i2c_apps_clk_src",
288                 .parent_names = gcc_xo_gpll0,
289                 .num_parents = 2,
290                 .ops = &clk_rcg2_ops,
291         },
292 };
293
294 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
295         .cmd_rcgr = 0x07cc,
296         .mnd_width = 8,
297         .hid_width = 5,
298         .parent_map = gcc_xo_gpll0_map,
299         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
300         .clkr.hw.init = &(struct clk_init_data)
301         {
302                 .name = "blsp1_qup4_spi_apps_clk_src",
303                 .parent_names = gcc_xo_gpll0,
304                 .num_parents = 2,
305                 .ops = &clk_rcg2_ops,
306         },
307 };
308
309 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
310         .cmd_rcgr = 0x0860,
311         .hid_width = 5,
312         .parent_map = gcc_xo_gpll0_map,
313         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
314         .clkr.hw.init = &(struct clk_init_data)
315         {
316                 .name = "blsp1_qup5_i2c_apps_clk_src",
317                 .parent_names = gcc_xo_gpll0,
318                 .num_parents = 2,
319                 .ops = &clk_rcg2_ops,
320         },
321 };
322
323 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
324         .cmd_rcgr = 0x084c,
325         .mnd_width = 8,
326         .hid_width = 5,
327         .parent_map = gcc_xo_gpll0_map,
328         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
329         .clkr.hw.init = &(struct clk_init_data)
330         {
331                 .name = "blsp1_qup5_spi_apps_clk_src",
332                 .parent_names = gcc_xo_gpll0,
333                 .num_parents = 2,
334                 .ops = &clk_rcg2_ops,
335         },
336 };
337
338 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
339         .cmd_rcgr = 0x08e0,
340         .hid_width = 5,
341         .parent_map = gcc_xo_gpll0_map,
342         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
343         .clkr.hw.init = &(struct clk_init_data)
344         {
345                 .name = "blsp1_qup6_i2c_apps_clk_src",
346                 .parent_names = gcc_xo_gpll0,
347                 .num_parents = 2,
348                 .ops = &clk_rcg2_ops,
349         },
350 };
351
352 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
353         .cmd_rcgr = 0x08cc,
354         .mnd_width = 8,
355         .hid_width = 5,
356         .parent_map = gcc_xo_gpll0_map,
357         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
358         .clkr.hw.init = &(struct clk_init_data)
359         {
360                 .name = "blsp1_qup6_spi_apps_clk_src",
361                 .parent_names = gcc_xo_gpll0,
362                 .num_parents = 2,
363                 .ops = &clk_rcg2_ops,
364         },
365 };
366
367 static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
368         F(3686400, P_GPLL0, 1, 96, 15625),
369         F(7372800, P_GPLL0, 1, 192, 15625),
370         F(14745600, P_GPLL0, 1, 384, 15625),
371         F(16000000, P_GPLL0, 5, 2, 15),
372         F(19200000, P_XO, 1, 0, 0),
373         F(24000000, P_GPLL0, 5, 1, 5),
374         F(32000000, P_GPLL0, 1, 4, 75),
375         F(40000000, P_GPLL0, 15, 0, 0),
376         F(46400000, P_GPLL0, 1, 29, 375),
377         F(48000000, P_GPLL0, 12.5, 0, 0),
378         F(51200000, P_GPLL0, 1, 32, 375),
379         F(56000000, P_GPLL0, 1, 7, 75),
380         F(58982400, P_GPLL0, 1, 1536, 15625),
381         F(60000000, P_GPLL0, 10, 0, 0),
382         F(63160000, P_GPLL0, 9.5, 0, 0),
383         { }
384 };
385
386 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
387         .cmd_rcgr = 0x068c,
388         .mnd_width = 16,
389         .hid_width = 5,
390         .parent_map = gcc_xo_gpll0_map,
391         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
392         .clkr.hw.init = &(struct clk_init_data)
393         {
394                 .name = "blsp1_uart1_apps_clk_src",
395                 .parent_names = gcc_xo_gpll0,
396                 .num_parents = 2,
397                 .ops = &clk_rcg2_ops,
398         },
399 };
400
401 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
402         .cmd_rcgr = 0x070c,
403         .mnd_width = 16,
404         .hid_width = 5,
405         .parent_map = gcc_xo_gpll0_map,
406         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
407         .clkr.hw.init = &(struct clk_init_data)
408         {
409                 .name = "blsp1_uart2_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_uart3_apps_clk_src = {
417         .cmd_rcgr = 0x078c,
418         .mnd_width = 16,
419         .hid_width = 5,
420         .parent_map = gcc_xo_gpll0_map,
421         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
422         .clkr.hw.init = &(struct clk_init_data)
423         {
424                 .name = "blsp1_uart3_apps_clk_src",
425                 .parent_names = gcc_xo_gpll0,
426                 .num_parents = 2,
427                 .ops = &clk_rcg2_ops,
428         },
429 };
430
431 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
432         .cmd_rcgr = 0x080c,
433         .mnd_width = 16,
434         .hid_width = 5,
435         .parent_map = gcc_xo_gpll0_map,
436         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
437         .clkr.hw.init = &(struct clk_init_data)
438         {
439                 .name = "blsp1_uart4_apps_clk_src",
440                 .parent_names = gcc_xo_gpll0,
441                 .num_parents = 2,
442                 .ops = &clk_rcg2_ops,
443         },
444 };
445
446 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
447         .cmd_rcgr = 0x088c,
448         .mnd_width = 16,
449         .hid_width = 5,
450         .parent_map = gcc_xo_gpll0_map,
451         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
452         .clkr.hw.init = &(struct clk_init_data)
453         {
454                 .name = "blsp1_uart5_apps_clk_src",
455                 .parent_names = gcc_xo_gpll0,
456                 .num_parents = 2,
457                 .ops = &clk_rcg2_ops,
458         },
459 };
460
461 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
462         .cmd_rcgr = 0x090c,
463         .mnd_width = 16,
464         .hid_width = 5,
465         .parent_map = gcc_xo_gpll0_map,
466         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
467         .clkr.hw.init = &(struct clk_init_data)
468         {
469                 .name = "blsp1_uart6_apps_clk_src",
470                 .parent_names = gcc_xo_gpll0,
471                 .num_parents = 2,
472                 .ops = &clk_rcg2_ops,
473         },
474 };
475
476 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
477         .cmd_rcgr = 0x09a0,
478         .hid_width = 5,
479         .parent_map = gcc_xo_gpll0_map,
480         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
481         .clkr.hw.init = &(struct clk_init_data)
482         {
483                 .name = "blsp2_qup1_i2c_apps_clk_src",
484                 .parent_names = gcc_xo_gpll0,
485                 .num_parents = 2,
486                 .ops = &clk_rcg2_ops,
487         },
488 };
489
490 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
491         .cmd_rcgr = 0x098c,
492         .mnd_width = 8,
493         .hid_width = 5,
494         .parent_map = gcc_xo_gpll0_map,
495         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
496         .clkr.hw.init = &(struct clk_init_data)
497         {
498                 .name = "blsp2_qup1_spi_apps_clk_src",
499                 .parent_names = gcc_xo_gpll0,
500                 .num_parents = 2,
501                 .ops = &clk_rcg2_ops,
502         },
503 };
504
505 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
506         .cmd_rcgr = 0x0a20,
507         .hid_width = 5,
508         .parent_map = gcc_xo_gpll0_map,
509         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
510         .clkr.hw.init = &(struct clk_init_data)
511         {
512                 .name = "blsp2_qup2_i2c_apps_clk_src",
513                 .parent_names = gcc_xo_gpll0,
514                 .num_parents = 2,
515                 .ops = &clk_rcg2_ops,
516         },
517 };
518
519 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
520         .cmd_rcgr = 0x0a0c,
521         .mnd_width = 8,
522         .hid_width = 5,
523         .parent_map = gcc_xo_gpll0_map,
524         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
525         .clkr.hw.init = &(struct clk_init_data)
526         {
527                 .name = "blsp2_qup2_spi_apps_clk_src",
528                 .parent_names = gcc_xo_gpll0,
529                 .num_parents = 2,
530                 .ops = &clk_rcg2_ops,
531         },
532 };
533
534 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
535         .cmd_rcgr = 0x0aa0,
536         .hid_width = 5,
537         .parent_map = gcc_xo_gpll0_map,
538         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
539         .clkr.hw.init = &(struct clk_init_data)
540         {
541                 .name = "blsp2_qup3_i2c_apps_clk_src",
542                 .parent_names = gcc_xo_gpll0,
543                 .num_parents = 2,
544                 .ops = &clk_rcg2_ops,
545         },
546 };
547
548 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
549         .cmd_rcgr = 0x0a8c,
550         .mnd_width = 8,
551         .hid_width = 5,
552         .parent_map = gcc_xo_gpll0_map,
553         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
554         .clkr.hw.init = &(struct clk_init_data)
555         {
556                 .name = "blsp2_qup3_spi_apps_clk_src",
557                 .parent_names = gcc_xo_gpll0,
558                 .num_parents = 2,
559                 .ops = &clk_rcg2_ops,
560         },
561 };
562
563 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
564         .cmd_rcgr = 0x0b20,
565         .hid_width = 5,
566         .parent_map = gcc_xo_gpll0_map,
567         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
568         .clkr.hw.init = &(struct clk_init_data)
569         {
570                 .name = "blsp2_qup4_i2c_apps_clk_src",
571                 .parent_names = gcc_xo_gpll0,
572                 .num_parents = 2,
573                 .ops = &clk_rcg2_ops,
574         },
575 };
576
577 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
578         .cmd_rcgr = 0x0b0c,
579         .mnd_width = 8,
580         .hid_width = 5,
581         .parent_map = gcc_xo_gpll0_map,
582         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
583         .clkr.hw.init = &(struct clk_init_data)
584         {
585                 .name = "blsp2_qup4_spi_apps_clk_src",
586                 .parent_names = gcc_xo_gpll0,
587                 .num_parents = 2,
588                 .ops = &clk_rcg2_ops,
589         },
590 };
591
592 static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
593         .cmd_rcgr = 0x0ba0,
594         .hid_width = 5,
595         .parent_map = gcc_xo_gpll0_map,
596         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
597         .clkr.hw.init = &(struct clk_init_data)
598         {
599                 .name = "blsp2_qup5_i2c_apps_clk_src",
600                 .parent_names = gcc_xo_gpll0,
601                 .num_parents = 2,
602                 .ops = &clk_rcg2_ops,
603         },
604 };
605
606 static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
607         .cmd_rcgr = 0x0b8c,
608         .mnd_width = 8,
609         .hid_width = 5,
610         .parent_map = gcc_xo_gpll0_map,
611         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
612         .clkr.hw.init = &(struct clk_init_data)
613         {
614                 .name = "blsp2_qup5_spi_apps_clk_src",
615                 .parent_names = gcc_xo_gpll0,
616                 .num_parents = 2,
617                 .ops = &clk_rcg2_ops,
618         },
619 };
620
621 static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
622         .cmd_rcgr = 0x0c20,
623         .hid_width = 5,
624         .parent_map = gcc_xo_gpll0_map,
625         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
626         .clkr.hw.init = &(struct clk_init_data)
627         {
628                 .name = "blsp2_qup6_i2c_apps_clk_src",
629                 .parent_names = gcc_xo_gpll0,
630                 .num_parents = 2,
631                 .ops = &clk_rcg2_ops,
632         },
633 };
634
635 static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
636         .cmd_rcgr = 0x0c0c,
637         .mnd_width = 8,
638         .hid_width = 5,
639         .parent_map = gcc_xo_gpll0_map,
640         .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
641         .clkr.hw.init = &(struct clk_init_data)
642         {
643                 .name = "blsp2_qup6_spi_apps_clk_src",
644                 .parent_names = gcc_xo_gpll0,
645                 .num_parents = 2,
646                 .ops = &clk_rcg2_ops,
647         },
648 };
649
650 static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
651         .cmd_rcgr = 0x09cc,
652         .mnd_width = 16,
653         .hid_width = 5,
654         .parent_map = gcc_xo_gpll0_map,
655         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
656         .clkr.hw.init = &(struct clk_init_data)
657         {
658                 .name = "blsp2_uart1_apps_clk_src",
659                 .parent_names = gcc_xo_gpll0,
660                 .num_parents = 2,
661                 .ops = &clk_rcg2_ops,
662         },
663 };
664
665 static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
666         .cmd_rcgr = 0x0a4c,
667         .mnd_width = 16,
668         .hid_width = 5,
669         .parent_map = gcc_xo_gpll0_map,
670         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
671         .clkr.hw.init = &(struct clk_init_data)
672         {
673                 .name = "blsp2_uart2_apps_clk_src",
674                 .parent_names = gcc_xo_gpll0,
675                 .num_parents = 2,
676                 .ops = &clk_rcg2_ops,
677         },
678 };
679
680 static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
681         .cmd_rcgr = 0x0acc,
682         .mnd_width = 16,
683         .hid_width = 5,
684         .parent_map = gcc_xo_gpll0_map,
685         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
686         .clkr.hw.init = &(struct clk_init_data)
687         {
688                 .name = "blsp2_uart3_apps_clk_src",
689                 .parent_names = gcc_xo_gpll0,
690                 .num_parents = 2,
691                 .ops = &clk_rcg2_ops,
692         },
693 };
694
695 static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
696         .cmd_rcgr = 0x0b4c,
697         .mnd_width = 16,
698         .hid_width = 5,
699         .parent_map = gcc_xo_gpll0_map,
700         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
701         .clkr.hw.init = &(struct clk_init_data)
702         {
703                 .name = "blsp2_uart4_apps_clk_src",
704                 .parent_names = gcc_xo_gpll0,
705                 .num_parents = 2,
706                 .ops = &clk_rcg2_ops,
707         },
708 };
709
710 static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
711         .cmd_rcgr = 0x0bcc,
712         .mnd_width = 16,
713         .hid_width = 5,
714         .parent_map = gcc_xo_gpll0_map,
715         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
716         .clkr.hw.init = &(struct clk_init_data)
717         {
718                 .name = "blsp2_uart5_apps_clk_src",
719                 .parent_names = gcc_xo_gpll0,
720                 .num_parents = 2,
721                 .ops = &clk_rcg2_ops,
722         },
723 };
724
725 static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
726         .cmd_rcgr = 0x0c4c,
727         .mnd_width = 16,
728         .hid_width = 5,
729         .parent_map = gcc_xo_gpll0_map,
730         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
731         .clkr.hw.init = &(struct clk_init_data)
732         {
733                 .name = "blsp2_uart6_apps_clk_src",
734                 .parent_names = gcc_xo_gpll0,
735                 .num_parents = 2,
736                 .ops = &clk_rcg2_ops,
737         },
738 };
739
740 static struct freq_tbl ftbl_gp1_clk_src[] = {
741         F(19200000, P_XO, 1, 0, 0),
742         F(100000000, P_GPLL0, 6, 0, 0),
743         F(200000000, P_GPLL0, 3, 0, 0),
744         { }
745 };
746
747 static struct clk_rcg2 gp1_clk_src = {
748         .cmd_rcgr = 0x1904,
749         .mnd_width = 8,
750         .hid_width = 5,
751         .parent_map = gcc_xo_gpll0_map,
752         .freq_tbl = ftbl_gp1_clk_src,
753         .clkr.hw.init = &(struct clk_init_data)
754         {
755                 .name = "gp1_clk_src",
756                 .parent_names = gcc_xo_gpll0,
757                 .num_parents = 2,
758                 .ops = &clk_rcg2_ops,
759         },
760 };
761
762 static struct freq_tbl ftbl_gp2_clk_src[] = {
763         F(19200000, P_XO, 1, 0, 0),
764         F(100000000, P_GPLL0, 6, 0, 0),
765         F(200000000, P_GPLL0, 3, 0, 0),
766         { }
767 };
768
769 static struct clk_rcg2 gp2_clk_src = {
770         .cmd_rcgr = 0x1944,
771         .mnd_width = 8,
772         .hid_width = 5,
773         .parent_map = gcc_xo_gpll0_map,
774         .freq_tbl = ftbl_gp2_clk_src,
775         .clkr.hw.init = &(struct clk_init_data)
776         {
777                 .name = "gp2_clk_src",
778                 .parent_names = gcc_xo_gpll0,
779                 .num_parents = 2,
780                 .ops = &clk_rcg2_ops,
781         },
782 };
783
784 static struct freq_tbl ftbl_gp3_clk_src[] = {
785         F(19200000, P_XO, 1, 0, 0),
786         F(100000000, P_GPLL0, 6, 0, 0),
787         F(200000000, P_GPLL0, 3, 0, 0),
788         { }
789 };
790
791 static struct clk_rcg2 gp3_clk_src = {
792         .cmd_rcgr = 0x1984,
793         .mnd_width = 8,
794         .hid_width = 5,
795         .parent_map = gcc_xo_gpll0_map,
796         .freq_tbl = ftbl_gp3_clk_src,
797         .clkr.hw.init = &(struct clk_init_data)
798         {
799                 .name = "gp3_clk_src",
800                 .parent_names = gcc_xo_gpll0,
801                 .num_parents = 2,
802                 .ops = &clk_rcg2_ops,
803         },
804 };
805
806 static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
807         F(1011000, P_XO, 1, 1, 19),
808         { }
809 };
810
811 static struct clk_rcg2 pcie_0_aux_clk_src = {
812         .cmd_rcgr = 0x1b00,
813         .mnd_width = 8,
814         .hid_width = 5,
815         .freq_tbl = ftbl_pcie_0_aux_clk_src,
816         .clkr.hw.init = &(struct clk_init_data)
817         {
818                 .name = "pcie_0_aux_clk_src",
819                 .parent_names = (const char *[]) { "xo" },
820                 .num_parents = 1,
821                 .ops = &clk_rcg2_ops,
822         },
823 };
824
825 static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
826         F(125000000, P_XO, 1, 0, 0),
827         { }
828 };
829
830 static struct clk_rcg2 pcie_0_pipe_clk_src = {
831         .cmd_rcgr = 0x1adc,
832         .hid_width = 5,
833         .freq_tbl = ftbl_pcie_pipe_clk_src,
834         .clkr.hw.init = &(struct clk_init_data)
835         {
836                 .name = "pcie_0_pipe_clk_src",
837                 .parent_names = (const char *[]) { "xo" },
838                 .num_parents = 1,
839                 .ops = &clk_rcg2_ops,
840         },
841 };
842
843 static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
844         F(1011000, P_XO, 1, 1, 19),
845         { }
846 };
847
848 static struct clk_rcg2 pcie_1_aux_clk_src = {
849         .cmd_rcgr = 0x1b80,
850         .mnd_width = 8,
851         .hid_width = 5,
852         .freq_tbl = ftbl_pcie_1_aux_clk_src,
853         .clkr.hw.init = &(struct clk_init_data)
854         {
855                 .name = "pcie_1_aux_clk_src",
856                 .parent_names = (const char *[]) { "xo" },
857                 .num_parents = 1,
858                 .ops = &clk_rcg2_ops,
859         },
860 };
861
862 static struct clk_rcg2 pcie_1_pipe_clk_src = {
863         .cmd_rcgr = 0x1b5c,
864         .hid_width = 5,
865         .freq_tbl = ftbl_pcie_pipe_clk_src,
866         .clkr.hw.init = &(struct clk_init_data)
867         {
868                 .name = "pcie_1_pipe_clk_src",
869                 .parent_names = (const char *[]) { "xo" },
870                 .num_parents = 1,
871                 .ops = &clk_rcg2_ops,
872         },
873 };
874
875 static struct freq_tbl ftbl_pdm2_clk_src[] = {
876         F(60000000, P_GPLL0, 10, 0, 0),
877         { }
878 };
879
880 static struct clk_rcg2 pdm2_clk_src = {
881         .cmd_rcgr = 0x0cd0,
882         .hid_width = 5,
883         .parent_map = gcc_xo_gpll0_map,
884         .freq_tbl = ftbl_pdm2_clk_src,
885         .clkr.hw.init = &(struct clk_init_data)
886         {
887                 .name = "pdm2_clk_src",
888                 .parent_names = gcc_xo_gpll0,
889                 .num_parents = 2,
890                 .ops = &clk_rcg2_ops,
891         },
892 };
893
894 static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
895         F(144000, P_XO, 16, 3, 25),
896         F(400000, P_XO, 12, 1, 4),
897         F(20000000, P_GPLL0, 15, 1, 2),
898         F(25000000, P_GPLL0, 12, 1, 2),
899         F(50000000, P_GPLL0, 12, 0, 0),
900         F(100000000, P_GPLL0, 6, 0, 0),
901         F(192000000, P_GPLL4, 2, 0, 0),
902         F(384000000, P_GPLL4, 1, 0, 0),
903         { }
904 };
905
906 static struct clk_rcg2 sdcc1_apps_clk_src = {
907         .cmd_rcgr = 0x04d0,
908         .mnd_width = 8,
909         .hid_width = 5,
910         .parent_map = gcc_xo_gpll0_gpll4_map,
911         .freq_tbl = ftbl_sdcc1_apps_clk_src,
912         .clkr.hw.init = &(struct clk_init_data)
913         {
914                 .name = "sdcc1_apps_clk_src",
915                 .parent_names = gcc_xo_gpll0_gpll4,
916                 .num_parents = 3,
917                 .ops = &clk_rcg2_floor_ops,
918         },
919 };
920
921 static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
922         F(144000, P_XO, 16, 3, 25),
923         F(400000, P_XO, 12, 1, 4),
924         F(20000000, P_GPLL0, 15, 1, 2),
925         F(25000000, P_GPLL0, 12, 1, 2),
926         F(50000000, P_GPLL0, 12, 0, 0),
927         F(100000000, P_GPLL0, 6, 0, 0),
928         F(200000000, P_GPLL0, 3, 0, 0),
929         { }
930 };
931
932 static struct clk_rcg2 sdcc2_apps_clk_src = {
933         .cmd_rcgr = 0x0510,
934         .mnd_width = 8,
935         .hid_width = 5,
936         .parent_map = gcc_xo_gpll0_map,
937         .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
938         .clkr.hw.init = &(struct clk_init_data)
939         {
940                 .name = "sdcc2_apps_clk_src",
941                 .parent_names = gcc_xo_gpll0,
942                 .num_parents = 2,
943                 .ops = &clk_rcg2_floor_ops,
944         },
945 };
946
947 static struct clk_rcg2 sdcc3_apps_clk_src = {
948         .cmd_rcgr = 0x0550,
949         .mnd_width = 8,
950         .hid_width = 5,
951         .parent_map = gcc_xo_gpll0_map,
952         .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
953         .clkr.hw.init = &(struct clk_init_data)
954         {
955                 .name = "sdcc3_apps_clk_src",
956                 .parent_names = gcc_xo_gpll0,
957                 .num_parents = 2,
958                 .ops = &clk_rcg2_floor_ops,
959         },
960 };
961
962 static struct clk_rcg2 sdcc4_apps_clk_src = {
963         .cmd_rcgr = 0x0590,
964         .mnd_width = 8,
965         .hid_width = 5,
966         .parent_map = gcc_xo_gpll0_map,
967         .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
968         .clkr.hw.init = &(struct clk_init_data)
969         {
970                 .name = "sdcc4_apps_clk_src",
971                 .parent_names = gcc_xo_gpll0,
972                 .num_parents = 2,
973                 .ops = &clk_rcg2_floor_ops,
974         },
975 };
976
977 static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
978         F(105500, P_XO, 1, 1, 182),
979         { }
980 };
981
982 static struct clk_rcg2 tsif_ref_clk_src = {
983         .cmd_rcgr = 0x0d90,
984         .mnd_width = 8,
985         .hid_width = 5,
986         .freq_tbl = ftbl_tsif_ref_clk_src,
987         .clkr.hw.init = &(struct clk_init_data)
988         {
989                 .name = "tsif_ref_clk_src",
990                 .parent_names = (const char *[]) { "xo" },
991                 .num_parents = 1,
992                 .ops = &clk_rcg2_ops,
993         },
994 };
995
996 static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
997         F(19200000, P_XO, 1, 0, 0),
998         F(60000000, P_GPLL0, 10, 0, 0),
999         { }
1000 };
1001
1002 static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1003         .cmd_rcgr = 0x03e8,
1004         .hid_width = 5,
1005         .parent_map = gcc_xo_gpll0_map,
1006         .freq_tbl = ftbl_usb30_mock_utmi_clk_src,
1007         .clkr.hw.init = &(struct clk_init_data)
1008         {
1009                 .name = "usb30_mock_utmi_clk_src",
1010                 .parent_names = gcc_xo_gpll0,
1011                 .num_parents = 2,
1012                 .ops = &clk_rcg2_ops,
1013         },
1014 };
1015
1016 static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1017         F(1200000, P_XO, 16, 0, 0),
1018         { }
1019 };
1020
1021 static struct clk_rcg2 usb3_phy_aux_clk_src = {
1022         .cmd_rcgr = 0x1414,
1023         .hid_width = 5,
1024         .freq_tbl = ftbl_usb3_phy_aux_clk_src,
1025         .clkr.hw.init = &(struct clk_init_data)
1026         {
1027                 .name = "usb3_phy_aux_clk_src",
1028                 .parent_names = (const char *[]) { "xo" },
1029                 .num_parents = 1,
1030                 .ops = &clk_rcg2_ops,
1031         },
1032 };
1033
1034 static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1035         F(75000000, P_GPLL0, 8, 0, 0),
1036         { }
1037 };
1038
1039 static struct clk_rcg2 usb_hs_system_clk_src = {
1040         .cmd_rcgr = 0x0490,
1041         .hid_width = 5,
1042         .parent_map = gcc_xo_gpll0_map,
1043         .freq_tbl = ftbl_usb_hs_system_clk_src,
1044         .clkr.hw.init = &(struct clk_init_data)
1045         {
1046                 .name = "usb_hs_system_clk_src",
1047                 .parent_names = gcc_xo_gpll0,
1048                 .num_parents = 2,
1049                 .ops = &clk_rcg2_ops,
1050         },
1051 };
1052
1053 static struct clk_branch gcc_blsp1_ahb_clk = {
1054         .halt_reg = 0x05c4,
1055         .halt_check = BRANCH_HALT_VOTED,
1056         .clkr = {
1057                 .enable_reg = 0x1484,
1058                 .enable_mask = BIT(17),
1059                 .hw.init = &(struct clk_init_data)
1060                 {
1061                         .name = "gcc_blsp1_ahb_clk",
1062                         .ops = &clk_branch2_ops,
1063                 },
1064         },
1065 };
1066
1067 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1068         .halt_reg = 0x0648,
1069         .clkr = {
1070                 .enable_reg = 0x0648,
1071                 .enable_mask = BIT(0),
1072                 .hw.init = &(struct clk_init_data)
1073                 {
1074                         .name = "gcc_blsp1_qup1_i2c_apps_clk",
1075                         .parent_names = (const char *[]) {
1076                                 "blsp1_qup1_i2c_apps_clk_src",
1077                         },
1078                         .num_parents = 1,
1079                         .flags = CLK_SET_RATE_PARENT,
1080                         .ops = &clk_branch2_ops,
1081                 },
1082         },
1083 };
1084
1085 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1086         .halt_reg = 0x0644,
1087         .clkr = {
1088                 .enable_reg = 0x0644,
1089                 .enable_mask = BIT(0),
1090                 .hw.init = &(struct clk_init_data)
1091                 {
1092                         .name = "gcc_blsp1_qup1_spi_apps_clk",
1093                         .parent_names = (const char *[]) {
1094                                 "blsp1_qup1_spi_apps_clk_src",
1095                         },
1096                         .num_parents = 1,
1097                         .flags = CLK_SET_RATE_PARENT,
1098                         .ops = &clk_branch2_ops,
1099                 },
1100         },
1101 };
1102
1103 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1104         .halt_reg = 0x06c8,
1105         .clkr = {
1106                 .enable_reg = 0x06c8,
1107                 .enable_mask = BIT(0),
1108                 .hw.init = &(struct clk_init_data)
1109                 {
1110                         .name = "gcc_blsp1_qup2_i2c_apps_clk",
1111                         .parent_names = (const char *[]) {
1112                                 "blsp1_qup2_i2c_apps_clk_src",
1113                         },
1114                         .num_parents = 1,
1115                         .flags = CLK_SET_RATE_PARENT,
1116                         .ops = &clk_branch2_ops,
1117                 },
1118         },
1119 };
1120
1121 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1122         .halt_reg = 0x06c4,
1123         .clkr = {
1124                 .enable_reg = 0x06c4,
1125                 .enable_mask = BIT(0),
1126                 .hw.init = &(struct clk_init_data)
1127                 {
1128                         .name = "gcc_blsp1_qup2_spi_apps_clk",
1129                         .parent_names = (const char *[]) {
1130                                 "blsp1_qup2_spi_apps_clk_src",
1131                         },
1132                         .num_parents = 1,
1133                         .flags = CLK_SET_RATE_PARENT,
1134                         .ops = &clk_branch2_ops,
1135                 },
1136         },
1137 };
1138
1139 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1140         .halt_reg = 0x0748,
1141         .clkr = {
1142                 .enable_reg = 0x0748,
1143                 .enable_mask = BIT(0),
1144                 .hw.init = &(struct clk_init_data)
1145                 {
1146                         .name = "gcc_blsp1_qup3_i2c_apps_clk",
1147                         .parent_names = (const char *[]) {
1148                                 "blsp1_qup3_i2c_apps_clk_src",
1149                         },
1150                         .num_parents = 1,
1151                         .flags = CLK_SET_RATE_PARENT,
1152                         .ops = &clk_branch2_ops,
1153                 },
1154         },
1155 };
1156
1157 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1158         .halt_reg = 0x0744,
1159         .clkr = {
1160                 .enable_reg = 0x0744,
1161                 .enable_mask = BIT(0),
1162                 .hw.init = &(struct clk_init_data)
1163                 {
1164                         .name = "gcc_blsp1_qup3_spi_apps_clk",
1165                         .parent_names = (const char *[]) {
1166                                 "blsp1_qup3_spi_apps_clk_src",
1167                         },
1168                         .num_parents = 1,
1169                         .flags = CLK_SET_RATE_PARENT,
1170                         .ops = &clk_branch2_ops,
1171                 },
1172         },
1173 };
1174
1175 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1176         .halt_reg = 0x07c8,
1177         .clkr = {
1178                 .enable_reg = 0x07c8,
1179                 .enable_mask = BIT(0),
1180                 .hw.init = &(struct clk_init_data)
1181                 {
1182                         .name = "gcc_blsp1_qup4_i2c_apps_clk",
1183                         .parent_names = (const char *[]) {
1184                                 "blsp1_qup4_i2c_apps_clk_src",
1185                         },
1186                         .num_parents = 1,
1187                         .flags = CLK_SET_RATE_PARENT,
1188                         .ops = &clk_branch2_ops,
1189                 },
1190         },
1191 };
1192
1193 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1194         .halt_reg = 0x07c4,
1195         .clkr = {
1196                 .enable_reg = 0x07c4,
1197                 .enable_mask = BIT(0),
1198                 .hw.init = &(struct clk_init_data)
1199                 {
1200                         .name = "gcc_blsp1_qup4_spi_apps_clk",
1201                         .parent_names = (const char *[]) {
1202                                 "blsp1_qup4_spi_apps_clk_src",
1203                         },
1204                         .num_parents = 1,
1205                         .flags = CLK_SET_RATE_PARENT,
1206                         .ops = &clk_branch2_ops,
1207                 },
1208         },
1209 };
1210
1211 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1212         .halt_reg = 0x0848,
1213         .clkr = {
1214                 .enable_reg = 0x0848,
1215                 .enable_mask = BIT(0),
1216                 .hw.init = &(struct clk_init_data)
1217                 {
1218                         .name = "gcc_blsp1_qup5_i2c_apps_clk",
1219                         .parent_names = (const char *[]) {
1220                                 "blsp1_qup5_i2c_apps_clk_src",
1221                         },
1222                         .num_parents = 1,
1223                         .flags = CLK_SET_RATE_PARENT,
1224                         .ops = &clk_branch2_ops,
1225                 },
1226         },
1227 };
1228
1229 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1230         .halt_reg = 0x0844,
1231         .clkr = {
1232                 .enable_reg = 0x0844,
1233                 .enable_mask = BIT(0),
1234                 .hw.init = &(struct clk_init_data)
1235                 {
1236                         .name = "gcc_blsp1_qup5_spi_apps_clk",
1237                         .parent_names = (const char *[]) {
1238                                 "blsp1_qup5_spi_apps_clk_src",
1239                         },
1240                         .num_parents = 1,
1241                         .flags = CLK_SET_RATE_PARENT,
1242                         .ops = &clk_branch2_ops,
1243                 },
1244         },
1245 };
1246
1247 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1248         .halt_reg = 0x08c8,
1249         .clkr = {
1250                 .enable_reg = 0x08c8,
1251                 .enable_mask = BIT(0),
1252                 .hw.init = &(struct clk_init_data)
1253                 {
1254                         .name = "gcc_blsp1_qup6_i2c_apps_clk",
1255                         .parent_names = (const char *[]) {
1256                                 "blsp1_qup6_i2c_apps_clk_src",
1257                         },
1258                         .num_parents = 1,
1259                         .flags = CLK_SET_RATE_PARENT,
1260                         .ops = &clk_branch2_ops,
1261                 },
1262         },
1263 };
1264
1265 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1266         .halt_reg = 0x08c4,
1267         .clkr = {
1268                 .enable_reg = 0x08c4,
1269                 .enable_mask = BIT(0),
1270                 .hw.init = &(struct clk_init_data)
1271                 {
1272                         .name = "gcc_blsp1_qup6_spi_apps_clk",
1273                         .parent_names = (const char *[]) {
1274                                 "blsp1_qup6_spi_apps_clk_src",
1275                         },
1276                         .num_parents = 1,
1277                         .flags = CLK_SET_RATE_PARENT,
1278                         .ops = &clk_branch2_ops,
1279                 },
1280         },
1281 };
1282
1283 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1284         .halt_reg = 0x0684,
1285         .clkr = {
1286                 .enable_reg = 0x0684,
1287                 .enable_mask = BIT(0),
1288                 .hw.init = &(struct clk_init_data)
1289                 {
1290                         .name = "gcc_blsp1_uart1_apps_clk",
1291                         .parent_names = (const char *[]) {
1292                                 "blsp1_uart1_apps_clk_src",
1293                         },
1294                         .num_parents = 1,
1295                         .flags = CLK_SET_RATE_PARENT,
1296                         .ops = &clk_branch2_ops,
1297                 },
1298         },
1299 };
1300
1301 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1302         .halt_reg = 0x0704,
1303         .clkr = {
1304                 .enable_reg = 0x0704,
1305                 .enable_mask = BIT(0),
1306                 .hw.init = &(struct clk_init_data)
1307                 {
1308                         .name = "gcc_blsp1_uart2_apps_clk",
1309                         .parent_names = (const char *[]) {
1310                                 "blsp1_uart2_apps_clk_src",
1311                         },
1312                         .num_parents = 1,
1313                         .flags = CLK_SET_RATE_PARENT,
1314                         .ops = &clk_branch2_ops,
1315                 },
1316         },
1317 };
1318
1319 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1320         .halt_reg = 0x0784,
1321         .clkr = {
1322                 .enable_reg = 0x0784,
1323                 .enable_mask = BIT(0),
1324                 .hw.init = &(struct clk_init_data)
1325                 {
1326                         .name = "gcc_blsp1_uart3_apps_clk",
1327                         .parent_names = (const char *[]) {
1328                                 "blsp1_uart3_apps_clk_src",
1329                         },
1330                         .num_parents = 1,
1331                         .flags = CLK_SET_RATE_PARENT,
1332                         .ops = &clk_branch2_ops,
1333                 },
1334         },
1335 };
1336
1337 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1338         .halt_reg = 0x0804,
1339         .clkr = {
1340                 .enable_reg = 0x0804,
1341                 .enable_mask = BIT(0),
1342                 .hw.init = &(struct clk_init_data)
1343                 {
1344                         .name = "gcc_blsp1_uart4_apps_clk",
1345                         .parent_names = (const char *[]) {
1346                                 "blsp1_uart4_apps_clk_src",
1347                         },
1348                         .num_parents = 1,
1349                         .flags = CLK_SET_RATE_PARENT,
1350                         .ops = &clk_branch2_ops,
1351                 },
1352         },
1353 };
1354
1355 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1356         .halt_reg = 0x0884,
1357         .clkr = {
1358                 .enable_reg = 0x0884,
1359                 .enable_mask = BIT(0),
1360                 .hw.init = &(struct clk_init_data)
1361                 {
1362                         .name = "gcc_blsp1_uart5_apps_clk",
1363                         .parent_names = (const char *[]) {
1364                                 "blsp1_uart5_apps_clk_src",
1365                         },
1366                         .num_parents = 1,
1367                         .flags = CLK_SET_RATE_PARENT,
1368                         .ops = &clk_branch2_ops,
1369                 },
1370         },
1371 };
1372
1373 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1374         .halt_reg = 0x0904,
1375         .clkr = {
1376                 .enable_reg = 0x0904,
1377                 .enable_mask = BIT(0),
1378                 .hw.init = &(struct clk_init_data)
1379                 {
1380                         .name = "gcc_blsp1_uart6_apps_clk",
1381                         .parent_names = (const char *[]) {
1382                                 "blsp1_uart6_apps_clk_src",
1383                         },
1384                         .num_parents = 1,
1385                         .flags = CLK_SET_RATE_PARENT,
1386                         .ops = &clk_branch2_ops,
1387                 },
1388         },
1389 };
1390
1391 static struct clk_branch gcc_blsp2_ahb_clk = {
1392         .halt_reg = 0x0944,
1393         .halt_check = BRANCH_HALT_VOTED,
1394         .clkr = {
1395                 .enable_reg = 0x1484,
1396                 .enable_mask = BIT(15),
1397                 .hw.init = &(struct clk_init_data)
1398                 {
1399                         .name = "gcc_blsp2_ahb_clk",
1400                         .ops = &clk_branch2_ops,
1401                 },
1402         },
1403 };
1404
1405 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1406         .halt_reg = 0x0988,
1407         .clkr = {
1408                 .enable_reg = 0x0988,
1409                 .enable_mask = BIT(0),
1410                 .hw.init = &(struct clk_init_data)
1411                 {
1412                         .name = "gcc_blsp2_qup1_i2c_apps_clk",
1413                         .parent_names = (const char *[]) {
1414                                 "blsp2_qup1_i2c_apps_clk_src",
1415                         },
1416                         .num_parents = 1,
1417                         .flags = CLK_SET_RATE_PARENT,
1418                         .ops = &clk_branch2_ops,
1419                 },
1420         },
1421 };
1422
1423 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1424         .halt_reg = 0x0984,
1425         .clkr = {
1426                 .enable_reg = 0x0984,
1427                 .enable_mask = BIT(0),
1428                 .hw.init = &(struct clk_init_data)
1429                 {
1430                         .name = "gcc_blsp2_qup1_spi_apps_clk",
1431                         .parent_names = (const char *[]) {
1432                                 "blsp2_qup1_spi_apps_clk_src",
1433                         },
1434                         .num_parents = 1,
1435                         .flags = CLK_SET_RATE_PARENT,
1436                         .ops = &clk_branch2_ops,
1437                 },
1438         },
1439 };
1440
1441 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1442         .halt_reg = 0x0a08,
1443         .clkr = {
1444                 .enable_reg = 0x0a08,
1445                 .enable_mask = BIT(0),
1446                 .hw.init = &(struct clk_init_data)
1447                 {
1448                         .name = "gcc_blsp2_qup2_i2c_apps_clk",
1449                         .parent_names = (const char *[]) {
1450                                 "blsp2_qup2_i2c_apps_clk_src",
1451                         },
1452                         .num_parents = 1,
1453                         .flags = CLK_SET_RATE_PARENT,
1454                         .ops = &clk_branch2_ops,
1455                 },
1456         },
1457 };
1458
1459 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1460         .halt_reg = 0x0a04,
1461         .clkr = {
1462                 .enable_reg = 0x0a04,
1463                 .enable_mask = BIT(0),
1464                 .hw.init = &(struct clk_init_data)
1465                 {
1466                         .name = "gcc_blsp2_qup2_spi_apps_clk",
1467                         .parent_names = (const char *[]) {
1468                                 "blsp2_qup2_spi_apps_clk_src",
1469                         },
1470                         .num_parents = 1,
1471                         .flags = CLK_SET_RATE_PARENT,
1472                         .ops = &clk_branch2_ops,
1473                 },
1474         },
1475 };
1476
1477 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1478         .halt_reg = 0x0a88,
1479         .clkr = {
1480                 .enable_reg = 0x0a88,
1481                 .enable_mask = BIT(0),
1482                 .hw.init = &(struct clk_init_data)
1483                 {
1484                         .name = "gcc_blsp2_qup3_i2c_apps_clk",
1485                         .parent_names = (const char *[]) {
1486                                 "blsp2_qup3_i2c_apps_clk_src",
1487                         },
1488                         .num_parents = 1,
1489                         .flags = CLK_SET_RATE_PARENT,
1490                         .ops = &clk_branch2_ops,
1491                 },
1492         },
1493 };
1494
1495 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1496         .halt_reg = 0x0a84,
1497         .clkr = {
1498                 .enable_reg = 0x0a84,
1499                 .enable_mask = BIT(0),
1500                 .hw.init = &(struct clk_init_data)
1501                 {
1502                         .name = "gcc_blsp2_qup3_spi_apps_clk",
1503                         .parent_names = (const char *[]) {
1504                                 "blsp2_qup3_spi_apps_clk_src",
1505                         },
1506                         .num_parents = 1,
1507                         .flags = CLK_SET_RATE_PARENT,
1508                         .ops = &clk_branch2_ops,
1509                 },
1510         },
1511 };
1512
1513 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1514         .halt_reg = 0x0b08,
1515         .clkr = {
1516                 .enable_reg = 0x0b08,
1517                 .enable_mask = BIT(0),
1518                 .hw.init = &(struct clk_init_data)
1519                 {
1520                         .name = "gcc_blsp2_qup4_i2c_apps_clk",
1521                         .parent_names = (const char *[]) {
1522                                 "blsp2_qup4_i2c_apps_clk_src",
1523                         },
1524                         .num_parents = 1,
1525                         .flags = CLK_SET_RATE_PARENT,
1526                         .ops = &clk_branch2_ops,
1527                 },
1528         },
1529 };
1530
1531 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1532         .halt_reg = 0x0b04,
1533         .clkr = {
1534                 .enable_reg = 0x0b04,
1535                 .enable_mask = BIT(0),
1536                 .hw.init = &(struct clk_init_data)
1537                 {
1538                         .name = "gcc_blsp2_qup4_spi_apps_clk",
1539                         .parent_names = (const char *[]) {
1540                                 "blsp2_qup4_spi_apps_clk_src",
1541                         },
1542                         .num_parents = 1,
1543                         .flags = CLK_SET_RATE_PARENT,
1544                         .ops = &clk_branch2_ops,
1545                 },
1546         },
1547 };
1548
1549 static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1550         .halt_reg = 0x0b88,
1551         .clkr = {
1552                 .enable_reg = 0x0b88,
1553                 .enable_mask = BIT(0),
1554                 .hw.init = &(struct clk_init_data)
1555                 {
1556                         .name = "gcc_blsp2_qup5_i2c_apps_clk",
1557                         .parent_names = (const char *[]) {
1558                                 "blsp2_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_blsp2_qup5_spi_apps_clk = {
1568         .halt_reg = 0x0b84,
1569         .clkr = {
1570                 .enable_reg = 0x0b84,
1571                 .enable_mask = BIT(0),
1572                 .hw.init = &(struct clk_init_data)
1573                 {
1574                         .name = "gcc_blsp2_qup5_spi_apps_clk",
1575                         .parent_names = (const char *[]) {
1576                                 "blsp2_qup5_spi_apps_clk_src",
1577                         },
1578                         .num_parents = 1,
1579                         .flags = CLK_SET_RATE_PARENT,
1580                         .ops = &clk_branch2_ops,
1581                 },
1582         },
1583 };
1584
1585 static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1586         .halt_reg = 0x0c08,
1587         .clkr = {
1588                 .enable_reg = 0x0c08,
1589                 .enable_mask = BIT(0),
1590                 .hw.init = &(struct clk_init_data)
1591                 {
1592                         .name = "gcc_blsp2_qup6_i2c_apps_clk",
1593                         .parent_names = (const char *[]) {
1594                                 "blsp2_qup6_i2c_apps_clk_src",
1595                         },
1596                         .num_parents = 1,
1597                         .flags = CLK_SET_RATE_PARENT,
1598                         .ops = &clk_branch2_ops,
1599                 },
1600         },
1601 };
1602
1603 static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1604         .halt_reg = 0x0c04,
1605         .clkr = {
1606                 .enable_reg = 0x0c04,
1607                 .enable_mask = BIT(0),
1608                 .hw.init = &(struct clk_init_data)
1609                 {
1610                         .name = "gcc_blsp2_qup6_spi_apps_clk",
1611                         .parent_names = (const char *[]) {
1612                                 "blsp2_qup6_spi_apps_clk_src",
1613                         },
1614                         .num_parents = 1,
1615                         .flags = CLK_SET_RATE_PARENT,
1616                         .ops = &clk_branch2_ops,
1617                 },
1618         },
1619 };
1620
1621 static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1622         .halt_reg = 0x09c4,
1623         .clkr = {
1624                 .enable_reg = 0x09c4,
1625                 .enable_mask = BIT(0),
1626                 .hw.init = &(struct clk_init_data)
1627                 {
1628                         .name = "gcc_blsp2_uart1_apps_clk",
1629                         .parent_names = (const char *[]) {
1630                                 "blsp2_uart1_apps_clk_src",
1631                         },
1632                         .num_parents = 1,
1633                         .flags = CLK_SET_RATE_PARENT,
1634                         .ops = &clk_branch2_ops,
1635                 },
1636         },
1637 };
1638
1639 static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1640         .halt_reg = 0x0a44,
1641         .clkr = {
1642                 .enable_reg = 0x0a44,
1643                 .enable_mask = BIT(0),
1644                 .hw.init = &(struct clk_init_data)
1645                 {
1646                         .name = "gcc_blsp2_uart2_apps_clk",
1647                         .parent_names = (const char *[]) {
1648                                 "blsp2_uart2_apps_clk_src",
1649                         },
1650                         .num_parents = 1,
1651                         .flags = CLK_SET_RATE_PARENT,
1652                         .ops = &clk_branch2_ops,
1653                 },
1654         },
1655 };
1656
1657 static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1658         .halt_reg = 0x0ac4,
1659         .clkr = {
1660                 .enable_reg = 0x0ac4,
1661                 .enable_mask = BIT(0),
1662                 .hw.init = &(struct clk_init_data)
1663                 {
1664                         .name = "gcc_blsp2_uart3_apps_clk",
1665                         .parent_names = (const char *[]) {
1666                                 "blsp2_uart3_apps_clk_src",
1667                         },
1668                         .num_parents = 1,
1669                         .flags = CLK_SET_RATE_PARENT,
1670                         .ops = &clk_branch2_ops,
1671                 },
1672         },
1673 };
1674
1675 static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1676         .halt_reg = 0x0b44,
1677         .clkr = {
1678                 .enable_reg = 0x0b44,
1679                 .enable_mask = BIT(0),
1680                 .hw.init = &(struct clk_init_data)
1681                 {
1682                         .name = "gcc_blsp2_uart4_apps_clk",
1683                         .parent_names = (const char *[]) {
1684                                 "blsp2_uart4_apps_clk_src",
1685                         },
1686                         .num_parents = 1,
1687                         .flags = CLK_SET_RATE_PARENT,
1688                         .ops = &clk_branch2_ops,
1689                 },
1690         },
1691 };
1692
1693 static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1694         .halt_reg = 0x0bc4,
1695         .clkr = {
1696                 .enable_reg = 0x0bc4,
1697                 .enable_mask = BIT(0),
1698                 .hw.init = &(struct clk_init_data)
1699                 {
1700                         .name = "gcc_blsp2_uart5_apps_clk",
1701                         .parent_names = (const char *[]) {
1702                                 "blsp2_uart5_apps_clk_src",
1703                         },
1704                         .num_parents = 1,
1705                         .flags = CLK_SET_RATE_PARENT,
1706                         .ops = &clk_branch2_ops,
1707                 },
1708         },
1709 };
1710
1711 static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1712         .halt_reg = 0x0c44,
1713         .clkr = {
1714                 .enable_reg = 0x0c44,
1715                 .enable_mask = BIT(0),
1716                 .hw.init = &(struct clk_init_data)
1717                 {
1718                         .name = "gcc_blsp2_uart6_apps_clk",
1719                         .parent_names = (const char *[]) {
1720                                 "blsp2_uart6_apps_clk_src",
1721                         },
1722                         .num_parents = 1,
1723                         .flags = CLK_SET_RATE_PARENT,
1724                         .ops = &clk_branch2_ops,
1725                 },
1726         },
1727 };
1728
1729 static struct clk_branch gcc_gp1_clk = {
1730         .halt_reg = 0x1900,
1731         .clkr = {
1732                 .enable_reg = 0x1900,
1733                 .enable_mask = BIT(0),
1734                 .hw.init = &(struct clk_init_data)
1735                 {
1736                         .name = "gcc_gp1_clk",
1737                         .parent_names = (const char *[]) {
1738                                 "gp1_clk_src",
1739                         },
1740                         .num_parents = 1,
1741                         .flags = CLK_SET_RATE_PARENT,
1742                         .ops = &clk_branch2_ops,
1743                 },
1744         },
1745 };
1746
1747 static struct clk_branch gcc_gp2_clk = {
1748         .halt_reg = 0x1940,
1749         .clkr = {
1750                 .enable_reg = 0x1940,
1751                 .enable_mask = BIT(0),
1752                 .hw.init = &(struct clk_init_data)
1753                 {
1754                         .name = "gcc_gp2_clk",
1755                         .parent_names = (const char *[]) {
1756                                 "gp2_clk_src",
1757                         },
1758                         .num_parents = 1,
1759                         .flags = CLK_SET_RATE_PARENT,
1760                         .ops = &clk_branch2_ops,
1761                 },
1762         },
1763 };
1764
1765 static struct clk_branch gcc_gp3_clk = {
1766         .halt_reg = 0x1980,
1767         .clkr = {
1768                 .enable_reg = 0x1980,
1769                 .enable_mask = BIT(0),
1770                 .hw.init = &(struct clk_init_data)
1771                 {
1772                         .name = "gcc_gp3_clk",
1773                         .parent_names = (const char *[]) {
1774                                 "gp3_clk_src",
1775                         },
1776                         .num_parents = 1,
1777                         .flags = CLK_SET_RATE_PARENT,
1778                         .ops = &clk_branch2_ops,
1779                 },
1780         },
1781 };
1782
1783 static struct clk_branch gcc_pcie_0_aux_clk = {
1784         .halt_reg = 0x1ad4,
1785         .clkr = {
1786                 .enable_reg = 0x1ad4,
1787                 .enable_mask = BIT(0),
1788                 .hw.init = &(struct clk_init_data)
1789                 {
1790                         .name = "gcc_pcie_0_aux_clk",
1791                         .parent_names = (const char *[]) {
1792                                 "pcie_0_aux_clk_src",
1793                         },
1794                         .num_parents = 1,
1795                         .flags = CLK_SET_RATE_PARENT,
1796                         .ops = &clk_branch2_ops,
1797                 },
1798         },
1799 };
1800
1801 static struct clk_branch gcc_pcie_0_pipe_clk = {
1802         .halt_reg = 0x1ad8,
1803         .halt_check = BRANCH_HALT_DELAY,
1804         .clkr = {
1805                 .enable_reg = 0x1ad8,
1806                 .enable_mask = BIT(0),
1807                 .hw.init = &(struct clk_init_data)
1808                 {
1809                         .name = "gcc_pcie_0_pipe_clk",
1810                         .parent_names = (const char *[]) {
1811                                 "pcie_0_pipe_clk_src",
1812                         },
1813                         .num_parents = 1,
1814                         .flags = CLK_SET_RATE_PARENT,
1815                         .ops = &clk_branch2_ops,
1816                 },
1817         },
1818 };
1819
1820 static struct clk_branch gcc_pcie_1_aux_clk = {
1821         .halt_reg = 0x1b54,
1822         .clkr = {
1823                 .enable_reg = 0x1b54,
1824                 .enable_mask = BIT(0),
1825                 .hw.init = &(struct clk_init_data)
1826                 {
1827                         .name = "gcc_pcie_1_aux_clk",
1828                         .parent_names = (const char *[]) {
1829                                 "pcie_1_aux_clk_src",
1830                         },
1831                         .num_parents = 1,
1832                         .flags = CLK_SET_RATE_PARENT,
1833                         .ops = &clk_branch2_ops,
1834                 },
1835         },
1836 };
1837
1838 static struct clk_branch gcc_pcie_1_pipe_clk = {
1839         .halt_reg = 0x1b58,
1840         .halt_check = BRANCH_HALT_DELAY,
1841         .clkr = {
1842                 .enable_reg = 0x1b58,
1843                 .enable_mask = BIT(0),
1844                 .hw.init = &(struct clk_init_data)
1845                 {
1846                         .name = "gcc_pcie_1_pipe_clk",
1847                         .parent_names = (const char *[]) {
1848                                 "pcie_1_pipe_clk_src",
1849                         },
1850                         .num_parents = 1,
1851                         .flags = CLK_SET_RATE_PARENT,
1852                         .ops = &clk_branch2_ops,
1853                 },
1854         },
1855 };
1856
1857 static struct clk_branch gcc_pdm2_clk = {
1858         .halt_reg = 0x0ccc,
1859         .clkr = {
1860                 .enable_reg = 0x0ccc,
1861                 .enable_mask = BIT(0),
1862                 .hw.init = &(struct clk_init_data)
1863                 {
1864                         .name = "gcc_pdm2_clk",
1865                         .parent_names = (const char *[]) {
1866                                 "pdm2_clk_src",
1867                         },
1868                         .num_parents = 1,
1869                         .flags = CLK_SET_RATE_PARENT,
1870                         .ops = &clk_branch2_ops,
1871                 },
1872         },
1873 };
1874
1875 static struct clk_branch gcc_sdcc1_apps_clk = {
1876         .halt_reg = 0x04c4,
1877         .clkr = {
1878                 .enable_reg = 0x04c4,
1879                 .enable_mask = BIT(0),
1880                 .hw.init = &(struct clk_init_data)
1881                 {
1882                         .name = "gcc_sdcc1_apps_clk",
1883                         .parent_names = (const char *[]) {
1884                                 "sdcc1_apps_clk_src",
1885                         },
1886                         .num_parents = 1,
1887                         .flags = CLK_SET_RATE_PARENT,
1888                         .ops = &clk_branch2_ops,
1889                 },
1890         },
1891 };
1892
1893 static struct clk_branch gcc_sdcc1_ahb_clk = {
1894         .halt_reg = 0x04c8,
1895         .clkr = {
1896                 .enable_reg = 0x04c8,
1897                 .enable_mask = BIT(0),
1898                 .hw.init = &(struct clk_init_data)
1899                 {
1900                         .name = "gcc_sdcc1_ahb_clk",
1901                         .parent_names = (const char *[]){
1902                                 "periph_noc_clk_src",
1903                         },
1904                         .num_parents = 1,
1905                         .ops = &clk_branch2_ops,
1906                 },
1907         },
1908 };
1909
1910 static struct clk_branch gcc_sdcc2_apps_clk = {
1911         .halt_reg = 0x0504,
1912         .clkr = {
1913                 .enable_reg = 0x0504,
1914                 .enable_mask = BIT(0),
1915                 .hw.init = &(struct clk_init_data)
1916                 {
1917                         .name = "gcc_sdcc2_apps_clk",
1918                         .parent_names = (const char *[]) {
1919                                 "sdcc2_apps_clk_src",
1920                         },
1921                         .num_parents = 1,
1922                         .flags = CLK_SET_RATE_PARENT,
1923                         .ops = &clk_branch2_ops,
1924                 },
1925         },
1926 };
1927
1928 static struct clk_branch gcc_sdcc3_apps_clk = {
1929         .halt_reg = 0x0544,
1930         .clkr = {
1931                 .enable_reg = 0x0544,
1932                 .enable_mask = BIT(0),
1933                 .hw.init = &(struct clk_init_data)
1934                 {
1935                         .name = "gcc_sdcc3_apps_clk",
1936                         .parent_names = (const char *[]) {
1937                                 "sdcc3_apps_clk_src",
1938                         },
1939                         .num_parents = 1,
1940                         .flags = CLK_SET_RATE_PARENT,
1941                         .ops = &clk_branch2_ops,
1942                 },
1943         },
1944 };
1945
1946 static struct clk_branch gcc_sdcc4_apps_clk = {
1947         .halt_reg = 0x0584,
1948         .clkr = {
1949                 .enable_reg = 0x0584,
1950                 .enable_mask = BIT(0),
1951                 .hw.init = &(struct clk_init_data)
1952                 {
1953                         .name = "gcc_sdcc4_apps_clk",
1954                         .parent_names = (const char *[]) {
1955                                 "sdcc4_apps_clk_src",
1956                         },
1957                         .num_parents = 1,
1958                         .flags = CLK_SET_RATE_PARENT,
1959                         .ops = &clk_branch2_ops,
1960                 },
1961         },
1962 };
1963
1964 static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
1965         .halt_reg = 0x1d7c,
1966         .clkr = {
1967                 .enable_reg = 0x1d7c,
1968                 .enable_mask = BIT(0),
1969                 .hw.init = &(struct clk_init_data)
1970                 {
1971                         .name = "gcc_sys_noc_ufs_axi_clk",
1972                         .parent_names = (const char *[]) {
1973                                 "ufs_axi_clk_src",
1974                         },
1975                         .num_parents = 1,
1976                         .flags = CLK_SET_RATE_PARENT,
1977                         .ops = &clk_branch2_ops,
1978                 },
1979         },
1980 };
1981
1982 static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
1983         .halt_reg = 0x03fc,
1984         .clkr = {
1985                 .enable_reg = 0x03fc,
1986                 .enable_mask = BIT(0),
1987                 .hw.init = &(struct clk_init_data)
1988                 {
1989                         .name = "gcc_sys_noc_usb3_axi_clk",
1990                         .parent_names = (const char *[]) {
1991                                 "usb30_master_clk_src",
1992                         },
1993                         .num_parents = 1,
1994                         .flags = CLK_SET_RATE_PARENT,
1995                         .ops = &clk_branch2_ops,
1996                 },
1997         },
1998 };
1999
2000 static struct clk_branch gcc_tsif_ref_clk = {
2001         .halt_reg = 0x0d88,
2002         .clkr = {
2003                 .enable_reg = 0x0d88,
2004                 .enable_mask = BIT(0),
2005                 .hw.init = &(struct clk_init_data)
2006                 {
2007                         .name = "gcc_tsif_ref_clk",
2008                         .parent_names = (const char *[]) {
2009                                 "tsif_ref_clk_src",
2010                         },
2011                         .num_parents = 1,
2012                         .flags = CLK_SET_RATE_PARENT,
2013                         .ops = &clk_branch2_ops,
2014                 },
2015         },
2016 };
2017
2018 static struct clk_branch gcc_ufs_axi_clk = {
2019         .halt_reg = 0x1d48,
2020         .clkr = {
2021                 .enable_reg = 0x1d48,
2022                 .enable_mask = BIT(0),
2023                 .hw.init = &(struct clk_init_data)
2024                 {
2025                         .name = "gcc_ufs_axi_clk",
2026                         .parent_names = (const char *[]) {
2027                                 "ufs_axi_clk_src",
2028                         },
2029                         .num_parents = 1,
2030                         .flags = CLK_SET_RATE_PARENT,
2031                         .ops = &clk_branch2_ops,
2032                 },
2033         },
2034 };
2035
2036 static struct clk_branch gcc_ufs_rx_cfg_clk = {
2037         .halt_reg = 0x1d54,
2038         .clkr = {
2039                 .enable_reg = 0x1d54,
2040                 .enable_mask = BIT(0),
2041                 .hw.init = &(struct clk_init_data)
2042                 {
2043                         .name = "gcc_ufs_rx_cfg_clk",
2044                         .parent_names = (const char *[]) {
2045                                 "ufs_axi_clk_src",
2046                         },
2047                         .num_parents = 1,
2048                         .flags = CLK_SET_RATE_PARENT,
2049                         .ops = &clk_branch2_ops,
2050                 },
2051         },
2052 };
2053
2054 static struct clk_branch gcc_ufs_tx_cfg_clk = {
2055         .halt_reg = 0x1d50,
2056         .clkr = {
2057                 .enable_reg = 0x1d50,
2058                 .enable_mask = BIT(0),
2059                 .hw.init = &(struct clk_init_data)
2060                 {
2061                         .name = "gcc_ufs_tx_cfg_clk",
2062                         .parent_names = (const char *[]) {
2063                                 "ufs_axi_clk_src",
2064                         },
2065                         .num_parents = 1,
2066                         .flags = CLK_SET_RATE_PARENT,
2067                         .ops = &clk_branch2_ops,
2068                 },
2069         },
2070 };
2071
2072 static struct clk_branch gcc_usb30_master_clk = {
2073         .halt_reg = 0x03c8,
2074         .clkr = {
2075                 .enable_reg = 0x03c8,
2076                 .enable_mask = BIT(0),
2077                 .hw.init = &(struct clk_init_data)
2078                 {
2079                         .name = "gcc_usb30_master_clk",
2080                         .parent_names = (const char *[]) {
2081                                 "usb30_master_clk_src",
2082                         },
2083                         .num_parents = 1,
2084                         .flags = CLK_SET_RATE_PARENT,
2085                         .ops = &clk_branch2_ops,
2086                 },
2087         },
2088 };
2089
2090 static struct clk_branch gcc_usb30_mock_utmi_clk = {
2091         .halt_reg = 0x03d0,
2092         .clkr = {
2093                 .enable_reg = 0x03d0,
2094                 .enable_mask = BIT(0),
2095                 .hw.init = &(struct clk_init_data)
2096                 {
2097                         .name = "gcc_usb30_mock_utmi_clk",
2098                         .parent_names = (const char *[]) {
2099                                 "usb30_mock_utmi_clk_src",
2100                         },
2101                         .num_parents = 1,
2102                         .flags = CLK_SET_RATE_PARENT,
2103                         .ops = &clk_branch2_ops,
2104                 },
2105         },
2106 };
2107
2108 static struct clk_branch gcc_usb3_phy_aux_clk = {
2109         .halt_reg = 0x1408,
2110         .clkr = {
2111                 .enable_reg = 0x1408,
2112                 .enable_mask = BIT(0),
2113                 .hw.init = &(struct clk_init_data)
2114                 {
2115                         .name = "gcc_usb3_phy_aux_clk",
2116                         .parent_names = (const char *[]) {
2117                                 "usb3_phy_aux_clk_src",
2118                         },
2119                         .num_parents = 1,
2120                         .flags = CLK_SET_RATE_PARENT,
2121                         .ops = &clk_branch2_ops,
2122                 },
2123         },
2124 };
2125
2126 static struct clk_branch gcc_usb_hs_system_clk = {
2127         .halt_reg = 0x0484,
2128         .clkr = {
2129                 .enable_reg = 0x0484,
2130                 .enable_mask = BIT(0),
2131                 .hw.init = &(struct clk_init_data)
2132                 {
2133                         .name = "gcc_usb_hs_system_clk",
2134                         .parent_names = (const char *[]) {
2135                                 "usb_hs_system_clk_src",
2136                         },
2137                         .num_parents = 1,
2138                         .flags = CLK_SET_RATE_PARENT,
2139                         .ops = &clk_branch2_ops,
2140                 },
2141         },
2142 };
2143
2144 static struct clk_regmap *gcc_msm8994_clocks[] = {
2145         [GPLL0_EARLY] = &gpll0_early.clkr,
2146         [GPLL0] = &gpll0.clkr,
2147         [GPLL4_EARLY] = &gpll4_early.clkr,
2148         [GPLL4] = &gpll4.clkr,
2149         [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2150         [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2151         [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2152         [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2153         [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2154         [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2155         [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2156         [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2157         [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2158         [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2159         [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2160         [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2161         [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2162         [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2163         [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2164         [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2165         [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2166         [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2167         [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2168         [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2169         [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2170         [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2171         [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2172         [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2173         [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2174         [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2175         [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2176         [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2177         [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2178         [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2179         [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2180         [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2181         [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2182         [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2183         [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2184         [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2185         [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2186         [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2187         [GP1_CLK_SRC] = &gp1_clk_src.clkr,
2188         [GP2_CLK_SRC] = &gp2_clk_src.clkr,
2189         [GP3_CLK_SRC] = &gp3_clk_src.clkr,
2190         [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2191         [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2192         [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2193         [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2194         [PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2195         [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2196         [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2197         [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2198         [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2199         [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2200         [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2201         [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2202         [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2203         [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2204         [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2205         [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2206         [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2207         [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2208         [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2209         [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2210         [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2211         [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2212         [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2213         [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2214         [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2215         [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2216         [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2217         [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2218         [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2219         [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2220         [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2221         [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2222         [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2223         [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2224         [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2225         [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2226         [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2227         [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2228         [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2229         [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2230         [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2231         [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2232         [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2233         [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2234         [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2235         [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2236         [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2237         [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2238         [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2239         [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2240         [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2241         [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2242         [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2243         [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2244         [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
2245         [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
2246         [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
2247         [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
2248         [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
2249         [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
2250         [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
2251         [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
2252         [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2253         [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
2254         [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2255         [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
2256         [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
2257         [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2258         [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
2259         [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
2260         [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2261         [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
2262         [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2263         [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
2264 };
2265
2266 static const struct regmap_config gcc_msm8994_regmap_config = {
2267         .reg_bits       = 32,
2268         .reg_stride     = 4,
2269         .val_bits       = 32,
2270         .max_register   = 0x2000,
2271         .fast_io        = true,
2272 };
2273
2274 static const struct qcom_cc_desc gcc_msm8994_desc = {
2275         .config = &gcc_msm8994_regmap_config,
2276         .clks = gcc_msm8994_clocks,
2277         .num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
2278 };
2279
2280 static const struct of_device_id gcc_msm8994_match_table[] = {
2281         { .compatible = "qcom,gcc-msm8994" },
2282         {}
2283 };
2284 MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2285
2286 static int gcc_msm8994_probe(struct platform_device *pdev)
2287 {
2288         struct device *dev = &pdev->dev;
2289         struct clk *clk;
2290
2291         clk = devm_clk_register(dev, &xo.hw);
2292         if (IS_ERR(clk))
2293                 return PTR_ERR(clk);
2294
2295         return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2296 }
2297
2298 static struct platform_driver gcc_msm8994_driver = {
2299         .probe          = gcc_msm8994_probe,
2300         .driver         = {
2301                 .name   = "gcc-msm8994",
2302                 .of_match_table = gcc_msm8994_match_table,
2303         },
2304 };
2305
2306 static int __init gcc_msm8994_init(void)
2307 {
2308         return platform_driver_register(&gcc_msm8994_driver);
2309 }
2310 core_initcall(gcc_msm8994_init);
2311
2312 static void __exit gcc_msm8994_exit(void)
2313 {
2314         platform_driver_unregister(&gcc_msm8994_driver);
2315 }
2316 module_exit(gcc_msm8994_exit);
2317
2318 MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2319 MODULE_LICENSE("GPL v2");
2320 MODULE_ALIAS("platform:gcc-msm8994");