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