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