1 // SPDX-License-Identifier: GPL-2.0-only
2 /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
5 #include <linux/clk-provider.h>
6 #include <linux/kernel.h>
7 #include <linux/init.h>
9 #include <linux/ctype.h>
12 #include <linux/of_device.h>
13 #include <linux/platform_device.h>
14 #include <linux/module.h>
15 #include <linux/regmap.h>
17 #include <dt-bindings/clock/qcom,gcc-msm8994.h>
20 #include "clk-regmap.h"
21 #include "clk-alpha-pll.h"
23 #include "clk-branch.h"
33 static struct clk_alpha_pll gpll0_early = {
35 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
38 .enable_mask = BIT(0),
39 .hw.init = &(struct clk_init_data){
40 .name = "gpll0_early",
41 .parent_data = &(const struct clk_parent_data){
45 .ops = &clk_alpha_pll_ops,
50 static struct clk_alpha_pll_postdiv gpll0 = {
52 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
53 .clkr.hw.init = &(struct clk_init_data){
55 .parent_names = (const char *[]) { "gpll0_early" },
57 .ops = &clk_alpha_pll_postdiv_ops,
61 static struct clk_alpha_pll gpll4_early = {
63 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
66 .enable_mask = BIT(4),
67 .hw.init = &(struct clk_init_data){
68 .name = "gpll4_early",
69 .parent_data = &(const struct clk_parent_data){
73 .ops = &clk_alpha_pll_ops,
78 static struct clk_alpha_pll_postdiv gpll4 = {
81 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
82 .clkr.hw.init = &(struct clk_init_data){
84 .parent_names = (const char *[]) { "gpll4_early" },
86 .ops = &clk_alpha_pll_postdiv_ops,
90 static const struct parent_map gcc_xo_gpll0_map[] = {
95 static const struct clk_parent_data gcc_xo_gpll0[] = {
97 { .hw = &gpll0.clkr.hw },
100 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
106 static const struct clk_parent_data gcc_xo_gpll0_gpll4[] = {
108 { .hw = &gpll0.clkr.hw },
109 { .hw = &gpll4.clkr.hw },
112 static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
113 F(50000000, P_GPLL0, 12, 0, 0),
114 F(100000000, P_GPLL0, 6, 0, 0),
115 F(150000000, P_GPLL0, 4, 0, 0),
116 F(171430000, P_GPLL0, 3.5, 0, 0),
117 F(200000000, P_GPLL0, 3, 0, 0),
118 F(240000000, P_GPLL0, 2.5, 0, 0),
122 static struct clk_rcg2 ufs_axi_clk_src = {
126 .parent_map = gcc_xo_gpll0_map,
127 .freq_tbl = ftbl_ufs_axi_clk_src,
128 .clkr.hw.init = &(struct clk_init_data){
129 .name = "ufs_axi_clk_src",
130 .parent_data = gcc_xo_gpll0,
131 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
132 .ops = &clk_rcg2_ops,
136 static struct freq_tbl ftbl_usb30_master_clk_src[] = {
137 F(19200000, P_XO, 1, 0, 0),
138 F(125000000, P_GPLL0, 1, 5, 24),
142 static struct clk_rcg2 usb30_master_clk_src = {
146 .parent_map = gcc_xo_gpll0_map,
147 .freq_tbl = ftbl_usb30_master_clk_src,
148 .clkr.hw.init = &(struct clk_init_data){
149 .name = "usb30_master_clk_src",
150 .parent_data = gcc_xo_gpll0,
151 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
152 .ops = &clk_rcg2_ops,
156 static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
157 F(19200000, P_XO, 1, 0, 0),
158 F(50000000, P_GPLL0, 12, 0, 0),
162 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
165 .parent_map = gcc_xo_gpll0_map,
166 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
167 .clkr.hw.init = &(struct clk_init_data){
168 .name = "blsp1_qup1_i2c_apps_clk_src",
169 .parent_data = gcc_xo_gpll0,
170 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
171 .ops = &clk_rcg2_ops,
175 static struct freq_tbl ftbl_blsp1_qup1_spi_apps_clk_src[] = {
176 F(960000, P_XO, 10, 1, 2),
177 F(4800000, P_XO, 4, 0, 0),
178 F(9600000, P_XO, 2, 0, 0),
179 F(15000000, P_GPLL0, 10, 1, 4),
180 F(19200000, P_XO, 1, 0, 0),
181 F(24000000, P_GPLL0, 12.5, 1, 2),
182 F(25000000, P_GPLL0, 12, 1, 2),
183 F(48000000, P_GPLL0, 12.5, 0, 0),
184 F(50000000, P_GPLL0, 12, 0, 0),
188 static struct freq_tbl ftbl_blsp1_qup_spi_apps_clk_src_8992[] = {
189 F(960000, P_XO, 10, 1, 2),
190 F(4800000, P_XO, 4, 0, 0),
191 F(9600000, P_XO, 2, 0, 0),
192 F(15000000, P_GPLL0, 10, 1, 4),
193 F(19200000, P_XO, 1, 0, 0),
194 F(25000000, P_GPLL0, 12, 1, 2),
195 F(50000000, P_GPLL0, 12, 0, 0),
199 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
203 .parent_map = gcc_xo_gpll0_map,
204 .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
205 .clkr.hw.init = &(struct clk_init_data){
206 .name = "blsp1_qup1_spi_apps_clk_src",
207 .parent_data = gcc_xo_gpll0,
208 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
209 .ops = &clk_rcg2_ops,
213 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
216 .parent_map = gcc_xo_gpll0_map,
217 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
218 .clkr.hw.init = &(struct clk_init_data){
219 .name = "blsp1_qup2_i2c_apps_clk_src",
220 .parent_data = gcc_xo_gpll0,
221 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
222 .ops = &clk_rcg2_ops,
226 static struct freq_tbl ftbl_blsp1_qup2_spi_apps_clk_src[] = {
227 F(960000, P_XO, 10, 1, 2),
228 F(4800000, P_XO, 4, 0, 0),
229 F(9600000, P_XO, 2, 0, 0),
230 F(15000000, P_GPLL0, 10, 1, 4),
231 F(19200000, P_XO, 1, 0, 0),
232 F(24000000, P_GPLL0, 12.5, 1, 2),
233 F(25000000, P_GPLL0, 12, 1, 2),
234 F(42860000, P_GPLL0, 14, 0, 0),
235 F(46150000, P_GPLL0, 13, 0, 0),
239 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
243 .parent_map = gcc_xo_gpll0_map,
244 .freq_tbl = ftbl_blsp1_qup2_spi_apps_clk_src,
245 .clkr.hw.init = &(struct clk_init_data){
246 .name = "blsp1_qup2_spi_apps_clk_src",
247 .parent_data = gcc_xo_gpll0,
248 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
249 .ops = &clk_rcg2_ops,
253 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
256 .parent_map = gcc_xo_gpll0_map,
257 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
258 .clkr.hw.init = &(struct clk_init_data){
259 .name = "blsp1_qup3_i2c_apps_clk_src",
260 .parent_data = gcc_xo_gpll0,
261 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
262 .ops = &clk_rcg2_ops,
266 static struct freq_tbl ftbl_blsp1_qup3_4_spi_apps_clk_src[] = {
267 F(960000, P_XO, 10, 1, 2),
268 F(4800000, P_XO, 4, 0, 0),
269 F(9600000, P_XO, 2, 0, 0),
270 F(15000000, P_GPLL0, 10, 1, 4),
271 F(19200000, P_XO, 1, 0, 0),
272 F(24000000, P_GPLL0, 12.5, 1, 2),
273 F(25000000, P_GPLL0, 12, 1, 2),
274 F(42860000, P_GPLL0, 14, 0, 0),
275 F(44440000, P_GPLL0, 13.5, 0, 0),
279 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
283 .parent_map = gcc_xo_gpll0_map,
284 .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
285 .clkr.hw.init = &(struct clk_init_data){
286 .name = "blsp1_qup3_spi_apps_clk_src",
287 .parent_data = gcc_xo_gpll0,
288 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
289 .ops = &clk_rcg2_ops,
293 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
296 .parent_map = gcc_xo_gpll0_map,
297 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
298 .clkr.hw.init = &(struct clk_init_data){
299 .name = "blsp1_qup4_i2c_apps_clk_src",
300 .parent_data = gcc_xo_gpll0,
301 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
302 .ops = &clk_rcg2_ops,
306 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
310 .parent_map = gcc_xo_gpll0_map,
311 .freq_tbl = ftbl_blsp1_qup3_4_spi_apps_clk_src,
312 .clkr.hw.init = &(struct clk_init_data){
313 .name = "blsp1_qup4_spi_apps_clk_src",
314 .parent_data = gcc_xo_gpll0,
315 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
316 .ops = &clk_rcg2_ops,
320 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
323 .parent_map = gcc_xo_gpll0_map,
324 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
325 .clkr.hw.init = &(struct clk_init_data){
326 .name = "blsp1_qup5_i2c_apps_clk_src",
327 .parent_data = gcc_xo_gpll0,
328 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
329 .ops = &clk_rcg2_ops,
333 static struct freq_tbl ftbl_blsp1_qup5_spi_apps_clk_src[] = {
334 F(960000, P_XO, 10, 1, 2),
335 F(4800000, P_XO, 4, 0, 0),
336 F(9600000, P_XO, 2, 0, 0),
337 F(15000000, P_GPLL0, 10, 1, 4),
338 F(19200000, P_XO, 1, 0, 0),
339 F(24000000, P_GPLL0, 12.5, 1, 2),
340 F(25000000, P_GPLL0, 12, 1, 2),
341 F(40000000, P_GPLL0, 15, 0, 0),
342 F(42860000, P_GPLL0, 14, 0, 0),
346 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
350 .parent_map = gcc_xo_gpll0_map,
351 .freq_tbl = ftbl_blsp1_qup5_spi_apps_clk_src,
352 .clkr.hw.init = &(struct clk_init_data){
353 .name = "blsp1_qup5_spi_apps_clk_src",
354 .parent_data = gcc_xo_gpll0,
355 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
356 .ops = &clk_rcg2_ops,
360 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
363 .parent_map = gcc_xo_gpll0_map,
364 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
365 .clkr.hw.init = &(struct clk_init_data){
366 .name = "blsp1_qup6_i2c_apps_clk_src",
367 .parent_data = gcc_xo_gpll0,
368 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
369 .ops = &clk_rcg2_ops,
373 static struct freq_tbl ftbl_blsp1_qup6_spi_apps_clk_src[] = {
374 F(960000, P_XO, 10, 1, 2),
375 F(4800000, P_XO, 4, 0, 0),
376 F(9600000, P_XO, 2, 0, 0),
377 F(15000000, P_GPLL0, 10, 1, 4),
378 F(19200000, P_XO, 1, 0, 0),
379 F(24000000, P_GPLL0, 12.5, 1, 2),
380 F(27906976, P_GPLL0, 1, 2, 43),
381 F(41380000, P_GPLL0, 15, 0, 0),
382 F(42860000, P_GPLL0, 14, 0, 0),
386 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
390 .parent_map = gcc_xo_gpll0_map,
391 .freq_tbl = ftbl_blsp1_qup6_spi_apps_clk_src,
392 .clkr.hw.init = &(struct clk_init_data){
393 .name = "blsp1_qup6_spi_apps_clk_src",
394 .parent_data = gcc_xo_gpll0,
395 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
396 .ops = &clk_rcg2_ops,
400 static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
401 F(3686400, P_GPLL0, 1, 96, 15625),
402 F(7372800, P_GPLL0, 1, 192, 15625),
403 F(14745600, P_GPLL0, 1, 384, 15625),
404 F(16000000, P_GPLL0, 5, 2, 15),
405 F(19200000, P_XO, 1, 0, 0),
406 F(24000000, P_GPLL0, 5, 1, 5),
407 F(32000000, P_GPLL0, 1, 4, 75),
408 F(40000000, P_GPLL0, 15, 0, 0),
409 F(46400000, P_GPLL0, 1, 29, 375),
410 F(48000000, P_GPLL0, 12.5, 0, 0),
411 F(51200000, P_GPLL0, 1, 32, 375),
412 F(56000000, P_GPLL0, 1, 7, 75),
413 F(58982400, P_GPLL0, 1, 1536, 15625),
414 F(60000000, P_GPLL0, 10, 0, 0),
415 F(63160000, P_GPLL0, 9.5, 0, 0),
419 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
423 .parent_map = gcc_xo_gpll0_map,
424 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
425 .clkr.hw.init = &(struct clk_init_data){
426 .name = "blsp1_uart1_apps_clk_src",
427 .parent_data = gcc_xo_gpll0,
428 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
429 .ops = &clk_rcg2_ops,
433 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
437 .parent_map = gcc_xo_gpll0_map,
438 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
439 .clkr.hw.init = &(struct clk_init_data){
440 .name = "blsp1_uart2_apps_clk_src",
441 .parent_data = gcc_xo_gpll0,
442 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
443 .ops = &clk_rcg2_ops,
447 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
451 .parent_map = gcc_xo_gpll0_map,
452 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
453 .clkr.hw.init = &(struct clk_init_data){
454 .name = "blsp1_uart3_apps_clk_src",
455 .parent_data = gcc_xo_gpll0,
456 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
457 .ops = &clk_rcg2_ops,
461 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
465 .parent_map = gcc_xo_gpll0_map,
466 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
467 .clkr.hw.init = &(struct clk_init_data){
468 .name = "blsp1_uart4_apps_clk_src",
469 .parent_data = gcc_xo_gpll0,
470 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
471 .ops = &clk_rcg2_ops,
475 static struct clk_rcg2 blsp1_uart5_apps_clk_src = {
479 .parent_map = gcc_xo_gpll0_map,
480 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
481 .clkr.hw.init = &(struct clk_init_data){
482 .name = "blsp1_uart5_apps_clk_src",
483 .parent_data = gcc_xo_gpll0,
484 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
485 .ops = &clk_rcg2_ops,
489 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
493 .parent_map = gcc_xo_gpll0_map,
494 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
495 .clkr.hw.init = &(struct clk_init_data){
496 .name = "blsp1_uart6_apps_clk_src",
497 .parent_data = gcc_xo_gpll0,
498 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
499 .ops = &clk_rcg2_ops,
503 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
506 .parent_map = gcc_xo_gpll0_map,
507 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
508 .clkr.hw.init = &(struct clk_init_data){
509 .name = "blsp2_qup1_i2c_apps_clk_src",
510 .parent_data = gcc_xo_gpll0,
511 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
512 .ops = &clk_rcg2_ops,
516 static struct freq_tbl ftbl_blsp2_qup1_2_spi_apps_clk_src[] = {
517 F(960000, P_XO, 10, 1, 2),
518 F(4800000, P_XO, 4, 0, 0),
519 F(9600000, P_XO, 2, 0, 0),
520 F(15000000, P_GPLL0, 10, 1, 4),
521 F(19200000, P_XO, 1, 0, 0),
522 F(24000000, P_GPLL0, 12.5, 1, 2),
523 F(25000000, P_GPLL0, 12, 1, 2),
524 F(42860000, P_GPLL0, 14, 0, 0),
525 F(44440000, P_GPLL0, 13.5, 0, 0),
529 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
533 .parent_map = gcc_xo_gpll0_map,
534 .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
535 .clkr.hw.init = &(struct clk_init_data){
536 .name = "blsp2_qup1_spi_apps_clk_src",
537 .parent_data = gcc_xo_gpll0,
538 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
539 .ops = &clk_rcg2_ops,
543 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
546 .parent_map = gcc_xo_gpll0_map,
547 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
548 .clkr.hw.init = &(struct clk_init_data){
549 .name = "blsp2_qup2_i2c_apps_clk_src",
550 .parent_data = gcc_xo_gpll0,
551 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
552 .ops = &clk_rcg2_ops,
556 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
560 .parent_map = gcc_xo_gpll0_map,
561 .freq_tbl = ftbl_blsp2_qup1_2_spi_apps_clk_src,
562 .clkr.hw.init = &(struct clk_init_data){
563 .name = "blsp2_qup2_spi_apps_clk_src",
564 .parent_data = gcc_xo_gpll0,
565 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
566 .ops = &clk_rcg2_ops,
570 static struct freq_tbl ftbl_blsp2_qup3_4_spi_apps_clk_src[] = {
571 F(960000, P_XO, 10, 1, 2),
572 F(4800000, P_XO, 4, 0, 0),
573 F(9600000, P_XO, 2, 0, 0),
574 F(15000000, P_GPLL0, 10, 1, 4),
575 F(19200000, P_XO, 1, 0, 0),
576 F(24000000, P_GPLL0, 12.5, 1, 2),
577 F(25000000, P_GPLL0, 12, 1, 2),
578 F(42860000, P_GPLL0, 14, 0, 0),
579 F(48000000, P_GPLL0, 12.5, 0, 0),
583 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
586 .parent_map = gcc_xo_gpll0_map,
587 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
588 .clkr.hw.init = &(struct clk_init_data){
589 .name = "blsp2_qup3_i2c_apps_clk_src",
590 .parent_data = gcc_xo_gpll0,
591 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
592 .ops = &clk_rcg2_ops,
596 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
600 .parent_map = gcc_xo_gpll0_map,
601 .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
602 .clkr.hw.init = &(struct clk_init_data){
603 .name = "blsp2_qup3_spi_apps_clk_src",
604 .parent_data = gcc_xo_gpll0,
605 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
606 .ops = &clk_rcg2_ops,
610 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
613 .parent_map = gcc_xo_gpll0_map,
614 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
615 .clkr.hw.init = &(struct clk_init_data){
616 .name = "blsp2_qup4_i2c_apps_clk_src",
617 .parent_data = gcc_xo_gpll0,
618 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
619 .ops = &clk_rcg2_ops,
623 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
627 .parent_map = gcc_xo_gpll0_map,
628 .freq_tbl = ftbl_blsp2_qup3_4_spi_apps_clk_src,
629 .clkr.hw.init = &(struct clk_init_data){
630 .name = "blsp2_qup4_spi_apps_clk_src",
631 .parent_data = gcc_xo_gpll0,
632 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
633 .ops = &clk_rcg2_ops,
637 static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
640 .parent_map = gcc_xo_gpll0_map,
641 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
642 .clkr.hw.init = &(struct clk_init_data){
643 .name = "blsp2_qup5_i2c_apps_clk_src",
644 .parent_data = gcc_xo_gpll0,
645 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
646 .ops = &clk_rcg2_ops,
650 static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
654 .parent_map = gcc_xo_gpll0_map,
655 /* BLSP1 QUP1 and BLSP2 QUP5 use the same freqs */
656 .freq_tbl = ftbl_blsp1_qup1_spi_apps_clk_src,
657 .clkr.hw.init = &(struct clk_init_data){
658 .name = "blsp2_qup5_spi_apps_clk_src",
659 .parent_data = gcc_xo_gpll0,
660 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
661 .ops = &clk_rcg2_ops,
665 static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
668 .parent_map = gcc_xo_gpll0_map,
669 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
670 .clkr.hw.init = &(struct clk_init_data){
671 .name = "blsp2_qup6_i2c_apps_clk_src",
672 .parent_data = gcc_xo_gpll0,
673 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
674 .ops = &clk_rcg2_ops,
678 static struct freq_tbl ftbl_blsp2_qup6_spi_apps_clk_src[] = {
679 F(960000, P_XO, 10, 1, 2),
680 F(4800000, P_XO, 4, 0, 0),
681 F(9600000, P_XO, 2, 0, 0),
682 F(15000000, P_GPLL0, 10, 1, 4),
683 F(19200000, P_XO, 1, 0, 0),
684 F(24000000, P_GPLL0, 12.5, 1, 2),
685 F(25000000, P_GPLL0, 12, 1, 2),
686 F(44440000, P_GPLL0, 13.5, 0, 0),
687 F(48000000, P_GPLL0, 12.5, 0, 0),
691 static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
695 .parent_map = gcc_xo_gpll0_map,
696 .freq_tbl = ftbl_blsp2_qup6_spi_apps_clk_src,
697 .clkr.hw.init = &(struct clk_init_data){
698 .name = "blsp2_qup6_spi_apps_clk_src",
699 .parent_data = gcc_xo_gpll0,
700 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
701 .ops = &clk_rcg2_ops,
705 static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
709 .parent_map = gcc_xo_gpll0_map,
710 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
711 .clkr.hw.init = &(struct clk_init_data){
712 .name = "blsp2_uart1_apps_clk_src",
713 .parent_data = gcc_xo_gpll0,
714 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
715 .ops = &clk_rcg2_ops,
719 static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
723 .parent_map = gcc_xo_gpll0_map,
724 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
725 .clkr.hw.init = &(struct clk_init_data){
726 .name = "blsp2_uart2_apps_clk_src",
727 .parent_data = gcc_xo_gpll0,
728 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
729 .ops = &clk_rcg2_ops,
733 static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
737 .parent_map = gcc_xo_gpll0_map,
738 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
739 .clkr.hw.init = &(struct clk_init_data){
740 .name = "blsp2_uart3_apps_clk_src",
741 .parent_data = gcc_xo_gpll0,
742 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
743 .ops = &clk_rcg2_ops,
747 static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
751 .parent_map = gcc_xo_gpll0_map,
752 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
753 .clkr.hw.init = &(struct clk_init_data){
754 .name = "blsp2_uart4_apps_clk_src",
755 .parent_data = gcc_xo_gpll0,
756 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
757 .ops = &clk_rcg2_ops,
761 static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
765 .parent_map = gcc_xo_gpll0_map,
766 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
767 .clkr.hw.init = &(struct clk_init_data){
768 .name = "blsp2_uart5_apps_clk_src",
769 .parent_data = gcc_xo_gpll0,
770 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
771 .ops = &clk_rcg2_ops,
775 static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
779 .parent_map = gcc_xo_gpll0_map,
780 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
781 .clkr.hw.init = &(struct clk_init_data){
782 .name = "blsp2_uart6_apps_clk_src",
783 .parent_data = gcc_xo_gpll0,
784 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
785 .ops = &clk_rcg2_ops,
789 static struct freq_tbl ftbl_gp1_clk_src[] = {
790 F(19200000, P_XO, 1, 0, 0),
791 F(100000000, P_GPLL0, 6, 0, 0),
792 F(200000000, P_GPLL0, 3, 0, 0),
796 static struct clk_rcg2 gp1_clk_src = {
800 .parent_map = gcc_xo_gpll0_map,
801 .freq_tbl = ftbl_gp1_clk_src,
802 .clkr.hw.init = &(struct clk_init_data){
803 .name = "gp1_clk_src",
804 .parent_data = gcc_xo_gpll0,
805 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
806 .ops = &clk_rcg2_ops,
810 static struct freq_tbl ftbl_gp2_clk_src[] = {
811 F(19200000, P_XO, 1, 0, 0),
812 F(100000000, P_GPLL0, 6, 0, 0),
813 F(200000000, P_GPLL0, 3, 0, 0),
817 static struct clk_rcg2 gp2_clk_src = {
821 .parent_map = gcc_xo_gpll0_map,
822 .freq_tbl = ftbl_gp2_clk_src,
823 .clkr.hw.init = &(struct clk_init_data){
824 .name = "gp2_clk_src",
825 .parent_data = gcc_xo_gpll0,
826 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
827 .ops = &clk_rcg2_ops,
831 static struct freq_tbl ftbl_gp3_clk_src[] = {
832 F(19200000, P_XO, 1, 0, 0),
833 F(100000000, P_GPLL0, 6, 0, 0),
834 F(200000000, P_GPLL0, 3, 0, 0),
838 static struct clk_rcg2 gp3_clk_src = {
842 .parent_map = gcc_xo_gpll0_map,
843 .freq_tbl = ftbl_gp3_clk_src,
844 .clkr.hw.init = &(struct clk_init_data){
845 .name = "gp3_clk_src",
846 .parent_data = gcc_xo_gpll0,
847 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
848 .ops = &clk_rcg2_ops,
852 static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
853 F(1011000, P_XO, 1, 1, 19),
857 static struct clk_rcg2 pcie_0_aux_clk_src = {
861 .freq_tbl = ftbl_pcie_0_aux_clk_src,
862 .clkr.hw.init = &(struct clk_init_data){
863 .name = "pcie_0_aux_clk_src",
864 .parent_data = &(const struct clk_parent_data){
868 .ops = &clk_rcg2_ops,
872 static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
873 F(125000000, P_XO, 1, 0, 0),
877 static struct clk_rcg2 pcie_0_pipe_clk_src = {
880 .freq_tbl = ftbl_pcie_pipe_clk_src,
881 .clkr.hw.init = &(struct clk_init_data){
882 .name = "pcie_0_pipe_clk_src",
883 .parent_data = &(const struct clk_parent_data){
887 .ops = &clk_rcg2_ops,
891 static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
892 F(1011000, P_XO, 1, 1, 19),
896 static struct clk_rcg2 pcie_1_aux_clk_src = {
900 .freq_tbl = ftbl_pcie_1_aux_clk_src,
901 .clkr.hw.init = &(struct clk_init_data){
902 .name = "pcie_1_aux_clk_src",
903 .parent_data = &(const struct clk_parent_data){
907 .ops = &clk_rcg2_ops,
911 static struct clk_rcg2 pcie_1_pipe_clk_src = {
914 .freq_tbl = ftbl_pcie_pipe_clk_src,
915 .clkr.hw.init = &(struct clk_init_data){
916 .name = "pcie_1_pipe_clk_src",
917 .parent_data = &(const struct clk_parent_data){
921 .ops = &clk_rcg2_ops,
925 static struct freq_tbl ftbl_pdm2_clk_src[] = {
926 F(60000000, P_GPLL0, 10, 0, 0),
930 static struct clk_rcg2 pdm2_clk_src = {
933 .parent_map = gcc_xo_gpll0_map,
934 .freq_tbl = ftbl_pdm2_clk_src,
935 .clkr.hw.init = &(struct clk_init_data){
936 .name = "pdm2_clk_src",
937 .parent_data = gcc_xo_gpll0,
938 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
939 .ops = &clk_rcg2_ops,
943 static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
944 F(144000, P_XO, 16, 3, 25),
945 F(400000, P_XO, 12, 1, 4),
946 F(20000000, P_GPLL0, 15, 1, 2),
947 F(25000000, P_GPLL0, 12, 1, 2),
948 F(50000000, P_GPLL0, 12, 0, 0),
949 F(100000000, P_GPLL0, 6, 0, 0),
950 F(192000000, P_GPLL4, 2, 0, 0),
951 F(384000000, P_GPLL4, 1, 0, 0),
955 static struct freq_tbl ftbl_sdcc1_apps_clk_src_8992[] = {
956 F(144000, P_XO, 16, 3, 25),
957 F(400000, P_XO, 12, 1, 4),
958 F(20000000, P_GPLL0, 15, 1, 2),
959 F(25000000, P_GPLL0, 12, 1, 2),
960 F(50000000, P_GPLL0, 12, 0, 0),
961 F(100000000, P_GPLL0, 6, 0, 0),
962 F(172000000, P_GPLL4, 2, 0, 0),
963 F(344000000, P_GPLL4, 1, 0, 0),
967 static struct clk_rcg2 sdcc1_apps_clk_src = {
971 .parent_map = gcc_xo_gpll0_gpll4_map,
972 .freq_tbl = ftbl_sdcc1_apps_clk_src,
973 .clkr.hw.init = &(struct clk_init_data){
974 .name = "sdcc1_apps_clk_src",
975 .parent_data = gcc_xo_gpll0_gpll4,
976 .num_parents = ARRAY_SIZE(gcc_xo_gpll0_gpll4),
977 .ops = &clk_rcg2_floor_ops,
981 static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
982 F(144000, P_XO, 16, 3, 25),
983 F(400000, P_XO, 12, 1, 4),
984 F(20000000, P_GPLL0, 15, 1, 2),
985 F(25000000, P_GPLL0, 12, 1, 2),
986 F(50000000, P_GPLL0, 12, 0, 0),
987 F(100000000, P_GPLL0, 6, 0, 0),
988 F(200000000, P_GPLL0, 3, 0, 0),
992 static struct clk_rcg2 sdcc2_apps_clk_src = {
996 .parent_map = gcc_xo_gpll0_map,
997 .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
998 .clkr.hw.init = &(struct clk_init_data){
999 .name = "sdcc2_apps_clk_src",
1000 .parent_data = gcc_xo_gpll0,
1001 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1002 .ops = &clk_rcg2_floor_ops,
1006 static struct clk_rcg2 sdcc3_apps_clk_src = {
1010 .parent_map = gcc_xo_gpll0_map,
1011 .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
1012 .clkr.hw.init = &(struct clk_init_data){
1013 .name = "sdcc3_apps_clk_src",
1014 .parent_data = gcc_xo_gpll0,
1015 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1016 .ops = &clk_rcg2_floor_ops,
1020 static struct clk_rcg2 sdcc4_apps_clk_src = {
1024 .parent_map = gcc_xo_gpll0_map,
1025 .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
1026 .clkr.hw.init = &(struct clk_init_data){
1027 .name = "sdcc4_apps_clk_src",
1028 .parent_data = gcc_xo_gpll0,
1029 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1030 .ops = &clk_rcg2_floor_ops,
1034 static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
1035 F(105500, P_XO, 1, 1, 182),
1039 static struct clk_rcg2 tsif_ref_clk_src = {
1043 .freq_tbl = ftbl_tsif_ref_clk_src,
1044 .clkr.hw.init = &(struct clk_init_data){
1045 .name = "tsif_ref_clk_src",
1046 .parent_data = &(const struct clk_parent_data){
1050 .ops = &clk_rcg2_ops,
1054 static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
1055 F(19200000, P_XO, 1, 0, 0),
1056 F(60000000, P_GPLL0, 10, 0, 0),
1060 static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1063 .parent_map = gcc_xo_gpll0_map,
1064 .freq_tbl = ftbl_usb30_mock_utmi_clk_src,
1065 .clkr.hw.init = &(struct clk_init_data){
1066 .name = "usb30_mock_utmi_clk_src",
1067 .parent_data = gcc_xo_gpll0,
1068 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1069 .ops = &clk_rcg2_ops,
1073 static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1074 F(1200000, P_XO, 16, 0, 0),
1078 static struct clk_rcg2 usb3_phy_aux_clk_src = {
1081 .freq_tbl = ftbl_usb3_phy_aux_clk_src,
1082 .clkr.hw.init = &(struct clk_init_data){
1083 .name = "usb3_phy_aux_clk_src",
1084 .parent_data = &(const struct clk_parent_data){
1088 .ops = &clk_rcg2_ops,
1092 static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1093 F(75000000, P_GPLL0, 8, 0, 0),
1097 static struct clk_rcg2 usb_hs_system_clk_src = {
1100 .parent_map = gcc_xo_gpll0_map,
1101 .freq_tbl = ftbl_usb_hs_system_clk_src,
1102 .clkr.hw.init = &(struct clk_init_data){
1103 .name = "usb_hs_system_clk_src",
1104 .parent_data = gcc_xo_gpll0,
1105 .num_parents = ARRAY_SIZE(gcc_xo_gpll0),
1106 .ops = &clk_rcg2_ops,
1110 static struct clk_branch gcc_blsp1_ahb_clk = {
1112 .halt_check = BRANCH_HALT_VOTED,
1114 .enable_reg = 0x1484,
1115 .enable_mask = BIT(17),
1116 .hw.init = &(struct clk_init_data){
1117 .name = "gcc_blsp1_ahb_clk",
1118 .ops = &clk_branch2_ops,
1123 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1126 .enable_reg = 0x0648,
1127 .enable_mask = BIT(0),
1128 .hw.init = &(struct clk_init_data){
1129 .name = "gcc_blsp1_qup1_i2c_apps_clk",
1130 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_i2c_apps_clk_src.clkr.hw },
1132 .flags = CLK_SET_RATE_PARENT,
1133 .ops = &clk_branch2_ops,
1138 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1141 .enable_reg = 0x0644,
1142 .enable_mask = BIT(0),
1143 .hw.init = &(struct clk_init_data){
1144 .name = "gcc_blsp1_qup1_spi_apps_clk",
1145 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup1_spi_apps_clk_src.clkr.hw },
1147 .flags = CLK_SET_RATE_PARENT,
1148 .ops = &clk_branch2_ops,
1153 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1156 .enable_reg = 0x06c8,
1157 .enable_mask = BIT(0),
1158 .hw.init = &(struct clk_init_data){
1159 .name = "gcc_blsp1_qup2_i2c_apps_clk",
1160 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_i2c_apps_clk_src.clkr.hw },
1162 .flags = CLK_SET_RATE_PARENT,
1163 .ops = &clk_branch2_ops,
1168 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1171 .enable_reg = 0x06c4,
1172 .enable_mask = BIT(0),
1173 .hw.init = &(struct clk_init_data){
1174 .name = "gcc_blsp1_qup2_spi_apps_clk",
1175 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup2_spi_apps_clk_src.clkr.hw },
1177 .flags = CLK_SET_RATE_PARENT,
1178 .ops = &clk_branch2_ops,
1183 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1186 .enable_reg = 0x0748,
1187 .enable_mask = BIT(0),
1188 .hw.init = &(struct clk_init_data){
1189 .name = "gcc_blsp1_qup3_i2c_apps_clk",
1190 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_i2c_apps_clk_src.clkr.hw },
1192 .flags = CLK_SET_RATE_PARENT,
1193 .ops = &clk_branch2_ops,
1198 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1201 .enable_reg = 0x0744,
1202 .enable_mask = BIT(0),
1203 .hw.init = &(struct clk_init_data){
1204 .name = "gcc_blsp1_qup3_spi_apps_clk",
1205 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup3_spi_apps_clk_src.clkr.hw },
1207 .flags = CLK_SET_RATE_PARENT,
1208 .ops = &clk_branch2_ops,
1213 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1216 .enable_reg = 0x07c8,
1217 .enable_mask = BIT(0),
1218 .hw.init = &(struct clk_init_data){
1219 .name = "gcc_blsp1_qup4_i2c_apps_clk",
1220 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_i2c_apps_clk_src.clkr.hw },
1222 .flags = CLK_SET_RATE_PARENT,
1223 .ops = &clk_branch2_ops,
1228 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1231 .enable_reg = 0x07c4,
1232 .enable_mask = BIT(0),
1233 .hw.init = &(struct clk_init_data){
1234 .name = "gcc_blsp1_qup4_spi_apps_clk",
1235 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup4_spi_apps_clk_src.clkr.hw },
1237 .flags = CLK_SET_RATE_PARENT,
1238 .ops = &clk_branch2_ops,
1243 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1246 .enable_reg = 0x0848,
1247 .enable_mask = BIT(0),
1248 .hw.init = &(struct clk_init_data){
1249 .name = "gcc_blsp1_qup5_i2c_apps_clk",
1250 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_i2c_apps_clk_src.clkr.hw },
1252 .flags = CLK_SET_RATE_PARENT,
1253 .ops = &clk_branch2_ops,
1258 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1261 .enable_reg = 0x0844,
1262 .enable_mask = BIT(0),
1263 .hw.init = &(struct clk_init_data){
1264 .name = "gcc_blsp1_qup5_spi_apps_clk",
1265 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup5_spi_apps_clk_src.clkr.hw },
1267 .flags = CLK_SET_RATE_PARENT,
1268 .ops = &clk_branch2_ops,
1273 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1276 .enable_reg = 0x08c8,
1277 .enable_mask = BIT(0),
1278 .hw.init = &(struct clk_init_data){
1279 .name = "gcc_blsp1_qup6_i2c_apps_clk",
1280 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_i2c_apps_clk_src.clkr.hw },
1282 .flags = CLK_SET_RATE_PARENT,
1283 .ops = &clk_branch2_ops,
1288 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1291 .enable_reg = 0x08c4,
1292 .enable_mask = BIT(0),
1293 .hw.init = &(struct clk_init_data){
1294 .name = "gcc_blsp1_qup6_spi_apps_clk",
1295 .parent_hws = (const struct clk_hw *[]){ &blsp1_qup6_spi_apps_clk_src.clkr.hw },
1297 .flags = CLK_SET_RATE_PARENT,
1298 .ops = &clk_branch2_ops,
1303 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1306 .enable_reg = 0x0684,
1307 .enable_mask = BIT(0),
1308 .hw.init = &(struct clk_init_data){
1309 .name = "gcc_blsp1_uart1_apps_clk",
1310 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart1_apps_clk_src.clkr.hw },
1312 .flags = CLK_SET_RATE_PARENT,
1313 .ops = &clk_branch2_ops,
1318 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1321 .enable_reg = 0x0704,
1322 .enable_mask = BIT(0),
1323 .hw.init = &(struct clk_init_data){
1324 .name = "gcc_blsp1_uart2_apps_clk",
1325 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart2_apps_clk_src.clkr.hw },
1327 .flags = CLK_SET_RATE_PARENT,
1328 .ops = &clk_branch2_ops,
1333 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1336 .enable_reg = 0x0784,
1337 .enable_mask = BIT(0),
1338 .hw.init = &(struct clk_init_data){
1339 .name = "gcc_blsp1_uart3_apps_clk",
1340 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart3_apps_clk_src.clkr.hw },
1342 .flags = CLK_SET_RATE_PARENT,
1343 .ops = &clk_branch2_ops,
1348 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1351 .enable_reg = 0x0804,
1352 .enable_mask = BIT(0),
1353 .hw.init = &(struct clk_init_data){
1354 .name = "gcc_blsp1_uart4_apps_clk",
1355 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart4_apps_clk_src.clkr.hw },
1357 .flags = CLK_SET_RATE_PARENT,
1358 .ops = &clk_branch2_ops,
1363 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1366 .enable_reg = 0x0884,
1367 .enable_mask = BIT(0),
1368 .hw.init = &(struct clk_init_data){
1369 .name = "gcc_blsp1_uart5_apps_clk",
1370 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart5_apps_clk_src.clkr.hw },
1372 .flags = CLK_SET_RATE_PARENT,
1373 .ops = &clk_branch2_ops,
1378 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1381 .enable_reg = 0x0904,
1382 .enable_mask = BIT(0),
1383 .hw.init = &(struct clk_init_data){
1384 .name = "gcc_blsp1_uart6_apps_clk",
1385 .parent_hws = (const struct clk_hw *[]){ &blsp1_uart6_apps_clk_src.clkr.hw },
1387 .flags = CLK_SET_RATE_PARENT,
1388 .ops = &clk_branch2_ops,
1393 static struct clk_branch gcc_blsp2_ahb_clk = {
1395 .halt_check = BRANCH_HALT_VOTED,
1397 .enable_reg = 0x1484,
1398 .enable_mask = BIT(15),
1399 .hw.init = &(struct clk_init_data){
1400 .name = "gcc_blsp2_ahb_clk",
1401 .ops = &clk_branch2_ops,
1406 static struct clk_branch gcc_blsp2_qup1_i2c_apps_clk = {
1409 .enable_reg = 0x0988,
1410 .enable_mask = BIT(0),
1411 .hw.init = &(struct clk_init_data){
1412 .name = "gcc_blsp2_qup1_i2c_apps_clk",
1413 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_i2c_apps_clk_src.clkr.hw },
1415 .flags = CLK_SET_RATE_PARENT,
1416 .ops = &clk_branch2_ops,
1421 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1424 .enable_reg = 0x0984,
1425 .enable_mask = BIT(0),
1426 .hw.init = &(struct clk_init_data){
1427 .name = "gcc_blsp2_qup1_spi_apps_clk",
1428 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup1_spi_apps_clk_src.clkr.hw },
1430 .flags = CLK_SET_RATE_PARENT,
1431 .ops = &clk_branch2_ops,
1436 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1439 .enable_reg = 0x0a08,
1440 .enable_mask = BIT(0),
1441 .hw.init = &(struct clk_init_data){
1442 .name = "gcc_blsp2_qup2_i2c_apps_clk",
1443 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_i2c_apps_clk_src.clkr.hw },
1445 .flags = CLK_SET_RATE_PARENT,
1446 .ops = &clk_branch2_ops,
1451 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1454 .enable_reg = 0x0a04,
1455 .enable_mask = BIT(0),
1456 .hw.init = &(struct clk_init_data){
1457 .name = "gcc_blsp2_qup2_spi_apps_clk",
1458 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup2_spi_apps_clk_src.clkr.hw },
1460 .flags = CLK_SET_RATE_PARENT,
1461 .ops = &clk_branch2_ops,
1466 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1469 .enable_reg = 0x0a88,
1470 .enable_mask = BIT(0),
1471 .hw.init = &(struct clk_init_data){
1472 .name = "gcc_blsp2_qup3_i2c_apps_clk",
1473 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_i2c_apps_clk_src.clkr.hw },
1475 .flags = CLK_SET_RATE_PARENT,
1476 .ops = &clk_branch2_ops,
1481 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1484 .enable_reg = 0x0a84,
1485 .enable_mask = BIT(0),
1486 .hw.init = &(struct clk_init_data){
1487 .name = "gcc_blsp2_qup3_spi_apps_clk",
1488 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup3_spi_apps_clk_src.clkr.hw },
1490 .flags = CLK_SET_RATE_PARENT,
1491 .ops = &clk_branch2_ops,
1496 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1499 .enable_reg = 0x0b08,
1500 .enable_mask = BIT(0),
1501 .hw.init = &(struct clk_init_data){
1502 .name = "gcc_blsp2_qup4_i2c_apps_clk",
1503 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_i2c_apps_clk_src.clkr.hw },
1505 .flags = CLK_SET_RATE_PARENT,
1506 .ops = &clk_branch2_ops,
1511 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1514 .enable_reg = 0x0b04,
1515 .enable_mask = BIT(0),
1516 .hw.init = &(struct clk_init_data){
1517 .name = "gcc_blsp2_qup4_spi_apps_clk",
1518 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup4_spi_apps_clk_src.clkr.hw },
1520 .flags = CLK_SET_RATE_PARENT,
1521 .ops = &clk_branch2_ops,
1526 static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1529 .enable_reg = 0x0b88,
1530 .enable_mask = BIT(0),
1531 .hw.init = &(struct clk_init_data){
1532 .name = "gcc_blsp2_qup5_i2c_apps_clk",
1533 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_i2c_apps_clk_src.clkr.hw },
1535 .flags = CLK_SET_RATE_PARENT,
1536 .ops = &clk_branch2_ops,
1541 static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1544 .enable_reg = 0x0b84,
1545 .enable_mask = BIT(0),
1546 .hw.init = &(struct clk_init_data){
1547 .name = "gcc_blsp2_qup5_spi_apps_clk",
1548 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup5_spi_apps_clk_src.clkr.hw },
1550 .flags = CLK_SET_RATE_PARENT,
1551 .ops = &clk_branch2_ops,
1556 static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1559 .enable_reg = 0x0c08,
1560 .enable_mask = BIT(0),
1561 .hw.init = &(struct clk_init_data){
1562 .name = "gcc_blsp2_qup6_i2c_apps_clk",
1563 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_i2c_apps_clk_src.clkr.hw },
1565 .flags = CLK_SET_RATE_PARENT,
1566 .ops = &clk_branch2_ops,
1571 static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1574 .enable_reg = 0x0c04,
1575 .enable_mask = BIT(0),
1576 .hw.init = &(struct clk_init_data){
1577 .name = "gcc_blsp2_qup6_spi_apps_clk",
1578 .parent_hws = (const struct clk_hw *[]){ &blsp2_qup6_spi_apps_clk_src.clkr.hw },
1580 .flags = CLK_SET_RATE_PARENT,
1581 .ops = &clk_branch2_ops,
1586 static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1589 .enable_reg = 0x09c4,
1590 .enable_mask = BIT(0),
1591 .hw.init = &(struct clk_init_data){
1592 .name = "gcc_blsp2_uart1_apps_clk",
1593 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart1_apps_clk_src.clkr.hw },
1595 .flags = CLK_SET_RATE_PARENT,
1596 .ops = &clk_branch2_ops,
1601 static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1604 .enable_reg = 0x0a44,
1605 .enable_mask = BIT(0),
1606 .hw.init = &(struct clk_init_data){
1607 .name = "gcc_blsp2_uart2_apps_clk",
1608 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart2_apps_clk_src.clkr.hw },
1610 .flags = CLK_SET_RATE_PARENT,
1611 .ops = &clk_branch2_ops,
1616 static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1619 .enable_reg = 0x0ac4,
1620 .enable_mask = BIT(0),
1621 .hw.init = &(struct clk_init_data){
1622 .name = "gcc_blsp2_uart3_apps_clk",
1623 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart3_apps_clk_src.clkr.hw },
1625 .flags = CLK_SET_RATE_PARENT,
1626 .ops = &clk_branch2_ops,
1631 static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1634 .enable_reg = 0x0b44,
1635 .enable_mask = BIT(0),
1636 .hw.init = &(struct clk_init_data){
1637 .name = "gcc_blsp2_uart4_apps_clk",
1638 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart4_apps_clk_src.clkr.hw },
1640 .flags = CLK_SET_RATE_PARENT,
1641 .ops = &clk_branch2_ops,
1646 static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1649 .enable_reg = 0x0bc4,
1650 .enable_mask = BIT(0),
1651 .hw.init = &(struct clk_init_data){
1652 .name = "gcc_blsp2_uart5_apps_clk",
1653 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart5_apps_clk_src.clkr.hw },
1655 .flags = CLK_SET_RATE_PARENT,
1656 .ops = &clk_branch2_ops,
1661 static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1664 .enable_reg = 0x0c44,
1665 .enable_mask = BIT(0),
1666 .hw.init = &(struct clk_init_data){
1667 .name = "gcc_blsp2_uart6_apps_clk",
1668 .parent_hws = (const struct clk_hw *[]){ &blsp2_uart6_apps_clk_src.clkr.hw },
1670 .flags = CLK_SET_RATE_PARENT,
1671 .ops = &clk_branch2_ops,
1676 static struct clk_branch gcc_gp1_clk = {
1679 .enable_reg = 0x1900,
1680 .enable_mask = BIT(0),
1681 .hw.init = &(struct clk_init_data){
1682 .name = "gcc_gp1_clk",
1683 .parent_hws = (const struct clk_hw *[]){ &gp1_clk_src.clkr.hw },
1685 .flags = CLK_SET_RATE_PARENT,
1686 .ops = &clk_branch2_ops,
1691 static struct clk_branch gcc_gp2_clk = {
1694 .enable_reg = 0x1940,
1695 .enable_mask = BIT(0),
1696 .hw.init = &(struct clk_init_data){
1697 .name = "gcc_gp2_clk",
1698 .parent_hws = (const struct clk_hw *[]){ &gp2_clk_src.clkr.hw },
1700 .flags = CLK_SET_RATE_PARENT,
1701 .ops = &clk_branch2_ops,
1706 static struct clk_branch gcc_gp3_clk = {
1709 .enable_reg = 0x1980,
1710 .enable_mask = BIT(0),
1711 .hw.init = &(struct clk_init_data){
1712 .name = "gcc_gp3_clk",
1713 .parent_hws = (const struct clk_hw *[]){ &gp3_clk_src.clkr.hw },
1715 .flags = CLK_SET_RATE_PARENT,
1716 .ops = &clk_branch2_ops,
1721 static struct clk_branch gcc_lpass_q6_axi_clk = {
1724 .enable_reg = 0x0280,
1725 .enable_mask = BIT(0),
1726 .hw.init = &(struct clk_init_data){
1727 .name = "gcc_lpass_q6_axi_clk",
1728 .ops = &clk_branch2_ops,
1733 static struct clk_branch gcc_mss_q6_bimc_axi_clk = {
1736 .enable_reg = 0x0284,
1737 .enable_mask = BIT(0),
1738 .hw.init = &(struct clk_init_data){
1739 .name = "gcc_mss_q6_bimc_axi_clk",
1740 .ops = &clk_branch2_ops,
1745 static struct clk_branch gcc_pcie_0_aux_clk = {
1748 .enable_reg = 0x1ad4,
1749 .enable_mask = BIT(0),
1750 .hw.init = &(struct clk_init_data){
1751 .name = "gcc_pcie_0_aux_clk",
1752 .parent_hws = (const struct clk_hw *[]){ &pcie_0_aux_clk_src.clkr.hw },
1754 .flags = CLK_SET_RATE_PARENT,
1755 .ops = &clk_branch2_ops,
1760 static struct clk_branch gcc_pcie_0_cfg_ahb_clk = {
1763 .enable_reg = 0x1ad0,
1764 .enable_mask = BIT(0),
1765 .hw.init = &(struct clk_init_data){
1766 .name = "gcc_pcie_0_cfg_ahb_clk",
1767 .ops = &clk_branch2_ops,
1772 static struct clk_branch gcc_pcie_0_mstr_axi_clk = {
1775 .enable_reg = 0x1acc,
1776 .enable_mask = BIT(0),
1777 .hw.init = &(struct clk_init_data){
1778 .name = "gcc_pcie_0_mstr_axi_clk",
1779 .ops = &clk_branch2_ops,
1784 static struct clk_branch gcc_pcie_0_pipe_clk = {
1786 .halt_check = BRANCH_HALT_DELAY,
1788 .enable_reg = 0x1ad8,
1789 .enable_mask = BIT(0),
1790 .hw.init = &(struct clk_init_data){
1791 .name = "gcc_pcie_0_pipe_clk",
1792 .parent_hws = (const struct clk_hw *[]){ &pcie_0_pipe_clk_src.clkr.hw },
1794 .flags = CLK_SET_RATE_PARENT,
1795 .ops = &clk_branch2_ops,
1800 static struct clk_branch gcc_pcie_0_slv_axi_clk = {
1802 .halt_check = BRANCH_HALT_DELAY,
1804 .enable_reg = 0x1ac8,
1805 .enable_mask = BIT(0),
1806 .hw.init = &(struct clk_init_data){
1807 .name = "gcc_pcie_0_slv_axi_clk",
1808 .ops = &clk_branch2_ops,
1813 static struct clk_branch gcc_pcie_1_aux_clk = {
1816 .enable_reg = 0x1b54,
1817 .enable_mask = BIT(0),
1818 .hw.init = &(struct clk_init_data){
1819 .name = "gcc_pcie_1_aux_clk",
1820 .parent_hws = (const struct clk_hw *[]){ &pcie_1_aux_clk_src.clkr.hw },
1822 .flags = CLK_SET_RATE_PARENT,
1823 .ops = &clk_branch2_ops,
1828 static struct clk_branch gcc_pcie_1_cfg_ahb_clk = {
1831 .enable_reg = 0x1b54,
1832 .enable_mask = BIT(0),
1833 .hw.init = &(struct clk_init_data){
1834 .name = "gcc_pcie_1_cfg_ahb_clk",
1835 .ops = &clk_branch2_ops,
1840 static struct clk_branch gcc_pcie_1_mstr_axi_clk = {
1843 .enable_reg = 0x1b50,
1844 .enable_mask = BIT(0),
1845 .hw.init = &(struct clk_init_data){
1846 .name = "gcc_pcie_1_mstr_axi_clk",
1847 .ops = &clk_branch2_ops,
1852 static struct clk_branch gcc_pcie_1_pipe_clk = {
1854 .halt_check = BRANCH_HALT_DELAY,
1856 .enable_reg = 0x1b58,
1857 .enable_mask = BIT(0),
1858 .hw.init = &(struct clk_init_data){
1859 .name = "gcc_pcie_1_pipe_clk",
1860 .parent_hws = (const struct clk_hw *[]){ &pcie_1_pipe_clk_src.clkr.hw },
1862 .flags = CLK_SET_RATE_PARENT,
1863 .ops = &clk_branch2_ops,
1868 static struct clk_branch gcc_pcie_1_slv_axi_clk = {
1871 .enable_reg = 0x1b48,
1872 .enable_mask = BIT(0),
1873 .hw.init = &(struct clk_init_data){
1874 .name = "gcc_pcie_1_slv_axi_clk",
1875 .ops = &clk_branch2_ops,
1880 static struct clk_branch gcc_pdm2_clk = {
1883 .enable_reg = 0x0ccc,
1884 .enable_mask = BIT(0),
1885 .hw.init = &(struct clk_init_data){
1886 .name = "gcc_pdm2_clk",
1887 .parent_hws = (const struct clk_hw *[]){ &pdm2_clk_src.clkr.hw },
1889 .flags = CLK_SET_RATE_PARENT,
1890 .ops = &clk_branch2_ops,
1895 static struct clk_branch gcc_pdm_ahb_clk = {
1898 .enable_reg = 0x0cc4,
1899 .enable_mask = BIT(0),
1900 .hw.init = &(struct clk_init_data){
1901 .name = "gcc_pdm_ahb_clk",
1902 .ops = &clk_branch2_ops,
1907 static struct clk_branch gcc_sdcc1_apps_clk = {
1910 .enable_reg = 0x04c4,
1911 .enable_mask = BIT(0),
1912 .hw.init = &(struct clk_init_data){
1913 .name = "gcc_sdcc1_apps_clk",
1914 .parent_hws = (const struct clk_hw *[]){ &sdcc1_apps_clk_src.clkr.hw },
1916 .flags = CLK_SET_RATE_PARENT,
1917 .ops = &clk_branch2_ops,
1922 static struct clk_branch gcc_sdcc1_ahb_clk = {
1925 .enable_reg = 0x04c8,
1926 .enable_mask = BIT(0),
1927 .hw.init = &(struct clk_init_data){
1928 .name = "gcc_sdcc1_ahb_clk",
1929 .ops = &clk_branch2_ops,
1934 static struct clk_branch gcc_sdcc2_ahb_clk = {
1937 .enable_reg = 0x0508,
1938 .enable_mask = BIT(0),
1939 .hw.init = &(struct clk_init_data){
1940 .name = "gcc_sdcc2_ahb_clk",
1941 .ops = &clk_branch2_ops,
1946 static struct clk_branch gcc_sdcc2_apps_clk = {
1949 .enable_reg = 0x0504,
1950 .enable_mask = BIT(0),
1951 .hw.init = &(struct clk_init_data){
1952 .name = "gcc_sdcc2_apps_clk",
1953 .parent_hws = (const struct clk_hw *[]){ &sdcc2_apps_clk_src.clkr.hw },
1955 .flags = CLK_SET_RATE_PARENT,
1956 .ops = &clk_branch2_ops,
1961 static struct clk_branch gcc_sdcc3_ahb_clk = {
1964 .enable_reg = 0x0548,
1965 .enable_mask = BIT(0),
1966 .hw.init = &(struct clk_init_data){
1967 .name = "gcc_sdcc3_ahb_clk",
1968 .ops = &clk_branch2_ops,
1973 static struct clk_branch gcc_sdcc3_apps_clk = {
1976 .enable_reg = 0x0544,
1977 .enable_mask = BIT(0),
1978 .hw.init = &(struct clk_init_data){
1979 .name = "gcc_sdcc3_apps_clk",
1980 .parent_hws = (const struct clk_hw *[]){ &sdcc3_apps_clk_src.clkr.hw },
1982 .flags = CLK_SET_RATE_PARENT,
1983 .ops = &clk_branch2_ops,
1988 static struct clk_branch gcc_sdcc4_ahb_clk = {
1991 .enable_reg = 0x0588,
1992 .enable_mask = BIT(0),
1993 .hw.init = &(struct clk_init_data){
1994 .name = "gcc_sdcc4_ahb_clk",
1995 .ops = &clk_branch2_ops,
2000 static struct clk_branch gcc_sdcc4_apps_clk = {
2003 .enable_reg = 0x0584,
2004 .enable_mask = BIT(0),
2005 .hw.init = &(struct clk_init_data){
2006 .name = "gcc_sdcc4_apps_clk",
2007 .parent_hws = (const struct clk_hw *[]){ &sdcc4_apps_clk_src.clkr.hw },
2009 .flags = CLK_SET_RATE_PARENT,
2010 .ops = &clk_branch2_ops,
2015 static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
2018 .enable_reg = 0x1d7c,
2019 .enable_mask = BIT(0),
2020 .hw.init = &(struct clk_init_data){
2021 .name = "gcc_sys_noc_ufs_axi_clk",
2022 .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2024 .flags = CLK_SET_RATE_PARENT,
2025 .ops = &clk_branch2_ops,
2030 static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
2033 .enable_reg = 0x03fc,
2034 .enable_mask = BIT(0),
2035 .hw.init = &(struct clk_init_data){
2036 .name = "gcc_sys_noc_usb3_axi_clk",
2037 .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2039 .flags = CLK_SET_RATE_PARENT,
2040 .ops = &clk_branch2_ops,
2045 static struct clk_branch gcc_tsif_ahb_clk = {
2048 .enable_reg = 0x0d84,
2049 .enable_mask = BIT(0),
2050 .hw.init = &(struct clk_init_data){
2051 .name = "gcc_tsif_ahb_clk",
2052 .ops = &clk_branch2_ops,
2057 static struct clk_branch gcc_tsif_ref_clk = {
2060 .enable_reg = 0x0d88,
2061 .enable_mask = BIT(0),
2062 .hw.init = &(struct clk_init_data){
2063 .name = "gcc_tsif_ref_clk",
2064 .parent_hws = (const struct clk_hw *[]){ &tsif_ref_clk_src.clkr.hw },
2066 .flags = CLK_SET_RATE_PARENT,
2067 .ops = &clk_branch2_ops,
2072 static struct clk_branch gcc_ufs_ahb_clk = {
2075 .enable_reg = 0x1d4c,
2076 .enable_mask = BIT(0),
2077 .hw.init = &(struct clk_init_data){
2078 .name = "gcc_ufs_ahb_clk",
2079 .ops = &clk_branch2_ops,
2084 static struct clk_branch gcc_ufs_axi_clk = {
2087 .enable_reg = 0x1d48,
2088 .enable_mask = BIT(0),
2089 .hw.init = &(struct clk_init_data){
2090 .name = "gcc_ufs_axi_clk",
2091 .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2093 .flags = CLK_SET_RATE_PARENT,
2094 .ops = &clk_branch2_ops,
2099 static struct clk_branch gcc_ufs_rx_cfg_clk = {
2102 .enable_reg = 0x1d54,
2103 .enable_mask = BIT(0),
2104 .hw.init = &(struct clk_init_data){
2105 .name = "gcc_ufs_rx_cfg_clk",
2106 .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2108 .flags = CLK_SET_RATE_PARENT,
2109 .ops = &clk_branch2_ops,
2114 static struct clk_branch gcc_ufs_rx_symbol_0_clk = {
2116 .halt_check = BRANCH_HALT_DELAY,
2118 .enable_reg = 0x1d60,
2119 .enable_mask = BIT(0),
2120 .hw.init = &(struct clk_init_data){
2121 .name = "gcc_ufs_rx_symbol_0_clk",
2122 .ops = &clk_branch2_ops,
2127 static struct clk_branch gcc_ufs_rx_symbol_1_clk = {
2129 .halt_check = BRANCH_HALT_DELAY,
2131 .enable_reg = 0x1d64,
2132 .enable_mask = BIT(0),
2133 .hw.init = &(struct clk_init_data){
2134 .name = "gcc_ufs_rx_symbol_1_clk",
2135 .ops = &clk_branch2_ops,
2140 static struct clk_branch gcc_ufs_tx_cfg_clk = {
2143 .enable_reg = 0x1d50,
2144 .enable_mask = BIT(0),
2145 .hw.init = &(struct clk_init_data){
2146 .name = "gcc_ufs_tx_cfg_clk",
2147 .parent_hws = (const struct clk_hw *[]){ &ufs_axi_clk_src.clkr.hw },
2149 .flags = CLK_SET_RATE_PARENT,
2150 .ops = &clk_branch2_ops,
2155 static struct clk_branch gcc_ufs_tx_symbol_0_clk = {
2157 .halt_check = BRANCH_HALT_DELAY,
2159 .enable_reg = 0x1d58,
2160 .enable_mask = BIT(0),
2161 .hw.init = &(struct clk_init_data){
2162 .name = "gcc_ufs_tx_symbol_0_clk",
2163 .ops = &clk_branch2_ops,
2168 static struct clk_branch gcc_ufs_tx_symbol_1_clk = {
2170 .halt_check = BRANCH_HALT_DELAY,
2172 .enable_reg = 0x1d5c,
2173 .enable_mask = BIT(0),
2174 .hw.init = &(struct clk_init_data){
2175 .name = "gcc_ufs_tx_symbol_1_clk",
2176 .ops = &clk_branch2_ops,
2181 static struct clk_branch gcc_usb2_hs_phy_sleep_clk = {
2184 .enable_reg = 0x04ac,
2185 .enable_mask = BIT(0),
2186 .hw.init = &(struct clk_init_data){
2187 .name = "gcc_usb2_hs_phy_sleep_clk",
2188 .parent_data = &(const struct clk_parent_data){
2193 .ops = &clk_branch2_ops,
2198 static struct clk_branch gcc_usb30_master_clk = {
2201 .enable_reg = 0x03c8,
2202 .enable_mask = BIT(0),
2203 .hw.init = &(struct clk_init_data){
2204 .name = "gcc_usb30_master_clk",
2205 .parent_hws = (const struct clk_hw *[]){ &usb30_master_clk_src.clkr.hw },
2207 .flags = CLK_SET_RATE_PARENT,
2208 .ops = &clk_branch2_ops,
2213 static struct clk_branch gcc_usb30_mock_utmi_clk = {
2216 .enable_reg = 0x03d0,
2217 .enable_mask = BIT(0),
2218 .hw.init = &(struct clk_init_data){
2219 .name = "gcc_usb30_mock_utmi_clk",
2220 .parent_hws = (const struct clk_hw *[]){ &usb30_mock_utmi_clk_src.clkr.hw },
2222 .flags = CLK_SET_RATE_PARENT,
2223 .ops = &clk_branch2_ops,
2228 static struct clk_branch gcc_usb30_sleep_clk = {
2231 .enable_reg = 0x03cc,
2232 .enable_mask = BIT(0),
2233 .hw.init = &(struct clk_init_data){
2234 .name = "gcc_usb30_sleep_clk",
2235 .parent_data = &(const struct clk_parent_data){
2240 .ops = &clk_branch2_ops,
2245 static struct clk_branch gcc_usb3_phy_aux_clk = {
2248 .enable_reg = 0x1408,
2249 .enable_mask = BIT(0),
2250 .hw.init = &(struct clk_init_data){
2251 .name = "gcc_usb3_phy_aux_clk",
2252 .parent_hws = (const struct clk_hw *[]){ &usb3_phy_aux_clk_src.clkr.hw },
2254 .flags = CLK_SET_RATE_PARENT,
2255 .ops = &clk_branch2_ops,
2260 static struct clk_branch gcc_usb3_phy_pipe_clk = {
2262 .halt_check = BRANCH_HALT_SKIP,
2264 .enable_reg = 0x140c,
2265 .enable_mask = BIT(0),
2266 .hw.init = &(struct clk_init_data){
2267 .name = "gcc_usb3_phy_pipe_clk",
2268 .ops = &clk_branch2_ops,
2273 static struct clk_branch gcc_usb_hs_ahb_clk = {
2276 .enable_reg = 0x0488,
2277 .enable_mask = BIT(0),
2278 .hw.init = &(struct clk_init_data){
2279 .name = "gcc_usb_hs_ahb_clk",
2280 .ops = &clk_branch2_ops,
2285 static struct clk_branch gcc_usb_hs_system_clk = {
2288 .enable_reg = 0x0484,
2289 .enable_mask = BIT(0),
2290 .hw.init = &(struct clk_init_data){
2291 .name = "gcc_usb_hs_system_clk",
2292 .parent_hws = (const struct clk_hw *[]){ &usb_hs_system_clk_src.clkr.hw },
2294 .flags = CLK_SET_RATE_PARENT,
2295 .ops = &clk_branch2_ops,
2300 static struct clk_branch gcc_usb_phy_cfg_ahb2phy_clk = {
2303 .enable_reg = 0x1a84,
2304 .enable_mask = BIT(0),
2305 .hw.init = &(struct clk_init_data){
2306 .name = "gcc_usb_phy_cfg_ahb2phy_clk",
2307 .ops = &clk_branch2_ops,
2312 static struct clk_branch gpll0_out_mmsscc = {
2313 .halt_check = BRANCH_HALT_DELAY,
2315 .enable_reg = 0x1484,
2316 .enable_mask = BIT(26),
2317 .hw.init = &(struct clk_init_data){
2318 .name = "gpll0_out_mmsscc",
2319 .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2321 .ops = &clk_branch2_ops,
2326 static struct clk_branch gpll0_out_msscc = {
2327 .halt_check = BRANCH_HALT_DELAY,
2329 .enable_reg = 0x1484,
2330 .enable_mask = BIT(27),
2331 .hw.init = &(struct clk_init_data){
2332 .name = "gpll0_out_msscc",
2333 .parent_hws = (const struct clk_hw *[]){ &gpll0.clkr.hw },
2335 .ops = &clk_branch2_ops,
2340 static struct clk_branch pcie_0_phy_ldo = {
2342 .halt_check = BRANCH_HALT_SKIP,
2344 .enable_reg = 0x1E00,
2345 .enable_mask = BIT(0),
2346 .hw.init = &(struct clk_init_data){
2347 .name = "pcie_0_phy_ldo",
2348 .ops = &clk_branch2_ops,
2353 static struct clk_branch pcie_1_phy_ldo = {
2355 .halt_check = BRANCH_HALT_SKIP,
2357 .enable_reg = 0x1E04,
2358 .enable_mask = BIT(0),
2359 .hw.init = &(struct clk_init_data){
2360 .name = "pcie_1_phy_ldo",
2361 .ops = &clk_branch2_ops,
2366 static struct clk_branch ufs_phy_ldo = {
2368 .halt_check = BRANCH_HALT_SKIP,
2370 .enable_reg = 0x1E0C,
2371 .enable_mask = BIT(0),
2372 .hw.init = &(struct clk_init_data){
2373 .name = "ufs_phy_ldo",
2374 .ops = &clk_branch2_ops,
2379 static struct clk_branch usb_ss_phy_ldo = {
2381 .halt_check = BRANCH_HALT_SKIP,
2383 .enable_reg = 0x1E08,
2384 .enable_mask = BIT(0),
2385 .hw.init = &(struct clk_init_data){
2386 .name = "usb_ss_phy_ldo",
2387 .ops = &clk_branch2_ops,
2392 static struct clk_branch gcc_boot_rom_ahb_clk = {
2394 .halt_check = BRANCH_HALT_VOTED,
2398 .enable_reg = 0x1484,
2399 .enable_mask = BIT(10),
2400 .hw.init = &(struct clk_init_data){
2401 .name = "gcc_boot_rom_ahb_clk",
2402 .ops = &clk_branch2_ops,
2407 static struct clk_branch gcc_prng_ahb_clk = {
2409 .halt_check = BRANCH_HALT_VOTED,
2411 .enable_reg = 0x1484,
2412 .enable_mask = BIT(13),
2413 .hw.init = &(struct clk_init_data){
2414 .name = "gcc_prng_ahb_clk",
2415 .ops = &clk_branch2_ops,
2420 static struct gdsc pcie_0_gdsc = {
2425 .pwrsts = PWRSTS_OFF_ON,
2428 static struct gdsc pcie_1_gdsc = {
2433 .pwrsts = PWRSTS_OFF_ON,
2436 static struct gdsc usb30_gdsc = {
2441 .pwrsts = PWRSTS_OFF_ON,
2444 static struct gdsc ufs_gdsc = {
2449 .pwrsts = PWRSTS_OFF_ON,
2452 static struct clk_regmap *gcc_msm8994_clocks[] = {
2453 [GPLL0_EARLY] = &gpll0_early.clkr,
2454 [GPLL0] = &gpll0.clkr,
2455 [GPLL4_EARLY] = &gpll4_early.clkr,
2456 [GPLL4] = &gpll4.clkr,
2457 [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2458 [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2459 [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2460 [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2461 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2462 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2463 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2464 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2465 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2466 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2467 [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2468 [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2469 [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2470 [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2471 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2472 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2473 [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2474 [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2475 [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2476 [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2477 [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2478 [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2479 [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2480 [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2481 [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2482 [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2483 [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2484 [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2485 [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2486 [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2487 [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2488 [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2489 [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2490 [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2491 [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2492 [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2493 [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2494 [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2495 [GP1_CLK_SRC] = &gp1_clk_src.clkr,
2496 [GP2_CLK_SRC] = &gp2_clk_src.clkr,
2497 [GP3_CLK_SRC] = &gp3_clk_src.clkr,
2498 [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2499 [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2500 [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2501 [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2502 [PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2503 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2504 [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2505 [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2506 [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2507 [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2508 [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2509 [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2510 [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2511 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2512 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2513 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2514 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2515 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2516 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2517 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2518 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2519 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2520 [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2521 [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2522 [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2523 [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2524 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2525 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2526 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2527 [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2528 [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2529 [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2530 [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2531 [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2532 [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2533 [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2534 [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2535 [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2536 [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2537 [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2538 [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2539 [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2540 [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2541 [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2542 [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2543 [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2544 [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2545 [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2546 [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2547 [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2548 [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2549 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2550 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2551 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2552 [GCC_LPASS_Q6_AXI_CLK] = &gcc_lpass_q6_axi_clk.clkr,
2553 [GCC_MSS_Q6_BIMC_AXI_CLK] = &gcc_mss_q6_bimc_axi_clk.clkr,
2554 [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
2555 [GCC_PCIE_0_CFG_AHB_CLK] = &gcc_pcie_0_cfg_ahb_clk.clkr,
2556 [GCC_PCIE_0_MSTR_AXI_CLK] = &gcc_pcie_0_mstr_axi_clk.clkr,
2557 [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
2558 [GCC_PCIE_0_SLV_AXI_CLK] = &gcc_pcie_0_slv_axi_clk.clkr,
2559 [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
2560 [GCC_PCIE_1_CFG_AHB_CLK] = &gcc_pcie_1_cfg_ahb_clk.clkr,
2561 [GCC_PCIE_1_MSTR_AXI_CLK] = &gcc_pcie_1_mstr_axi_clk.clkr,
2562 [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
2563 [GCC_PCIE_1_SLV_AXI_CLK] = &gcc_pcie_1_slv_axi_clk.clkr,
2564 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
2565 [GCC_PDM_AHB_CLK] = &gcc_pdm_ahb_clk.clkr,
2566 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
2567 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
2568 [GCC_SDCC2_AHB_CLK] = &gcc_sdcc2_ahb_clk.clkr,
2569 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
2570 [GCC_SDCC3_AHB_CLK] = &gcc_sdcc3_ahb_clk.clkr,
2571 [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
2572 [GCC_SDCC4_AHB_CLK] = &gcc_sdcc4_ahb_clk.clkr,
2573 [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2574 [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2575 [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
2576 [GCC_TSIF_AHB_CLK] = &gcc_tsif_ahb_clk.clkr,
2577 [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
2578 [GCC_UFS_AHB_CLK] = &gcc_ufs_ahb_clk.clkr,
2579 [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2580 [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
2581 [GCC_UFS_RX_SYMBOL_0_CLK] = &gcc_ufs_rx_symbol_0_clk.clkr,
2582 [GCC_UFS_RX_SYMBOL_1_CLK] = &gcc_ufs_rx_symbol_1_clk.clkr,
2583 [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
2584 [GCC_UFS_TX_SYMBOL_0_CLK] = &gcc_ufs_tx_symbol_0_clk.clkr,
2585 [GCC_UFS_TX_SYMBOL_1_CLK] = &gcc_ufs_tx_symbol_1_clk.clkr,
2586 [GCC_USB2_HS_PHY_SLEEP_CLK] = &gcc_usb2_hs_phy_sleep_clk.clkr,
2587 [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2588 [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
2589 [GCC_USB30_SLEEP_CLK] = &gcc_usb30_sleep_clk.clkr,
2590 [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2591 [GCC_USB3_PHY_PIPE_CLK] = &gcc_usb3_phy_pipe_clk.clkr,
2592 [GCC_USB_HS_AHB_CLK] = &gcc_usb_hs_ahb_clk.clkr,
2593 [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
2594 [GCC_USB_PHY_CFG_AHB2PHY_CLK] = &gcc_usb_phy_cfg_ahb2phy_clk.clkr,
2595 [GPLL0_OUT_MMSSCC] = &gpll0_out_mmsscc.clkr,
2596 [GPLL0_OUT_MSSCC] = &gpll0_out_msscc.clkr,
2597 [PCIE_0_PHY_LDO] = &pcie_0_phy_ldo.clkr,
2598 [PCIE_1_PHY_LDO] = &pcie_1_phy_ldo.clkr,
2599 [UFS_PHY_LDO] = &ufs_phy_ldo.clkr,
2600 [USB_SS_PHY_LDO] = &usb_ss_phy_ldo.clkr,
2601 [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
2602 [GCC_PRNG_AHB_CLK] = &gcc_prng_ahb_clk.clkr,
2605 * The following clocks should NOT be managed by this driver, but they once were
2606 * mistakengly added. Now they are only here to indicate that they are not defined
2607 * on purpose, even though the names will stay in the header file (for ABI sanity).
2609 [CONFIG_NOC_CLK_SRC] = NULL,
2610 [PERIPH_NOC_CLK_SRC] = NULL,
2611 [SYSTEM_NOC_CLK_SRC] = NULL,
2614 static struct gdsc *gcc_msm8994_gdscs[] = {
2615 /* This GDSC does not exist, but ABI has to remain intact */
2617 [PCIE_0_GDSC] = &pcie_0_gdsc,
2618 [PCIE_1_GDSC] = &pcie_1_gdsc,
2619 [USB30_GDSC] = &usb30_gdsc,
2620 [UFS_GDSC] = &ufs_gdsc,
2623 static const struct qcom_reset_map gcc_msm8994_resets[] = {
2624 [USB3_PHY_RESET] = { 0x1400 },
2625 [USB3PHY_PHY_RESET] = { 0x1404 },
2626 [MSS_RESET] = { 0x1680 },
2627 [PCIE_PHY_0_RESET] = { 0x1b18 },
2628 [PCIE_PHY_1_RESET] = { 0x1b98 },
2629 [QUSB2_PHY_RESET] = { 0x04b8 },
2632 static const struct regmap_config gcc_msm8994_regmap_config = {
2636 .max_register = 0x2000,
2640 static const struct qcom_cc_desc gcc_msm8994_desc = {
2641 .config = &gcc_msm8994_regmap_config,
2642 .clks = gcc_msm8994_clocks,
2643 .num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
2644 .resets = gcc_msm8994_resets,
2645 .num_resets = ARRAY_SIZE(gcc_msm8994_resets),
2646 .gdscs = gcc_msm8994_gdscs,
2647 .num_gdscs = ARRAY_SIZE(gcc_msm8994_gdscs),
2650 static const struct of_device_id gcc_msm8994_match_table[] = {
2651 { .compatible = "qcom,gcc-msm8992" },
2652 { .compatible = "qcom,gcc-msm8994" }, /* V2 and V2.1 */
2655 MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2657 static int gcc_msm8994_probe(struct platform_device *pdev)
2659 if (of_device_is_compatible(pdev->dev.of_node, "qcom,gcc-msm8992")) {
2660 /* MSM8992 features less clocks and some have different freq tables */
2661 gcc_msm8994_desc.clks[UFS_AXI_CLK_SRC] = NULL;
2662 gcc_msm8994_desc.clks[GCC_LPASS_Q6_AXI_CLK] = NULL;
2663 gcc_msm8994_desc.clks[UFS_PHY_LDO] = NULL;
2664 gcc_msm8994_desc.clks[GCC_UFS_AHB_CLK] = NULL;
2665 gcc_msm8994_desc.clks[GCC_UFS_AXI_CLK] = NULL;
2666 gcc_msm8994_desc.clks[GCC_UFS_RX_CFG_CLK] = NULL;
2667 gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_0_CLK] = NULL;
2668 gcc_msm8994_desc.clks[GCC_UFS_RX_SYMBOL_1_CLK] = NULL;
2669 gcc_msm8994_desc.clks[GCC_UFS_TX_CFG_CLK] = NULL;
2670 gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_0_CLK] = NULL;
2671 gcc_msm8994_desc.clks[GCC_UFS_TX_SYMBOL_1_CLK] = NULL;
2673 sdcc1_apps_clk_src.freq_tbl = ftbl_sdcc1_apps_clk_src_8992;
2674 blsp1_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2675 blsp1_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2676 blsp1_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2677 blsp1_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2678 blsp1_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2679 blsp1_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2680 blsp2_qup1_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2681 blsp2_qup2_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2682 blsp2_qup3_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2683 blsp2_qup4_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2684 blsp2_qup5_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2685 blsp2_qup6_i2c_apps_clk_src.freq_tbl = ftbl_blsp1_qup_spi_apps_clk_src_8992;
2688 * Some 8992 boards might *possibly* use
2689 * PCIe1 clocks and controller, but it's not
2690 * standard and they should be disabled otherwise.
2692 gcc_msm8994_desc.clks[PCIE_1_AUX_CLK_SRC] = NULL;
2693 gcc_msm8994_desc.clks[PCIE_1_PIPE_CLK_SRC] = NULL;
2694 gcc_msm8994_desc.clks[PCIE_1_PHY_LDO] = NULL;
2695 gcc_msm8994_desc.clks[GCC_PCIE_1_AUX_CLK] = NULL;
2696 gcc_msm8994_desc.clks[GCC_PCIE_1_CFG_AHB_CLK] = NULL;
2697 gcc_msm8994_desc.clks[GCC_PCIE_1_MSTR_AXI_CLK] = NULL;
2698 gcc_msm8994_desc.clks[GCC_PCIE_1_PIPE_CLK] = NULL;
2699 gcc_msm8994_desc.clks[GCC_PCIE_1_SLV_AXI_CLK] = NULL;
2700 gcc_msm8994_desc.clks[GCC_SYS_NOC_UFS_AXI_CLK] = NULL;
2703 return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2706 static struct platform_driver gcc_msm8994_driver = {
2707 .probe = gcc_msm8994_probe,
2709 .name = "gcc-msm8994",
2710 .of_match_table = gcc_msm8994_match_table,
2714 static int __init gcc_msm8994_init(void)
2716 return platform_driver_register(&gcc_msm8994_driver);
2718 core_initcall(gcc_msm8994_init);
2720 static void __exit gcc_msm8994_exit(void)
2722 platform_driver_unregister(&gcc_msm8994_driver);
2724 module_exit(gcc_msm8994_exit);
2726 MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2727 MODULE_LICENSE("GPL v2");
2728 MODULE_ALIAS("platform:gcc-msm8994");