Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
[platform/kernel/linux-rpi.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/clk-provider.h>
6 #include <linux/kernel.h>
7 #include <linux/init.h>
8 #include <linux/err.h>
9 #include <linux/ctype.h>
10 #include <linux/io.h>
11 #include <linux/of.h>
12 #include <linux/of_device.h>
13 #include <linux/platform_device.h>
14 #include <linux/module.h>
15 #include <linux/regmap.h>
16
17 #include <dt-bindings/clock/qcom,gcc-msm8994.h>
18
19 #include "common.h"
20 #include "clk-regmap.h"
21 #include "clk-alpha-pll.h"
22 #include "clk-rcg.h"
23 #include "clk-branch.h"
24 #include "reset.h"
25 #include "gdsc.h"
26
27 enum {
28         P_XO,
29         P_GPLL0,
30         P_GPLL4,
31 };
32
33 static struct clk_alpha_pll gpll0_early = {
34         .offset = 0,
35         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
36         .clkr = {
37                 .enable_reg = 0x1480,
38                 .enable_mask = BIT(0),
39                 .hw.init = &(struct clk_init_data){
40                         .name = "gpll0_early",
41                         .parent_data = &(const struct clk_parent_data){
42                                 .fw_name = "xo",
43                         },
44                         .num_parents = 1,
45                         .ops = &clk_alpha_pll_ops,
46                 },
47         },
48 };
49
50 static struct clk_alpha_pll_postdiv gpll0 = {
51         .offset = 0,
52         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
53         .clkr.hw.init = &(struct clk_init_data){
54                 .name = "gpll0",
55                 .parent_names = (const char *[]) { "gpll0_early" },
56                 .num_parents = 1,
57                 .ops = &clk_alpha_pll_postdiv_ops,
58         },
59 };
60
61 static struct clk_alpha_pll gpll4_early = {
62         .offset = 0x1dc0,
63         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
64         .clkr = {
65                 .enable_reg = 0x1480,
66                 .enable_mask = BIT(4),
67                 .hw.init = &(struct clk_init_data){
68                         .name = "gpll4_early",
69                         .parent_data = &(const struct clk_parent_data){
70                                 .fw_name = "xo",
71                         },
72                         .num_parents = 1,
73                         .ops = &clk_alpha_pll_ops,
74                 },
75         },
76 };
77
78 static struct clk_alpha_pll_postdiv gpll4 = {
79         .offset = 0x1dc0,
80         .width = 4,
81         .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
82         .clkr.hw.init = &(struct clk_init_data){
83                 .name = "gpll4",
84                 .parent_names = (const char *[]) { "gpll4_early" },
85                 .num_parents = 1,
86                 .ops = &clk_alpha_pll_postdiv_ops,
87         },
88 };
89
90 static const struct parent_map gcc_xo_gpll0_map[] = {
91         { P_XO, 0 },
92         { P_GPLL0, 1 },
93 };
94
95 static const struct clk_parent_data gcc_xo_gpll0[] = {
96         { .fw_name = "xo" },
97         { .hw = &gpll0.clkr.hw },
98 };
99
100 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
101         { P_XO, 0 },
102         { P_GPLL0, 1 },
103         { P_GPLL4, 5 },
104 };
105
106 static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
107         { .fw_name = "xo" },
108         { .hw = &gpll0.clkr.hw },
109         { .hw = &gpll4.clkr.hw },
110 };
111
112 static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
113         F(50000000, P_GPLL0, 12, 0, 0),
114         F(100000000, P_GPLL0, 6, 0, 0),
115         F(150000000, P_GPLL0, 4, 0, 0),
116         F(171430000, P_GPLL0, 3.5, 0, 0),
117         F(200000000, P_GPLL0, 3, 0, 0),
118         F(240000000, P_GPLL0, 2.5, 0, 0),
119         { }
120 };
121
122 static struct clk_rcg2 ufs_axi_clk_src = {
123         .cmd_rcgr = 0x1d68,
124         .mnd_width = 8,
125         .hid_width = 5,
126         .parent_map = gcc_xo_gpll0_map,
127         .freq_tbl = ftbl_ufs_axi_clk_src,
128         .clkr.hw.init = &(struct clk_init_data){
129                 .name = "ufs_axi_clk_src",
130                 .parent_data = gcc_xo_gpll0,
131                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
132                 .ops = &clk_rcg2_ops,
133         },
134 };
135
136 static struct freq_tbl ftbl_usb30_master_clk_src[] = {
137         F(19200000, P_XO, 1, 0, 0),
138         F(125000000, P_GPLL0, 1, 5, 24),
139         { }
140 };
141
142 static struct clk_rcg2 usb30_master_clk_src = {
143         .cmd_rcgr = 0x03d4,
144         .mnd_width = 8,
145         .hid_width = 5,
146         .parent_map = gcc_xo_gpll0_map,
147         .freq_tbl = ftbl_usb30_master_clk_src,
148         .clkr.hw.init = &(struct clk_init_data){
149                 .name = "usb30_master_clk_src",
150                 .parent_data = gcc_xo_gpll0,
151                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
152                 .ops = &clk_rcg2_ops,
153         },
154 };
155
156 static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
157         F(19200000, P_XO, 1, 0, 0),
158         F(50000000, P_GPLL0, 12, 0, 0),
159         { }
160 };
161
162 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
163         .cmd_rcgr = 0x0660,
164         .hid_width = 5,
165         .parent_map = gcc_xo_gpll0_map,
166         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
167         .clkr.hw.init = &(struct clk_init_data){
168                 .name = "blsp1_qup1_i2c_apps_clk_src",
169                 .parent_data = gcc_xo_gpll0,
170                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
171                 .ops = &clk_rcg2_ops,
172         },
173 };
174
175 static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = {
176         F(960000, P_XO, 10, 1, 2),
177         F(4800000, P_XO, 4, 0, 0),
178         F(9600000, P_XO, 2, 0, 0),
179         F(15000000, P_GPLL0, 10, 1, 4),
180         F(19200000, P_XO, 1, 0, 0),
181         F(24000000, P_GPLL0, 12.5, 1, 2),
182         F(25000000, P_GPLL0, 12, 1, 2),
183         F(48000000, P_GPLL0, 12.5, 0, 0),
184         F(50000000, P_GPLL0, 12, 0, 0),
185         { }
186 };
187
188 static struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src_8992[] = {
189         F(960000, P_XO, 10, 1, 2),
190         F(4800000, P_XO, 4, 0, 0),
191         F(9600000, P_XO, 2, 0, 0),
192         F(15000000, P_GPLL0, 10, 1, 4),
193         F(19200000, P_XO, 1, 0, 0),
194         F(25000000, P_GPLL0, 12, 1, 2),
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_blsp1_qup1_spi_apps_clk_src,
205         .clkr.hw.init = &(struct clk_init_data){
206                 .name = "blsp1_qup1_spi_apps_clk_src",
207                 .parent_data = gcc_xo_gpll0,
208                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
209                 .ops = &clk_rcg2_ops,
210         },
211 };
212
213 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
214         .cmd_rcgr = 0x06e0,
215         .hid_width = 5,
216         .parent_map = gcc_xo_gpll0_map,
217         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
218         .clkr.hw.init = &(struct clk_init_data){
219                 .name = "blsp1_qup2_i2c_apps_clk_src",
220                 .parent_data = gcc_xo_gpll0,
221                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
222                 .ops = &clk_rcg2_ops,
223         },
224 };
225
226 static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = {
227         F(960000, P_XO, 10, 1, 2),
228         F(4800000, P_XO, 4, 0, 0),
229         F(9600000, P_XO, 2, 0, 0),
230         F(15000000, P_GPLL0, 10, 1, 4),
231         F(19200000, P_XO, 1, 0, 0),
232         F(24000000, P_GPLL0, 12.5, 1, 2),
233         F(25000000, P_GPLL0, 12, 1, 2),
234         F(42860000, P_GPLL0, 14, 0, 0),
235         F(46150000, P_GPLL0, 13, 0, 0),
236         { }
237 };
238
239 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
240         .cmd_rcgr = 0x06cc,
241         .mnd_width = 8,
242         .hid_width = 5,
243         .parent_map = gcc_xo_gpll0_map,
244         .freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src,
245         .clkr.hw.init = &(struct clk_init_data){
246                 .name = "blsp1_qup2_spi_apps_clk_src",
247                 .parent_data = gcc_xo_gpll0,
248                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
249                 .ops = &clk_rcg2_ops,
250         },
251 };
252
253 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
254         .cmd_rcgr = 0x0760,
255         .hid_width = 5,
256         .parent_map = gcc_xo_gpll0_map,
257         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
258         .clkr.hw.init = &(struct clk_init_data){
259                 .name = "blsp1_qup3_i2c_apps_clk_src",
260                 .parent_data = gcc_xo_gpll0,
261                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
262                 .ops = &clk_rcg2_ops,
263         },
264 };
265
266 static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = {
267         F(960000, P_XO, 10, 1, 2),
268         F(4800000, P_XO, 4, 0, 0),
269         F(9600000, P_XO, 2, 0, 0),
270         F(15000000, P_GPLL0, 10, 1, 4),
271         F(19200000, P_XO, 1, 0, 0),
272         F(24000000, P_GPLL0, 12.5, 1, 2),
273         F(25000000, P_GPLL0, 12, 1, 2),
274         F(42860000, P_GPLL0, 14, 0, 0),
275         F(44440000, P_GPLL0, 13.5, 0, 0),
276         { }
277 };
278
279 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
280         .cmd_rcgr = 0x074c,
281         .mnd_width = 8,
282         .hid_width = 5,
283         .parent_map = gcc_xo_gpll0_map,
284         .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
285         .clkr.hw.init = &(struct clk_init_data){
286                 .name = "blsp1_qup3_spi_apps_clk_src",
287                 .parent_data = gcc_xo_gpll0,
288                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
289                 .ops = &clk_rcg2_ops,
290         },
291 };
292
293 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
294         .cmd_rcgr = 0x07e0,
295         .hid_width = 5,
296         .parent_map = gcc_xo_gpll0_map,
297         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
298         .clkr.hw.init = &(struct clk_init_data){
299                 .name = "blsp1_qup4_i2c_apps_clk_src",
300                 .parent_data = gcc_xo_gpll0,
301                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
302                 .ops = &clk_rcg2_ops,
303         },
304 };
305
306 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
307         .cmd_rcgr = 0x07cc,
308         .mnd_width = 8,
309         .hid_width = 5,
310         .parent_map = gcc_xo_gpll0_map,
311         .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
312         .clkr.hw.init = &(struct clk_init_data){
313                 .name = "blsp1_qup4_spi_apps_clk_src",
314                 .parent_data = gcc_xo_gpll0,
315                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
316                 .ops = &clk_rcg2_ops,
317         },
318 };
319
320 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
321         .cmd_rcgr = 0x0860,
322         .hid_width = 5,
323         .parent_map = gcc_xo_gpll0_map,
324         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
325         .clkr.hw.init = &(struct clk_init_data){
326                 .name = "blsp1_qup5_i2c_apps_clk_src",
327                 .parent_data = gcc_xo_gpll0,
328                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
329                 .ops = &clk_rcg2_ops,
330         },
331 };
332
333 static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = {
334         F(960000, P_XO, 10, 1, 2),
335         F(4800000, P_XO, 4, 0, 0),
336         F(9600000, P_XO, 2, 0, 0),
337         F(15000000, P_GPLL0, 10, 1, 4),
338         F(19200000, P_XO, 1, 0, 0),
339         F(24000000, P_GPLL0, 12.5, 1, 2),
340         F(25000000, P_GPLL0, 12, 1, 2),
341         F(40000000, P_GPLL0, 15, 0, 0),
342         F(42860000, P_GPLL0, 14, 0, 0),
343         { }
344 };
345
346 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
347         .cmd_rcgr = 0x084c,
348         .mnd_width = 8,
349         .hid_width = 5,
350         .parent_map = gcc_xo_gpll0_map,
351         .freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src,
352         .clkr.hw.init = &(struct clk_init_data){
353                 .name = "blsp1_qup5_spi_apps_clk_src",
354                 .parent_data = gcc_xo_gpll0,
355                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
356                 .ops = &clk_rcg2_ops,
357         },
358 };
359
360 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
361         .cmd_rcgr = 0x08e0,
362         .hid_width = 5,
363         .parent_map = gcc_xo_gpll0_map,
364         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
365         .clkr.hw.init = &(struct clk_init_data){
366                 .name = "blsp1_qup6_i2c_apps_clk_src",
367                 .parent_data = gcc_xo_gpll0,
368                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
369                 .ops = &clk_rcg2_ops,
370         },
371 };
372
373 static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = {
374         F(960000, P_XO, 10, 1, 2),
375         F(4800000, P_XO, 4, 0, 0),
376         F(9600000, P_XO, 2, 0, 0),
377         F(15000000, P_GPLL0, 10, 1, 4),
378         F(19200000, P_XO, 1, 0, 0),
379         F(24000000, P_GPLL0, 12.5, 1, 2),
380         F(27906976, P_GPLL0, 1, 2, 43),
381         F(41380000, P_GPLL0, 15, 0, 0),
382         F(42860000, P_GPLL0, 14, 0, 0),
383         { }
384 };
385
386 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
387         .cmd_rcgr = 0x08cc,
388         .mnd_width = 8,
389         .hid_width = 5,
390         .parent_map = gcc_xo_gpll0_map,
391         .freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src,
392         .clkr.hw.init = &(struct clk_init_data){
393                 .name = "blsp1_qup6_spi_apps_clk_src",
394                 .parent_data = gcc_xo_gpll0,
395                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
396                 .ops = &clk_rcg2_ops,
397         },
398 };
399
400 static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
401         F(3686400, P_GPLL0, 1, 96, 15625),
402         F(7372800, P_GPLL0, 1, 192, 15625),
403         F(14745600, P_GPLL0, 1, 384, 15625),
404         F(16000000, P_GPLL0, 5, 2, 15),
405         F(19200000, P_XO, 1, 0, 0),
406         F(24000000, P_GPLL0, 5, 1, 5),
407         F(32000000, P_GPLL0, 1, 4, 75),
408         F(40000000, P_GPLL0, 15, 0, 0),
409         F(46400000, P_GPLL0, 1, 29, 375),
410         F(48000000, P_GPLL0, 12.5, 0, 0),
411         F(51200000, P_GPLL0, 1, 32, 375),
412         F(56000000, P_GPLL0, 1, 7, 75),
413         F(58982400, P_GPLL0, 1, 1536, 15625),
414         F(60000000, P_GPLL0, 10, 0, 0),
415         F(63160000, P_GPLL0, 9.5, 0, 0),
416         { }
417 };
418
419 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
420         .cmd_rcgr = 0x068c,
421         .mnd_width = 16,
422         .hid_width = 5,
423         .parent_map = gcc_xo_gpll0_map,
424         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
425         .clkr.hw.init = &(struct clk_init_data){
426                 .name = "blsp1_uart1_apps_clk_src",
427                 .parent_data = gcc_xo_gpll0,
428                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
429                 .ops = &clk_rcg2_ops,
430         },
431 };
432
433 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
434         .cmd_rcgr = 0x070c,
435         .mnd_width = 16,
436         .hid_width = 5,
437         .parent_map = gcc_xo_gpll0_map,
438         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
439         .clkr.hw.init = &(struct clk_init_data){
440                 .name = "blsp1_uart2_apps_clk_src",
441                 .parent_data = gcc_xo_gpll0,
442                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
443                 .ops = &clk_rcg2_ops,
444         },
445 };
446
447 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
448         .cmd_rcgr = 0x078c,
449         .mnd_width = 16,
450         .hid_width = 5,
451         .parent_map = gcc_xo_gpll0_map,
452         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
453         .clkr.hw.init = &(struct clk_init_data){
454                 .name = "blsp1_uart3_apps_clk_src",
455                 .parent_data = gcc_xo_gpll0,
456                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
457                 .ops = &clk_rcg2_ops,
458         },
459 };
460
461 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
462         .cmd_rcgr = 0x080c,
463         .mnd_width = 16,
464         .hid_width = 5,
465         .parent_map = gcc_xo_gpll0_map,
466         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
467         .clkr.hw.init = &(struct clk_init_data){
468                 .name = "blsp1_uart4_apps_clk_src",
469                 .parent_data = gcc_xo_gpll0,
470                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
471                 .ops = &clk_rcg2_ops,
472         },
473 };
474
475 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
476         .cmd_rcgr = 0x088c,
477         .mnd_width = 16,
478         .hid_width = 5,
479         .parent_map = gcc_xo_gpll0_map,
480         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
481         .clkr.hw.init = &(struct clk_init_data){
482                 .name = "blsp1_uart5_apps_clk_src",
483                 .parent_data = gcc_xo_gpll0,
484                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
485                 .ops = &clk_rcg2_ops,
486         },
487 };
488
489 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
490         .cmd_rcgr = 0x090c,
491         .mnd_width = 16,
492         .hid_width = 5,
493         .parent_map = gcc_xo_gpll0_map,
494         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
495         .clkr.hw.init = &(struct clk_init_data){
496                 .name = "blsp1_uart6_apps_clk_src",
497                 .parent_data = gcc_xo_gpll0,
498                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
499                 .ops = &clk_rcg2_ops,
500         },
501 };
502
503 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
504         .cmd_rcgr = 0x09a0,
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                 .name = "blsp2_qup1_i2c_apps_clk_src",
510                 .parent_data = gcc_xo_gpll0,
511                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
512                 .ops = &clk_rcg2_ops,
513         },
514 };
515
516 static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = {
517         F(960000, P_XO, 10, 1, 2),
518         F(4800000, P_XO, 4, 0, 0),
519         F(9600000, P_XO, 2, 0, 0),
520         F(15000000, P_GPLL0, 10, 1, 4),
521         F(19200000, P_XO, 1, 0, 0),
522         F(24000000, P_GPLL0, 12.5, 1, 2),
523         F(25000000, P_GPLL0, 12, 1, 2),
524         F(42860000, P_GPLL0, 14, 0, 0),
525         F(44440000, P_GPLL0, 13.5, 0, 0),
526         { }
527 };
528
529 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
530         .cmd_rcgr = 0x098c,
531         .mnd_width = 8,
532         .hid_width = 5,
533         .parent_map = gcc_xo_gpll0_map,
534         .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
535         .clkr.hw.init = &(struct clk_init_data){
536                 .name = "blsp2_qup1_spi_apps_clk_src",
537                 .parent_data = gcc_xo_gpll0,
538                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
539                 .ops = &clk_rcg2_ops,
540         },
541 };
542
543 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
544         .cmd_rcgr = 0x0a20,
545         .hid_width = 5,
546         .parent_map = gcc_xo_gpll0_map,
547         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
548         .clkr.hw.init = &(struct clk_init_data){
549                 .name = "blsp2_qup2_i2c_apps_clk_src",
550                 .parent_data = gcc_xo_gpll0,
551                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
552                 .ops = &clk_rcg2_ops,
553         },
554 };
555
556 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
557         .cmd_rcgr = 0x0a0c,
558         .mnd_width = 8,
559         .hid_width = 5,
560         .parent_map = gcc_xo_gpll0_map,
561         .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
562         .clkr.hw.init = &(struct clk_init_data){
563                 .name = "blsp2_qup2_spi_apps_clk_src",
564                 .parent_data = gcc_xo_gpll0,
565                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
566                 .ops = &clk_rcg2_ops,
567         },
568 };
569
570 static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = {
571         F(960000, P_XO, 10, 1, 2),
572         F(4800000, P_XO, 4, 0, 0),
573         F(9600000, P_XO, 2, 0, 0),
574         F(15000000, P_GPLL0, 10, 1, 4),
575         F(19200000, P_XO, 1, 0, 0),
576         F(24000000, P_GPLL0, 12.5, 1, 2),
577         F(25000000, P_GPLL0, 12, 1, 2),
578         F(42860000, P_GPLL0, 14, 0, 0),
579         F(48000000, P_GPLL0, 12.5, 0, 0),
580         { }
581 };
582
583 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
584         .cmd_rcgr = 0x0aa0,
585         .hid_width = 5,
586         .parent_map = gcc_xo_gpll0_map,
587         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
588         .clkr.hw.init = &(struct clk_init_data){
589                 .name = "blsp2_qup3_i2c_apps_clk_src",
590                 .parent_data = gcc_xo_gpll0,
591                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
592                 .ops = &clk_rcg2_ops,
593         },
594 };
595
596 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
597         .cmd_rcgr = 0x0a8c,
598         .mnd_width = 8,
599         .hid_width = 5,
600         .parent_map = gcc_xo_gpll0_map,
601         .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
602         .clkr.hw.init = &(struct clk_init_data){
603                 .name = "blsp2_qup3_spi_apps_clk_src",
604                 .parent_data = gcc_xo_gpll0,
605                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
606                 .ops = &clk_rcg2_ops,
607         },
608 };
609
610 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
611         .cmd_rcgr = 0x0b20,
612         .hid_width = 5,
613         .parent_map = gcc_xo_gpll0_map,
614         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
615         .clkr.hw.init = &(struct clk_init_data){
616                 .name = "blsp2_qup4_i2c_apps_clk_src",
617                 .parent_data = gcc_xo_gpll0,
618                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
619                 .ops = &clk_rcg2_ops,
620         },
621 };
622
623 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
624         .cmd_rcgr = 0x0b0c,
625         .mnd_width = 8,
626         .hid_width = 5,
627         .parent_map = gcc_xo_gpll0_map,
628         .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
629         .clkr.hw.init = &(struct clk_init_data){
630                 .name = "blsp2_qup4_spi_apps_clk_src",
631                 .parent_data = gcc_xo_gpll0,
632                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
633                 .ops = &clk_rcg2_ops,
634         },
635 };
636
637 static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
638         .cmd_rcgr = 0x0ba0,
639         .hid_width = 5,
640         .parent_map = gcc_xo_gpll0_map,
641         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
642         .clkr.hw.init = &(struct clk_init_data){
643                 .name = "blsp2_qup5_i2c_apps_clk_src",
644                 .parent_data = gcc_xo_gpll0,
645                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
646                 .ops = &clk_rcg2_ops,
647         },
648 };
649
650 static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
651         .cmd_rcgr = 0x0b8c,
652         .mnd_width = 8,
653         .hid_width = 5,
654         .parent_map = gcc_xo_gpll0_map,
655         /* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */
656         .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
657         .clkr.hw.init = &(struct clk_init_data){
658                 .name = "blsp2_qup5_spi_apps_clk_src",
659                 .parent_data = gcc_xo_gpll0,
660                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
661                 .ops = &clk_rcg2_ops,
662         },
663 };
664
665 static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
666         .cmd_rcgr = 0x0c20,
667         .hid_width = 5,
668         .parent_map = gcc_xo_gpll0_map,
669         .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
670         .clkr.hw.init = &(struct clk_init_data){
671                 .name = "blsp2_qup6_i2c_apps_clk_src",
672                 .parent_data = gcc_xo_gpll0,
673                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
674                 .ops = &clk_rcg2_ops,
675         },
676 };
677
678 static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = {
679         F(960000, P_XO, 10, 1, 2),
680         F(4800000, P_XO, 4, 0, 0),
681         F(9600000, P_XO, 2, 0, 0),
682         F(15000000, P_GPLL0, 10, 1, 4),
683         F(19200000, P_XO, 1, 0, 0),
684         F(24000000, P_GPLL0, 12.5, 1, 2),
685         F(25000000, P_GPLL0, 12, 1, 2),
686         F(44440000, P_GPLL0, 13.5, 0, 0),
687         F(48000000, P_GPLL0, 12.5, 0, 0),
688         { }
689 };
690
691 static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
692         .cmd_rcgr = 0x0c0c,
693         .mnd_width = 8,
694         .hid_width = 5,
695         .parent_map = gcc_xo_gpll0_map,
696         .freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src,
697         .clkr.hw.init = &(struct clk_init_data){
698                 .name = "blsp2_qup6_spi_apps_clk_src",
699                 .parent_data = gcc_xo_gpll0,
700                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
701                 .ops = &clk_rcg2_ops,
702         },
703 };
704
705 static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
706         .cmd_rcgr = 0x09cc,
707         .mnd_width = 16,
708         .hid_width = 5,
709         .parent_map = gcc_xo_gpll0_map,
710         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
711         .clkr.hw.init = &(struct clk_init_data){
712                 .name = "blsp2_uart1_apps_clk_src",
713                 .parent_data = gcc_xo_gpll0,
714                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
715                 .ops = &clk_rcg2_ops,
716         },
717 };
718
719 static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
720         .cmd_rcgr = 0x0a4c,
721         .mnd_width = 16,
722         .hid_width = 5,
723         .parent_map = gcc_xo_gpll0_map,
724         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
725         .clkr.hw.init = &(struct clk_init_data){
726                 .name = "blsp2_uart2_apps_clk_src",
727                 .parent_data = gcc_xo_gpll0,
728                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
729                 .ops = &clk_rcg2_ops,
730         },
731 };
732
733 static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
734         .cmd_rcgr = 0x0acc,
735         .mnd_width = 16,
736         .hid_width = 5,
737         .parent_map = gcc_xo_gpll0_map,
738         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
739         .clkr.hw.init = &(struct clk_init_data){
740                 .name = "blsp2_uart3_apps_clk_src",
741                 .parent_data = gcc_xo_gpll0,
742                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
743                 .ops = &clk_rcg2_ops,
744         },
745 };
746
747 static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
748         .cmd_rcgr = 0x0b4c,
749         .mnd_width = 16,
750         .hid_width = 5,
751         .parent_map = gcc_xo_gpll0_map,
752         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
753         .clkr.hw.init = &(struct clk_init_data){
754                 .name = "blsp2_uart4_apps_clk_src",
755                 .parent_data = gcc_xo_gpll0,
756                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
757                 .ops = &clk_rcg2_ops,
758         },
759 };
760
761 static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
762         .cmd_rcgr = 0x0bcc,
763         .mnd_width = 16,
764         .hid_width = 5,
765         .parent_map = gcc_xo_gpll0_map,
766         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
767         .clkr.hw.init = &(struct clk_init_data){
768                 .name = "blsp2_uart5_apps_clk_src",
769                 .parent_data = gcc_xo_gpll0,
770                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
771                 .ops = &clk_rcg2_ops,
772         },
773 };
774
775 static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
776         .cmd_rcgr = 0x0c4c,
777         .mnd_width = 16,
778         .hid_width = 5,
779         .parent_map = gcc_xo_gpll0_map,
780         .freq_tbl = ftbl_blsp_uart_apps_clk_src,
781         .clkr.hw.init = &(struct clk_init_data){
782                 .name = "blsp2_uart6_apps_clk_src",
783                 .parent_data = gcc_xo_gpll0,
784                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
785                 .ops = &clk_rcg2_ops,
786         },
787 };
788
789 static struct freq_tbl ftbl_gp1_clk_src[] = {
790         F(19200000, P_XO, 1, 0, 0),
791         F(100000000, P_GPLL0, 6, 0, 0),
792         F(200000000, P_GPLL0, 3, 0, 0),
793         { }
794 };
795
796 static struct clk_rcg2 gp1_clk_src = {
797         .cmd_rcgr = 0x1904,
798         .mnd_width = 8,
799         .hid_width = 5,
800         .parent_map = gcc_xo_gpll0_map,
801         .freq_tbl = ftbl_gp1_clk_src,
802         .clkr.hw.init = &(struct clk_init_data){
803                 .name = "gp1_clk_src",
804                 .parent_data = gcc_xo_gpll0,
805                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
806                 .ops = &clk_rcg2_ops,
807         },
808 };
809
810 static struct freq_tbl ftbl_gp2_clk_src[] = {
811         F(19200000, P_XO, 1, 0, 0),
812         F(100000000, P_GPLL0, 6, 0, 0),
813         F(200000000, P_GPLL0, 3, 0, 0),
814         { }
815 };
816
817 static struct clk_rcg2 gp2_clk_src = {
818         .cmd_rcgr = 0x1944,
819         .mnd_width = 8,
820         .hid_width = 5,
821         .parent_map = gcc_xo_gpll0_map,
822         .freq_tbl = ftbl_gp2_clk_src,
823         .clkr.hw.init = &(struct clk_init_data){
824                 .name = "gp2_clk_src",
825                 .parent_data = gcc_xo_gpll0,
826                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
827                 .ops = &clk_rcg2_ops,
828         },
829 };
830
831 static struct freq_tbl ftbl_gp3_clk_src[] = {
832         F(19200000, P_XO, 1, 0, 0),
833         F(100000000, P_GPLL0, 6, 0, 0),
834         F(200000000, P_GPLL0, 3, 0, 0),
835         { }
836 };
837
838 static struct clk_rcg2 gp3_clk_src = {
839         .cmd_rcgr = 0x1984,
840         .mnd_width = 8,
841         .hid_width = 5,
842         .parent_map = gcc_xo_gpll0_map,
843         .freq_tbl = ftbl_gp3_clk_src,
844         .clkr.hw.init = &(struct clk_init_data){
845                 .name = "gp3_clk_src",
846                 .parent_data = gcc_xo_gpll0,
847                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
848                 .ops = &clk_rcg2_ops,
849         },
850 };
851
852 static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
853         F(1011000, P_XO, 1, 1, 19),
854         { }
855 };
856
857 static struct clk_rcg2 pcie_0_aux_clk_src = {
858         .cmd_rcgr = 0x1b00,
859         .mnd_width = 8,
860         .hid_width = 5,
861         .freq_tbl = ftbl_pcie_0_aux_clk_src,
862         .clkr.hw.init = &(struct clk_init_data){
863                 .name = "pcie_0_aux_clk_src",
864                 .parent_data = &(const struct clk_parent_data){
865                                 .fw_name = "xo",
866                 },
867                 .num_parents = 1,
868                 .ops = &clk_rcg2_ops,
869         },
870 };
871
872 static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
873         F(125000000, P_XO, 1, 0, 0),
874         { }
875 };
876
877 static struct clk_rcg2 pcie_0_pipe_clk_src = {
878         .cmd_rcgr = 0x1adc,
879         .hid_width = 5,
880         .freq_tbl = ftbl_pcie_pipe_clk_src,
881         .clkr.hw.init = &(struct clk_init_data){
882                 .name = "pcie_0_pipe_clk_src",
883                 .parent_data = &(const struct clk_parent_data){
884                                 .fw_name = "xo",
885                 },
886                 .num_parents = 1,
887                 .ops = &clk_rcg2_ops,
888         },
889 };
890
891 static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
892         F(1011000, P_XO, 1, 1, 19),
893         { }
894 };
895
896 static struct clk_rcg2 pcie_1_aux_clk_src = {
897         .cmd_rcgr = 0x1b80,
898         .mnd_width = 8,
899         .hid_width = 5,
900         .freq_tbl = ftbl_pcie_1_aux_clk_src,
901         .clkr.hw.init = &(struct clk_init_data){
902                 .name = "pcie_1_aux_clk_src",
903                 .parent_data = &(const struct clk_parent_data){
904                                 .fw_name = "xo",
905                 },
906                 .num_parents = 1,
907                 .ops = &clk_rcg2_ops,
908         },
909 };
910
911 static struct clk_rcg2 pcie_1_pipe_clk_src = {
912         .cmd_rcgr = 0x1b5c,
913         .hid_width = 5,
914         .freq_tbl = ftbl_pcie_pipe_clk_src,
915         .clkr.hw.init = &(struct clk_init_data){
916                 .name = "pcie_1_pipe_clk_src",
917                 .parent_data = &(const struct clk_parent_data){
918                                 .fw_name = "xo",
919                 },
920                 .num_parents = 1,
921                 .ops = &clk_rcg2_ops,
922         },
923 };
924
925 static struct freq_tbl ftbl_pdm2_clk_src[] = {
926         F(60000000, P_GPLL0, 10, 0, 0),
927         { }
928 };
929
930 static struct clk_rcg2 pdm2_clk_src = {
931         .cmd_rcgr = 0x0cd0,
932         .hid_width = 5,
933         .parent_map = gcc_xo_gpll0_map,
934         .freq_tbl = ftbl_pdm2_clk_src,
935         .clkr.hw.init = &(struct clk_init_data){
936                 .name = "pdm2_clk_src",
937                 .parent_data = gcc_xo_gpll0,
938                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
939                 .ops = &clk_rcg2_ops,
940         },
941 };
942
943 static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
944         F(144000, P_XO, 16, 3, 25),
945         F(400000, P_XO, 12, 1, 4),
946         F(20000000, P_GPLL0, 15, 1, 2),
947         F(25000000, P_GPLL0, 12, 1, 2),
948         F(50000000, P_GPLL0, 12, 0, 0),
949         F(100000000, P_GPLL0, 6, 0, 0),
950         F(192000000, P_GPLL4, 2, 0, 0),
951         F(384000000, P_GPLL4, 1, 0, 0),
952         { }
953 };
954
955 static struct freq_tbl ftbl_sdcc1_apps_clk_src_8992[] = {
956         F(144000, P_XO, 16, 3, 25),
957         F(400000, P_XO, 12, 1, 4),
958         F(20000000, P_GPLL0, 15, 1, 2),
959         F(25000000, P_GPLL0, 12, 1, 2),
960         F(50000000, P_GPLL0, 12, 0, 0),
961         F(100000000, P_GPLL0, 6, 0, 0),
962         F(172000000, P_GPLL4, 2, 0, 0),
963         F(344000000, P_GPLL4, 1, 0, 0),
964         { }
965 };
966
967 static struct clk_rcg2 sdcc1_apps_clk_src = {
968         .cmd_rcgr = 0x04d0,
969         .mnd_width = 8,
970         .hid_width = 5,
971         .parent_map = gcc_xo_gpll0_gpll4_map,
972         .freq_tbl = ftbl_sdcc1_apps_clk_src,
973         .clkr.hw.init = &(struct clk_init_data){
974                 .name = "sdcc1_apps_clk_src",
975                 .parent_data = gcc_xo_gpll0_gpll4,
976                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
977                 .ops = &clk_rcg2_floor_ops,
978         },
979 };
980
981 static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
982         F(144000, P_XO, 16, 3, 25),
983         F(400000, P_XO, 12, 1, 4),
984         F(20000000, P_GPLL0, 15, 1, 2),
985         F(25000000, P_GPLL0, 12, 1, 2),
986         F(50000000, P_GPLL0, 12, 0, 0),
987         F(100000000, P_GPLL0, 6, 0, 0),
988         F(200000000, P_GPLL0, 3, 0, 0),
989         { }
990 };
991
992 static struct clk_rcg2 sdcc2_apps_clk_src = {
993         .cmd_rcgr = 0x0510,
994         .mnd_width = 8,
995         .hid_width = 5,
996         .parent_map = gcc_xo_gpll0_map,
997         .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
998         .clkr.hw.init = &(struct clk_init_data){
999                 .name = "sdcc2_apps_clk_src",
1000                 .parent_data = gcc_xo_gpll0,
1001                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1002                 .ops = &clk_rcg2_floor_ops,
1003         },
1004 };
1005
1006 static struct clk_rcg2 sdcc3_apps_clk_src = {
1007         .cmd_rcgr = 0x0550,
1008         .mnd_width = 8,
1009         .hid_width = 5,
1010         .parent_map = gcc_xo_gpll0_map,
1011         .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
1012         .clkr.hw.init = &(struct clk_init_data){
1013                 .name = "sdcc3_apps_clk_src",
1014                 .parent_data = gcc_xo_gpll0,
1015                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1016                 .ops = &clk_rcg2_floor_ops,
1017         },
1018 };
1019
1020 static struct clk_rcg2 sdcc4_apps_clk_src = {
1021         .cmd_rcgr = 0x0590,
1022         .mnd_width = 8,
1023         .hid_width = 5,
1024         .parent_map = gcc_xo_gpll0_map,
1025         .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
1026         .clkr.hw.init = &(struct clk_init_data){
1027                 .name = "sdcc4_apps_clk_src",
1028                 .parent_data = gcc_xo_gpll0,
1029                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1030                 .ops = &clk_rcg2_floor_ops,
1031         },
1032 };
1033
1034 static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
1035         F(105500, P_XO, 1, 1, 182),
1036         { }
1037 };
1038
1039 static struct clk_rcg2 tsif_ref_clk_src = {
1040         .cmd_rcgr = 0x0d90,
1041         .mnd_width = 8,
1042         .hid_width = 5,
1043         .freq_tbl = ftbl_tsif_ref_clk_src,
1044         .clkr.hw.init = &(struct clk_init_data){
1045                 .name = "tsif_ref_clk_src",
1046                 .parent_data = &(const struct clk_parent_data){
1047                                 .fw_name = "xo",
1048                 },
1049                 .num_parents = 1,
1050                 .ops = &clk_rcg2_ops,
1051         },
1052 };
1053
1054 static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
1055         F(19200000, P_XO, 1, 0, 0),
1056         F(60000000, P_GPLL0, 10, 0, 0),
1057         { }
1058 };
1059
1060 static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1061         .cmd_rcgr = 0x03e8,
1062         .hid_width = 5,
1063         .parent_map = gcc_xo_gpll0_map,
1064         .freq_tbl = ftbl_usb30_mock_utmi_clk_src,
1065         .clkr.hw.init = &(struct clk_init_data){
1066                 .name = "usb30_mock_utmi_clk_src",
1067                 .parent_data = gcc_xo_gpll0,
1068                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1069                 .ops = &clk_rcg2_ops,
1070         },
1071 };
1072
1073 static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1074         F(1200000, P_XO, 16, 0, 0),
1075         { }
1076 };
1077
1078 static struct clk_rcg2 usb3_phy_aux_clk_src = {
1079         .cmd_rcgr = 0x1414,
1080         .hid_width = 5,
1081         .freq_tbl = ftbl_usb3_phy_aux_clk_src,
1082         .clkr.hw.init = &(struct clk_init_data){
1083                 .name = "usb3_phy_aux_clk_src",
1084                 .parent_data = &(const struct clk_parent_data){
1085                                 .fw_name = "xo",
1086                 },
1087                 .num_parents = 1,
1088                 .ops = &clk_rcg2_ops,
1089         },
1090 };
1091
1092 static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1093         F(75000000, P_GPLL0, 8, 0, 0),
1094         { }
1095 };
1096
1097 static struct clk_rcg2 usb_hs_system_clk_src = {
1098         .cmd_rcgr = 0x0490,
1099         .hid_width = 5,
1100         .parent_map = gcc_xo_gpll0_map,
1101         .freq_tbl = ftbl_usb_hs_system_clk_src,
1102         .clkr.hw.init = &(struct clk_init_data){
1103                 .name = "usb_hs_system_clk_src",
1104                 .parent_data = gcc_xo_gpll0,
1105                 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1106                 .ops = &clk_rcg2_ops,
1107         },
1108 };
1109
1110 static struct clk_branch gcc_blsp1_ahb_clk = {
1111         .halt_reg = 0x05c4,
1112         .halt_check = BRANCH_HALT_VOTED,
1113         .clkr = {
1114                 .enable_reg = 0x1484,
1115                 .enable_mask = BIT(17),
1116                 .hw.init = &(struct clk_init_data){
1117                         .name = "gcc_blsp1_ahb_clk",
1118                         .ops = &clk_branch2_ops,
1119                 },
1120         },
1121 };
1122
1123 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1124         .halt_reg = 0x0648,
1125         .clkr = {
1126                 .enable_reg = 0x0648,
1127                 .enable_mask = BIT(0),
1128                 .hw.init = &(struct clk_init_data){
1129                         .name = "gcc_blsp1_qup1_i2c_apps_clk",
1130                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1131                         .num_parents = 1,
1132                         .flags = CLK_SET_RATE_PARENT,
1133                         .ops = &clk_branch2_ops,
1134                 },
1135         },
1136 };
1137
1138 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1139         .halt_reg = 0x0644,
1140         .clkr = {
1141                 .enable_reg = 0x0644,
1142                 .enable_mask = BIT(0),
1143                 .hw.init = &(struct clk_init_data){
1144                         .name = "gcc_blsp1_qup1_spi_apps_clk",
1145                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1146                         .num_parents = 1,
1147                         .flags = CLK_SET_RATE_PARENT,
1148                         .ops = &clk_branch2_ops,
1149                 },
1150         },
1151 };
1152
1153 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1154         .halt_reg = 0x06c8,
1155         .clkr = {
1156                 .enable_reg = 0x06c8,
1157                 .enable_mask = BIT(0),
1158                 .hw.init = &(struct clk_init_data){
1159                         .name = "gcc_blsp1_qup2_i2c_apps_clk",
1160                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
1161                         .num_parents = 1,
1162                         .flags = CLK_SET_RATE_PARENT,
1163                         .ops = &clk_branch2_ops,
1164                 },
1165         },
1166 };
1167
1168 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1169         .halt_reg = 0x06c4,
1170         .clkr = {
1171                 .enable_reg = 0x06c4,
1172                 .enable_mask = BIT(0),
1173                 .hw.init = &(struct clk_init_data){
1174                         .name = "gcc_blsp1_qup2_spi_apps_clk",
1175                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw },
1176                         .num_parents = 1,
1177                         .flags = CLK_SET_RATE_PARENT,
1178                         .ops = &clk_branch2_ops,
1179                 },
1180         },
1181 };
1182
1183 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1184         .halt_reg = 0x0748,
1185         .clkr = {
1186                 .enable_reg = 0x0748,
1187                 .enable_mask = BIT(0),
1188                 .hw.init = &(struct clk_init_data){
1189                         .name = "gcc_blsp1_qup3_i2c_apps_clk",
1190                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
1191                         .num_parents = 1,
1192                         .flags = CLK_SET_RATE_PARENT,
1193                         .ops = &clk_branch2_ops,
1194                 },
1195         },
1196 };
1197
1198 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1199         .halt_reg = 0x0744,
1200         .clkr = {
1201                 .enable_reg = 0x0744,
1202                 .enable_mask = BIT(0),
1203                 .hw.init = &(struct clk_init_data){
1204                         .name = "gcc_blsp1_qup3_spi_apps_clk",
1205                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw },
1206                         .num_parents = 1,
1207                         .flags = CLK_SET_RATE_PARENT,
1208                         .ops = &clk_branch2_ops,
1209                 },
1210         },
1211 };
1212
1213 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1214         .halt_reg = 0x07c8,
1215         .clkr = {
1216                 .enable_reg = 0x07c8,
1217                 .enable_mask = BIT(0),
1218                 .hw.init = &(struct clk_init_data){
1219                         .name = "gcc_blsp1_qup4_i2c_apps_clk",
1220                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
1221                         .num_parents = 1,
1222                         .flags = CLK_SET_RATE_PARENT,
1223                         .ops = &clk_branch2_ops,
1224                 },
1225         },
1226 };
1227
1228 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1229         .halt_reg = 0x07c4,
1230         .clkr = {
1231                 .enable_reg = 0x07c4,
1232                 .enable_mask = BIT(0),
1233                 .hw.init = &(struct clk_init_data){
1234                         .name = "gcc_blsp1_qup4_spi_apps_clk",
1235                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw },
1236                         .num_parents = 1,
1237                         .flags = CLK_SET_RATE_PARENT,
1238                         .ops = &clk_branch2_ops,
1239                 },
1240         },
1241 };
1242
1243 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1244         .halt_reg = 0x0848,
1245         .clkr = {
1246                 .enable_reg = 0x0848,
1247                 .enable_mask = BIT(0),
1248                 .hw.init = &(struct clk_init_data){
1249                         .name = "gcc_blsp1_qup5_i2c_apps_clk",
1250                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
1251                         .num_parents = 1,
1252                         .flags = CLK_SET_RATE_PARENT,
1253                         .ops = &clk_branch2_ops,
1254                 },
1255         },
1256 };
1257
1258 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1259         .halt_reg = 0x0844,
1260         .clkr = {
1261                 .enable_reg = 0x0844,
1262                 .enable_mask = BIT(0),
1263                 .hw.init = &(struct clk_init_data){
1264                         .name = "gcc_blsp1_qup5_spi_apps_clk",
1265                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw },
1266                         .num_parents = 1,
1267                         .flags = CLK_SET_RATE_PARENT,
1268                         .ops = &clk_branch2_ops,
1269                 },
1270         },
1271 };
1272
1273 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1274         .halt_reg = 0x08c8,
1275         .clkr = {
1276                 .enable_reg = 0x08c8,
1277                 .enable_mask = BIT(0),
1278                 .hw.init = &(struct clk_init_data){
1279                         .name = "gcc_blsp1_qup6_i2c_apps_clk",
1280                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw },
1281                         .num_parents = 1,
1282                         .flags = CLK_SET_RATE_PARENT,
1283                         .ops = &clk_branch2_ops,
1284                 },
1285         },
1286 };
1287
1288 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1289         .halt_reg = 0x08c4,
1290         .clkr = {
1291                 .enable_reg = 0x08c4,
1292                 .enable_mask = BIT(0),
1293                 .hw.init = &(struct clk_init_data){
1294                         .name = "gcc_blsp1_qup6_spi_apps_clk",
1295                         .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw },
1296                         .num_parents = 1,
1297                         .flags = CLK_SET_RATE_PARENT,
1298                         .ops = &clk_branch2_ops,
1299                 },
1300         },
1301 };
1302
1303 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1304         .halt_reg = 0x0684,
1305         .clkr = {
1306                 .enable_reg = 0x0684,
1307                 .enable_mask = BIT(0),
1308                 .hw.init = &(struct clk_init_data){
1309                         .name = "gcc_blsp1_uart1_apps_clk",
1310                         .parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw },
1311                         .num_parents = 1,
1312                         .flags = CLK_SET_RATE_PARENT,
1313                         .ops = &clk_branch2_ops,
1314                 },
1315         },
1316 };
1317
1318 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1319         .halt_reg = 0x0704,
1320         .clkr = {
1321                 .enable_reg = 0x0704,
1322                 .enable_mask = BIT(0),
1323                 .hw.init = &(struct clk_init_data){
1324                         .name = "gcc_blsp1_uart2_apps_clk",
1325                         .parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw },
1326                         .num_parents = 1,
1327                         .flags = CLK_SET_RATE_PARENT,
1328                         .ops = &clk_branch2_ops,
1329                 },
1330         },
1331 };
1332
1333 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1334         .halt_reg = 0x0784,
1335         .clkr = {
1336                 .enable_reg = 0x0784,
1337                 .enable_mask = BIT(0),
1338                 .hw.init = &(struct clk_init_data){
1339                         .name = "gcc_blsp1_uart3_apps_clk",
1340                         .parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw },
1341                         .num_parents = 1,
1342                         .flags = CLK_SET_RATE_PARENT,
1343                         .ops = &clk_branch2_ops,
1344                 },
1345         },
1346 };
1347
1348 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1349         .halt_reg = 0x0804,
1350         .clkr = {
1351                 .enable_reg = 0x0804,
1352                 .enable_mask = BIT(0),
1353                 .hw.init = &(struct clk_init_data){
1354                         .name = "gcc_blsp1_uart4_apps_clk",
1355                         .parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw },
1356                         .num_parents = 1,
1357                         .flags = CLK_SET_RATE_PARENT,
1358                         .ops = &clk_branch2_ops,
1359                 },
1360         },
1361 };
1362
1363 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1364         .halt_reg = 0x0884,
1365         .clkr = {
1366                 .enable_reg = 0x0884,
1367                 .enable_mask = BIT(0),
1368                 .hw.init = &(struct clk_init_data){
1369                         .name = "gcc_blsp1_uart5_apps_clk",
1370                         .parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw },
1371                         .num_parents = 1,
1372                         .flags = CLK_SET_RATE_PARENT,
1373                         .ops = &clk_branch2_ops,
1374                 },
1375         },
1376 };
1377
1378 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1379         .halt_reg = 0x0904,
1380         .clkr = {
1381                 .enable_reg = 0x0904,
1382                 .enable_mask = BIT(0),
1383                 .hw.init = &(struct clk_init_data){
1384                         .name = "gcc_blsp1_uart6_apps_clk",
1385                         .parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw },
1386                         .num_parents = 1,
1387                         .flags = CLK_SET_RATE_PARENT,
1388                         .ops = &clk_branch2_ops,
1389                 },
1390         },
1391 };
1392
1393 static struct clk_branch gcc_blsp2_ahb_clk = {
1394         .halt_reg = 0x0944,
1395         .halt_check = BRANCH_HALT_VOTED,
1396         .clkr = {
1397                 .enable_reg = 0x1484,
1398                 .enable_mask = BIT(15),
1399                 .hw.init = &(struct clk_init_data){
1400                         .name = "gcc_blsp2_ahb_clk",
1401                         .ops = &clk_branch2_ops,
1402                 },
1403         },
1404 };
1405
1406 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1407         .halt_reg = 0x0988,
1408         .clkr = {
1409                 .enable_reg = 0x0988,
1410                 .enable_mask = BIT(0),
1411                 .hw.init = &(struct clk_init_data){
1412                         .name = "gcc_blsp2_qup1_i2c_apps_clk",
1413                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw },
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                         .name = "gcc_blsp2_qup1_spi_apps_clk",
1428                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw },
1429                         .num_parents = 1,
1430                         .flags = CLK_SET_RATE_PARENT,
1431                         .ops = &clk_branch2_ops,
1432                 },
1433         },
1434 };
1435
1436 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1437         .halt_reg = 0x0a08,
1438         .clkr = {
1439                 .enable_reg = 0x0a08,
1440                 .enable_mask = BIT(0),
1441                 .hw.init = &(struct clk_init_data){
1442                         .name = "gcc_blsp2_qup2_i2c_apps_clk",
1443                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw },
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                         .name = "gcc_blsp2_qup2_spi_apps_clk",
1458                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw },
1459                         .num_parents = 1,
1460                         .flags = CLK_SET_RATE_PARENT,
1461                         .ops = &clk_branch2_ops,
1462                 },
1463         },
1464 };
1465
1466 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1467         .halt_reg = 0x0a88,
1468         .clkr = {
1469                 .enable_reg = 0x0a88,
1470                 .enable_mask = BIT(0),
1471                 .hw.init = &(struct clk_init_data){
1472                         .name = "gcc_blsp2_qup3_i2c_apps_clk",
1473                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw },
1474                         .num_parents = 1,
1475                         .flags = CLK_SET_RATE_PARENT,
1476                         .ops = &clk_branch2_ops,
1477                 },
1478         },
1479 };
1480
1481 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1482         .halt_reg = 0x0a84,
1483         .clkr = {
1484                 .enable_reg = 0x0a84,
1485                 .enable_mask = BIT(0),
1486                 .hw.init = &(struct clk_init_data){
1487                         .name = "gcc_blsp2_qup3_spi_apps_clk",
1488                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw },
1489                         .num_parents = 1,
1490                         .flags = CLK_SET_RATE_PARENT,
1491                         .ops = &clk_branch2_ops,
1492                 },
1493         },
1494 };
1495
1496 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1497         .halt_reg = 0x0b08,
1498         .clkr = {
1499                 .enable_reg = 0x0b08,
1500                 .enable_mask = BIT(0),
1501                 .hw.init = &(struct clk_init_data){
1502                         .name = "gcc_blsp2_qup4_i2c_apps_clk",
1503                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw },
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_spi_apps_clk = {
1512         .halt_reg = 0x0b04,
1513         .clkr = {
1514                 .enable_reg = 0x0b04,
1515                 .enable_mask = BIT(0),
1516                 .hw.init = &(struct clk_init_data){
1517                         .name = "gcc_blsp2_qup4_spi_apps_clk",
1518                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw },
1519                         .num_parents = 1,
1520                         .flags = CLK_SET_RATE_PARENT,
1521                         .ops = &clk_branch2_ops,
1522                 },
1523         },
1524 };
1525
1526 static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1527         .halt_reg = 0x0b88,
1528         .clkr = {
1529                 .enable_reg = 0x0b88,
1530                 .enable_mask = BIT(0),
1531                 .hw.init = &(struct clk_init_data){
1532                         .name = "gcc_blsp2_qup5_i2c_apps_clk",
1533                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw },
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_spi_apps_clk = {
1542         .halt_reg = 0x0b84,
1543         .clkr = {
1544                 .enable_reg = 0x0b84,
1545                 .enable_mask = BIT(0),
1546                 .hw.init = &(struct clk_init_data){
1547                         .name = "gcc_blsp2_qup5_spi_apps_clk",
1548                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw },
1549                         .num_parents = 1,
1550                         .flags = CLK_SET_RATE_PARENT,
1551                         .ops = &clk_branch2_ops,
1552                 },
1553         },
1554 };
1555
1556 static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1557         .halt_reg = 0x0c08,
1558         .clkr = {
1559                 .enable_reg = 0x0c08,
1560                 .enable_mask = BIT(0),
1561                 .hw.init = &(struct clk_init_data){
1562                         .name = "gcc_blsp2_qup6_i2c_apps_clk",
1563                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw },
1564                         .num_parents = 1,
1565                         .flags = CLK_SET_RATE_PARENT,
1566                         .ops = &clk_branch2_ops,
1567                 },
1568         },
1569 };
1570
1571 static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1572         .halt_reg = 0x0c04,
1573         .clkr = {
1574                 .enable_reg = 0x0c04,
1575                 .enable_mask = BIT(0),
1576                 .hw.init = &(struct clk_init_data){
1577                         .name = "gcc_blsp2_qup6_spi_apps_clk",
1578                         .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw },
1579                         .num_parents = 1,
1580                         .flags = CLK_SET_RATE_PARENT,
1581                         .ops = &clk_branch2_ops,
1582                 },
1583         },
1584 };
1585
1586 static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1587         .halt_reg = 0x09c4,
1588         .clkr = {
1589                 .enable_reg = 0x09c4,
1590                 .enable_mask = BIT(0),
1591                 .hw.init = &(struct clk_init_data){
1592                         .name = "gcc_blsp2_uart1_apps_clk",
1593                         .parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw },
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_uart2_apps_clk = {
1602         .halt_reg = 0x0a44,
1603         .clkr = {
1604                 .enable_reg = 0x0a44,
1605                 .enable_mask = BIT(0),
1606                 .hw.init = &(struct clk_init_data){
1607                         .name = "gcc_blsp2_uart2_apps_clk",
1608                         .parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw },
1609                         .num_parents = 1,
1610                         .flags = CLK_SET_RATE_PARENT,
1611                         .ops = &clk_branch2_ops,
1612                 },
1613         },
1614 };
1615
1616 static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1617         .halt_reg = 0x0ac4,
1618         .clkr = {
1619                 .enable_reg = 0x0ac4,
1620                 .enable_mask = BIT(0),
1621                 .hw.init = &(struct clk_init_data){
1622                         .name = "gcc_blsp2_uart3_apps_clk",
1623                         .parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw },
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_uart4_apps_clk = {
1632         .halt_reg = 0x0b44,
1633         .clkr = {
1634                 .enable_reg = 0x0b44,
1635                 .enable_mask = BIT(0),
1636                 .hw.init = &(struct clk_init_data){
1637                         .name = "gcc_blsp2_uart4_apps_clk",
1638                         .parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw },
1639                         .num_parents = 1,
1640                         .flags = CLK_SET_RATE_PARENT,
1641                         .ops = &clk_branch2_ops,
1642                 },
1643         },
1644 };
1645
1646 static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1647         .halt_reg = 0x0bc4,
1648         .clkr = {
1649                 .enable_reg = 0x0bc4,
1650                 .enable_mask = BIT(0),
1651                 .hw.init = &(struct clk_init_data){
1652                         .name = "gcc_blsp2_uart5_apps_clk",
1653                         .parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw },
1654                         .num_parents = 1,
1655                         .flags = CLK_SET_RATE_PARENT,
1656                         .ops = &clk_branch2_ops,
1657                 },
1658         },
1659 };
1660
1661 static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1662         .halt_reg = 0x0c44,
1663         .clkr = {
1664                 .enable_reg = 0x0c44,
1665                 .enable_mask = BIT(0),
1666                 .hw.init = &(struct clk_init_data){
1667                         .name = "gcc_blsp2_uart6_apps_clk",
1668                         .parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw },
1669                         .num_parents = 1,
1670                         .flags = CLK_SET_RATE_PARENT,
1671                         .ops = &clk_branch2_ops,
1672                 },
1673         },
1674 };
1675
1676 static struct clk_branch gcc_gp1_clk = {
1677         .halt_reg = 0x1900,
1678         .clkr = {
1679                 .enable_reg = 0x1900,
1680                 .enable_mask = BIT(0),
1681                 .hw.init = &(struct clk_init_data){
1682                         .name = "gcc_gp1_clk",
1683                         .parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw },
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_gp2_clk = {
1692         .halt_reg = 0x1940,
1693         .clkr = {
1694                 .enable_reg = 0x1940,
1695                 .enable_mask = BIT(0),
1696                 .hw.init = &(struct clk_init_data){
1697                         .name = "gcc_gp2_clk",
1698                         .parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw },
1699                         .num_parents = 1,
1700                         .flags = CLK_SET_RATE_PARENT,
1701                         .ops = &clk_branch2_ops,
1702                 },
1703         },
1704 };
1705
1706 static struct clk_branch gcc_gp3_clk = {
1707         .halt_reg = 0x1980,
1708         .clkr = {
1709                 .enable_reg = 0x1980,
1710                 .enable_mask = BIT(0),
1711                 .hw.init = &(struct clk_init_data){
1712                         .name = "gcc_gp3_clk",
1713                         .parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw },
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_lpass_q6_axi_clk = {
1722         .halt_reg = 0x0280,
1723         .clkr = {
1724                 .enable_reg = 0x0280,
1725                 .enable_mask = BIT(0),
1726                 .hw.init = &(struct clk_init_data){
1727                         .name = "gcc_lpass_q6_axi_clk",
1728                         .ops = &clk_branch2_ops,
1729                 },
1730         },
1731 };
1732
1733 static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
1734         .halt_reg = 0x0284,
1735         .clkr = {
1736                 .enable_reg = 0x0284,
1737                 .enable_mask = BIT(0),
1738                 .hw.init = &(struct clk_init_data){
1739                         .name = "gcc_mss_q6_bimc_axi_clk",
1740                         .ops = &clk_branch2_ops,
1741                 },
1742         },
1743 };
1744
1745 static struct clk_branch gcc_pcie_0_aux_clk = {
1746         .halt_reg = 0x1ad4,
1747         .clkr = {
1748                 .enable_reg = 0x1ad4,
1749                 .enable_mask = BIT(0),
1750                 .hw.init = &(struct clk_init_data){
1751                         .name = "gcc_pcie_0_aux_clk",
1752                         .parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw },
1753                         .num_parents = 1,
1754                         .flags = CLK_SET_RATE_PARENT,
1755                         .ops = &clk_branch2_ops,
1756                 },
1757         },
1758 };
1759
1760 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1761         .halt_reg = 0x1ad0,
1762         .clkr = {
1763                 .enable_reg = 0x1ad0,
1764                 .enable_mask = BIT(0),
1765                 .hw.init = &(struct clk_init_data){
1766                         .name = "gcc_pcie_0_cfg_ahb_clk",
1767                         .ops = &clk_branch2_ops,
1768                 },
1769         },
1770 };
1771
1772 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1773         .halt_reg = 0x1acc,
1774         .clkr = {
1775                 .enable_reg = 0x1acc,
1776                 .enable_mask = BIT(0),
1777                 .hw.init = &(struct clk_init_data){
1778                         .name = "gcc_pcie_0_mstr_axi_clk",
1779                         .ops = &clk_branch2_ops,
1780                 },
1781         },
1782 };
1783
1784 static struct clk_branch gcc_pcie_0_pipe_clk = {
1785         .halt_reg = 0x1ad8,
1786         .halt_check = BRANCH_HALT_DELAY,
1787         .clkr = {
1788                 .enable_reg = 0x1ad8,
1789                 .enable_mask = BIT(0),
1790                 .hw.init = &(struct clk_init_data){
1791                         .name = "gcc_pcie_0_pipe_clk",
1792                         .parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw },
1793                         .num_parents = 1,
1794                         .flags = CLK_SET_RATE_PARENT,
1795                         .ops = &clk_branch2_ops,
1796                 },
1797         },
1798 };
1799
1800 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1801         .halt_reg = 0x1ac8,
1802         .halt_check = BRANCH_HALT_DELAY,
1803         .clkr = {
1804                 .enable_reg = 0x1ac8,
1805                 .enable_mask = BIT(0),
1806                 .hw.init = &(struct clk_init_data){
1807                         .name = "gcc_pcie_0_slv_axi_clk",
1808                         .ops = &clk_branch2_ops,
1809                 },
1810         },
1811 };
1812
1813 static struct clk_branch gcc_pcie_1_aux_clk = {
1814         .halt_reg = 0x1b54,
1815         .clkr = {
1816                 .enable_reg = 0x1b54,
1817                 .enable_mask = BIT(0),
1818                 .hw.init = &(struct clk_init_data){
1819                         .name = "gcc_pcie_1_aux_clk",
1820                         .parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw },
1821                         .num_parents = 1,
1822                         .flags = CLK_SET_RATE_PARENT,
1823                         .ops = &clk_branch2_ops,
1824                 },
1825         },
1826 };
1827
1828 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1829         .halt_reg = 0x1b54,
1830         .clkr = {
1831                 .enable_reg = 0x1b54,
1832                 .enable_mask = BIT(0),
1833                 .hw.init = &(struct clk_init_data){
1834                         .name = "gcc_pcie_1_cfg_ahb_clk",
1835                         .ops = &clk_branch2_ops,
1836                 },
1837         },
1838 };
1839
1840 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1841         .halt_reg = 0x1b50,
1842         .clkr = {
1843                 .enable_reg = 0x1b50,
1844                 .enable_mask = BIT(0),
1845                 .hw.init = &(struct clk_init_data){
1846                         .name = "gcc_pcie_1_mstr_axi_clk",
1847                         .ops = &clk_branch2_ops,
1848                 },
1849         },
1850 };
1851
1852 static struct clk_branch gcc_pcie_1_pipe_clk = {
1853         .halt_reg = 0x1b58,
1854         .halt_check = BRANCH_HALT_DELAY,
1855         .clkr = {
1856                 .enable_reg = 0x1b58,
1857                 .enable_mask = BIT(0),
1858                 .hw.init = &(struct clk_init_data){
1859                         .name = "gcc_pcie_1_pipe_clk",
1860                         .parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw },
1861                         .num_parents = 1,
1862                         .flags = CLK_SET_RATE_PARENT,
1863                         .ops = &clk_branch2_ops,
1864                 },
1865         },
1866 };
1867
1868 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1869         .halt_reg = 0x1b48,
1870         .clkr = {
1871                 .enable_reg = 0x1b48,
1872                 .enable_mask = BIT(0),
1873                 .hw.init = &(struct clk_init_data){
1874                         .name = "gcc_pcie_1_slv_axi_clk",
1875                         .ops = &clk_branch2_ops,
1876                 },
1877         },
1878 };
1879
1880 static struct clk_branch gcc_pdm2_clk = {
1881         .halt_reg = 0x0ccc,
1882         .clkr = {
1883                 .enable_reg = 0x0ccc,
1884                 .enable_mask = BIT(0),
1885                 .hw.init = &(struct clk_init_data){
1886                         .name = "gcc_pdm2_clk",
1887                         .parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw },
1888                         .num_parents = 1,
1889                         .flags = CLK_SET_RATE_PARENT,
1890                         .ops = &clk_branch2_ops,
1891                 },
1892         },
1893 };
1894
1895 static struct clk_branch gcc_pdm_ahb_clk = {
1896         .halt_reg = 0x0cc4,
1897         .clkr = {
1898                 .enable_reg = 0x0cc4,
1899                 .enable_mask = BIT(0),
1900                 .hw.init = &(struct clk_init_data){
1901                         .name = "gcc_pdm_ahb_clk",
1902                         .ops = &clk_branch2_ops,
1903                 },
1904         },
1905 };
1906
1907 static struct clk_branch gcc_sdcc1_apps_clk = {
1908         .halt_reg = 0x04c4,
1909         .clkr = {
1910                 .enable_reg = 0x04c4,
1911                 .enable_mask = BIT(0),
1912                 .hw.init = &(struct clk_init_data){
1913                         .name = "gcc_sdcc1_apps_clk",
1914                         .parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw },
1915                         .num_parents = 1,
1916                         .flags = CLK_SET_RATE_PARENT,
1917                         .ops = &clk_branch2_ops,
1918                 },
1919         },
1920 };
1921
1922 static struct clk_branch gcc_sdcc1_ahb_clk = {
1923         .halt_reg = 0x04c8,
1924         .clkr = {
1925                 .enable_reg = 0x04c8,
1926                 .enable_mask = BIT(0),
1927                 .hw.init = &(struct clk_init_data){
1928                         .name = "gcc_sdcc1_ahb_clk",
1929                         .ops = &clk_branch2_ops,
1930                 },
1931         },
1932 };
1933
1934 static struct clk_branch gcc_sdcc2_ahb_clk = {
1935         .halt_reg = 0x0508,
1936         .clkr = {
1937                 .enable_reg = 0x0508,
1938                 .enable_mask = BIT(0),
1939                 .hw.init = &(struct clk_init_data){
1940                         .name = "gcc_sdcc2_ahb_clk",
1941                         .ops = &clk_branch2_ops,
1942                 },
1943         },
1944 };
1945
1946 static struct clk_branch gcc_sdcc2_apps_clk = {
1947         .halt_reg = 0x0504,
1948         .clkr = {
1949                 .enable_reg = 0x0504,
1950                 .enable_mask = BIT(0),
1951                 .hw.init = &(struct clk_init_data){
1952                         .name = "gcc_sdcc2_apps_clk",
1953                         .parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw },
1954                         .num_parents = 1,
1955                         .flags = CLK_SET_RATE_PARENT,
1956                         .ops = &clk_branch2_ops,
1957                 },
1958         },
1959 };
1960
1961 static struct clk_branch gcc_sdcc3_ahb_clk = {
1962         .halt_reg = 0x0548,
1963         .clkr = {
1964                 .enable_reg = 0x0548,
1965                 .enable_mask = BIT(0),
1966                 .hw.init = &(struct clk_init_data){
1967                         .name = "gcc_sdcc3_ahb_clk",
1968                         .ops = &clk_branch2_ops,
1969                 },
1970         },
1971 };
1972
1973 static struct clk_branch gcc_sdcc3_apps_clk = {
1974         .halt_reg = 0x0544,
1975         .clkr = {
1976                 .enable_reg = 0x0544,
1977                 .enable_mask = BIT(0),
1978                 .hw.init = &(struct clk_init_data){
1979                         .name = "gcc_sdcc3_apps_clk",
1980                         .parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw },
1981                         .num_parents = 1,
1982                         .flags = CLK_SET_RATE_PARENT,
1983                         .ops = &clk_branch2_ops,
1984                 },
1985         },
1986 };
1987
1988 static struct clk_branch gcc_sdcc4_ahb_clk = {
1989         .halt_reg = 0x0588,
1990         .clkr = {
1991                 .enable_reg = 0x0588,
1992                 .enable_mask = BIT(0),
1993                 .hw.init = &(struct clk_init_data){
1994                         .name = "gcc_sdcc4_ahb_clk",
1995                         .ops = &clk_branch2_ops,
1996                 },
1997         },
1998 };
1999
2000 static struct clk_branch gcc_sdcc4_apps_clk = {
2001         .halt_reg = 0x0584,
2002         .clkr = {
2003                 .enable_reg = 0x0584,
2004                 .enable_mask = BIT(0),
2005                 .hw.init = &(struct clk_init_data){
2006                         .name = "gcc_sdcc4_apps_clk",
2007                         .parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw },
2008                         .num_parents = 1,
2009                         .flags = CLK_SET_RATE_PARENT,
2010                         .ops = &clk_branch2_ops,
2011                 },
2012         },
2013 };
2014
2015 static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
2016         .halt_reg = 0x1d7c,
2017         .clkr = {
2018                 .enable_reg = 0x1d7c,
2019                 .enable_mask = BIT(0),
2020                 .hw.init = &(struct clk_init_data){
2021                         .name = "gcc_sys_noc_ufs_axi_clk",
2022                         .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2023                         .num_parents = 1,
2024                         .flags = CLK_SET_RATE_PARENT,
2025                         .ops = &clk_branch2_ops,
2026                 },
2027         },
2028 };
2029
2030 static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2031         .halt_reg = 0x03fc,
2032         .clkr = {
2033                 .enable_reg = 0x03fc,
2034                 .enable_mask = BIT(0),
2035                 .hw.init = &(struct clk_init_data){
2036                         .name = "gcc_sys_noc_usb3_axi_clk",
2037                         .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2038                         .num_parents = 1,
2039                         .flags = CLK_SET_RATE_PARENT,
2040                         .ops = &clk_branch2_ops,
2041                 },
2042         },
2043 };
2044
2045 static struct clk_branch gcc_tsif_ahb_clk = {
2046         .halt_reg = 0x0d84,
2047         .clkr = {
2048                 .enable_reg = 0x0d84,
2049                 .enable_mask = BIT(0),
2050                 .hw.init = &(struct clk_init_data){
2051                         .name = "gcc_tsif_ahb_clk",
2052                         .ops = &clk_branch2_ops,
2053                 },
2054         },
2055 };
2056
2057 static struct clk_branch gcc_tsif_ref_clk = {
2058         .halt_reg = 0x0d88,
2059         .clkr = {
2060                 .enable_reg = 0x0d88,
2061                 .enable_mask = BIT(0),
2062                 .hw.init = &(struct clk_init_data){
2063                         .name = "gcc_tsif_ref_clk",
2064                         .parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw },
2065                         .num_parents = 1,
2066                         .flags = CLK_SET_RATE_PARENT,
2067                         .ops = &clk_branch2_ops,
2068                 },
2069         },
2070 };
2071
2072 static struct clk_branch gcc_ufs_ahb_clk = {
2073         .halt_reg = 0x1d4c,
2074         .clkr = {
2075                 .enable_reg = 0x1d4c,
2076                 .enable_mask = BIT(0),
2077                 .hw.init = &(struct clk_init_data){
2078                         .name = "gcc_ufs_ahb_clk",
2079                         .ops = &clk_branch2_ops,
2080                 },
2081         },
2082 };
2083
2084 static struct clk_branch gcc_ufs_axi_clk = {
2085         .halt_reg = 0x1d48,
2086         .clkr = {
2087                 .enable_reg = 0x1d48,
2088                 .enable_mask = BIT(0),
2089                 .hw.init = &(struct clk_init_data){
2090                         .name = "gcc_ufs_axi_clk",
2091                         .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2092                         .num_parents = 1,
2093                         .flags = CLK_SET_RATE_PARENT,
2094                         .ops = &clk_branch2_ops,
2095                 },
2096         },
2097 };
2098
2099 static struct clk_branch gcc_ufs_rx_cfg_clk = {
2100         .halt_reg = 0x1d54,
2101         .clkr = {
2102                 .enable_reg = 0x1d54,
2103                 .enable_mask = BIT(0),
2104                 .hw.init = &(struct clk_init_data){
2105                         .name = "gcc_ufs_rx_cfg_clk",
2106                         .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2107                         .num_parents = 1,
2108                         .flags = CLK_SET_RATE_PARENT,
2109                         .ops = &clk_branch2_ops,
2110                 },
2111         },
2112 };
2113
2114 static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
2115         .halt_reg = 0x1d60,
2116         .halt_check = BRANCH_HALT_DELAY,
2117         .clkr = {
2118                 .enable_reg = 0x1d60,
2119                 .enable_mask = BIT(0),
2120                 .hw.init = &(struct clk_init_data){
2121                         .name = "gcc_ufs_rx_symbol_0_clk",
2122                         .ops = &clk_branch2_ops,
2123                 },
2124         },
2125 };
2126
2127 static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
2128         .halt_reg = 0x1d64,
2129         .halt_check = BRANCH_HALT_DELAY,
2130         .clkr = {
2131                 .enable_reg = 0x1d64,
2132                 .enable_mask = BIT(0),
2133                 .hw.init = &(struct clk_init_data){
2134                         .name = "gcc_ufs_rx_symbol_1_clk",
2135                         .ops = &clk_branch2_ops,
2136                 },
2137         },
2138 };
2139
2140 static struct clk_branch gcc_ufs_tx_cfg_clk = {
2141         .halt_reg = 0x1d50,
2142         .clkr = {
2143                 .enable_reg = 0x1d50,
2144                 .enable_mask = BIT(0),
2145                 .hw.init = &(struct clk_init_data){
2146                         .name = "gcc_ufs_tx_cfg_clk",
2147                         .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2148                         .num_parents = 1,
2149                         .flags = CLK_SET_RATE_PARENT,
2150                         .ops = &clk_branch2_ops,
2151                 },
2152         },
2153 };
2154
2155 static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
2156         .halt_reg = 0x1d58,
2157         .halt_check = BRANCH_HALT_DELAY,
2158         .clkr = {
2159                 .enable_reg = 0x1d58,
2160                 .enable_mask = BIT(0),
2161                 .hw.init = &(struct clk_init_data){
2162                         .name = "gcc_ufs_tx_symbol_0_clk",
2163                         .ops = &clk_branch2_ops,
2164                 },
2165         },
2166 };
2167
2168 static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
2169         .halt_reg = 0x1d5c,
2170         .halt_check = BRANCH_HALT_DELAY,
2171         .clkr = {
2172                 .enable_reg = 0x1d5c,
2173                 .enable_mask = BIT(0),
2174                 .hw.init = &(struct clk_init_data){
2175                         .name = "gcc_ufs_tx_symbol_1_clk",
2176                         .ops = &clk_branch2_ops,
2177                 },
2178         },
2179 };
2180
2181 static struct clk_branch gcc_usb2_hs_phy_sleep_clk = {
2182         .halt_reg = 0x04ac,
2183         .clkr = {
2184                 .enable_reg = 0x04ac,
2185                 .enable_mask = BIT(0),
2186                 .hw.init = &(struct clk_init_data){
2187                         .name = "gcc_usb2_hs_phy_sleep_clk",
2188                         .parent_data = &(const struct clk_parent_data){
2189                                 .fw_name = "sleep",
2190                                 .name = "sleep"
2191                         },
2192                         .num_parents = 1,
2193                         .ops = &clk_branch2_ops,
2194                 },
2195         },
2196 };
2197
2198 static struct clk_branch gcc_usb30_master_clk = {
2199         .halt_reg = 0x03c8,
2200         .clkr = {
2201                 .enable_reg = 0x03c8,
2202                 .enable_mask = BIT(0),
2203                 .hw.init = &(struct clk_init_data){
2204                         .name = "gcc_usb30_master_clk",
2205                         .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2206                         .num_parents = 1,
2207                         .flags = CLK_SET_RATE_PARENT,
2208                         .ops = &clk_branch2_ops,
2209                 },
2210         },
2211 };
2212
2213 static struct clk_branch gcc_usb30_mock_utmi_clk = {
2214         .halt_reg = 0x03d0,
2215         .clkr = {
2216                 .enable_reg = 0x03d0,
2217                 .enable_mask = BIT(0),
2218                 .hw.init = &(struct clk_init_data){
2219                         .name = "gcc_usb30_mock_utmi_clk",
2220                         .parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw },
2221                         .num_parents = 1,
2222                         .flags = CLK_SET_RATE_PARENT,
2223                         .ops = &clk_branch2_ops,
2224                 },
2225         },
2226 };
2227
2228 static struct clk_branch gcc_usb30_sleep_clk = {
2229         .halt_reg = 0x03cc,
2230         .clkr = {
2231                 .enable_reg = 0x03cc,
2232                 .enable_mask = BIT(0),
2233                 .hw.init = &(struct clk_init_data){
2234                         .name = "gcc_usb30_sleep_clk",
2235                         .parent_data = &(const struct clk_parent_data){
2236                                 .fw_name = "sleep",
2237                                 .name = "sleep"
2238                         },
2239                         .num_parents = 1,
2240                         .ops = &clk_branch2_ops,
2241                 },
2242         },
2243 };
2244
2245 static struct clk_branch gcc_usb3_phy_aux_clk = {
2246         .halt_reg = 0x1408,
2247         .clkr = {
2248                 .enable_reg = 0x1408,
2249                 .enable_mask = BIT(0),
2250                 .hw.init = &(struct clk_init_data){
2251                         .name = "gcc_usb3_phy_aux_clk",
2252                         .parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw },
2253                         .num_parents = 1,
2254                         .flags = CLK_SET_RATE_PARENT,
2255                         .ops = &clk_branch2_ops,
2256                 },
2257         },
2258 };
2259
2260 static struct clk_branch gcc_usb3_phy_pipe_clk = {
2261         .halt_reg = 0x140c,
2262         .halt_check = BRANCH_HALT_SKIP,
2263         .clkr = {
2264                 .enable_reg = 0x140c,
2265                 .enable_mask = BIT(0),
2266                 .hw.init = &(struct clk_init_data){
2267                         .name = "gcc_usb3_phy_pipe_clk",
2268                         .ops = &clk_branch2_ops,
2269                 },
2270         },
2271 };
2272
2273 static struct clk_branch gcc_usb_hs_ahb_clk = {
2274         .halt_reg = 0x0488,
2275         .clkr = {
2276                 .enable_reg = 0x0488,
2277                 .enable_mask = BIT(0),
2278                 .hw.init = &(struct clk_init_data){
2279                         .name = "gcc_usb_hs_ahb_clk",
2280                         .ops = &clk_branch2_ops,
2281                 },
2282         },
2283 };
2284
2285 static struct clk_branch gcc_usb_hs_system_clk = {
2286         .halt_reg = 0x0484,
2287         .clkr = {
2288                 .enable_reg = 0x0484,
2289                 .enable_mask = BIT(0),
2290                 .hw.init = &(struct clk_init_data){
2291                         .name = "gcc_usb_hs_system_clk",
2292                         .parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw },
2293                         .num_parents = 1,
2294                         .flags = CLK_SET_RATE_PARENT,
2295                         .ops = &clk_branch2_ops,
2296                 },
2297         },
2298 };
2299
2300 static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
2301         .halt_reg = 0x1a84,
2302         .clkr = {
2303                 .enable_reg = 0x1a84,
2304                 .enable_mask = BIT(0),
2305                 .hw.init = &(struct clk_init_data){
2306                         .name = "gcc_usb_phy_cfg_ahb2phy_clk",
2307                         .ops = &clk_branch2_ops,
2308                 },
2309         },
2310 };
2311
2312 static struct clk_branch gpll0_out_mmsscc = {
2313         .halt_check = BRANCH_HALT_DELAY,
2314         .clkr = {
2315                 .enable_reg = 0x1484,
2316                 .enable_mask = BIT(26),
2317                 .hw.init = &(struct clk_init_data){
2318                         .name = "gpll0_out_mmsscc",
2319                         .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2320                         .num_parents = 1,
2321                         .ops = &clk_branch2_ops,
2322                 },
2323         },
2324 };
2325
2326 static struct clk_branch gpll0_out_msscc = {
2327         .halt_check = BRANCH_HALT_DELAY,
2328         .clkr = {
2329                 .enable_reg = 0x1484,
2330                 .enable_mask = BIT(27),
2331                 .hw.init = &(struct clk_init_data){
2332                         .name = "gpll0_out_msscc",
2333                         .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2334                         .num_parents = 1,
2335                         .ops = &clk_branch2_ops,
2336                 },
2337         },
2338 };
2339
2340 static struct clk_branch pcie_0_phy_ldo = {
2341         .halt_reg = 0x1e00,
2342         .halt_check = BRANCH_HALT_SKIP,
2343         .clkr = {
2344                 .enable_reg = 0x1E00,
2345                 .enable_mask = BIT(0),
2346                 .hw.init = &(struct clk_init_data){
2347                         .name = "pcie_0_phy_ldo",
2348                         .ops = &clk_branch2_ops,
2349                 },
2350         },
2351 };
2352
2353 static struct clk_branch pcie_1_phy_ldo = {
2354         .halt_reg = 0x1e04,
2355         .halt_check = BRANCH_HALT_SKIP,
2356         .clkr = {
2357                 .enable_reg = 0x1E04,
2358                 .enable_mask = BIT(0),
2359                 .hw.init = &(struct clk_init_data){
2360                         .name = "pcie_1_phy_ldo",
2361                         .ops = &clk_branch2_ops,
2362                 },
2363         },
2364 };
2365
2366 static struct clk_branch ufs_phy_ldo = {
2367         .halt_reg = 0x1e0c,
2368         .halt_check = BRANCH_HALT_SKIP,
2369         .clkr = {
2370                 .enable_reg = 0x1E0C,
2371                 .enable_mask = BIT(0),
2372                 .hw.init = &(struct clk_init_data){
2373                         .name = "ufs_phy_ldo",
2374                         .ops = &clk_branch2_ops,
2375                 },
2376         },
2377 };
2378
2379 static struct clk_branch usb_ss_phy_ldo = {
2380         .halt_reg = 0x1e08,
2381         .halt_check = BRANCH_HALT_SKIP,
2382         .clkr = {
2383                 .enable_reg = 0x1E08,
2384                 .enable_mask = BIT(0),
2385                 .hw.init = &(struct clk_init_data){
2386                         .name = "usb_ss_phy_ldo",
2387                         .ops = &clk_branch2_ops,
2388                 },
2389         },
2390 };
2391
2392 static struct clk_branch gcc_boot_rom_ahb_clk = {
2393         .halt_reg = 0x0e04,
2394         .halt_check = BRANCH_HALT_VOTED,
2395         .hwcg_reg = 0x0e04,
2396         .hwcg_bit = 1,
2397         .clkr = {
2398                 .enable_reg = 0x1484,
2399                 .enable_mask = BIT(10),
2400                 .hw.init = &(struct clk_init_data){
2401                         .name = "gcc_boot_rom_ahb_clk",
2402                         .ops = &clk_branch2_ops,
2403                 },
2404         },
2405 };
2406
2407 static struct clk_branch gcc_prng_ahb_clk = {
2408         .halt_reg = 0x0d04,
2409         .halt_check = BRANCH_HALT_VOTED,
2410         .clkr = {
2411                 .enable_reg = 0x1484,
2412                 .enable_mask = BIT(13),
2413                 .hw.init = &(struct clk_init_data){
2414                         .name = "gcc_prng_ahb_clk",
2415                         .ops = &clk_branch2_ops,
2416                 },
2417         },
2418 };
2419
2420 static struct gdsc pcie_0_gdsc = {
2421                 .gdscr = 0x1ac4,
2422                 .pd = {
2423                         .name = "pcie_0",
2424                 },
2425                 .pwrsts = PWRSTS_OFF_ON,
2426 };
2427
2428 static struct gdsc pcie_1_gdsc = {
2429                 .gdscr = 0x1b44,
2430                 .pd = {
2431                         .name = "pcie_1",
2432                 },
2433                 .pwrsts = PWRSTS_OFF_ON,
2434 };
2435
2436 static struct gdsc usb30_gdsc = {
2437                 .gdscr = 0x3c4,
2438                 .pd = {
2439                         .name = "usb30",
2440                 },
2441                 .pwrsts = PWRSTS_OFF_ON,
2442 };
2443
2444 static struct gdsc ufs_gdsc = {
2445                 .gdscr = 0x1d44,
2446                 .pd = {
2447                         .name = "ufs",
2448                 },
2449                 .pwrsts = PWRSTS_OFF_ON,
2450 };
2451
2452 static struct clk_regmap *gcc_msm8994_clocks[] = {
2453         [GPLL0_EARLY] = &gpll0_early.clkr,
2454         [GPLL0] = &gpll0.clkr,
2455         [GPLL4_EARLY] = &gpll4_early.clkr,
2456         [GPLL4] = &gpll4.clkr,
2457         [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2458         [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2459         [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2460         [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2461         [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2462         [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2463         [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2464         [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2465         [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2466         [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2467         [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2468         [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2469         [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2470         [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2471         [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2472         [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2473         [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2474         [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2475         [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2476         [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2477         [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2478         [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2479         [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2480         [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2481         [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2482         [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2483         [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2484         [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2485         [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2486         [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2487         [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2488         [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2489         [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2490         [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2491         [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2492         [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2493         [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2494         [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2495         [GP1_CLK_SRC] = &gp1_clk_src.clkr,
2496         [GP2_CLK_SRC] = &gp2_clk_src.clkr,
2497         [GP3_CLK_SRC] = &gp3_clk_src.clkr,
2498         [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2499         [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2500         [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2501         [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2502         [PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2503         [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2504         [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2505         [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2506         [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2507         [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2508         [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2509         [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2510         [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2511         [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2512         [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2513         [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2514         [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2515         [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2516         [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2517         [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2518         [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2519         [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2520         [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2521         [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2522         [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2523         [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2524         [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2525         [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2526         [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2527         [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2528         [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2529         [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2530         [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2531         [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2532         [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2533         [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2534         [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2535         [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2536         [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2537         [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2538         [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2539         [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2540         [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2541         [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2542         [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2543         [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2544         [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2545         [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2546         [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2547         [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2548         [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2549         [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2550         [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2551         [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2552         [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,
2553         [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
2554         [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
2555         [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
2556         [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2557         [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
2558         [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
2559         [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
2560         [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
2561         [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
2562         [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
2563         [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
2564         [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
2565         [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2566         [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
2567         [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
2568         [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
2569         [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
2570         [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
2571         [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
2572         [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
2573         [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2574         [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2575         [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
2576         [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
2577         [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
2578         [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
2579         [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2580         [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
2581         [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
2582         [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
2583         [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
2584         [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
2585         [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
2586         [GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr,
2587         [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2588         [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
2589         [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2590         [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2591         [GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr,
2592         [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
2593         [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
2594         [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
2595         [GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr,
2596         [GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr,
2597         [PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr,
2598         [PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr,
2599         [UFS_PHY_LDO] = &ufs_phy_ldo.clkr,
2600         [USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr,
2601         [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2602         [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
2603
2604         /*
2605          * The following clocks should NOT be managed by this driver, but they once were
2606          * mistakengly added. Now they are only here to indicate that they are not defined
2607          * on purpose, even though the names will stay in the header file (for ABI sanity).
2608          */
2609         [CONFIG_NOC_CLK_SRC] = NULL,
2610         [PERIPH_NOC_CLK_SRC] = NULL,
2611         [SYSTEM_NOC_CLK_SRC] = NULL,
2612 };
2613
2614 static struct gdsc *gcc_msm8994_gdscs[] = {
2615         /* This GDSC does not exist, but ABI has to remain intact */
2616         [PCIE_GDSC] = NULL,
2617         [PCIE_0_GDSC] = &pcie_0_gdsc,
2618         [PCIE_1_GDSC] = &pcie_1_gdsc,
2619         [USB30_GDSC] = &usb30_gdsc,
2620         [UFS_GDSC] = &ufs_gdsc,
2621 };
2622
2623 static const struct qcom_reset_map gcc_msm8994_resets[] = {
2624         [USB3_PHY_RESET] = { 0x1400 },
2625         [USB3PHY_PHY_RESET] = { 0x1404 },
2626         [MSS_RESET] = { 0x1680 },
2627         [PCIE_PHY_0_RESET] = { 0x1b18 },
2628         [PCIE_PHY_1_RESET] = { 0x1b98 },
2629         [QUSB2_PHY_RESET] = { 0x04b8 },
2630 };
2631
2632 static const struct regmap_config gcc_msm8994_regmap_config = {
2633         .reg_bits       = 32,
2634         .reg_stride     = 4,
2635         .val_bits       = 32,
2636         .max_register   = 0x2000,
2637         .fast_io        = true,
2638 };
2639
2640 static const struct qcom_cc_desc gcc_msm8994_desc = {
2641         .config = &gcc_msm8994_regmap_config,
2642         .clks = gcc_msm8994_clocks,
2643         .num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
2644         .resets = gcc_msm8994_resets,
2645         .num_resets = ARRAY_SIZE(gcc_msm8994_resets),
2646         .gdscs = gcc_msm8994_gdscs,
2647         .num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs),
2648 };
2649
2650 static const struct of_device_id gcc_msm8994_match_table[] = {
2651         { .compatible = "qcom,gcc-msm8992" },
2652         { .compatible = "qcom,gcc-msm8994" }, /* V2 and V2.1 */
2653         {}
2654 };
2655 MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2656
2657 static int gcc_msm8994_probe(struct platform_device *pdev)
2658 {
2659         if (of_device_is_compatible(pdev->dev.of_node, "qcom,gcc-msm8992")) {
2660                 /* MSM8992 features less clocks and some have different freq tables */
2661                 gcc_msm8994_desc.clks[UFS_AXI_CLK_SRC] = NULL;
2662                 gcc_msm8994_desc.clks[GCC_LPASS_Q6_AXI_CLK] = NULL;
2663                 gcc_msm8994_desc.clks[UFS_PHY_LDO] = NULL;
2664                 gcc_msm8994_desc.clks[GCC_UFS_AHB_CLK] = NULL;
2665                 gcc_msm8994_desc.clks[GCC_UFS_AXI_CLK] = NULL;
2666                 gcc_msm8994_desc.clks[GCC_UFS_RX_CFG_CLK] = NULL;
2667                 gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_0_CLK] = NULL;
2668                 gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_1_CLK] = NULL;
2669                 gcc_msm8994_desc.clks[GCC_UFS_TX_CFG_CLK] = NULL;
2670                 gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_0_CLK] = NULL;
2671                 gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_1_CLK] = NULL;
2672
2673                 sdcc1_apps_clk_src.freq_tbl = ftbl_sdcc1_apps_clk_src_8992;
2674                 blsp1_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2675                 blsp1_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2676                 blsp1_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2677                 blsp1_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2678                 blsp1_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2679                 blsp1_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2680                 blsp2_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2681                 blsp2_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2682                 blsp2_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2683                 blsp2_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2684                 blsp2_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2685                 blsp2_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2686
2687                 /*
2688                  * Some 8992 boards might *possibly* use
2689                  * PCIe1 clocks and controller, but it's not
2690                  * standard and they should be disabled otherwise.
2691                  */
2692                 gcc_msm8994_desc.clks[PCIE_1_AUX_CLK_SRC] = NULL;
2693                 gcc_msm8994_desc.clks[PCIE_1_PIPE_CLK_SRC] = NULL;
2694                 gcc_msm8994_desc.clks[PCIE_1_PHY_LDO] = NULL;
2695                 gcc_msm8994_desc.clks[GCC_PCIE_1_AUX_CLK] = NULL;
2696                 gcc_msm8994_desc.clks[GCC_PCIE_1_CFG_AHB_CLK] = NULL;
2697                 gcc_msm8994_desc.clks[GCC_PCIE_1_MSTR_AXI_CLK] = NULL;
2698                 gcc_msm8994_desc.clks[GCC_PCIE_1_PIPE_CLK] = NULL;
2699                 gcc_msm8994_desc.clks[GCC_PCIE_1_SLV_AXI_CLK] = NULL;
2700                 gcc_msm8994_desc.clks[GCC_SYS_NOC_UFS_AXI_CLK] = NULL;
2701         }
2702
2703         return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2704 }
2705
2706 static struct platform_driver gcc_msm8994_driver = {
2707         .probe          = gcc_msm8994_probe,
2708         .driver         = {
2709                 .name   = "gcc-msm8994",
2710                 .of_match_table = gcc_msm8994_match_table,
2711         },
2712 };
2713
2714 static int __init gcc_msm8994_init(void)
2715 {
2716         return platform_driver_register(&gcc_msm8994_driver);
2717 }
2718 core_initcall(gcc_msm8994_init);
2719
2720 static void __exit gcc_msm8994_exit(void)
2721 {
2722         platform_driver_unregister(&gcc_msm8994_driver);
2723 }
2724 module_exit(gcc_msm8994_exit);
2725
2726 MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2727 MODULE_LICENSE("GPL v2");
2728 MODULE_ALIAS("platform:gcc-msm8994");