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