1 /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
13 #include <linux/kernel.h>
14 #include <linux/init.h>
15 #include <linux/err.h>
16 #include <linux/ctype.h>
19 #include <linux/platform_device.h>
20 #include <linux/module.h>
21 #include <linux/regmap.h>
23 #include <dt-bindings/clock/qcom,gcc-msm8994.h>
26 #include "clk-regmap.h"
27 #include "clk-alpha-pll.h"
29 #include "clk-branch.h"
38 static const struct parent_map gcc_xo_gpll0_map[] = {
43 static const char * const gcc_xo_gpll0[] = {
48 static const struct parent_map gcc_xo_gpll0_gpll4_map[] = {
54 static const char * const gcc_xo_gpll0_gpll4[] = {
60 static struct clk_fixed_factor xo = {
63 .hw.init = &(struct clk_init_data)
66 .parent_names = (const char *[]) { "xo_board" },
68 .ops = &clk_fixed_factor_ops,
72 static struct clk_alpha_pll gpll0_early = {
74 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
77 .enable_mask = BIT(0),
78 .hw.init = &(struct clk_init_data)
80 .name = "gpll0_early",
81 .parent_names = (const char *[]) { "xo" },
83 .ops = &clk_alpha_pll_ops,
88 static struct clk_alpha_pll_postdiv gpll0 = {
90 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
91 .clkr.hw.init = &(struct clk_init_data)
94 .parent_names = (const char *[]) { "gpll0_early" },
96 .ops = &clk_alpha_pll_postdiv_ops,
100 static struct clk_alpha_pll gpll4_early = {
102 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
104 .enable_reg = 0x1480,
105 .enable_mask = BIT(4),
106 .hw.init = &(struct clk_init_data)
108 .name = "gpll4_early",
109 .parent_names = (const char *[]) { "xo" },
111 .ops = &clk_alpha_pll_ops,
116 static struct clk_alpha_pll_postdiv gpll4 = {
119 .regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
120 .clkr.hw.init = &(struct clk_init_data)
123 .parent_names = (const char *[]) { "gpll4_early" },
125 .ops = &clk_alpha_pll_postdiv_ops,
129 static struct freq_tbl ftbl_ufs_axi_clk_src[] = {
130 F(50000000, P_GPLL0, 12, 0, 0),
131 F(100000000, P_GPLL0, 6, 0, 0),
132 F(150000000, P_GPLL0, 4, 0, 0),
133 F(171430000, P_GPLL0, 3.5, 0, 0),
134 F(200000000, P_GPLL0, 3, 0, 0),
135 F(240000000, P_GPLL0, 2.5, 0, 0),
139 static struct clk_rcg2 ufs_axi_clk_src = {
143 .parent_map = gcc_xo_gpll0_map,
144 .freq_tbl = ftbl_ufs_axi_clk_src,
145 .clkr.hw.init = &(struct clk_init_data)
147 .name = "ufs_axi_clk_src",
148 .parent_names = gcc_xo_gpll0,
150 .ops = &clk_rcg2_ops,
154 static struct freq_tbl ftbl_usb30_master_clk_src[] = {
155 F(19200000, P_XO, 1, 0, 0),
156 F(125000000, P_GPLL0, 1, 5, 24),
160 static struct clk_rcg2 usb30_master_clk_src = {
164 .parent_map = gcc_xo_gpll0_map,
165 .freq_tbl = ftbl_usb30_master_clk_src,
166 .clkr.hw.init = &(struct clk_init_data)
168 .name = "usb30_master_clk_src",
169 .parent_names = gcc_xo_gpll0,
171 .ops = &clk_rcg2_ops,
175 static struct freq_tbl ftbl_blsp_i2c_apps_clk_src[] = {
176 F(19200000, P_XO, 1, 0, 0),
177 F(50000000, P_GPLL0, 12, 0, 0),
181 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
184 .parent_map = gcc_xo_gpll0_map,
185 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
186 .clkr.hw.init = &(struct clk_init_data)
188 .name = "blsp1_qup1_i2c_apps_clk_src",
189 .parent_names = gcc_xo_gpll0,
191 .ops = &clk_rcg2_ops,
195 static struct freq_tbl ftbl_blspqup_spi_apps_clk_src[] = {
196 F(960000, P_XO, 10, 1, 2),
197 F(4800000, P_XO, 4, 0, 0),
198 F(9600000, P_XO, 2, 0, 0),
199 F(15000000, P_GPLL0, 10, 1, 4),
200 F(19200000, P_XO, 1, 0, 0),
201 F(24000000, P_GPLL0, 12.5, 1, 2),
202 F(25000000, P_GPLL0, 12, 1, 2),
203 F(48000000, P_GPLL0, 12.5, 0, 0),
204 F(50000000, P_GPLL0, 12, 0, 0),
208 static struct clk_rcg2 blsp1_qup1_spi_apps_clk_src = {
212 .parent_map = gcc_xo_gpll0_map,
213 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
214 .clkr.hw.init = &(struct clk_init_data)
216 .name = "blsp1_qup1_spi_apps_clk_src",
217 .parent_names = gcc_xo_gpll0,
219 .ops = &clk_rcg2_ops,
223 static struct clk_rcg2 blsp1_qup2_i2c_apps_clk_src = {
226 .parent_map = gcc_xo_gpll0_map,
227 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
228 .clkr.hw.init = &(struct clk_init_data)
230 .name = "blsp1_qup2_i2c_apps_clk_src",
231 .parent_names = gcc_xo_gpll0,
233 .ops = &clk_rcg2_ops,
237 static struct clk_rcg2 blsp1_qup2_spi_apps_clk_src = {
241 .parent_map = gcc_xo_gpll0_map,
242 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
243 .clkr.hw.init = &(struct clk_init_data)
245 .name = "blsp1_qup2_spi_apps_clk_src",
246 .parent_names = gcc_xo_gpll0,
248 .ops = &clk_rcg2_ops,
252 static struct clk_rcg2 blsp1_qup3_i2c_apps_clk_src = {
255 .parent_map = gcc_xo_gpll0_map,
256 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
257 .clkr.hw.init = &(struct clk_init_data)
259 .name = "blsp1_qup3_i2c_apps_clk_src",
260 .parent_names = gcc_xo_gpll0,
262 .ops = &clk_rcg2_ops,
266 static struct clk_rcg2 blsp1_qup3_spi_apps_clk_src = {
270 .parent_map = gcc_xo_gpll0_map,
271 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
272 .clkr.hw.init = &(struct clk_init_data)
274 .name = "blsp1_qup3_spi_apps_clk_src",
275 .parent_names = gcc_xo_gpll0,
277 .ops = &clk_rcg2_ops,
281 static struct clk_rcg2 blsp1_qup4_i2c_apps_clk_src = {
284 .parent_map = gcc_xo_gpll0_map,
285 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
286 .clkr.hw.init = &(struct clk_init_data)
288 .name = "blsp1_qup4_i2c_apps_clk_src",
289 .parent_names = gcc_xo_gpll0,
291 .ops = &clk_rcg2_ops,
295 static struct clk_rcg2 blsp1_qup4_spi_apps_clk_src = {
299 .parent_map = gcc_xo_gpll0_map,
300 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
301 .clkr.hw.init = &(struct clk_init_data)
303 .name = "blsp1_qup4_spi_apps_clk_src",
304 .parent_names = gcc_xo_gpll0,
306 .ops = &clk_rcg2_ops,
310 static struct clk_rcg2 blsp1_qup5_i2c_apps_clk_src = {
313 .parent_map = gcc_xo_gpll0_map,
314 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
315 .clkr.hw.init = &(struct clk_init_data)
317 .name = "blsp1_qup5_i2c_apps_clk_src",
318 .parent_names = gcc_xo_gpll0,
320 .ops = &clk_rcg2_ops,
324 static struct clk_rcg2 blsp1_qup5_spi_apps_clk_src = {
328 .parent_map = gcc_xo_gpll0_map,
329 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
330 .clkr.hw.init = &(struct clk_init_data)
332 .name = "blsp1_qup5_spi_apps_clk_src",
333 .parent_names = gcc_xo_gpll0,
335 .ops = &clk_rcg2_ops,
339 static struct clk_rcg2 blsp1_qup6_i2c_apps_clk_src = {
342 .parent_map = gcc_xo_gpll0_map,
343 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
344 .clkr.hw.init = &(struct clk_init_data)
346 .name = "blsp1_qup6_i2c_apps_clk_src",
347 .parent_names = gcc_xo_gpll0,
349 .ops = &clk_rcg2_ops,
353 static struct clk_rcg2 blsp1_qup6_spi_apps_clk_src = {
357 .parent_map = gcc_xo_gpll0_map,
358 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
359 .clkr.hw.init = &(struct clk_init_data)
361 .name = "blsp1_qup6_spi_apps_clk_src",
362 .parent_names = gcc_xo_gpll0,
364 .ops = &clk_rcg2_ops,
368 static struct freq_tbl ftbl_blsp_uart_apps_clk_src[] = {
369 F(3686400, P_GPLL0, 1, 96, 15625),
370 F(7372800, P_GPLL0, 1, 192, 15625),
371 F(14745600, P_GPLL0, 1, 384, 15625),
372 F(16000000, P_GPLL0, 5, 2, 15),
373 F(19200000, P_XO, 1, 0, 0),
374 F(24000000, P_GPLL0, 5, 1, 5),
375 F(32000000, P_GPLL0, 1, 4, 75),
376 F(40000000, P_GPLL0, 15, 0, 0),
377 F(46400000, P_GPLL0, 1, 29, 375),
378 F(48000000, P_GPLL0, 12.5, 0, 0),
379 F(51200000, P_GPLL0, 1, 32, 375),
380 F(56000000, P_GPLL0, 1, 7, 75),
381 F(58982400, P_GPLL0, 1, 1536, 15625),
382 F(60000000, P_GPLL0, 10, 0, 0),
383 F(63160000, P_GPLL0, 9.5, 0, 0),
387 static struct clk_rcg2 blsp1_uart1_apps_clk_src = {
391 .parent_map = gcc_xo_gpll0_map,
392 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
393 .clkr.hw.init = &(struct clk_init_data)
395 .name = "blsp1_uart1_apps_clk_src",
396 .parent_names = gcc_xo_gpll0,
398 .ops = &clk_rcg2_ops,
402 static struct clk_rcg2 blsp1_uart2_apps_clk_src = {
406 .parent_map = gcc_xo_gpll0_map,
407 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
408 .clkr.hw.init = &(struct clk_init_data)
410 .name = "blsp1_uart2_apps_clk_src",
411 .parent_names = gcc_xo_gpll0,
413 .ops = &clk_rcg2_ops,
417 static struct clk_rcg2 blsp1_uart3_apps_clk_src = {
421 .parent_map = gcc_xo_gpll0_map,
422 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
423 .clkr.hw.init = &(struct clk_init_data)
425 .name = "blsp1_uart3_apps_clk_src",
426 .parent_names = gcc_xo_gpll0,
428 .ops = &clk_rcg2_ops,
432 static struct clk_rcg2 blsp1_uart4_apps_clk_src = {
436 .parent_map = gcc_xo_gpll0_map,
437 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
438 .clkr.hw.init = &(struct clk_init_data)
440 .name = "blsp1_uart4_apps_clk_src",
441 .parent_names = gcc_xo_gpll0,
443 .ops = &clk_rcg2_ops,
447 static struct clk_rcg2 blsp1_uart5_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)
455 .name = "blsp1_uart5_apps_clk_src",
456 .parent_names = gcc_xo_gpll0,
458 .ops = &clk_rcg2_ops,
462 static struct clk_rcg2 blsp1_uart6_apps_clk_src = {
466 .parent_map = gcc_xo_gpll0_map,
467 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
468 .clkr.hw.init = &(struct clk_init_data)
470 .name = "blsp1_uart6_apps_clk_src",
471 .parent_names = gcc_xo_gpll0,
473 .ops = &clk_rcg2_ops,
477 static struct clk_rcg2 blsp2_qup1_i2c_apps_clk_src = {
480 .parent_map = gcc_xo_gpll0_map,
481 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
482 .clkr.hw.init = &(struct clk_init_data)
484 .name = "blsp2_qup1_i2c_apps_clk_src",
485 .parent_names = gcc_xo_gpll0,
487 .ops = &clk_rcg2_ops,
491 static struct clk_rcg2 blsp2_qup1_spi_apps_clk_src = {
495 .parent_map = gcc_xo_gpll0_map,
496 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
497 .clkr.hw.init = &(struct clk_init_data)
499 .name = "blsp2_qup1_spi_apps_clk_src",
500 .parent_names = gcc_xo_gpll0,
502 .ops = &clk_rcg2_ops,
506 static struct clk_rcg2 blsp2_qup2_i2c_apps_clk_src = {
509 .parent_map = gcc_xo_gpll0_map,
510 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
511 .clkr.hw.init = &(struct clk_init_data)
513 .name = "blsp2_qup2_i2c_apps_clk_src",
514 .parent_names = gcc_xo_gpll0,
516 .ops = &clk_rcg2_ops,
520 static struct clk_rcg2 blsp2_qup2_spi_apps_clk_src = {
524 .parent_map = gcc_xo_gpll0_map,
525 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
526 .clkr.hw.init = &(struct clk_init_data)
528 .name = "blsp2_qup2_spi_apps_clk_src",
529 .parent_names = gcc_xo_gpll0,
531 .ops = &clk_rcg2_ops,
535 static struct clk_rcg2 blsp2_qup3_i2c_apps_clk_src = {
538 .parent_map = gcc_xo_gpll0_map,
539 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
540 .clkr.hw.init = &(struct clk_init_data)
542 .name = "blsp2_qup3_i2c_apps_clk_src",
543 .parent_names = gcc_xo_gpll0,
545 .ops = &clk_rcg2_ops,
549 static struct clk_rcg2 blsp2_qup3_spi_apps_clk_src = {
553 .parent_map = gcc_xo_gpll0_map,
554 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
555 .clkr.hw.init = &(struct clk_init_data)
557 .name = "blsp2_qup3_spi_apps_clk_src",
558 .parent_names = gcc_xo_gpll0,
560 .ops = &clk_rcg2_ops,
564 static struct clk_rcg2 blsp2_qup4_i2c_apps_clk_src = {
567 .parent_map = gcc_xo_gpll0_map,
568 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
569 .clkr.hw.init = &(struct clk_init_data)
571 .name = "blsp2_qup4_i2c_apps_clk_src",
572 .parent_names = gcc_xo_gpll0,
574 .ops = &clk_rcg2_ops,
578 static struct clk_rcg2 blsp2_qup4_spi_apps_clk_src = {
582 .parent_map = gcc_xo_gpll0_map,
583 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
584 .clkr.hw.init = &(struct clk_init_data)
586 .name = "blsp2_qup4_spi_apps_clk_src",
587 .parent_names = gcc_xo_gpll0,
589 .ops = &clk_rcg2_ops,
593 static struct clk_rcg2 blsp2_qup5_i2c_apps_clk_src = {
596 .parent_map = gcc_xo_gpll0_map,
597 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
598 .clkr.hw.init = &(struct clk_init_data)
600 .name = "blsp2_qup5_i2c_apps_clk_src",
601 .parent_names = gcc_xo_gpll0,
603 .ops = &clk_rcg2_ops,
607 static struct clk_rcg2 blsp2_qup5_spi_apps_clk_src = {
611 .parent_map = gcc_xo_gpll0_map,
612 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
613 .clkr.hw.init = &(struct clk_init_data)
615 .name = "blsp2_qup5_spi_apps_clk_src",
616 .parent_names = gcc_xo_gpll0,
618 .ops = &clk_rcg2_ops,
622 static struct clk_rcg2 blsp2_qup6_i2c_apps_clk_src = {
625 .parent_map = gcc_xo_gpll0_map,
626 .freq_tbl = ftbl_blsp_i2c_apps_clk_src,
627 .clkr.hw.init = &(struct clk_init_data)
629 .name = "blsp2_qup6_i2c_apps_clk_src",
630 .parent_names = gcc_xo_gpll0,
632 .ops = &clk_rcg2_ops,
636 static struct clk_rcg2 blsp2_qup6_spi_apps_clk_src = {
640 .parent_map = gcc_xo_gpll0_map,
641 .freq_tbl = ftbl_blspqup_spi_apps_clk_src,
642 .clkr.hw.init = &(struct clk_init_data)
644 .name = "blsp2_qup6_spi_apps_clk_src",
645 .parent_names = gcc_xo_gpll0,
647 .ops = &clk_rcg2_ops,
651 static struct clk_rcg2 blsp2_uart1_apps_clk_src = {
655 .parent_map = gcc_xo_gpll0_map,
656 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
657 .clkr.hw.init = &(struct clk_init_data)
659 .name = "blsp2_uart1_apps_clk_src",
660 .parent_names = gcc_xo_gpll0,
662 .ops = &clk_rcg2_ops,
666 static struct clk_rcg2 blsp2_uart2_apps_clk_src = {
670 .parent_map = gcc_xo_gpll0_map,
671 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
672 .clkr.hw.init = &(struct clk_init_data)
674 .name = "blsp2_uart2_apps_clk_src",
675 .parent_names = gcc_xo_gpll0,
677 .ops = &clk_rcg2_ops,
681 static struct clk_rcg2 blsp2_uart3_apps_clk_src = {
685 .parent_map = gcc_xo_gpll0_map,
686 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
687 .clkr.hw.init = &(struct clk_init_data)
689 .name = "blsp2_uart3_apps_clk_src",
690 .parent_names = gcc_xo_gpll0,
692 .ops = &clk_rcg2_ops,
696 static struct clk_rcg2 blsp2_uart4_apps_clk_src = {
700 .parent_map = gcc_xo_gpll0_map,
701 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
702 .clkr.hw.init = &(struct clk_init_data)
704 .name = "blsp2_uart4_apps_clk_src",
705 .parent_names = gcc_xo_gpll0,
707 .ops = &clk_rcg2_ops,
711 static struct clk_rcg2 blsp2_uart5_apps_clk_src = {
715 .parent_map = gcc_xo_gpll0_map,
716 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
717 .clkr.hw.init = &(struct clk_init_data)
719 .name = "blsp2_uart5_apps_clk_src",
720 .parent_names = gcc_xo_gpll0,
722 .ops = &clk_rcg2_ops,
726 static struct clk_rcg2 blsp2_uart6_apps_clk_src = {
730 .parent_map = gcc_xo_gpll0_map,
731 .freq_tbl = ftbl_blsp_uart_apps_clk_src,
732 .clkr.hw.init = &(struct clk_init_data)
734 .name = "blsp2_uart6_apps_clk_src",
735 .parent_names = gcc_xo_gpll0,
737 .ops = &clk_rcg2_ops,
741 static struct freq_tbl ftbl_gp1_clk_src[] = {
742 F(19200000, P_XO, 1, 0, 0),
743 F(100000000, P_GPLL0, 6, 0, 0),
744 F(200000000, P_GPLL0, 3, 0, 0),
748 static struct clk_rcg2 gp1_clk_src = {
752 .parent_map = gcc_xo_gpll0_map,
753 .freq_tbl = ftbl_gp1_clk_src,
754 .clkr.hw.init = &(struct clk_init_data)
756 .name = "gp1_clk_src",
757 .parent_names = gcc_xo_gpll0,
759 .ops = &clk_rcg2_ops,
763 static struct freq_tbl ftbl_gp2_clk_src[] = {
764 F(19200000, P_XO, 1, 0, 0),
765 F(100000000, P_GPLL0, 6, 0, 0),
766 F(200000000, P_GPLL0, 3, 0, 0),
770 static struct clk_rcg2 gp2_clk_src = {
774 .parent_map = gcc_xo_gpll0_map,
775 .freq_tbl = ftbl_gp2_clk_src,
776 .clkr.hw.init = &(struct clk_init_data)
778 .name = "gp2_clk_src",
779 .parent_names = gcc_xo_gpll0,
781 .ops = &clk_rcg2_ops,
785 static struct freq_tbl ftbl_gp3_clk_src[] = {
786 F(19200000, P_XO, 1, 0, 0),
787 F(100000000, P_GPLL0, 6, 0, 0),
788 F(200000000, P_GPLL0, 3, 0, 0),
792 static struct clk_rcg2 gp3_clk_src = {
796 .parent_map = gcc_xo_gpll0_map,
797 .freq_tbl = ftbl_gp3_clk_src,
798 .clkr.hw.init = &(struct clk_init_data)
800 .name = "gp3_clk_src",
801 .parent_names = gcc_xo_gpll0,
803 .ops = &clk_rcg2_ops,
807 static struct freq_tbl ftbl_pcie_0_aux_clk_src[] = {
808 F(1011000, P_XO, 1, 1, 19),
812 static struct clk_rcg2 pcie_0_aux_clk_src = {
816 .freq_tbl = ftbl_pcie_0_aux_clk_src,
817 .clkr.hw.init = &(struct clk_init_data)
819 .name = "pcie_0_aux_clk_src",
820 .parent_names = (const char *[]) { "xo" },
822 .ops = &clk_rcg2_ops,
826 static struct freq_tbl ftbl_pcie_pipe_clk_src[] = {
827 F(125000000, P_XO, 1, 0, 0),
831 static struct clk_rcg2 pcie_0_pipe_clk_src = {
834 .freq_tbl = ftbl_pcie_pipe_clk_src,
835 .clkr.hw.init = &(struct clk_init_data)
837 .name = "pcie_0_pipe_clk_src",
838 .parent_names = (const char *[]) { "xo" },
840 .ops = &clk_rcg2_ops,
844 static struct freq_tbl ftbl_pcie_1_aux_clk_src[] = {
845 F(1011000, P_XO, 1, 1, 19),
849 static struct clk_rcg2 pcie_1_aux_clk_src = {
853 .freq_tbl = ftbl_pcie_1_aux_clk_src,
854 .clkr.hw.init = &(struct clk_init_data)
856 .name = "pcie_1_aux_clk_src",
857 .parent_names = (const char *[]) { "xo" },
859 .ops = &clk_rcg2_ops,
863 static struct clk_rcg2 pcie_1_pipe_clk_src = {
866 .freq_tbl = ftbl_pcie_pipe_clk_src,
867 .clkr.hw.init = &(struct clk_init_data)
869 .name = "pcie_1_pipe_clk_src",
870 .parent_names = (const char *[]) { "xo" },
872 .ops = &clk_rcg2_ops,
876 static struct freq_tbl ftbl_pdm2_clk_src[] = {
877 F(60000000, P_GPLL0, 10, 0, 0),
881 static struct clk_rcg2 pdm2_clk_src = {
884 .parent_map = gcc_xo_gpll0_map,
885 .freq_tbl = ftbl_pdm2_clk_src,
886 .clkr.hw.init = &(struct clk_init_data)
888 .name = "pdm2_clk_src",
889 .parent_names = gcc_xo_gpll0,
891 .ops = &clk_rcg2_ops,
895 static struct freq_tbl ftbl_sdcc1_apps_clk_src[] = {
896 F(144000, P_XO, 16, 3, 25),
897 F(400000, P_XO, 12, 1, 4),
898 F(20000000, P_GPLL0, 15, 1, 2),
899 F(25000000, P_GPLL0, 12, 1, 2),
900 F(50000000, P_GPLL0, 12, 0, 0),
901 F(100000000, P_GPLL0, 6, 0, 0),
902 F(192000000, P_GPLL4, 2, 0, 0),
903 F(384000000, P_GPLL4, 1, 0, 0),
907 static struct clk_rcg2 sdcc1_apps_clk_src = {
911 .parent_map = gcc_xo_gpll0_gpll4_map,
912 .freq_tbl = ftbl_sdcc1_apps_clk_src,
913 .clkr.hw.init = &(struct clk_init_data)
915 .name = "sdcc1_apps_clk_src",
916 .parent_names = gcc_xo_gpll0_gpll4,
918 .ops = &clk_rcg2_floor_ops,
922 static struct freq_tbl ftbl_sdcc2_4_apps_clk_src[] = {
923 F(144000, P_XO, 16, 3, 25),
924 F(400000, P_XO, 12, 1, 4),
925 F(20000000, P_GPLL0, 15, 1, 2),
926 F(25000000, P_GPLL0, 12, 1, 2),
927 F(50000000, P_GPLL0, 12, 0, 0),
928 F(100000000, P_GPLL0, 6, 0, 0),
929 F(200000000, P_GPLL0, 3, 0, 0),
933 static struct clk_rcg2 sdcc2_apps_clk_src = {
937 .parent_map = gcc_xo_gpll0_map,
938 .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
939 .clkr.hw.init = &(struct clk_init_data)
941 .name = "sdcc2_apps_clk_src",
942 .parent_names = gcc_xo_gpll0,
944 .ops = &clk_rcg2_floor_ops,
948 static struct clk_rcg2 sdcc3_apps_clk_src = {
952 .parent_map = gcc_xo_gpll0_map,
953 .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
954 .clkr.hw.init = &(struct clk_init_data)
956 .name = "sdcc3_apps_clk_src",
957 .parent_names = gcc_xo_gpll0,
959 .ops = &clk_rcg2_floor_ops,
963 static struct clk_rcg2 sdcc4_apps_clk_src = {
967 .parent_map = gcc_xo_gpll0_map,
968 .freq_tbl = ftbl_sdcc2_4_apps_clk_src,
969 .clkr.hw.init = &(struct clk_init_data)
971 .name = "sdcc4_apps_clk_src",
972 .parent_names = gcc_xo_gpll0,
974 .ops = &clk_rcg2_floor_ops,
978 static struct freq_tbl ftbl_tsif_ref_clk_src[] = {
979 F(105500, P_XO, 1, 1, 182),
983 static struct clk_rcg2 tsif_ref_clk_src = {
987 .freq_tbl = ftbl_tsif_ref_clk_src,
988 .clkr.hw.init = &(struct clk_init_data)
990 .name = "tsif_ref_clk_src",
991 .parent_names = (const char *[]) { "xo" },
993 .ops = &clk_rcg2_ops,
997 static struct freq_tbl ftbl_usb30_mock_utmi_clk_src[] = {
998 F(19200000, P_XO, 1, 0, 0),
999 F(60000000, P_GPLL0, 10, 0, 0),
1003 static struct clk_rcg2 usb30_mock_utmi_clk_src = {
1006 .parent_map = gcc_xo_gpll0_map,
1007 .freq_tbl = ftbl_usb30_mock_utmi_clk_src,
1008 .clkr.hw.init = &(struct clk_init_data)
1010 .name = "usb30_mock_utmi_clk_src",
1011 .parent_names = gcc_xo_gpll0,
1013 .ops = &clk_rcg2_ops,
1017 static struct freq_tbl ftbl_usb3_phy_aux_clk_src[] = {
1018 F(1200000, P_XO, 16, 0, 0),
1022 static struct clk_rcg2 usb3_phy_aux_clk_src = {
1025 .freq_tbl = ftbl_usb3_phy_aux_clk_src,
1026 .clkr.hw.init = &(struct clk_init_data)
1028 .name = "usb3_phy_aux_clk_src",
1029 .parent_names = (const char *[]) { "xo" },
1031 .ops = &clk_rcg2_ops,
1035 static struct freq_tbl ftbl_usb_hs_system_clk_src[] = {
1036 F(75000000, P_GPLL0, 8, 0, 0),
1040 static struct clk_rcg2 usb_hs_system_clk_src = {
1043 .parent_map = gcc_xo_gpll0_map,
1044 .freq_tbl = ftbl_usb_hs_system_clk_src,
1045 .clkr.hw.init = &(struct clk_init_data)
1047 .name = "usb_hs_system_clk_src",
1048 .parent_names = gcc_xo_gpll0,
1050 .ops = &clk_rcg2_ops,
1054 static struct clk_branch gcc_blsp1_ahb_clk = {
1056 .halt_check = BRANCH_HALT_VOTED,
1058 .enable_reg = 0x1484,
1059 .enable_mask = BIT(17),
1060 .hw.init = &(struct clk_init_data)
1062 .name = "gcc_blsp1_ahb_clk",
1063 .ops = &clk_branch2_ops,
1068 static struct clk_branch gcc_blsp1_qup1_i2c_apps_clk = {
1071 .enable_reg = 0x0648,
1072 .enable_mask = BIT(0),
1073 .hw.init = &(struct clk_init_data)
1075 .name = "gcc_blsp1_qup1_i2c_apps_clk",
1076 .parent_names = (const char *[]) {
1077 "blsp1_qup1_i2c_apps_clk_src",
1080 .flags = CLK_SET_RATE_PARENT,
1081 .ops = &clk_branch2_ops,
1086 static struct clk_branch gcc_blsp1_qup1_spi_apps_clk = {
1089 .enable_reg = 0x0644,
1090 .enable_mask = BIT(0),
1091 .hw.init = &(struct clk_init_data)
1093 .name = "gcc_blsp1_qup1_spi_apps_clk",
1094 .parent_names = (const char *[]) {
1095 "blsp1_qup1_spi_apps_clk_src",
1098 .flags = CLK_SET_RATE_PARENT,
1099 .ops = &clk_branch2_ops,
1104 static struct clk_branch gcc_blsp1_qup2_i2c_apps_clk = {
1107 .enable_reg = 0x06c8,
1108 .enable_mask = BIT(0),
1109 .hw.init = &(struct clk_init_data)
1111 .name = "gcc_blsp1_qup2_i2c_apps_clk",
1112 .parent_names = (const char *[]) {
1113 "blsp1_qup2_i2c_apps_clk_src",
1116 .flags = CLK_SET_RATE_PARENT,
1117 .ops = &clk_branch2_ops,
1122 static struct clk_branch gcc_blsp1_qup2_spi_apps_clk = {
1125 .enable_reg = 0x06c4,
1126 .enable_mask = BIT(0),
1127 .hw.init = &(struct clk_init_data)
1129 .name = "gcc_blsp1_qup2_spi_apps_clk",
1130 .parent_names = (const char *[]) {
1131 "blsp1_qup2_spi_apps_clk_src",
1134 .flags = CLK_SET_RATE_PARENT,
1135 .ops = &clk_branch2_ops,
1140 static struct clk_branch gcc_blsp1_qup3_i2c_apps_clk = {
1143 .enable_reg = 0x0748,
1144 .enable_mask = BIT(0),
1145 .hw.init = &(struct clk_init_data)
1147 .name = "gcc_blsp1_qup3_i2c_apps_clk",
1148 .parent_names = (const char *[]) {
1149 "blsp1_qup3_i2c_apps_clk_src",
1152 .flags = CLK_SET_RATE_PARENT,
1153 .ops = &clk_branch2_ops,
1158 static struct clk_branch gcc_blsp1_qup3_spi_apps_clk = {
1161 .enable_reg = 0x0744,
1162 .enable_mask = BIT(0),
1163 .hw.init = &(struct clk_init_data)
1165 .name = "gcc_blsp1_qup3_spi_apps_clk",
1166 .parent_names = (const char *[]) {
1167 "blsp1_qup3_spi_apps_clk_src",
1170 .flags = CLK_SET_RATE_PARENT,
1171 .ops = &clk_branch2_ops,
1176 static struct clk_branch gcc_blsp1_qup4_i2c_apps_clk = {
1179 .enable_reg = 0x07c8,
1180 .enable_mask = BIT(0),
1181 .hw.init = &(struct clk_init_data)
1183 .name = "gcc_blsp1_qup4_i2c_apps_clk",
1184 .parent_names = (const char *[]) {
1185 "blsp1_qup4_i2c_apps_clk_src",
1188 .flags = CLK_SET_RATE_PARENT,
1189 .ops = &clk_branch2_ops,
1194 static struct clk_branch gcc_blsp1_qup4_spi_apps_clk = {
1197 .enable_reg = 0x07c4,
1198 .enable_mask = BIT(0),
1199 .hw.init = &(struct clk_init_data)
1201 .name = "gcc_blsp1_qup4_spi_apps_clk",
1202 .parent_names = (const char *[]) {
1203 "blsp1_qup4_spi_apps_clk_src",
1206 .flags = CLK_SET_RATE_PARENT,
1207 .ops = &clk_branch2_ops,
1212 static struct clk_branch gcc_blsp1_qup5_i2c_apps_clk = {
1215 .enable_reg = 0x0848,
1216 .enable_mask = BIT(0),
1217 .hw.init = &(struct clk_init_data)
1219 .name = "gcc_blsp1_qup5_i2c_apps_clk",
1220 .parent_names = (const char *[]) {
1221 "blsp1_qup5_i2c_apps_clk_src",
1224 .flags = CLK_SET_RATE_PARENT,
1225 .ops = &clk_branch2_ops,
1230 static struct clk_branch gcc_blsp1_qup5_spi_apps_clk = {
1233 .enable_reg = 0x0844,
1234 .enable_mask = BIT(0),
1235 .hw.init = &(struct clk_init_data)
1237 .name = "gcc_blsp1_qup5_spi_apps_clk",
1238 .parent_names = (const char *[]) {
1239 "blsp1_qup5_spi_apps_clk_src",
1242 .flags = CLK_SET_RATE_PARENT,
1243 .ops = &clk_branch2_ops,
1248 static struct clk_branch gcc_blsp1_qup6_i2c_apps_clk = {
1251 .enable_reg = 0x08c8,
1252 .enable_mask = BIT(0),
1253 .hw.init = &(struct clk_init_data)
1255 .name = "gcc_blsp1_qup6_i2c_apps_clk",
1256 .parent_names = (const char *[]) {
1257 "blsp1_qup6_i2c_apps_clk_src",
1260 .flags = CLK_SET_RATE_PARENT,
1261 .ops = &clk_branch2_ops,
1266 static struct clk_branch gcc_blsp1_qup6_spi_apps_clk = {
1269 .enable_reg = 0x08c4,
1270 .enable_mask = BIT(0),
1271 .hw.init = &(struct clk_init_data)
1273 .name = "gcc_blsp1_qup6_spi_apps_clk",
1274 .parent_names = (const char *[]) {
1275 "blsp1_qup6_spi_apps_clk_src",
1278 .flags = CLK_SET_RATE_PARENT,
1279 .ops = &clk_branch2_ops,
1284 static struct clk_branch gcc_blsp1_uart1_apps_clk = {
1287 .enable_reg = 0x0684,
1288 .enable_mask = BIT(0),
1289 .hw.init = &(struct clk_init_data)
1291 .name = "gcc_blsp1_uart1_apps_clk",
1292 .parent_names = (const char *[]) {
1293 "blsp1_uart1_apps_clk_src",
1296 .flags = CLK_SET_RATE_PARENT,
1297 .ops = &clk_branch2_ops,
1302 static struct clk_branch gcc_blsp1_uart2_apps_clk = {
1305 .enable_reg = 0x0704,
1306 .enable_mask = BIT(0),
1307 .hw.init = &(struct clk_init_data)
1309 .name = "gcc_blsp1_uart2_apps_clk",
1310 .parent_names = (const char *[]) {
1311 "blsp1_uart2_apps_clk_src",
1314 .flags = CLK_SET_RATE_PARENT,
1315 .ops = &clk_branch2_ops,
1320 static struct clk_branch gcc_blsp1_uart3_apps_clk = {
1323 .enable_reg = 0x0784,
1324 .enable_mask = BIT(0),
1325 .hw.init = &(struct clk_init_data)
1327 .name = "gcc_blsp1_uart3_apps_clk",
1328 .parent_names = (const char *[]) {
1329 "blsp1_uart3_apps_clk_src",
1332 .flags = CLK_SET_RATE_PARENT,
1333 .ops = &clk_branch2_ops,
1338 static struct clk_branch gcc_blsp1_uart4_apps_clk = {
1341 .enable_reg = 0x0804,
1342 .enable_mask = BIT(0),
1343 .hw.init = &(struct clk_init_data)
1345 .name = "gcc_blsp1_uart4_apps_clk",
1346 .parent_names = (const char *[]) {
1347 "blsp1_uart4_apps_clk_src",
1350 .flags = CLK_SET_RATE_PARENT,
1351 .ops = &clk_branch2_ops,
1356 static struct clk_branch gcc_blsp1_uart5_apps_clk = {
1359 .enable_reg = 0x0884,
1360 .enable_mask = BIT(0),
1361 .hw.init = &(struct clk_init_data)
1363 .name = "gcc_blsp1_uart5_apps_clk",
1364 .parent_names = (const char *[]) {
1365 "blsp1_uart5_apps_clk_src",
1368 .flags = CLK_SET_RATE_PARENT,
1369 .ops = &clk_branch2_ops,
1374 static struct clk_branch gcc_blsp1_uart6_apps_clk = {
1377 .enable_reg = 0x0904,
1378 .enable_mask = BIT(0),
1379 .hw.init = &(struct clk_init_data)
1381 .name = "gcc_blsp1_uart6_apps_clk",
1382 .parent_names = (const char *[]) {
1383 "blsp1_uart6_apps_clk_src",
1386 .flags = CLK_SET_RATE_PARENT,
1387 .ops = &clk_branch2_ops,
1392 static struct clk_branch gcc_blsp2_ahb_clk = {
1394 .halt_check = BRANCH_HALT_VOTED,
1396 .enable_reg = 0x1484,
1397 .enable_mask = BIT(15),
1398 .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)
1413 .name = "gcc_blsp2_qup1_i2c_apps_clk",
1414 .parent_names = (const char *[]) {
1415 "blsp2_qup1_i2c_apps_clk_src",
1418 .flags = CLK_SET_RATE_PARENT,
1419 .ops = &clk_branch2_ops,
1424 static struct clk_branch gcc_blsp2_qup1_spi_apps_clk = {
1427 .enable_reg = 0x0984,
1428 .enable_mask = BIT(0),
1429 .hw.init = &(struct clk_init_data)
1431 .name = "gcc_blsp2_qup1_spi_apps_clk",
1432 .parent_names = (const char *[]) {
1433 "blsp2_qup1_spi_apps_clk_src",
1436 .flags = CLK_SET_RATE_PARENT,
1437 .ops = &clk_branch2_ops,
1442 static struct clk_branch gcc_blsp2_qup2_i2c_apps_clk = {
1445 .enable_reg = 0x0a08,
1446 .enable_mask = BIT(0),
1447 .hw.init = &(struct clk_init_data)
1449 .name = "gcc_blsp2_qup2_i2c_apps_clk",
1450 .parent_names = (const char *[]) {
1451 "blsp2_qup2_i2c_apps_clk_src",
1454 .flags = CLK_SET_RATE_PARENT,
1455 .ops = &clk_branch2_ops,
1460 static struct clk_branch gcc_blsp2_qup2_spi_apps_clk = {
1463 .enable_reg = 0x0a04,
1464 .enable_mask = BIT(0),
1465 .hw.init = &(struct clk_init_data)
1467 .name = "gcc_blsp2_qup2_spi_apps_clk",
1468 .parent_names = (const char *[]) {
1469 "blsp2_qup2_spi_apps_clk_src",
1472 .flags = CLK_SET_RATE_PARENT,
1473 .ops = &clk_branch2_ops,
1478 static struct clk_branch gcc_blsp2_qup3_i2c_apps_clk = {
1481 .enable_reg = 0x0a88,
1482 .enable_mask = BIT(0),
1483 .hw.init = &(struct clk_init_data)
1485 .name = "gcc_blsp2_qup3_i2c_apps_clk",
1486 .parent_names = (const char *[]) {
1487 "blsp2_qup3_i2c_apps_clk_src",
1490 .flags = CLK_SET_RATE_PARENT,
1491 .ops = &clk_branch2_ops,
1496 static struct clk_branch gcc_blsp2_qup3_spi_apps_clk = {
1499 .enable_reg = 0x0a84,
1500 .enable_mask = BIT(0),
1501 .hw.init = &(struct clk_init_data)
1503 .name = "gcc_blsp2_qup3_spi_apps_clk",
1504 .parent_names = (const char *[]) {
1505 "blsp2_qup3_spi_apps_clk_src",
1508 .flags = CLK_SET_RATE_PARENT,
1509 .ops = &clk_branch2_ops,
1514 static struct clk_branch gcc_blsp2_qup4_i2c_apps_clk = {
1517 .enable_reg = 0x0b08,
1518 .enable_mask = BIT(0),
1519 .hw.init = &(struct clk_init_data)
1521 .name = "gcc_blsp2_qup4_i2c_apps_clk",
1522 .parent_names = (const char *[]) {
1523 "blsp2_qup4_i2c_apps_clk_src",
1526 .flags = CLK_SET_RATE_PARENT,
1527 .ops = &clk_branch2_ops,
1532 static struct clk_branch gcc_blsp2_qup4_spi_apps_clk = {
1535 .enable_reg = 0x0b04,
1536 .enable_mask = BIT(0),
1537 .hw.init = &(struct clk_init_data)
1539 .name = "gcc_blsp2_qup4_spi_apps_clk",
1540 .parent_names = (const char *[]) {
1541 "blsp2_qup4_spi_apps_clk_src",
1544 .flags = CLK_SET_RATE_PARENT,
1545 .ops = &clk_branch2_ops,
1550 static struct clk_branch gcc_blsp2_qup5_i2c_apps_clk = {
1553 .enable_reg = 0x0b88,
1554 .enable_mask = BIT(0),
1555 .hw.init = &(struct clk_init_data)
1557 .name = "gcc_blsp2_qup5_i2c_apps_clk",
1558 .parent_names = (const char *[]) {
1559 "blsp2_qup5_i2c_apps_clk_src",
1562 .flags = CLK_SET_RATE_PARENT,
1563 .ops = &clk_branch2_ops,
1568 static struct clk_branch gcc_blsp2_qup5_spi_apps_clk = {
1571 .enable_reg = 0x0b84,
1572 .enable_mask = BIT(0),
1573 .hw.init = &(struct clk_init_data)
1575 .name = "gcc_blsp2_qup5_spi_apps_clk",
1576 .parent_names = (const char *[]) {
1577 "blsp2_qup5_spi_apps_clk_src",
1580 .flags = CLK_SET_RATE_PARENT,
1581 .ops = &clk_branch2_ops,
1586 static struct clk_branch gcc_blsp2_qup6_i2c_apps_clk = {
1589 .enable_reg = 0x0c08,
1590 .enable_mask = BIT(0),
1591 .hw.init = &(struct clk_init_data)
1593 .name = "gcc_blsp2_qup6_i2c_apps_clk",
1594 .parent_names = (const char *[]) {
1595 "blsp2_qup6_i2c_apps_clk_src",
1598 .flags = CLK_SET_RATE_PARENT,
1599 .ops = &clk_branch2_ops,
1604 static struct clk_branch gcc_blsp2_qup6_spi_apps_clk = {
1607 .enable_reg = 0x0c04,
1608 .enable_mask = BIT(0),
1609 .hw.init = &(struct clk_init_data)
1611 .name = "gcc_blsp2_qup6_spi_apps_clk",
1612 .parent_names = (const char *[]) {
1613 "blsp2_qup6_spi_apps_clk_src",
1616 .flags = CLK_SET_RATE_PARENT,
1617 .ops = &clk_branch2_ops,
1622 static struct clk_branch gcc_blsp2_uart1_apps_clk = {
1625 .enable_reg = 0x09c4,
1626 .enable_mask = BIT(0),
1627 .hw.init = &(struct clk_init_data)
1629 .name = "gcc_blsp2_uart1_apps_clk",
1630 .parent_names = (const char *[]) {
1631 "blsp2_uart1_apps_clk_src",
1634 .flags = CLK_SET_RATE_PARENT,
1635 .ops = &clk_branch2_ops,
1640 static struct clk_branch gcc_blsp2_uart2_apps_clk = {
1643 .enable_reg = 0x0a44,
1644 .enable_mask = BIT(0),
1645 .hw.init = &(struct clk_init_data)
1647 .name = "gcc_blsp2_uart2_apps_clk",
1648 .parent_names = (const char *[]) {
1649 "blsp2_uart2_apps_clk_src",
1652 .flags = CLK_SET_RATE_PARENT,
1653 .ops = &clk_branch2_ops,
1658 static struct clk_branch gcc_blsp2_uart3_apps_clk = {
1661 .enable_reg = 0x0ac4,
1662 .enable_mask = BIT(0),
1663 .hw.init = &(struct clk_init_data)
1665 .name = "gcc_blsp2_uart3_apps_clk",
1666 .parent_names = (const char *[]) {
1667 "blsp2_uart3_apps_clk_src",
1670 .flags = CLK_SET_RATE_PARENT,
1671 .ops = &clk_branch2_ops,
1676 static struct clk_branch gcc_blsp2_uart4_apps_clk = {
1679 .enable_reg = 0x0b44,
1680 .enable_mask = BIT(0),
1681 .hw.init = &(struct clk_init_data)
1683 .name = "gcc_blsp2_uart4_apps_clk",
1684 .parent_names = (const char *[]) {
1685 "blsp2_uart4_apps_clk_src",
1688 .flags = CLK_SET_RATE_PARENT,
1689 .ops = &clk_branch2_ops,
1694 static struct clk_branch gcc_blsp2_uart5_apps_clk = {
1697 .enable_reg = 0x0bc4,
1698 .enable_mask = BIT(0),
1699 .hw.init = &(struct clk_init_data)
1701 .name = "gcc_blsp2_uart5_apps_clk",
1702 .parent_names = (const char *[]) {
1703 "blsp2_uart5_apps_clk_src",
1706 .flags = CLK_SET_RATE_PARENT,
1707 .ops = &clk_branch2_ops,
1712 static struct clk_branch gcc_blsp2_uart6_apps_clk = {
1715 .enable_reg = 0x0c44,
1716 .enable_mask = BIT(0),
1717 .hw.init = &(struct clk_init_data)
1719 .name = "gcc_blsp2_uart6_apps_clk",
1720 .parent_names = (const char *[]) {
1721 "blsp2_uart6_apps_clk_src",
1724 .flags = CLK_SET_RATE_PARENT,
1725 .ops = &clk_branch2_ops,
1730 static struct clk_branch gcc_gp1_clk = {
1733 .enable_reg = 0x1900,
1734 .enable_mask = BIT(0),
1735 .hw.init = &(struct clk_init_data)
1737 .name = "gcc_gp1_clk",
1738 .parent_names = (const char *[]) {
1742 .flags = CLK_SET_RATE_PARENT,
1743 .ops = &clk_branch2_ops,
1748 static struct clk_branch gcc_gp2_clk = {
1751 .enable_reg = 0x1940,
1752 .enable_mask = BIT(0),
1753 .hw.init = &(struct clk_init_data)
1755 .name = "gcc_gp2_clk",
1756 .parent_names = (const char *[]) {
1760 .flags = CLK_SET_RATE_PARENT,
1761 .ops = &clk_branch2_ops,
1766 static struct clk_branch gcc_gp3_clk = {
1769 .enable_reg = 0x1980,
1770 .enable_mask = BIT(0),
1771 .hw.init = &(struct clk_init_data)
1773 .name = "gcc_gp3_clk",
1774 .parent_names = (const char *[]) {
1778 .flags = CLK_SET_RATE_PARENT,
1779 .ops = &clk_branch2_ops,
1784 static struct clk_branch gcc_pcie_0_aux_clk = {
1787 .enable_reg = 0x1ad4,
1788 .enable_mask = BIT(0),
1789 .hw.init = &(struct clk_init_data)
1791 .name = "gcc_pcie_0_aux_clk",
1792 .parent_names = (const char *[]) {
1793 "pcie_0_aux_clk_src",
1796 .flags = CLK_SET_RATE_PARENT,
1797 .ops = &clk_branch2_ops,
1802 static struct clk_branch gcc_pcie_0_pipe_clk = {
1804 .halt_check = BRANCH_HALT_DELAY,
1806 .enable_reg = 0x1ad8,
1807 .enable_mask = BIT(0),
1808 .hw.init = &(struct clk_init_data)
1810 .name = "gcc_pcie_0_pipe_clk",
1811 .parent_names = (const char *[]) {
1812 "pcie_0_pipe_clk_src",
1815 .flags = CLK_SET_RATE_PARENT,
1816 .ops = &clk_branch2_ops,
1821 static struct clk_branch gcc_pcie_1_aux_clk = {
1824 .enable_reg = 0x1b54,
1825 .enable_mask = BIT(0),
1826 .hw.init = &(struct clk_init_data)
1828 .name = "gcc_pcie_1_aux_clk",
1829 .parent_names = (const char *[]) {
1830 "pcie_1_aux_clk_src",
1833 .flags = CLK_SET_RATE_PARENT,
1834 .ops = &clk_branch2_ops,
1839 static struct clk_branch gcc_pcie_1_pipe_clk = {
1841 .halt_check = BRANCH_HALT_DELAY,
1843 .enable_reg = 0x1b58,
1844 .enable_mask = BIT(0),
1845 .hw.init = &(struct clk_init_data)
1847 .name = "gcc_pcie_1_pipe_clk",
1848 .parent_names = (const char *[]) {
1849 "pcie_1_pipe_clk_src",
1852 .flags = CLK_SET_RATE_PARENT,
1853 .ops = &clk_branch2_ops,
1858 static struct clk_branch gcc_pdm2_clk = {
1861 .enable_reg = 0x0ccc,
1862 .enable_mask = BIT(0),
1863 .hw.init = &(struct clk_init_data)
1865 .name = "gcc_pdm2_clk",
1866 .parent_names = (const char *[]) {
1870 .flags = CLK_SET_RATE_PARENT,
1871 .ops = &clk_branch2_ops,
1876 static struct clk_branch gcc_sdcc1_apps_clk = {
1879 .enable_reg = 0x04c4,
1880 .enable_mask = BIT(0),
1881 .hw.init = &(struct clk_init_data)
1883 .name = "gcc_sdcc1_apps_clk",
1884 .parent_names = (const char *[]) {
1885 "sdcc1_apps_clk_src",
1888 .flags = CLK_SET_RATE_PARENT,
1889 .ops = &clk_branch2_ops,
1894 static struct clk_branch gcc_sdcc1_ahb_clk = {
1897 .enable_reg = 0x04c8,
1898 .enable_mask = BIT(0),
1899 .hw.init = &(struct clk_init_data)
1901 .name = "gcc_sdcc1_ahb_clk",
1902 .parent_names = (const char *[]){
1903 "periph_noc_clk_src",
1906 .ops = &clk_branch2_ops,
1911 static struct clk_branch gcc_sdcc2_apps_clk = {
1914 .enable_reg = 0x0504,
1915 .enable_mask = BIT(0),
1916 .hw.init = &(struct clk_init_data)
1918 .name = "gcc_sdcc2_apps_clk",
1919 .parent_names = (const char *[]) {
1920 "sdcc2_apps_clk_src",
1923 .flags = CLK_SET_RATE_PARENT,
1924 .ops = &clk_branch2_ops,
1929 static struct clk_branch gcc_sdcc3_apps_clk = {
1932 .enable_reg = 0x0544,
1933 .enable_mask = BIT(0),
1934 .hw.init = &(struct clk_init_data)
1936 .name = "gcc_sdcc3_apps_clk",
1937 .parent_names = (const char *[]) {
1938 "sdcc3_apps_clk_src",
1941 .flags = CLK_SET_RATE_PARENT,
1942 .ops = &clk_branch2_ops,
1947 static struct clk_branch gcc_sdcc4_apps_clk = {
1950 .enable_reg = 0x0584,
1951 .enable_mask = BIT(0),
1952 .hw.init = &(struct clk_init_data)
1954 .name = "gcc_sdcc4_apps_clk",
1955 .parent_names = (const char *[]) {
1956 "sdcc4_apps_clk_src",
1959 .flags = CLK_SET_RATE_PARENT,
1960 .ops = &clk_branch2_ops,
1965 static struct clk_branch gcc_sys_noc_ufs_axi_clk = {
1968 .enable_reg = 0x1d7c,
1969 .enable_mask = BIT(0),
1970 .hw.init = &(struct clk_init_data)
1972 .name = "gcc_sys_noc_ufs_axi_clk",
1973 .parent_names = (const char *[]) {
1977 .flags = CLK_SET_RATE_PARENT,
1978 .ops = &clk_branch2_ops,
1983 static struct clk_branch gcc_sys_noc_usb3_axi_clk = {
1986 .enable_reg = 0x03fc,
1987 .enable_mask = BIT(0),
1988 .hw.init = &(struct clk_init_data)
1990 .name = "gcc_sys_noc_usb3_axi_clk",
1991 .parent_names = (const char *[]) {
1992 "usb30_master_clk_src",
1995 .flags = CLK_SET_RATE_PARENT,
1996 .ops = &clk_branch2_ops,
2001 static struct clk_branch gcc_tsif_ref_clk = {
2004 .enable_reg = 0x0d88,
2005 .enable_mask = BIT(0),
2006 .hw.init = &(struct clk_init_data)
2008 .name = "gcc_tsif_ref_clk",
2009 .parent_names = (const char *[]) {
2013 .flags = CLK_SET_RATE_PARENT,
2014 .ops = &clk_branch2_ops,
2019 static struct clk_branch gcc_ufs_axi_clk = {
2022 .enable_reg = 0x1d48,
2023 .enable_mask = BIT(0),
2024 .hw.init = &(struct clk_init_data)
2026 .name = "gcc_ufs_axi_clk",
2027 .parent_names = (const char *[]) {
2031 .flags = CLK_SET_RATE_PARENT,
2032 .ops = &clk_branch2_ops,
2037 static struct clk_branch gcc_ufs_rx_cfg_clk = {
2040 .enable_reg = 0x1d54,
2041 .enable_mask = BIT(0),
2042 .hw.init = &(struct clk_init_data)
2044 .name = "gcc_ufs_rx_cfg_clk",
2045 .parent_names = (const char *[]) {
2049 .flags = CLK_SET_RATE_PARENT,
2050 .ops = &clk_branch2_ops,
2055 static struct clk_branch gcc_ufs_tx_cfg_clk = {
2058 .enable_reg = 0x1d50,
2059 .enable_mask = BIT(0),
2060 .hw.init = &(struct clk_init_data)
2062 .name = "gcc_ufs_tx_cfg_clk",
2063 .parent_names = (const char *[]) {
2067 .flags = CLK_SET_RATE_PARENT,
2068 .ops = &clk_branch2_ops,
2073 static struct clk_branch gcc_usb30_master_clk = {
2076 .enable_reg = 0x03c8,
2077 .enable_mask = BIT(0),
2078 .hw.init = &(struct clk_init_data)
2080 .name = "gcc_usb30_master_clk",
2081 .parent_names = (const char *[]) {
2082 "usb30_master_clk_src",
2085 .flags = CLK_SET_RATE_PARENT,
2086 .ops = &clk_branch2_ops,
2091 static struct clk_branch gcc_usb30_mock_utmi_clk = {
2094 .enable_reg = 0x03d0,
2095 .enable_mask = BIT(0),
2096 .hw.init = &(struct clk_init_data)
2098 .name = "gcc_usb30_mock_utmi_clk",
2099 .parent_names = (const char *[]) {
2100 "usb30_mock_utmi_clk_src",
2103 .flags = CLK_SET_RATE_PARENT,
2104 .ops = &clk_branch2_ops,
2109 static struct clk_branch gcc_usb3_phy_aux_clk = {
2112 .enable_reg = 0x1408,
2113 .enable_mask = BIT(0),
2114 .hw.init = &(struct clk_init_data)
2116 .name = "gcc_usb3_phy_aux_clk",
2117 .parent_names = (const char *[]) {
2118 "usb3_phy_aux_clk_src",
2121 .flags = CLK_SET_RATE_PARENT,
2122 .ops = &clk_branch2_ops,
2127 static struct clk_branch gcc_usb_hs_system_clk = {
2130 .enable_reg = 0x0484,
2131 .enable_mask = BIT(0),
2132 .hw.init = &(struct clk_init_data)
2134 .name = "gcc_usb_hs_system_clk",
2135 .parent_names = (const char *[]) {
2136 "usb_hs_system_clk_src",
2139 .flags = CLK_SET_RATE_PARENT,
2140 .ops = &clk_branch2_ops,
2145 static struct clk_regmap *gcc_msm8994_clocks[] = {
2146 [GPLL0_EARLY] = &gpll0_early.clkr,
2147 [GPLL0] = &gpll0.clkr,
2148 [GPLL4_EARLY] = &gpll4_early.clkr,
2149 [GPLL4] = &gpll4.clkr,
2150 [UFS_AXI_CLK_SRC] = &ufs_axi_clk_src.clkr,
2151 [USB30_MASTER_CLK_SRC] = &usb30_master_clk_src.clkr,
2152 [BLSP1_QUP1_I2C_APPS_CLK_SRC] = &blsp1_qup1_i2c_apps_clk_src.clkr,
2153 [BLSP1_QUP1_SPI_APPS_CLK_SRC] = &blsp1_qup1_spi_apps_clk_src.clkr,
2154 [BLSP1_QUP2_I2C_APPS_CLK_SRC] = &blsp1_qup2_i2c_apps_clk_src.clkr,
2155 [BLSP1_QUP2_SPI_APPS_CLK_SRC] = &blsp1_qup2_spi_apps_clk_src.clkr,
2156 [BLSP1_QUP3_I2C_APPS_CLK_SRC] = &blsp1_qup3_i2c_apps_clk_src.clkr,
2157 [BLSP1_QUP3_SPI_APPS_CLK_SRC] = &blsp1_qup3_spi_apps_clk_src.clkr,
2158 [BLSP1_QUP4_I2C_APPS_CLK_SRC] = &blsp1_qup4_i2c_apps_clk_src.clkr,
2159 [BLSP1_QUP4_SPI_APPS_CLK_SRC] = &blsp1_qup4_spi_apps_clk_src.clkr,
2160 [BLSP1_QUP5_I2C_APPS_CLK_SRC] = &blsp1_qup5_i2c_apps_clk_src.clkr,
2161 [BLSP1_QUP5_SPI_APPS_CLK_SRC] = &blsp1_qup5_spi_apps_clk_src.clkr,
2162 [BLSP1_QUP6_I2C_APPS_CLK_SRC] = &blsp1_qup6_i2c_apps_clk_src.clkr,
2163 [BLSP1_QUP6_SPI_APPS_CLK_SRC] = &blsp1_qup6_spi_apps_clk_src.clkr,
2164 [BLSP1_UART1_APPS_CLK_SRC] = &blsp1_uart1_apps_clk_src.clkr,
2165 [BLSP1_UART2_APPS_CLK_SRC] = &blsp1_uart2_apps_clk_src.clkr,
2166 [BLSP1_UART3_APPS_CLK_SRC] = &blsp1_uart3_apps_clk_src.clkr,
2167 [BLSP1_UART4_APPS_CLK_SRC] = &blsp1_uart4_apps_clk_src.clkr,
2168 [BLSP1_UART5_APPS_CLK_SRC] = &blsp1_uart5_apps_clk_src.clkr,
2169 [BLSP1_UART6_APPS_CLK_SRC] = &blsp1_uart6_apps_clk_src.clkr,
2170 [BLSP2_QUP1_I2C_APPS_CLK_SRC] = &blsp2_qup1_i2c_apps_clk_src.clkr,
2171 [BLSP2_QUP1_SPI_APPS_CLK_SRC] = &blsp2_qup1_spi_apps_clk_src.clkr,
2172 [BLSP2_QUP2_I2C_APPS_CLK_SRC] = &blsp2_qup2_i2c_apps_clk_src.clkr,
2173 [BLSP2_QUP2_SPI_APPS_CLK_SRC] = &blsp2_qup2_spi_apps_clk_src.clkr,
2174 [BLSP2_QUP3_I2C_APPS_CLK_SRC] = &blsp2_qup3_i2c_apps_clk_src.clkr,
2175 [BLSP2_QUP3_SPI_APPS_CLK_SRC] = &blsp2_qup3_spi_apps_clk_src.clkr,
2176 [BLSP2_QUP4_I2C_APPS_CLK_SRC] = &blsp2_qup4_i2c_apps_clk_src.clkr,
2177 [BLSP2_QUP4_SPI_APPS_CLK_SRC] = &blsp2_qup4_spi_apps_clk_src.clkr,
2178 [BLSP2_QUP5_I2C_APPS_CLK_SRC] = &blsp2_qup5_i2c_apps_clk_src.clkr,
2179 [BLSP2_QUP5_SPI_APPS_CLK_SRC] = &blsp2_qup5_spi_apps_clk_src.clkr,
2180 [BLSP2_QUP6_I2C_APPS_CLK_SRC] = &blsp2_qup6_i2c_apps_clk_src.clkr,
2181 [BLSP2_QUP6_SPI_APPS_CLK_SRC] = &blsp2_qup6_spi_apps_clk_src.clkr,
2182 [BLSP2_UART1_APPS_CLK_SRC] = &blsp2_uart1_apps_clk_src.clkr,
2183 [BLSP2_UART2_APPS_CLK_SRC] = &blsp2_uart2_apps_clk_src.clkr,
2184 [BLSP2_UART3_APPS_CLK_SRC] = &blsp2_uart3_apps_clk_src.clkr,
2185 [BLSP2_UART4_APPS_CLK_SRC] = &blsp2_uart4_apps_clk_src.clkr,
2186 [BLSP2_UART5_APPS_CLK_SRC] = &blsp2_uart5_apps_clk_src.clkr,
2187 [BLSP2_UART6_APPS_CLK_SRC] = &blsp2_uart6_apps_clk_src.clkr,
2188 [GP1_CLK_SRC] = &gp1_clk_src.clkr,
2189 [GP2_CLK_SRC] = &gp2_clk_src.clkr,
2190 [GP3_CLK_SRC] = &gp3_clk_src.clkr,
2191 [PCIE_0_AUX_CLK_SRC] = &pcie_0_aux_clk_src.clkr,
2192 [PCIE_0_PIPE_CLK_SRC] = &pcie_0_pipe_clk_src.clkr,
2193 [PCIE_1_AUX_CLK_SRC] = &pcie_1_aux_clk_src.clkr,
2194 [PCIE_1_PIPE_CLK_SRC] = &pcie_1_pipe_clk_src.clkr,
2195 [PDM2_CLK_SRC] = &pdm2_clk_src.clkr,
2196 [SDCC1_APPS_CLK_SRC] = &sdcc1_apps_clk_src.clkr,
2197 [SDCC2_APPS_CLK_SRC] = &sdcc2_apps_clk_src.clkr,
2198 [SDCC3_APPS_CLK_SRC] = &sdcc3_apps_clk_src.clkr,
2199 [SDCC4_APPS_CLK_SRC] = &sdcc4_apps_clk_src.clkr,
2200 [TSIF_REF_CLK_SRC] = &tsif_ref_clk_src.clkr,
2201 [USB30_MOCK_UTMI_CLK_SRC] = &usb30_mock_utmi_clk_src.clkr,
2202 [USB3_PHY_AUX_CLK_SRC] = &usb3_phy_aux_clk_src.clkr,
2203 [USB_HS_SYSTEM_CLK_SRC] = &usb_hs_system_clk_src.clkr,
2204 [GCC_BLSP1_AHB_CLK] = &gcc_blsp1_ahb_clk.clkr,
2205 [GCC_BLSP1_QUP1_I2C_APPS_CLK] = &gcc_blsp1_qup1_i2c_apps_clk.clkr,
2206 [GCC_BLSP1_QUP1_SPI_APPS_CLK] = &gcc_blsp1_qup1_spi_apps_clk.clkr,
2207 [GCC_BLSP1_QUP2_I2C_APPS_CLK] = &gcc_blsp1_qup2_i2c_apps_clk.clkr,
2208 [GCC_BLSP1_QUP2_SPI_APPS_CLK] = &gcc_blsp1_qup2_spi_apps_clk.clkr,
2209 [GCC_BLSP1_QUP3_I2C_APPS_CLK] = &gcc_blsp1_qup3_i2c_apps_clk.clkr,
2210 [GCC_BLSP1_QUP3_SPI_APPS_CLK] = &gcc_blsp1_qup3_spi_apps_clk.clkr,
2211 [GCC_BLSP1_QUP4_I2C_APPS_CLK] = &gcc_blsp1_qup4_i2c_apps_clk.clkr,
2212 [GCC_BLSP1_QUP4_SPI_APPS_CLK] = &gcc_blsp1_qup4_spi_apps_clk.clkr,
2213 [GCC_BLSP1_QUP5_I2C_APPS_CLK] = &gcc_blsp1_qup5_i2c_apps_clk.clkr,
2214 [GCC_BLSP1_QUP5_SPI_APPS_CLK] = &gcc_blsp1_qup5_spi_apps_clk.clkr,
2215 [GCC_BLSP1_QUP6_I2C_APPS_CLK] = &gcc_blsp1_qup6_i2c_apps_clk.clkr,
2216 [GCC_BLSP1_QUP6_SPI_APPS_CLK] = &gcc_blsp1_qup6_spi_apps_clk.clkr,
2217 [GCC_BLSP1_UART1_APPS_CLK] = &gcc_blsp1_uart1_apps_clk.clkr,
2218 [GCC_BLSP1_UART2_APPS_CLK] = &gcc_blsp1_uart2_apps_clk.clkr,
2219 [GCC_BLSP1_UART3_APPS_CLK] = &gcc_blsp1_uart3_apps_clk.clkr,
2220 [GCC_BLSP1_UART4_APPS_CLK] = &gcc_blsp1_uart4_apps_clk.clkr,
2221 [GCC_BLSP1_UART5_APPS_CLK] = &gcc_blsp1_uart5_apps_clk.clkr,
2222 [GCC_BLSP1_UART6_APPS_CLK] = &gcc_blsp1_uart6_apps_clk.clkr,
2223 [GCC_BLSP2_AHB_CLK] = &gcc_blsp2_ahb_clk.clkr,
2224 [GCC_BLSP2_QUP1_I2C_APPS_CLK] = &gcc_blsp2_qup1_i2c_apps_clk.clkr,
2225 [GCC_BLSP2_QUP1_SPI_APPS_CLK] = &gcc_blsp2_qup1_spi_apps_clk.clkr,
2226 [GCC_BLSP2_QUP2_I2C_APPS_CLK] = &gcc_blsp2_qup2_i2c_apps_clk.clkr,
2227 [GCC_BLSP2_QUP2_SPI_APPS_CLK] = &gcc_blsp2_qup2_spi_apps_clk.clkr,
2228 [GCC_BLSP2_QUP3_I2C_APPS_CLK] = &gcc_blsp2_qup3_i2c_apps_clk.clkr,
2229 [GCC_BLSP2_QUP3_SPI_APPS_CLK] = &gcc_blsp2_qup3_spi_apps_clk.clkr,
2230 [GCC_BLSP2_QUP4_I2C_APPS_CLK] = &gcc_blsp2_qup4_i2c_apps_clk.clkr,
2231 [GCC_BLSP2_QUP4_SPI_APPS_CLK] = &gcc_blsp2_qup4_spi_apps_clk.clkr,
2232 [GCC_BLSP2_QUP5_I2C_APPS_CLK] = &gcc_blsp2_qup5_i2c_apps_clk.clkr,
2233 [GCC_BLSP2_QUP5_SPI_APPS_CLK] = &gcc_blsp2_qup5_spi_apps_clk.clkr,
2234 [GCC_BLSP2_QUP6_I2C_APPS_CLK] = &gcc_blsp2_qup6_i2c_apps_clk.clkr,
2235 [GCC_BLSP2_QUP6_SPI_APPS_CLK] = &gcc_blsp2_qup6_spi_apps_clk.clkr,
2236 [GCC_BLSP2_UART1_APPS_CLK] = &gcc_blsp2_uart1_apps_clk.clkr,
2237 [GCC_BLSP2_UART2_APPS_CLK] = &gcc_blsp2_uart2_apps_clk.clkr,
2238 [GCC_BLSP2_UART3_APPS_CLK] = &gcc_blsp2_uart3_apps_clk.clkr,
2239 [GCC_BLSP2_UART4_APPS_CLK] = &gcc_blsp2_uart4_apps_clk.clkr,
2240 [GCC_BLSP2_UART5_APPS_CLK] = &gcc_blsp2_uart5_apps_clk.clkr,
2241 [GCC_BLSP2_UART6_APPS_CLK] = &gcc_blsp2_uart6_apps_clk.clkr,
2242 [GCC_GP1_CLK] = &gcc_gp1_clk.clkr,
2243 [GCC_GP2_CLK] = &gcc_gp2_clk.clkr,
2244 [GCC_GP3_CLK] = &gcc_gp3_clk.clkr,
2245 [GCC_PCIE_0_AUX_CLK] = &gcc_pcie_0_aux_clk.clkr,
2246 [GCC_PCIE_0_PIPE_CLK] = &gcc_pcie_0_pipe_clk.clkr,
2247 [GCC_PCIE_1_AUX_CLK] = &gcc_pcie_1_aux_clk.clkr,
2248 [GCC_PCIE_1_PIPE_CLK] = &gcc_pcie_1_pipe_clk.clkr,
2249 [GCC_PDM2_CLK] = &gcc_pdm2_clk.clkr,
2250 [GCC_SDCC1_APPS_CLK] = &gcc_sdcc1_apps_clk.clkr,
2251 [GCC_SDCC2_APPS_CLK] = &gcc_sdcc2_apps_clk.clkr,
2252 [GCC_SDCC3_APPS_CLK] = &gcc_sdcc3_apps_clk.clkr,
2253 [GCC_SDCC4_APPS_CLK] = &gcc_sdcc4_apps_clk.clkr,
2254 [GCC_SDCC1_AHB_CLK] = &gcc_sdcc1_ahb_clk.clkr,
2255 [GCC_SYS_NOC_UFS_AXI_CLK] = &gcc_sys_noc_ufs_axi_clk.clkr,
2256 [GCC_SYS_NOC_USB3_AXI_CLK] = &gcc_sys_noc_usb3_axi_clk.clkr,
2257 [GCC_TSIF_REF_CLK] = &gcc_tsif_ref_clk.clkr,
2258 [GCC_UFS_AXI_CLK] = &gcc_ufs_axi_clk.clkr,
2259 [GCC_UFS_RX_CFG_CLK] = &gcc_ufs_rx_cfg_clk.clkr,
2260 [GCC_UFS_TX_CFG_CLK] = &gcc_ufs_tx_cfg_clk.clkr,
2261 [GCC_USB30_MASTER_CLK] = &gcc_usb30_master_clk.clkr,
2262 [GCC_USB30_MOCK_UTMI_CLK] = &gcc_usb30_mock_utmi_clk.clkr,
2263 [GCC_USB3_PHY_AUX_CLK] = &gcc_usb3_phy_aux_clk.clkr,
2264 [GCC_USB_HS_SYSTEM_CLK] = &gcc_usb_hs_system_clk.clkr,
2267 static const struct regmap_config gcc_msm8994_regmap_config = {
2271 .max_register = 0x2000,
2275 static const struct qcom_cc_desc gcc_msm8994_desc = {
2276 .config = &gcc_msm8994_regmap_config,
2277 .clks = gcc_msm8994_clocks,
2278 .num_clks = ARRAY_SIZE(gcc_msm8994_clocks),
2281 static const struct of_device_id gcc_msm8994_match_table[] = {
2282 { .compatible = "qcom,gcc-msm8994" },
2285 MODULE_DEVICE_TABLE(of, gcc_msm8994_match_table);
2287 static int gcc_msm8994_probe(struct platform_device *pdev)
2289 struct device *dev = &pdev->dev;
2292 clk = devm_clk_register(dev, &xo.hw);
2294 return PTR_ERR(clk);
2296 return qcom_cc_probe(pdev, &gcc_msm8994_desc);
2299 static struct platform_driver gcc_msm8994_driver = {
2300 .probe = gcc_msm8994_probe,
2302 .name = "gcc-msm8994",
2303 .of_match_table = gcc_msm8994_match_table,
2307 static int __init gcc_msm8994_init(void)
2309 return platform_driver_register(&gcc_msm8994_driver);
2311 core_initcall(gcc_msm8994_init);
2313 static void __exit gcc_msm8994_exit(void)
2315 platform_driver_unregister(&gcc_msm8994_driver);
2317 module_exit(gcc_msm8994_exit);
2319 MODULE_DESCRIPTION("Qualcomm GCC MSM8994 Driver");
2320 MODULE_LICENSE("GPL v2");
2321 MODULE_ALIAS("platform:gcc-msm8994");