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