1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
6 #include <linux/kernel.h>
7 #include <linux/bitops.h>
9 #include <linux/platform_device.h>
10 #include <linux/property.h>
11 #include <linux/module.h>
13 #include <linux/of_platform.h>
14 #include <linux/clk-provider.h>
15 #include <linux/regmap.h>
16 #include <linux/reset-controller.h>
18 #include <dt-bindings/clock/qcom,gcc-msm8960.h>
19 #include <dt-bindings/reset/qcom,gcc-msm8960.h>
22 #include "clk-regmap.h"
25 #include "clk-branch.h"
26 #include "clk-hfpll.h"
29 static struct clk_pll pll3
= {
37 .clkr
.hw
.init
= &(struct clk_init_data
){
39 .parent_data
= &(const struct clk_parent_data
){
40 .fw_name
= "pxo", .name
= "pxo_board",
47 static struct clk_regmap pll4_vote
= {
49 .enable_mask
= BIT(4),
50 .hw
.init
= &(struct clk_init_data
){
52 .parent_data
= &(const struct clk_parent_data
){
53 .fw_name
= "pll4", .name
= "pll4",
56 .ops
= &clk_pll_vote_ops
,
60 static struct clk_pll pll8
= {
68 .clkr
.hw
.init
= &(struct clk_init_data
){
70 .parent_data
= &(const struct clk_parent_data
){
71 .fw_name
= "pxo", .name
= "pxo_board",
78 static struct clk_regmap pll8_vote
= {
80 .enable_mask
= BIT(8),
81 .hw
.init
= &(struct clk_init_data
){
83 .parent_hws
= (const struct clk_hw
*[]){
87 .ops
= &clk_pll_vote_ops
,
91 static struct hfpll_data hfpll0_data
= {
98 .config_val
= 0x7845c665,
100 .droop_val
= 0x0108c000,
101 .min_rate
= 600000000UL,
102 .max_rate
= 1800000000UL,
105 static struct clk_hfpll hfpll0
= {
107 .clkr
.hw
.init
= &(struct clk_init_data
){
108 .parent_data
= &(const struct clk_parent_data
){
109 .fw_name
= "pxo", .name
= "pxo_board",
113 .ops
= &clk_ops_hfpll
,
114 .flags
= CLK_IGNORE_UNUSED
,
116 .lock
= __SPIN_LOCK_UNLOCKED(hfpll0
.lock
),
119 static struct hfpll_data hfpll1_8064_data
= {
124 .config_reg
= 0x3244,
125 .status_reg
= 0x325c,
126 .config_val
= 0x7845c665,
128 .droop_val
= 0x0108c000,
129 .min_rate
= 600000000UL,
130 .max_rate
= 1800000000UL,
133 static struct hfpll_data hfpll1_data
= {
138 .config_reg
= 0x3304,
139 .status_reg
= 0x331c,
140 .config_val
= 0x7845c665,
142 .droop_val
= 0x0108c000,
143 .min_rate
= 600000000UL,
144 .max_rate
= 1800000000UL,
147 static struct clk_hfpll hfpll1
= {
149 .clkr
.hw
.init
= &(struct clk_init_data
){
150 .parent_data
= &(const struct clk_parent_data
){
151 .fw_name
= "pxo", .name
= "pxo_board",
155 .ops
= &clk_ops_hfpll
,
156 .flags
= CLK_IGNORE_UNUSED
,
158 .lock
= __SPIN_LOCK_UNLOCKED(hfpll1
.lock
),
161 static struct hfpll_data hfpll2_data
= {
166 .config_reg
= 0x3284,
167 .status_reg
= 0x329c,
168 .config_val
= 0x7845c665,
170 .droop_val
= 0x0108c000,
171 .min_rate
= 600000000UL,
172 .max_rate
= 1800000000UL,
175 static struct clk_hfpll hfpll2
= {
177 .clkr
.hw
.init
= &(struct clk_init_data
){
178 .parent_data
= &(const struct clk_parent_data
){
179 .fw_name
= "pxo", .name
= "pxo_board",
183 .ops
= &clk_ops_hfpll
,
184 .flags
= CLK_IGNORE_UNUSED
,
186 .lock
= __SPIN_LOCK_UNLOCKED(hfpll2
.lock
),
189 static struct hfpll_data hfpll3_data
= {
194 .config_reg
= 0x32c4,
195 .status_reg
= 0x32dc,
196 .config_val
= 0x7845c665,
198 .droop_val
= 0x0108c000,
199 .min_rate
= 600000000UL,
200 .max_rate
= 1800000000UL,
203 static struct clk_hfpll hfpll3
= {
205 .clkr
.hw
.init
= &(struct clk_init_data
){
206 .parent_data
= &(const struct clk_parent_data
){
207 .fw_name
= "pxo", .name
= "pxo_board",
211 .ops
= &clk_ops_hfpll
,
212 .flags
= CLK_IGNORE_UNUSED
,
214 .lock
= __SPIN_LOCK_UNLOCKED(hfpll3
.lock
),
217 static struct hfpll_data hfpll_l2_8064_data
= {
222 .config_reg
= 0x3304,
223 .status_reg
= 0x331c,
224 .config_val
= 0x7845c665,
226 .droop_val
= 0x0108c000,
227 .min_rate
= 600000000UL,
228 .max_rate
= 1800000000UL,
231 static struct hfpll_data hfpll_l2_data
= {
236 .config_reg
= 0x3404,
237 .status_reg
= 0x341c,
238 .config_val
= 0x7845c665,
240 .droop_val
= 0x0108c000,
241 .min_rate
= 600000000UL,
242 .max_rate
= 1800000000UL,
245 static struct clk_hfpll hfpll_l2
= {
247 .clkr
.hw
.init
= &(struct clk_init_data
){
248 .parent_data
= &(const struct clk_parent_data
){
249 .fw_name
= "pxo", .name
= "pxo_board",
253 .ops
= &clk_ops_hfpll
,
254 .flags
= CLK_IGNORE_UNUSED
,
256 .lock
= __SPIN_LOCK_UNLOCKED(hfpll_l2
.lock
),
259 static struct clk_pll pll14
= {
263 .config_reg
= 0x31d4,
265 .status_reg
= 0x31d8,
267 .clkr
.hw
.init
= &(struct clk_init_data
){
269 .parent_data
= &(const struct clk_parent_data
){
270 .fw_name
= "pxo", .name
= "pxo_board",
277 static struct clk_regmap pll14_vote
= {
278 .enable_reg
= 0x34c0,
279 .enable_mask
= BIT(14),
280 .hw
.init
= &(struct clk_init_data
){
281 .name
= "pll14_vote",
282 .parent_hws
= (const struct clk_hw
*[]){
286 .ops
= &clk_pll_vote_ops
,
297 static const struct parent_map gcc_pxo_pll8_map
[] = {
302 static const struct clk_parent_data gcc_pxo_pll8
[] = {
303 { .fw_name
= "pxo", .name
= "pxo_board" },
304 { .hw
= &pll8_vote
.hw
},
307 static const struct parent_map gcc_pxo_pll8_cxo_map
[] = {
313 static const struct clk_parent_data gcc_pxo_pll8_cxo
[] = {
314 { .fw_name
= "pxo", .name
= "pxo_board" },
315 { .hw
= &pll8_vote
.hw
},
316 { .fw_name
= "cxo", .name
= "cxo_board" },
319 static const struct parent_map gcc_pxo_pll8_pll3_map
[] = {
325 static const struct clk_parent_data gcc_pxo_pll8_pll3
[] = {
326 { .fw_name
= "pxo", .name
= "pxo_board" },
327 { .hw
= &pll8_vote
.hw
},
328 { .hw
= &pll3
.clkr
.hw
},
331 static const struct freq_tbl clk_tbl_gsbi_uart
[] = {
332 { 1843200, P_PLL8
, 2, 6, 625 },
333 { 3686400, P_PLL8
, 2, 12, 625 },
334 { 7372800, P_PLL8
, 2, 24, 625 },
335 { 14745600, P_PLL8
, 2, 48, 625 },
336 { 16000000, P_PLL8
, 4, 1, 6 },
337 { 24000000, P_PLL8
, 4, 1, 4 },
338 { 32000000, P_PLL8
, 4, 1, 3 },
339 { 40000000, P_PLL8
, 1, 5, 48 },
340 { 46400000, P_PLL8
, 1, 29, 240 },
341 { 48000000, P_PLL8
, 4, 1, 2 },
342 { 51200000, P_PLL8
, 1, 2, 15 },
343 { 56000000, P_PLL8
, 1, 7, 48 },
344 { 58982400, P_PLL8
, 1, 96, 625 },
345 { 64000000, P_PLL8
, 2, 1, 3 },
349 static struct clk_rcg gsbi1_uart_src
= {
354 .mnctr_reset_bit
= 7,
355 .mnctr_mode_shift
= 5,
366 .parent_map
= gcc_pxo_pll8_map
,
368 .freq_tbl
= clk_tbl_gsbi_uart
,
370 .enable_reg
= 0x29d4,
371 .enable_mask
= BIT(11),
372 .hw
.init
= &(struct clk_init_data
){
373 .name
= "gsbi1_uart_src",
374 .parent_data
= gcc_pxo_pll8
,
375 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
377 .flags
= CLK_SET_PARENT_GATE
,
382 static struct clk_branch gsbi1_uart_clk
= {
386 .enable_reg
= 0x29d4,
387 .enable_mask
= BIT(9),
388 .hw
.init
= &(struct clk_init_data
){
389 .name
= "gsbi1_uart_clk",
390 .parent_hws
= (const struct clk_hw
*[]){
391 &gsbi1_uart_src
.clkr
.hw
394 .ops
= &clk_branch_ops
,
395 .flags
= CLK_SET_RATE_PARENT
,
400 static struct clk_rcg gsbi2_uart_src
= {
405 .mnctr_reset_bit
= 7,
406 .mnctr_mode_shift
= 5,
417 .parent_map
= gcc_pxo_pll8_map
,
419 .freq_tbl
= clk_tbl_gsbi_uart
,
421 .enable_reg
= 0x29f4,
422 .enable_mask
= BIT(11),
423 .hw
.init
= &(struct clk_init_data
){
424 .name
= "gsbi2_uart_src",
425 .parent_data
= gcc_pxo_pll8
,
426 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
428 .flags
= CLK_SET_PARENT_GATE
,
433 static struct clk_branch gsbi2_uart_clk
= {
437 .enable_reg
= 0x29f4,
438 .enable_mask
= BIT(9),
439 .hw
.init
= &(struct clk_init_data
){
440 .name
= "gsbi2_uart_clk",
441 .parent_hws
= (const struct clk_hw
*[]){
442 &gsbi2_uart_src
.clkr
.hw
445 .ops
= &clk_branch_ops
,
446 .flags
= CLK_SET_RATE_PARENT
,
451 static struct clk_rcg gsbi3_uart_src
= {
456 .mnctr_reset_bit
= 7,
457 .mnctr_mode_shift
= 5,
468 .parent_map
= gcc_pxo_pll8_map
,
470 .freq_tbl
= clk_tbl_gsbi_uart
,
472 .enable_reg
= 0x2a14,
473 .enable_mask
= BIT(11),
474 .hw
.init
= &(struct clk_init_data
){
475 .name
= "gsbi3_uart_src",
476 .parent_data
= gcc_pxo_pll8
,
477 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
479 .flags
= CLK_SET_PARENT_GATE
,
484 static struct clk_branch gsbi3_uart_clk
= {
488 .enable_reg
= 0x2a14,
489 .enable_mask
= BIT(9),
490 .hw
.init
= &(struct clk_init_data
){
491 .name
= "gsbi3_uart_clk",
492 .parent_hws
= (const struct clk_hw
*[]){
493 &gsbi3_uart_src
.clkr
.hw
496 .ops
= &clk_branch_ops
,
497 .flags
= CLK_SET_RATE_PARENT
,
502 static struct clk_rcg gsbi4_uart_src
= {
507 .mnctr_reset_bit
= 7,
508 .mnctr_mode_shift
= 5,
519 .parent_map
= gcc_pxo_pll8_map
,
521 .freq_tbl
= clk_tbl_gsbi_uart
,
523 .enable_reg
= 0x2a34,
524 .enable_mask
= BIT(11),
525 .hw
.init
= &(struct clk_init_data
){
526 .name
= "gsbi4_uart_src",
527 .parent_data
= gcc_pxo_pll8
,
528 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
530 .flags
= CLK_SET_PARENT_GATE
,
535 static struct clk_branch gsbi4_uart_clk
= {
539 .enable_reg
= 0x2a34,
540 .enable_mask
= BIT(9),
541 .hw
.init
= &(struct clk_init_data
){
542 .name
= "gsbi4_uart_clk",
543 .parent_hws
= (const struct clk_hw
*[]){
544 &gsbi4_uart_src
.clkr
.hw
547 .ops
= &clk_branch_ops
,
548 .flags
= CLK_SET_RATE_PARENT
,
553 static struct clk_rcg gsbi5_uart_src
= {
558 .mnctr_reset_bit
= 7,
559 .mnctr_mode_shift
= 5,
570 .parent_map
= gcc_pxo_pll8_map
,
572 .freq_tbl
= clk_tbl_gsbi_uart
,
574 .enable_reg
= 0x2a54,
575 .enable_mask
= BIT(11),
576 .hw
.init
= &(struct clk_init_data
){
577 .name
= "gsbi5_uart_src",
578 .parent_data
= gcc_pxo_pll8
,
579 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
581 .flags
= CLK_SET_PARENT_GATE
,
586 static struct clk_branch gsbi5_uart_clk
= {
590 .enable_reg
= 0x2a54,
591 .enable_mask
= BIT(9),
592 .hw
.init
= &(struct clk_init_data
){
593 .name
= "gsbi5_uart_clk",
594 .parent_hws
= (const struct clk_hw
*[]){
595 &gsbi5_uart_src
.clkr
.hw
598 .ops
= &clk_branch_ops
,
599 .flags
= CLK_SET_RATE_PARENT
,
604 static struct clk_rcg gsbi6_uart_src
= {
609 .mnctr_reset_bit
= 7,
610 .mnctr_mode_shift
= 5,
621 .parent_map
= gcc_pxo_pll8_map
,
623 .freq_tbl
= clk_tbl_gsbi_uart
,
625 .enable_reg
= 0x2a74,
626 .enable_mask
= BIT(11),
627 .hw
.init
= &(struct clk_init_data
){
628 .name
= "gsbi6_uart_src",
629 .parent_data
= gcc_pxo_pll8
,
630 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
632 .flags
= CLK_SET_PARENT_GATE
,
637 static struct clk_branch gsbi6_uart_clk
= {
641 .enable_reg
= 0x2a74,
642 .enable_mask
= BIT(9),
643 .hw
.init
= &(struct clk_init_data
){
644 .name
= "gsbi6_uart_clk",
645 .parent_hws
= (const struct clk_hw
*[]){
646 &gsbi6_uart_src
.clkr
.hw
649 .ops
= &clk_branch_ops
,
650 .flags
= CLK_SET_RATE_PARENT
,
655 static struct clk_rcg gsbi7_uart_src
= {
660 .mnctr_reset_bit
= 7,
661 .mnctr_mode_shift
= 5,
672 .parent_map
= gcc_pxo_pll8_map
,
674 .freq_tbl
= clk_tbl_gsbi_uart
,
676 .enable_reg
= 0x2a94,
677 .enable_mask
= BIT(11),
678 .hw
.init
= &(struct clk_init_data
){
679 .name
= "gsbi7_uart_src",
680 .parent_data
= gcc_pxo_pll8
,
681 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
683 .flags
= CLK_SET_PARENT_GATE
,
688 static struct clk_branch gsbi7_uart_clk
= {
692 .enable_reg
= 0x2a94,
693 .enable_mask
= BIT(9),
694 .hw
.init
= &(struct clk_init_data
){
695 .name
= "gsbi7_uart_clk",
696 .parent_hws
= (const struct clk_hw
*[]){
697 &gsbi7_uart_src
.clkr
.hw
700 .ops
= &clk_branch_ops
,
701 .flags
= CLK_SET_RATE_PARENT
,
706 static struct clk_rcg gsbi8_uart_src
= {
711 .mnctr_reset_bit
= 7,
712 .mnctr_mode_shift
= 5,
723 .parent_map
= gcc_pxo_pll8_map
,
725 .freq_tbl
= clk_tbl_gsbi_uart
,
727 .enable_reg
= 0x2ab4,
728 .enable_mask
= BIT(11),
729 .hw
.init
= &(struct clk_init_data
){
730 .name
= "gsbi8_uart_src",
731 .parent_data
= gcc_pxo_pll8
,
732 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
734 .flags
= CLK_SET_PARENT_GATE
,
739 static struct clk_branch gsbi8_uart_clk
= {
743 .enable_reg
= 0x2ab4,
744 .enable_mask
= BIT(9),
745 .hw
.init
= &(struct clk_init_data
){
746 .name
= "gsbi8_uart_clk",
747 .parent_hws
= (const struct clk_hw
*[]){
748 &gsbi8_uart_src
.clkr
.hw
751 .ops
= &clk_branch_ops
,
752 .flags
= CLK_SET_RATE_PARENT
,
757 static struct clk_rcg gsbi9_uart_src
= {
762 .mnctr_reset_bit
= 7,
763 .mnctr_mode_shift
= 5,
774 .parent_map
= gcc_pxo_pll8_map
,
776 .freq_tbl
= clk_tbl_gsbi_uart
,
778 .enable_reg
= 0x2ad4,
779 .enable_mask
= BIT(11),
780 .hw
.init
= &(struct clk_init_data
){
781 .name
= "gsbi9_uart_src",
782 .parent_data
= gcc_pxo_pll8
,
783 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
785 .flags
= CLK_SET_PARENT_GATE
,
790 static struct clk_branch gsbi9_uart_clk
= {
794 .enable_reg
= 0x2ad4,
795 .enable_mask
= BIT(9),
796 .hw
.init
= &(struct clk_init_data
){
797 .name
= "gsbi9_uart_clk",
798 .parent_hws
= (const struct clk_hw
*[]){
799 &gsbi9_uart_src
.clkr
.hw
802 .ops
= &clk_branch_ops
,
803 .flags
= CLK_SET_RATE_PARENT
,
808 static struct clk_rcg gsbi10_uart_src
= {
813 .mnctr_reset_bit
= 7,
814 .mnctr_mode_shift
= 5,
825 .parent_map
= gcc_pxo_pll8_map
,
827 .freq_tbl
= clk_tbl_gsbi_uart
,
829 .enable_reg
= 0x2af4,
830 .enable_mask
= BIT(11),
831 .hw
.init
= &(struct clk_init_data
){
832 .name
= "gsbi10_uart_src",
833 .parent_data
= gcc_pxo_pll8
,
834 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
836 .flags
= CLK_SET_PARENT_GATE
,
841 static struct clk_branch gsbi10_uart_clk
= {
845 .enable_reg
= 0x2af4,
846 .enable_mask
= BIT(9),
847 .hw
.init
= &(struct clk_init_data
){
848 .name
= "gsbi10_uart_clk",
849 .parent_hws
= (const struct clk_hw
*[]){
850 &gsbi10_uart_src
.clkr
.hw
853 .ops
= &clk_branch_ops
,
854 .flags
= CLK_SET_RATE_PARENT
,
859 static struct clk_rcg gsbi11_uart_src
= {
864 .mnctr_reset_bit
= 7,
865 .mnctr_mode_shift
= 5,
876 .parent_map
= gcc_pxo_pll8_map
,
878 .freq_tbl
= clk_tbl_gsbi_uart
,
880 .enable_reg
= 0x2b14,
881 .enable_mask
= BIT(11),
882 .hw
.init
= &(struct clk_init_data
){
883 .name
= "gsbi11_uart_src",
884 .parent_data
= gcc_pxo_pll8
,
885 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
887 .flags
= CLK_SET_PARENT_GATE
,
892 static struct clk_branch gsbi11_uart_clk
= {
896 .enable_reg
= 0x2b14,
897 .enable_mask
= BIT(9),
898 .hw
.init
= &(struct clk_init_data
){
899 .name
= "gsbi11_uart_clk",
900 .parent_hws
= (const struct clk_hw
*[]){
901 &gsbi11_uart_src
.clkr
.hw
904 .ops
= &clk_branch_ops
,
905 .flags
= CLK_SET_RATE_PARENT
,
910 static struct clk_rcg gsbi12_uart_src
= {
915 .mnctr_reset_bit
= 7,
916 .mnctr_mode_shift
= 5,
927 .parent_map
= gcc_pxo_pll8_map
,
929 .freq_tbl
= clk_tbl_gsbi_uart
,
931 .enable_reg
= 0x2b34,
932 .enable_mask
= BIT(11),
933 .hw
.init
= &(struct clk_init_data
){
934 .name
= "gsbi12_uart_src",
935 .parent_data
= gcc_pxo_pll8
,
936 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
938 .flags
= CLK_SET_PARENT_GATE
,
943 static struct clk_branch gsbi12_uart_clk
= {
947 .enable_reg
= 0x2b34,
948 .enable_mask
= BIT(9),
949 .hw
.init
= &(struct clk_init_data
){
950 .name
= "gsbi12_uart_clk",
951 .parent_hws
= (const struct clk_hw
*[]){
952 &gsbi12_uart_src
.clkr
.hw
955 .ops
= &clk_branch_ops
,
956 .flags
= CLK_SET_RATE_PARENT
,
961 static const struct freq_tbl clk_tbl_gsbi_qup
[] = {
962 { 1100000, P_PXO
, 1, 2, 49 },
963 { 5400000, P_PXO
, 1, 1, 5 },
964 { 10800000, P_PXO
, 1, 2, 5 },
965 { 15060000, P_PLL8
, 1, 2, 51 },
966 { 24000000, P_PLL8
, 4, 1, 4 },
967 { 25600000, P_PLL8
, 1, 1, 15 },
968 { 27000000, P_PXO
, 1, 0, 0 },
969 { 48000000, P_PLL8
, 4, 1, 2 },
970 { 51200000, P_PLL8
, 1, 2, 15 },
974 static struct clk_rcg gsbi1_qup_src
= {
979 .mnctr_reset_bit
= 7,
980 .mnctr_mode_shift
= 5,
991 .parent_map
= gcc_pxo_pll8_map
,
993 .freq_tbl
= clk_tbl_gsbi_qup
,
995 .enable_reg
= 0x29cc,
996 .enable_mask
= BIT(11),
997 .hw
.init
= &(struct clk_init_data
){
998 .name
= "gsbi1_qup_src",
999 .parent_data
= gcc_pxo_pll8
,
1000 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1001 .ops
= &clk_rcg_ops
,
1002 .flags
= CLK_SET_PARENT_GATE
,
1007 static struct clk_branch gsbi1_qup_clk
= {
1011 .enable_reg
= 0x29cc,
1012 .enable_mask
= BIT(9),
1013 .hw
.init
= &(struct clk_init_data
){
1014 .name
= "gsbi1_qup_clk",
1015 .parent_hws
= (const struct clk_hw
*[]){
1016 &gsbi1_qup_src
.clkr
.hw
1019 .ops
= &clk_branch_ops
,
1020 .flags
= CLK_SET_RATE_PARENT
,
1025 static struct clk_rcg gsbi2_qup_src
= {
1030 .mnctr_reset_bit
= 7,
1031 .mnctr_mode_shift
= 5,
1042 .parent_map
= gcc_pxo_pll8_map
,
1044 .freq_tbl
= clk_tbl_gsbi_qup
,
1046 .enable_reg
= 0x29ec,
1047 .enable_mask
= BIT(11),
1048 .hw
.init
= &(struct clk_init_data
){
1049 .name
= "gsbi2_qup_src",
1050 .parent_data
= gcc_pxo_pll8
,
1051 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1052 .ops
= &clk_rcg_ops
,
1053 .flags
= CLK_SET_PARENT_GATE
,
1058 static struct clk_branch gsbi2_qup_clk
= {
1062 .enable_reg
= 0x29ec,
1063 .enable_mask
= BIT(9),
1064 .hw
.init
= &(struct clk_init_data
){
1065 .name
= "gsbi2_qup_clk",
1066 .parent_hws
= (const struct clk_hw
*[]){
1067 &gsbi2_qup_src
.clkr
.hw
1070 .ops
= &clk_branch_ops
,
1071 .flags
= CLK_SET_RATE_PARENT
,
1076 static struct clk_rcg gsbi3_qup_src
= {
1081 .mnctr_reset_bit
= 7,
1082 .mnctr_mode_shift
= 5,
1093 .parent_map
= gcc_pxo_pll8_map
,
1095 .freq_tbl
= clk_tbl_gsbi_qup
,
1097 .enable_reg
= 0x2a0c,
1098 .enable_mask
= BIT(11),
1099 .hw
.init
= &(struct clk_init_data
){
1100 .name
= "gsbi3_qup_src",
1101 .parent_data
= gcc_pxo_pll8
,
1102 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1103 .ops
= &clk_rcg_ops
,
1104 .flags
= CLK_SET_PARENT_GATE
,
1109 static struct clk_branch gsbi3_qup_clk
= {
1113 .enable_reg
= 0x2a0c,
1114 .enable_mask
= BIT(9),
1115 .hw
.init
= &(struct clk_init_data
){
1116 .name
= "gsbi3_qup_clk",
1117 .parent_hws
= (const struct clk_hw
*[]){
1118 &gsbi3_qup_src
.clkr
.hw
1121 .ops
= &clk_branch_ops
,
1122 .flags
= CLK_SET_RATE_PARENT
,
1127 static struct clk_rcg gsbi4_qup_src
= {
1132 .mnctr_reset_bit
= 7,
1133 .mnctr_mode_shift
= 5,
1144 .parent_map
= gcc_pxo_pll8_map
,
1146 .freq_tbl
= clk_tbl_gsbi_qup
,
1148 .enable_reg
= 0x2a2c,
1149 .enable_mask
= BIT(11),
1150 .hw
.init
= &(struct clk_init_data
){
1151 .name
= "gsbi4_qup_src",
1152 .parent_data
= gcc_pxo_pll8
,
1153 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1154 .ops
= &clk_rcg_ops
,
1155 .flags
= CLK_SET_PARENT_GATE
,
1160 static struct clk_branch gsbi4_qup_clk
= {
1164 .enable_reg
= 0x2a2c,
1165 .enable_mask
= BIT(9),
1166 .hw
.init
= &(struct clk_init_data
){
1167 .name
= "gsbi4_qup_clk",
1168 .parent_hws
= (const struct clk_hw
*[]){
1169 &gsbi4_qup_src
.clkr
.hw
1172 .ops
= &clk_branch_ops
,
1173 .flags
= CLK_SET_RATE_PARENT
,
1178 static struct clk_rcg gsbi5_qup_src
= {
1183 .mnctr_reset_bit
= 7,
1184 .mnctr_mode_shift
= 5,
1195 .parent_map
= gcc_pxo_pll8_map
,
1197 .freq_tbl
= clk_tbl_gsbi_qup
,
1199 .enable_reg
= 0x2a4c,
1200 .enable_mask
= BIT(11),
1201 .hw
.init
= &(struct clk_init_data
){
1202 .name
= "gsbi5_qup_src",
1203 .parent_data
= gcc_pxo_pll8
,
1204 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1205 .ops
= &clk_rcg_ops
,
1206 .flags
= CLK_SET_PARENT_GATE
,
1211 static struct clk_branch gsbi5_qup_clk
= {
1215 .enable_reg
= 0x2a4c,
1216 .enable_mask
= BIT(9),
1217 .hw
.init
= &(struct clk_init_data
){
1218 .name
= "gsbi5_qup_clk",
1219 .parent_hws
= (const struct clk_hw
*[]){
1220 &gsbi5_qup_src
.clkr
.hw
1223 .ops
= &clk_branch_ops
,
1224 .flags
= CLK_SET_RATE_PARENT
,
1229 static struct clk_rcg gsbi6_qup_src
= {
1234 .mnctr_reset_bit
= 7,
1235 .mnctr_mode_shift
= 5,
1246 .parent_map
= gcc_pxo_pll8_map
,
1248 .freq_tbl
= clk_tbl_gsbi_qup
,
1250 .enable_reg
= 0x2a6c,
1251 .enable_mask
= BIT(11),
1252 .hw
.init
= &(struct clk_init_data
){
1253 .name
= "gsbi6_qup_src",
1254 .parent_data
= gcc_pxo_pll8
,
1255 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1256 .ops
= &clk_rcg_ops
,
1257 .flags
= CLK_SET_PARENT_GATE
,
1262 static struct clk_branch gsbi6_qup_clk
= {
1266 .enable_reg
= 0x2a6c,
1267 .enable_mask
= BIT(9),
1268 .hw
.init
= &(struct clk_init_data
){
1269 .name
= "gsbi6_qup_clk",
1270 .parent_hws
= (const struct clk_hw
*[]){
1271 &gsbi6_qup_src
.clkr
.hw
1274 .ops
= &clk_branch_ops
,
1275 .flags
= CLK_SET_RATE_PARENT
,
1280 static struct clk_rcg gsbi7_qup_src
= {
1285 .mnctr_reset_bit
= 7,
1286 .mnctr_mode_shift
= 5,
1297 .parent_map
= gcc_pxo_pll8_map
,
1299 .freq_tbl
= clk_tbl_gsbi_qup
,
1301 .enable_reg
= 0x2a8c,
1302 .enable_mask
= BIT(11),
1303 .hw
.init
= &(struct clk_init_data
){
1304 .name
= "gsbi7_qup_src",
1305 .parent_data
= gcc_pxo_pll8
,
1306 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1307 .ops
= &clk_rcg_ops
,
1308 .flags
= CLK_SET_PARENT_GATE
,
1313 static struct clk_branch gsbi7_qup_clk
= {
1317 .enable_reg
= 0x2a8c,
1318 .enable_mask
= BIT(9),
1319 .hw
.init
= &(struct clk_init_data
){
1320 .name
= "gsbi7_qup_clk",
1321 .parent_hws
= (const struct clk_hw
*[]){
1322 &gsbi7_qup_src
.clkr
.hw
1325 .ops
= &clk_branch_ops
,
1326 .flags
= CLK_SET_RATE_PARENT
,
1331 static struct clk_rcg gsbi8_qup_src
= {
1336 .mnctr_reset_bit
= 7,
1337 .mnctr_mode_shift
= 5,
1348 .parent_map
= gcc_pxo_pll8_map
,
1350 .freq_tbl
= clk_tbl_gsbi_qup
,
1352 .enable_reg
= 0x2aac,
1353 .enable_mask
= BIT(11),
1354 .hw
.init
= &(struct clk_init_data
){
1355 .name
= "gsbi8_qup_src",
1356 .parent_data
= gcc_pxo_pll8
,
1357 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1358 .ops
= &clk_rcg_ops
,
1359 .flags
= CLK_SET_PARENT_GATE
,
1364 static struct clk_branch gsbi8_qup_clk
= {
1368 .enable_reg
= 0x2aac,
1369 .enable_mask
= BIT(9),
1370 .hw
.init
= &(struct clk_init_data
){
1371 .name
= "gsbi8_qup_clk",
1372 .parent_hws
= (const struct clk_hw
*[]){
1373 &gsbi8_qup_src
.clkr
.hw
1376 .ops
= &clk_branch_ops
,
1377 .flags
= CLK_SET_RATE_PARENT
,
1382 static struct clk_rcg gsbi9_qup_src
= {
1387 .mnctr_reset_bit
= 7,
1388 .mnctr_mode_shift
= 5,
1399 .parent_map
= gcc_pxo_pll8_map
,
1401 .freq_tbl
= clk_tbl_gsbi_qup
,
1403 .enable_reg
= 0x2acc,
1404 .enable_mask
= BIT(11),
1405 .hw
.init
= &(struct clk_init_data
){
1406 .name
= "gsbi9_qup_src",
1407 .parent_data
= gcc_pxo_pll8
,
1408 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1409 .ops
= &clk_rcg_ops
,
1410 .flags
= CLK_SET_PARENT_GATE
,
1415 static struct clk_branch gsbi9_qup_clk
= {
1419 .enable_reg
= 0x2acc,
1420 .enable_mask
= BIT(9),
1421 .hw
.init
= &(struct clk_init_data
){
1422 .name
= "gsbi9_qup_clk",
1423 .parent_hws
= (const struct clk_hw
*[]){
1424 &gsbi9_qup_src
.clkr
.hw
1427 .ops
= &clk_branch_ops
,
1428 .flags
= CLK_SET_RATE_PARENT
,
1433 static struct clk_rcg gsbi10_qup_src
= {
1438 .mnctr_reset_bit
= 7,
1439 .mnctr_mode_shift
= 5,
1450 .parent_map
= gcc_pxo_pll8_map
,
1452 .freq_tbl
= clk_tbl_gsbi_qup
,
1454 .enable_reg
= 0x2aec,
1455 .enable_mask
= BIT(11),
1456 .hw
.init
= &(struct clk_init_data
){
1457 .name
= "gsbi10_qup_src",
1458 .parent_data
= gcc_pxo_pll8
,
1459 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1460 .ops
= &clk_rcg_ops
,
1461 .flags
= CLK_SET_PARENT_GATE
,
1466 static struct clk_branch gsbi10_qup_clk
= {
1470 .enable_reg
= 0x2aec,
1471 .enable_mask
= BIT(9),
1472 .hw
.init
= &(struct clk_init_data
){
1473 .name
= "gsbi10_qup_clk",
1474 .parent_hws
= (const struct clk_hw
*[]){
1475 &gsbi10_qup_src
.clkr
.hw
1478 .ops
= &clk_branch_ops
,
1479 .flags
= CLK_SET_RATE_PARENT
,
1484 static struct clk_rcg gsbi11_qup_src
= {
1489 .mnctr_reset_bit
= 7,
1490 .mnctr_mode_shift
= 5,
1501 .parent_map
= gcc_pxo_pll8_map
,
1503 .freq_tbl
= clk_tbl_gsbi_qup
,
1505 .enable_reg
= 0x2b0c,
1506 .enable_mask
= BIT(11),
1507 .hw
.init
= &(struct clk_init_data
){
1508 .name
= "gsbi11_qup_src",
1509 .parent_data
= gcc_pxo_pll8
,
1510 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1511 .ops
= &clk_rcg_ops
,
1512 .flags
= CLK_SET_PARENT_GATE
,
1517 static struct clk_branch gsbi11_qup_clk
= {
1521 .enable_reg
= 0x2b0c,
1522 .enable_mask
= BIT(9),
1523 .hw
.init
= &(struct clk_init_data
){
1524 .name
= "gsbi11_qup_clk",
1525 .parent_hws
= (const struct clk_hw
*[]){
1526 &gsbi11_qup_src
.clkr
.hw
1529 .ops
= &clk_branch_ops
,
1530 .flags
= CLK_SET_RATE_PARENT
,
1535 static struct clk_rcg gsbi12_qup_src
= {
1540 .mnctr_reset_bit
= 7,
1541 .mnctr_mode_shift
= 5,
1552 .parent_map
= gcc_pxo_pll8_map
,
1554 .freq_tbl
= clk_tbl_gsbi_qup
,
1556 .enable_reg
= 0x2b2c,
1557 .enable_mask
= BIT(11),
1558 .hw
.init
= &(struct clk_init_data
){
1559 .name
= "gsbi12_qup_src",
1560 .parent_data
= gcc_pxo_pll8
,
1561 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1562 .ops
= &clk_rcg_ops
,
1563 .flags
= CLK_SET_PARENT_GATE
,
1568 static struct clk_branch gsbi12_qup_clk
= {
1572 .enable_reg
= 0x2b2c,
1573 .enable_mask
= BIT(9),
1574 .hw
.init
= &(struct clk_init_data
){
1575 .name
= "gsbi12_qup_clk",
1576 .parent_hws
= (const struct clk_hw
*[]){
1577 &gsbi12_qup_src
.clkr
.hw
1580 .ops
= &clk_branch_ops
,
1581 .flags
= CLK_SET_RATE_PARENT
,
1586 static const struct freq_tbl clk_tbl_gp
[] = {
1587 { 9600000, P_CXO
, 2, 0, 0 },
1588 { 13500000, P_PXO
, 2, 0, 0 },
1589 { 19200000, P_CXO
, 1, 0, 0 },
1590 { 27000000, P_PXO
, 1, 0, 0 },
1591 { 64000000, P_PLL8
, 2, 1, 3 },
1592 { 76800000, P_PLL8
, 1, 1, 5 },
1593 { 96000000, P_PLL8
, 4, 0, 0 },
1594 { 128000000, P_PLL8
, 3, 0, 0 },
1595 { 192000000, P_PLL8
, 2, 0, 0 },
1599 static struct clk_rcg gp0_src
= {
1604 .mnctr_reset_bit
= 7,
1605 .mnctr_mode_shift
= 5,
1616 .parent_map
= gcc_pxo_pll8_cxo_map
,
1618 .freq_tbl
= clk_tbl_gp
,
1620 .enable_reg
= 0x2d24,
1621 .enable_mask
= BIT(11),
1622 .hw
.init
= &(struct clk_init_data
){
1624 .parent_data
= gcc_pxo_pll8_cxo
,
1625 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8_cxo
),
1626 .ops
= &clk_rcg_ops
,
1627 .flags
= CLK_SET_PARENT_GATE
,
1632 static struct clk_branch gp0_clk
= {
1636 .enable_reg
= 0x2d24,
1637 .enable_mask
= BIT(9),
1638 .hw
.init
= &(struct clk_init_data
){
1640 .parent_hws
= (const struct clk_hw
*[]){
1644 .ops
= &clk_branch_ops
,
1645 .flags
= CLK_SET_RATE_PARENT
,
1650 static struct clk_rcg gp1_src
= {
1655 .mnctr_reset_bit
= 7,
1656 .mnctr_mode_shift
= 5,
1667 .parent_map
= gcc_pxo_pll8_cxo_map
,
1669 .freq_tbl
= clk_tbl_gp
,
1671 .enable_reg
= 0x2d44,
1672 .enable_mask
= BIT(11),
1673 .hw
.init
= &(struct clk_init_data
){
1675 .parent_data
= gcc_pxo_pll8_cxo
,
1676 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8_cxo
),
1677 .ops
= &clk_rcg_ops
,
1678 .flags
= CLK_SET_RATE_GATE
,
1683 static struct clk_branch gp1_clk
= {
1687 .enable_reg
= 0x2d44,
1688 .enable_mask
= BIT(9),
1689 .hw
.init
= &(struct clk_init_data
){
1691 .parent_hws
= (const struct clk_hw
*[]){
1695 .ops
= &clk_branch_ops
,
1696 .flags
= CLK_SET_RATE_PARENT
,
1701 static struct clk_rcg gp2_src
= {
1706 .mnctr_reset_bit
= 7,
1707 .mnctr_mode_shift
= 5,
1718 .parent_map
= gcc_pxo_pll8_cxo_map
,
1720 .freq_tbl
= clk_tbl_gp
,
1722 .enable_reg
= 0x2d64,
1723 .enable_mask
= BIT(11),
1724 .hw
.init
= &(struct clk_init_data
){
1726 .parent_data
= gcc_pxo_pll8_cxo
,
1727 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8_cxo
),
1728 .ops
= &clk_rcg_ops
,
1729 .flags
= CLK_SET_RATE_GATE
,
1734 static struct clk_branch gp2_clk
= {
1738 .enable_reg
= 0x2d64,
1739 .enable_mask
= BIT(9),
1740 .hw
.init
= &(struct clk_init_data
){
1742 .parent_hws
= (const struct clk_hw
*[]){
1746 .ops
= &clk_branch_ops
,
1747 .flags
= CLK_SET_RATE_PARENT
,
1752 static struct clk_branch pmem_clk
= {
1758 .enable_reg
= 0x25a0,
1759 .enable_mask
= BIT(4),
1760 .hw
.init
= &(struct clk_init_data
){
1762 .ops
= &clk_branch_ops
,
1767 static struct clk_rcg prng_src
= {
1775 .parent_map
= gcc_pxo_pll8_map
,
1778 .hw
.init
= &(struct clk_init_data
){
1780 .parent_data
= gcc_pxo_pll8
,
1781 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1782 .ops
= &clk_rcg_ops
,
1787 static struct clk_branch prng_clk
= {
1789 .halt_check
= BRANCH_HALT_VOTED
,
1792 .enable_reg
= 0x3080,
1793 .enable_mask
= BIT(10),
1794 .hw
.init
= &(struct clk_init_data
){
1796 .parent_hws
= (const struct clk_hw
*[]){
1800 .ops
= &clk_branch_ops
,
1805 static const struct freq_tbl clk_tbl_sdc
[] = {
1806 { 144000, P_PXO
, 3, 2, 125 },
1807 { 400000, P_PLL8
, 4, 1, 240 },
1808 { 16000000, P_PLL8
, 4, 1, 6 },
1809 { 17070000, P_PLL8
, 1, 2, 45 },
1810 { 20210000, P_PLL8
, 1, 1, 19 },
1811 { 24000000, P_PLL8
, 4, 1, 4 },
1812 { 48000000, P_PLL8
, 4, 1, 2 },
1813 { 64000000, P_PLL8
, 3, 1, 2 },
1814 { 96000000, P_PLL8
, 4, 0, 0 },
1815 { 192000000, P_PLL8
, 2, 0, 0 },
1819 static struct clk_rcg sdc1_src
= {
1824 .mnctr_reset_bit
= 7,
1825 .mnctr_mode_shift
= 5,
1836 .parent_map
= gcc_pxo_pll8_map
,
1838 .freq_tbl
= clk_tbl_sdc
,
1840 .enable_reg
= 0x282c,
1841 .enable_mask
= BIT(11),
1842 .hw
.init
= &(struct clk_init_data
){
1844 .parent_data
= gcc_pxo_pll8
,
1845 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1846 .ops
= &clk_rcg_ops
,
1851 static struct clk_branch sdc1_clk
= {
1855 .enable_reg
= 0x282c,
1856 .enable_mask
= BIT(9),
1857 .hw
.init
= &(struct clk_init_data
){
1859 .parent_hws
= (const struct clk_hw
*[]){
1863 .ops
= &clk_branch_ops
,
1864 .flags
= CLK_SET_RATE_PARENT
,
1869 static struct clk_rcg sdc2_src
= {
1874 .mnctr_reset_bit
= 7,
1875 .mnctr_mode_shift
= 5,
1886 .parent_map
= gcc_pxo_pll8_map
,
1888 .freq_tbl
= clk_tbl_sdc
,
1890 .enable_reg
= 0x284c,
1891 .enable_mask
= BIT(11),
1892 .hw
.init
= &(struct clk_init_data
){
1894 .parent_data
= gcc_pxo_pll8
,
1895 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1896 .ops
= &clk_rcg_ops
,
1901 static struct clk_branch sdc2_clk
= {
1905 .enable_reg
= 0x284c,
1906 .enable_mask
= BIT(9),
1907 .hw
.init
= &(struct clk_init_data
){
1909 .parent_hws
= (const struct clk_hw
*[]){
1913 .ops
= &clk_branch_ops
,
1914 .flags
= CLK_SET_RATE_PARENT
,
1919 static struct clk_rcg sdc3_src
= {
1924 .mnctr_reset_bit
= 7,
1925 .mnctr_mode_shift
= 5,
1936 .parent_map
= gcc_pxo_pll8_map
,
1938 .freq_tbl
= clk_tbl_sdc
,
1940 .enable_reg
= 0x286c,
1941 .enable_mask
= BIT(11),
1942 .hw
.init
= &(struct clk_init_data
){
1944 .parent_data
= gcc_pxo_pll8
,
1945 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1946 .ops
= &clk_rcg_ops
,
1951 static struct clk_branch sdc3_clk
= {
1955 .enable_reg
= 0x286c,
1956 .enable_mask
= BIT(9),
1957 .hw
.init
= &(struct clk_init_data
){
1959 .parent_hws
= (const struct clk_hw
*[]){
1963 .ops
= &clk_branch_ops
,
1964 .flags
= CLK_SET_RATE_PARENT
,
1969 static struct clk_rcg sdc4_src
= {
1974 .mnctr_reset_bit
= 7,
1975 .mnctr_mode_shift
= 5,
1986 .parent_map
= gcc_pxo_pll8_map
,
1988 .freq_tbl
= clk_tbl_sdc
,
1990 .enable_reg
= 0x288c,
1991 .enable_mask
= BIT(11),
1992 .hw
.init
= &(struct clk_init_data
){
1994 .parent_data
= gcc_pxo_pll8
,
1995 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
1996 .ops
= &clk_rcg_ops
,
2001 static struct clk_branch sdc4_clk
= {
2005 .enable_reg
= 0x288c,
2006 .enable_mask
= BIT(9),
2007 .hw
.init
= &(struct clk_init_data
){
2009 .parent_hws
= (const struct clk_hw
*[]){
2013 .ops
= &clk_branch_ops
,
2014 .flags
= CLK_SET_RATE_PARENT
,
2019 static struct clk_rcg sdc5_src
= {
2024 .mnctr_reset_bit
= 7,
2025 .mnctr_mode_shift
= 5,
2036 .parent_map
= gcc_pxo_pll8_map
,
2038 .freq_tbl
= clk_tbl_sdc
,
2040 .enable_reg
= 0x28ac,
2041 .enable_mask
= BIT(11),
2042 .hw
.init
= &(struct clk_init_data
){
2044 .parent_data
= gcc_pxo_pll8
,
2045 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
2046 .ops
= &clk_rcg_ops
,
2051 static struct clk_branch sdc5_clk
= {
2055 .enable_reg
= 0x28ac,
2056 .enable_mask
= BIT(9),
2057 .hw
.init
= &(struct clk_init_data
){
2059 .parent_hws
= (const struct clk_hw
*[]){
2063 .ops
= &clk_branch_ops
,
2064 .flags
= CLK_SET_RATE_PARENT
,
2069 static const struct freq_tbl clk_tbl_tsif_ref
[] = {
2070 { 105000, P_PXO
, 1, 1, 256 },
2074 static struct clk_rcg tsif_ref_src
= {
2079 .mnctr_reset_bit
= 7,
2080 .mnctr_mode_shift
= 5,
2091 .parent_map
= gcc_pxo_pll8_map
,
2093 .freq_tbl
= clk_tbl_tsif_ref
,
2095 .enable_reg
= 0x2710,
2096 .enable_mask
= BIT(11),
2097 .hw
.init
= &(struct clk_init_data
){
2098 .name
= "tsif_ref_src",
2099 .parent_data
= gcc_pxo_pll8
,
2100 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
2101 .ops
= &clk_rcg_ops
,
2102 .flags
= CLK_SET_RATE_GATE
,
2107 static struct clk_branch tsif_ref_clk
= {
2111 .enable_reg
= 0x2710,
2112 .enable_mask
= BIT(9),
2113 .hw
.init
= &(struct clk_init_data
){
2114 .name
= "tsif_ref_clk",
2115 .parent_hws
= (const struct clk_hw
*[]){
2116 &tsif_ref_src
.clkr
.hw
2119 .ops
= &clk_branch_ops
,
2120 .flags
= CLK_SET_RATE_PARENT
,
2125 static const struct freq_tbl clk_tbl_usb
[] = {
2126 { 60000000, P_PLL8
, 1, 5, 32 },
2130 static struct clk_rcg usb_hs1_xcvr_src
= {
2135 .mnctr_reset_bit
= 7,
2136 .mnctr_mode_shift
= 5,
2147 .parent_map
= gcc_pxo_pll8_map
,
2149 .freq_tbl
= clk_tbl_usb
,
2151 .enable_reg
= 0x290c,
2152 .enable_mask
= BIT(11),
2153 .hw
.init
= &(struct clk_init_data
){
2154 .name
= "usb_hs1_xcvr_src",
2155 .parent_data
= gcc_pxo_pll8
,
2156 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
2157 .ops
= &clk_rcg_ops
,
2158 .flags
= CLK_SET_RATE_GATE
,
2163 static struct clk_branch usb_hs1_xcvr_clk
= {
2167 .enable_reg
= 0x290c,
2168 .enable_mask
= BIT(9),
2169 .hw
.init
= &(struct clk_init_data
){
2170 .name
= "usb_hs1_xcvr_clk",
2171 .parent_hws
= (const struct clk_hw
*[]){
2172 &usb_hs1_xcvr_src
.clkr
.hw
2175 .ops
= &clk_branch_ops
,
2176 .flags
= CLK_SET_RATE_PARENT
,
2181 static struct clk_rcg usb_hs3_xcvr_src
= {
2186 .mnctr_reset_bit
= 7,
2187 .mnctr_mode_shift
= 5,
2198 .parent_map
= gcc_pxo_pll8_map
,
2200 .freq_tbl
= clk_tbl_usb
,
2202 .enable_reg
= 0x370c,
2203 .enable_mask
= BIT(11),
2204 .hw
.init
= &(struct clk_init_data
){
2205 .name
= "usb_hs3_xcvr_src",
2206 .parent_data
= gcc_pxo_pll8
,
2207 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
2208 .ops
= &clk_rcg_ops
,
2209 .flags
= CLK_SET_RATE_GATE
,
2214 static struct clk_branch usb_hs3_xcvr_clk
= {
2218 .enable_reg
= 0x370c,
2219 .enable_mask
= BIT(9),
2220 .hw
.init
= &(struct clk_init_data
){
2221 .name
= "usb_hs3_xcvr_clk",
2222 .parent_hws
= (const struct clk_hw
*[]){
2223 &usb_hs3_xcvr_src
.clkr
.hw
2226 .ops
= &clk_branch_ops
,
2227 .flags
= CLK_SET_RATE_PARENT
,
2232 static struct clk_rcg usb_hs4_xcvr_src
= {
2237 .mnctr_reset_bit
= 7,
2238 .mnctr_mode_shift
= 5,
2249 .parent_map
= gcc_pxo_pll8_map
,
2251 .freq_tbl
= clk_tbl_usb
,
2253 .enable_reg
= 0x372c,
2254 .enable_mask
= BIT(11),
2255 .hw
.init
= &(struct clk_init_data
){
2256 .name
= "usb_hs4_xcvr_src",
2257 .parent_data
= gcc_pxo_pll8
,
2258 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
2259 .ops
= &clk_rcg_ops
,
2260 .flags
= CLK_SET_RATE_GATE
,
2265 static struct clk_branch usb_hs4_xcvr_clk
= {
2269 .enable_reg
= 0x372c,
2270 .enable_mask
= BIT(9),
2271 .hw
.init
= &(struct clk_init_data
){
2272 .name
= "usb_hs4_xcvr_clk",
2273 .parent_hws
= (const struct clk_hw
*[]){
2274 &usb_hs4_xcvr_src
.clkr
.hw
2277 .ops
= &clk_branch_ops
,
2278 .flags
= CLK_SET_RATE_PARENT
,
2283 static struct clk_rcg usb_hsic_xcvr_fs_src
= {
2288 .mnctr_reset_bit
= 7,
2289 .mnctr_mode_shift
= 5,
2300 .parent_map
= gcc_pxo_pll8_map
,
2302 .freq_tbl
= clk_tbl_usb
,
2304 .enable_reg
= 0x2928,
2305 .enable_mask
= BIT(11),
2306 .hw
.init
= &(struct clk_init_data
){
2307 .name
= "usb_hsic_xcvr_fs_src",
2308 .parent_data
= gcc_pxo_pll8
,
2309 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
2310 .ops
= &clk_rcg_ops
,
2311 .flags
= CLK_SET_RATE_GATE
,
2316 static struct clk_branch usb_hsic_xcvr_fs_clk
= {
2320 .enable_reg
= 0x2928,
2321 .enable_mask
= BIT(9),
2322 .hw
.init
= &(struct clk_init_data
){
2323 .name
= "usb_hsic_xcvr_fs_clk",
2324 .parent_hws
= (const struct clk_hw
*[]){
2325 &usb_hsic_xcvr_fs_src
.clkr
.hw
,
2328 .ops
= &clk_branch_ops
,
2329 .flags
= CLK_SET_RATE_PARENT
,
2334 static struct clk_branch usb_hsic_system_clk
= {
2338 .enable_reg
= 0x292c,
2339 .enable_mask
= BIT(4),
2340 .hw
.init
= &(struct clk_init_data
){
2341 .parent_hws
= (const struct clk_hw
*[]){
2342 &usb_hsic_xcvr_fs_src
.clkr
.hw
,
2345 .name
= "usb_hsic_system_clk",
2346 .ops
= &clk_branch_ops
,
2347 .flags
= CLK_SET_RATE_PARENT
,
2352 static struct clk_branch usb_hsic_hsic_clk
= {
2356 .enable_reg
= 0x2b44,
2357 .enable_mask
= BIT(0),
2358 .hw
.init
= &(struct clk_init_data
){
2359 .parent_hws
= (const struct clk_hw
*[]){
2363 .name
= "usb_hsic_hsic_clk",
2364 .ops
= &clk_branch_ops
,
2369 static struct clk_branch usb_hsic_hsio_cal_clk
= {
2373 .enable_reg
= 0x2b48,
2374 .enable_mask
= BIT(0),
2375 .hw
.init
= &(struct clk_init_data
){
2376 .name
= "usb_hsic_hsio_cal_clk",
2377 .ops
= &clk_branch_ops
,
2382 static struct clk_rcg usb_fs1_xcvr_fs_src
= {
2387 .mnctr_reset_bit
= 7,
2388 .mnctr_mode_shift
= 5,
2399 .parent_map
= gcc_pxo_pll8_map
,
2401 .freq_tbl
= clk_tbl_usb
,
2403 .enable_reg
= 0x2968,
2404 .enable_mask
= BIT(11),
2405 .hw
.init
= &(struct clk_init_data
){
2406 .name
= "usb_fs1_xcvr_fs_src",
2407 .parent_data
= gcc_pxo_pll8
,
2408 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
2409 .ops
= &clk_rcg_ops
,
2410 .flags
= CLK_SET_RATE_GATE
,
2415 static struct clk_branch usb_fs1_xcvr_fs_clk
= {
2419 .enable_reg
= 0x2968,
2420 .enable_mask
= BIT(9),
2421 .hw
.init
= &(struct clk_init_data
){
2422 .name
= "usb_fs1_xcvr_fs_clk",
2423 .parent_hws
= (const struct clk_hw
*[]){
2424 &usb_fs1_xcvr_fs_src
.clkr
.hw
,
2427 .ops
= &clk_branch_ops
,
2428 .flags
= CLK_SET_RATE_PARENT
,
2433 static struct clk_branch usb_fs1_system_clk
= {
2437 .enable_reg
= 0x296c,
2438 .enable_mask
= BIT(4),
2439 .hw
.init
= &(struct clk_init_data
){
2440 .parent_hws
= (const struct clk_hw
*[]){
2441 &usb_fs1_xcvr_fs_src
.clkr
.hw
,
2444 .name
= "usb_fs1_system_clk",
2445 .ops
= &clk_branch_ops
,
2446 .flags
= CLK_SET_RATE_PARENT
,
2451 static struct clk_rcg usb_fs2_xcvr_fs_src
= {
2456 .mnctr_reset_bit
= 7,
2457 .mnctr_mode_shift
= 5,
2468 .parent_map
= gcc_pxo_pll8_map
,
2470 .freq_tbl
= clk_tbl_usb
,
2472 .enable_reg
= 0x2988,
2473 .enable_mask
= BIT(11),
2474 .hw
.init
= &(struct clk_init_data
){
2475 .name
= "usb_fs2_xcvr_fs_src",
2476 .parent_data
= gcc_pxo_pll8
,
2477 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8
),
2478 .ops
= &clk_rcg_ops
,
2479 .flags
= CLK_SET_RATE_GATE
,
2484 static struct clk_branch usb_fs2_xcvr_fs_clk
= {
2488 .enable_reg
= 0x2988,
2489 .enable_mask
= BIT(9),
2490 .hw
.init
= &(struct clk_init_data
){
2491 .name
= "usb_fs2_xcvr_fs_clk",
2492 .parent_hws
= (const struct clk_hw
*[]){
2493 &usb_fs2_xcvr_fs_src
.clkr
.hw
,
2496 .ops
= &clk_branch_ops
,
2497 .flags
= CLK_SET_RATE_PARENT
,
2502 static struct clk_branch usb_fs2_system_clk
= {
2506 .enable_reg
= 0x298c,
2507 .enable_mask
= BIT(4),
2508 .hw
.init
= &(struct clk_init_data
){
2509 .name
= "usb_fs2_system_clk",
2510 .parent_hws
= (const struct clk_hw
*[]){
2511 &usb_fs2_xcvr_fs_src
.clkr
.hw
,
2514 .ops
= &clk_branch_ops
,
2515 .flags
= CLK_SET_RATE_PARENT
,
2520 static struct clk_branch ce1_core_clk
= {
2526 .enable_reg
= 0x2724,
2527 .enable_mask
= BIT(4),
2528 .hw
.init
= &(struct clk_init_data
){
2529 .name
= "ce1_core_clk",
2530 .ops
= &clk_branch_ops
,
2535 static struct clk_branch ce1_h_clk
= {
2539 .enable_reg
= 0x2720,
2540 .enable_mask
= BIT(4),
2541 .hw
.init
= &(struct clk_init_data
){
2542 .name
= "ce1_h_clk",
2543 .ops
= &clk_branch_ops
,
2548 static struct clk_branch dma_bam_h_clk
= {
2554 .enable_reg
= 0x25c0,
2555 .enable_mask
= BIT(4),
2556 .hw
.init
= &(struct clk_init_data
){
2557 .name
= "dma_bam_h_clk",
2558 .ops
= &clk_branch_ops
,
2563 static struct clk_branch gsbi1_h_clk
= {
2569 .enable_reg
= 0x29c0,
2570 .enable_mask
= BIT(4),
2571 .hw
.init
= &(struct clk_init_data
){
2572 .name
= "gsbi1_h_clk",
2573 .ops
= &clk_branch_ops
,
2578 static struct clk_branch gsbi2_h_clk
= {
2584 .enable_reg
= 0x29e0,
2585 .enable_mask
= BIT(4),
2586 .hw
.init
= &(struct clk_init_data
){
2587 .name
= "gsbi2_h_clk",
2588 .ops
= &clk_branch_ops
,
2593 static struct clk_branch gsbi3_h_clk
= {
2599 .enable_reg
= 0x2a00,
2600 .enable_mask
= BIT(4),
2601 .hw
.init
= &(struct clk_init_data
){
2602 .name
= "gsbi3_h_clk",
2603 .ops
= &clk_branch_ops
,
2608 static struct clk_branch gsbi4_h_clk
= {
2614 .enable_reg
= 0x2a20,
2615 .enable_mask
= BIT(4),
2616 .hw
.init
= &(struct clk_init_data
){
2617 .name
= "gsbi4_h_clk",
2618 .ops
= &clk_branch_ops
,
2623 static struct clk_branch gsbi5_h_clk
= {
2629 .enable_reg
= 0x2a40,
2630 .enable_mask
= BIT(4),
2631 .hw
.init
= &(struct clk_init_data
){
2632 .name
= "gsbi5_h_clk",
2633 .ops
= &clk_branch_ops
,
2638 static struct clk_branch gsbi6_h_clk
= {
2644 .enable_reg
= 0x2a60,
2645 .enable_mask
= BIT(4),
2646 .hw
.init
= &(struct clk_init_data
){
2647 .name
= "gsbi6_h_clk",
2648 .ops
= &clk_branch_ops
,
2653 static struct clk_branch gsbi7_h_clk
= {
2659 .enable_reg
= 0x2a80,
2660 .enable_mask
= BIT(4),
2661 .hw
.init
= &(struct clk_init_data
){
2662 .name
= "gsbi7_h_clk",
2663 .ops
= &clk_branch_ops
,
2668 static struct clk_branch gsbi8_h_clk
= {
2674 .enable_reg
= 0x2aa0,
2675 .enable_mask
= BIT(4),
2676 .hw
.init
= &(struct clk_init_data
){
2677 .name
= "gsbi8_h_clk",
2678 .ops
= &clk_branch_ops
,
2683 static struct clk_branch gsbi9_h_clk
= {
2689 .enable_reg
= 0x2ac0,
2690 .enable_mask
= BIT(4),
2691 .hw
.init
= &(struct clk_init_data
){
2692 .name
= "gsbi9_h_clk",
2693 .ops
= &clk_branch_ops
,
2698 static struct clk_branch gsbi10_h_clk
= {
2704 .enable_reg
= 0x2ae0,
2705 .enable_mask
= BIT(4),
2706 .hw
.init
= &(struct clk_init_data
){
2707 .name
= "gsbi10_h_clk",
2708 .ops
= &clk_branch_ops
,
2713 static struct clk_branch gsbi11_h_clk
= {
2719 .enable_reg
= 0x2b00,
2720 .enable_mask
= BIT(4),
2721 .hw
.init
= &(struct clk_init_data
){
2722 .name
= "gsbi11_h_clk",
2723 .ops
= &clk_branch_ops
,
2728 static struct clk_branch gsbi12_h_clk
= {
2734 .enable_reg
= 0x2b20,
2735 .enable_mask
= BIT(4),
2736 .hw
.init
= &(struct clk_init_data
){
2737 .name
= "gsbi12_h_clk",
2738 .ops
= &clk_branch_ops
,
2743 static struct clk_branch tsif_h_clk
= {
2749 .enable_reg
= 0x2700,
2750 .enable_mask
= BIT(4),
2751 .hw
.init
= &(struct clk_init_data
){
2752 .name
= "tsif_h_clk",
2753 .ops
= &clk_branch_ops
,
2758 static struct clk_branch usb_fs1_h_clk
= {
2762 .enable_reg
= 0x2960,
2763 .enable_mask
= BIT(4),
2764 .hw
.init
= &(struct clk_init_data
){
2765 .name
= "usb_fs1_h_clk",
2766 .ops
= &clk_branch_ops
,
2771 static struct clk_branch usb_fs2_h_clk
= {
2775 .enable_reg
= 0x2980,
2776 .enable_mask
= BIT(4),
2777 .hw
.init
= &(struct clk_init_data
){
2778 .name
= "usb_fs2_h_clk",
2779 .ops
= &clk_branch_ops
,
2784 static struct clk_branch usb_hs1_h_clk
= {
2790 .enable_reg
= 0x2900,
2791 .enable_mask
= BIT(4),
2792 .hw
.init
= &(struct clk_init_data
){
2793 .name
= "usb_hs1_h_clk",
2794 .ops
= &clk_branch_ops
,
2799 static struct clk_branch usb_hs3_h_clk
= {
2803 .enable_reg
= 0x3700,
2804 .enable_mask
= BIT(4),
2805 .hw
.init
= &(struct clk_init_data
){
2806 .name
= "usb_hs3_h_clk",
2807 .ops
= &clk_branch_ops
,
2812 static struct clk_branch usb_hs4_h_clk
= {
2816 .enable_reg
= 0x3720,
2817 .enable_mask
= BIT(4),
2818 .hw
.init
= &(struct clk_init_data
){
2819 .name
= "usb_hs4_h_clk",
2820 .ops
= &clk_branch_ops
,
2825 static struct clk_branch usb_hsic_h_clk
= {
2829 .enable_reg
= 0x2920,
2830 .enable_mask
= BIT(4),
2831 .hw
.init
= &(struct clk_init_data
){
2832 .name
= "usb_hsic_h_clk",
2833 .ops
= &clk_branch_ops
,
2838 static struct clk_branch sdc1_h_clk
= {
2844 .enable_reg
= 0x2820,
2845 .enable_mask
= BIT(4),
2846 .hw
.init
= &(struct clk_init_data
){
2847 .name
= "sdc1_h_clk",
2848 .ops
= &clk_branch_ops
,
2853 static struct clk_branch sdc2_h_clk
= {
2859 .enable_reg
= 0x2840,
2860 .enable_mask
= BIT(4),
2861 .hw
.init
= &(struct clk_init_data
){
2862 .name
= "sdc2_h_clk",
2863 .ops
= &clk_branch_ops
,
2868 static struct clk_branch sdc3_h_clk
= {
2874 .enable_reg
= 0x2860,
2875 .enable_mask
= BIT(4),
2876 .hw
.init
= &(struct clk_init_data
){
2877 .name
= "sdc3_h_clk",
2878 .ops
= &clk_branch_ops
,
2883 static struct clk_branch sdc4_h_clk
= {
2889 .enable_reg
= 0x2880,
2890 .enable_mask
= BIT(4),
2891 .hw
.init
= &(struct clk_init_data
){
2892 .name
= "sdc4_h_clk",
2893 .ops
= &clk_branch_ops
,
2898 static struct clk_branch sdc5_h_clk
= {
2904 .enable_reg
= 0x28a0,
2905 .enable_mask
= BIT(4),
2906 .hw
.init
= &(struct clk_init_data
){
2907 .name
= "sdc5_h_clk",
2908 .ops
= &clk_branch_ops
,
2913 static struct clk_branch adm0_clk
= {
2915 .halt_check
= BRANCH_HALT_VOTED
,
2918 .enable_reg
= 0x3080,
2919 .enable_mask
= BIT(2),
2920 .hw
.init
= &(struct clk_init_data
){
2922 .ops
= &clk_branch_ops
,
2927 static struct clk_branch adm0_pbus_clk
= {
2931 .halt_check
= BRANCH_HALT_VOTED
,
2934 .enable_reg
= 0x3080,
2935 .enable_mask
= BIT(3),
2936 .hw
.init
= &(struct clk_init_data
){
2937 .name
= "adm0_pbus_clk",
2938 .ops
= &clk_branch_ops
,
2943 static const struct freq_tbl clk_tbl_ce3
[] = {
2944 { 48000000, P_PLL8
, 8 },
2945 { 100000000, P_PLL3
, 12 },
2946 { 120000000, P_PLL3
, 10 },
2950 static struct clk_rcg ce3_src
= {
2958 .parent_map
= gcc_pxo_pll8_pll3_map
,
2960 .freq_tbl
= clk_tbl_ce3
,
2962 .enable_reg
= 0x36c0,
2963 .enable_mask
= BIT(7),
2964 .hw
.init
= &(struct clk_init_data
){
2966 .parent_data
= gcc_pxo_pll8_pll3
,
2967 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8_pll3
),
2968 .ops
= &clk_rcg_ops
,
2969 .flags
= CLK_SET_RATE_GATE
,
2974 static struct clk_branch ce3_core_clk
= {
2978 .enable_reg
= 0x36cc,
2979 .enable_mask
= BIT(4),
2980 .hw
.init
= &(struct clk_init_data
){
2981 .name
= "ce3_core_clk",
2982 .parent_hws
= (const struct clk_hw
*[]){
2986 .ops
= &clk_branch_ops
,
2987 .flags
= CLK_SET_RATE_PARENT
,
2992 static struct clk_branch ce3_h_clk
= {
2996 .enable_reg
= 0x36c4,
2997 .enable_mask
= BIT(4),
2998 .hw
.init
= &(struct clk_init_data
){
2999 .name
= "ce3_h_clk",
3000 .parent_hws
= (const struct clk_hw
*[]){
3004 .ops
= &clk_branch_ops
,
3005 .flags
= CLK_SET_RATE_PARENT
,
3010 static const struct freq_tbl clk_tbl_sata_ref
[] = {
3011 { 48000000, P_PLL8
, 8, 0, 0 },
3012 { 100000000, P_PLL3
, 12, 0, 0 },
3016 static struct clk_rcg sata_clk_src
= {
3024 .parent_map
= gcc_pxo_pll8_pll3_map
,
3026 .freq_tbl
= clk_tbl_sata_ref
,
3028 .enable_reg
= 0x2c08,
3029 .enable_mask
= BIT(7),
3030 .hw
.init
= &(struct clk_init_data
){
3031 .name
= "sata_clk_src",
3032 .parent_data
= gcc_pxo_pll8_pll3
,
3033 .num_parents
= ARRAY_SIZE(gcc_pxo_pll8_pll3
),
3034 .ops
= &clk_rcg_ops
,
3035 .flags
= CLK_SET_RATE_GATE
,
3040 static struct clk_branch sata_rxoob_clk
= {
3044 .enable_reg
= 0x2c0c,
3045 .enable_mask
= BIT(4),
3046 .hw
.init
= &(struct clk_init_data
){
3047 .name
= "sata_rxoob_clk",
3048 .parent_hws
= (const struct clk_hw
*[]){
3049 &sata_clk_src
.clkr
.hw
,
3052 .ops
= &clk_branch_ops
,
3053 .flags
= CLK_SET_RATE_PARENT
,
3058 static struct clk_branch sata_pmalive_clk
= {
3062 .enable_reg
= 0x2c10,
3063 .enable_mask
= BIT(4),
3064 .hw
.init
= &(struct clk_init_data
){
3065 .name
= "sata_pmalive_clk",
3066 .parent_hws
= (const struct clk_hw
*[]){
3067 &sata_clk_src
.clkr
.hw
,
3070 .ops
= &clk_branch_ops
,
3071 .flags
= CLK_SET_RATE_PARENT
,
3076 static struct clk_branch sata_phy_ref_clk
= {
3080 .enable_reg
= 0x2c14,
3081 .enable_mask
= BIT(4),
3082 .hw
.init
= &(struct clk_init_data
){
3083 .name
= "sata_phy_ref_clk",
3084 .parent_data
= &(const struct clk_parent_data
){
3085 .fw_name
= "pxo", .name
= "pxo_board",
3088 .ops
= &clk_branch_ops
,
3093 static struct clk_branch sata_a_clk
= {
3097 .enable_reg
= 0x2c20,
3098 .enable_mask
= BIT(4),
3099 .hw
.init
= &(struct clk_init_data
){
3100 .name
= "sata_a_clk",
3101 .ops
= &clk_branch_ops
,
3106 static struct clk_branch sata_h_clk
= {
3110 .enable_reg
= 0x2c00,
3111 .enable_mask
= BIT(4),
3112 .hw
.init
= &(struct clk_init_data
){
3113 .name
= "sata_h_clk",
3114 .ops
= &clk_branch_ops
,
3119 static struct clk_branch sfab_sata_s_h_clk
= {
3123 .enable_reg
= 0x2480,
3124 .enable_mask
= BIT(4),
3125 .hw
.init
= &(struct clk_init_data
){
3126 .name
= "sfab_sata_s_h_clk",
3127 .ops
= &clk_branch_ops
,
3132 static struct clk_branch sata_phy_cfg_clk
= {
3136 .enable_reg
= 0x2c40,
3137 .enable_mask
= BIT(4),
3138 .hw
.init
= &(struct clk_init_data
){
3139 .name
= "sata_phy_cfg_clk",
3140 .ops
= &clk_branch_ops
,
3145 static struct clk_branch pcie_phy_ref_clk
= {
3149 .enable_reg
= 0x22d0,
3150 .enable_mask
= BIT(4),
3151 .hw
.init
= &(struct clk_init_data
){
3152 .name
= "pcie_phy_ref_clk",
3153 .ops
= &clk_branch_ops
,
3158 static struct clk_branch pcie_h_clk
= {
3162 .enable_reg
= 0x22cc,
3163 .enable_mask
= BIT(4),
3164 .hw
.init
= &(struct clk_init_data
){
3165 .name
= "pcie_h_clk",
3166 .ops
= &clk_branch_ops
,
3171 static struct clk_branch pcie_a_clk
= {
3175 .enable_reg
= 0x22c0,
3176 .enable_mask
= BIT(4),
3177 .hw
.init
= &(struct clk_init_data
){
3178 .name
= "pcie_a_clk",
3179 .ops
= &clk_branch_ops
,
3184 static struct clk_branch pmic_arb0_h_clk
= {
3186 .halt_check
= BRANCH_HALT_VOTED
,
3189 .enable_reg
= 0x3080,
3190 .enable_mask
= BIT(8),
3191 .hw
.init
= &(struct clk_init_data
){
3192 .name
= "pmic_arb0_h_clk",
3193 .ops
= &clk_branch_ops
,
3198 static struct clk_branch pmic_arb1_h_clk
= {
3200 .halt_check
= BRANCH_HALT_VOTED
,
3203 .enable_reg
= 0x3080,
3204 .enable_mask
= BIT(9),
3205 .hw
.init
= &(struct clk_init_data
){
3206 .name
= "pmic_arb1_h_clk",
3207 .ops
= &clk_branch_ops
,
3212 static struct clk_branch pmic_ssbi2_clk
= {
3214 .halt_check
= BRANCH_HALT_VOTED
,
3217 .enable_reg
= 0x3080,
3218 .enable_mask
= BIT(7),
3219 .hw
.init
= &(struct clk_init_data
){
3220 .name
= "pmic_ssbi2_clk",
3221 .ops
= &clk_branch_ops
,
3226 static struct clk_branch rpm_msg_ram_h_clk
= {
3230 .halt_check
= BRANCH_HALT_VOTED
,
3233 .enable_reg
= 0x3080,
3234 .enable_mask
= BIT(6),
3235 .hw
.init
= &(struct clk_init_data
){
3236 .name
= "rpm_msg_ram_h_clk",
3237 .ops
= &clk_branch_ops
,
3242 static struct clk_regmap
*gcc_msm8960_clks
[] = {
3243 [PLL3
] = &pll3
.clkr
,
3244 [PLL4_VOTE
] = &pll4_vote
,
3245 [PLL8
] = &pll8
.clkr
,
3246 [PLL8_VOTE
] = &pll8_vote
,
3247 [PLL14
] = &pll14
.clkr
,
3248 [PLL14_VOTE
] = &pll14_vote
,
3249 [GSBI1_UART_SRC
] = &gsbi1_uart_src
.clkr
,
3250 [GSBI1_UART_CLK
] = &gsbi1_uart_clk
.clkr
,
3251 [GSBI2_UART_SRC
] = &gsbi2_uart_src
.clkr
,
3252 [GSBI2_UART_CLK
] = &gsbi2_uart_clk
.clkr
,
3253 [GSBI3_UART_SRC
] = &gsbi3_uart_src
.clkr
,
3254 [GSBI3_UART_CLK
] = &gsbi3_uart_clk
.clkr
,
3255 [GSBI4_UART_SRC
] = &gsbi4_uart_src
.clkr
,
3256 [GSBI4_UART_CLK
] = &gsbi4_uart_clk
.clkr
,
3257 [GSBI5_UART_SRC
] = &gsbi5_uart_src
.clkr
,
3258 [GSBI5_UART_CLK
] = &gsbi5_uart_clk
.clkr
,
3259 [GSBI6_UART_SRC
] = &gsbi6_uart_src
.clkr
,
3260 [GSBI6_UART_CLK
] = &gsbi6_uart_clk
.clkr
,
3261 [GSBI7_UART_SRC
] = &gsbi7_uart_src
.clkr
,
3262 [GSBI7_UART_CLK
] = &gsbi7_uart_clk
.clkr
,
3263 [GSBI8_UART_SRC
] = &gsbi8_uart_src
.clkr
,
3264 [GSBI8_UART_CLK
] = &gsbi8_uart_clk
.clkr
,
3265 [GSBI9_UART_SRC
] = &gsbi9_uart_src
.clkr
,
3266 [GSBI9_UART_CLK
] = &gsbi9_uart_clk
.clkr
,
3267 [GSBI10_UART_SRC
] = &gsbi10_uart_src
.clkr
,
3268 [GSBI10_UART_CLK
] = &gsbi10_uart_clk
.clkr
,
3269 [GSBI11_UART_SRC
] = &gsbi11_uart_src
.clkr
,
3270 [GSBI11_UART_CLK
] = &gsbi11_uart_clk
.clkr
,
3271 [GSBI12_UART_SRC
] = &gsbi12_uart_src
.clkr
,
3272 [GSBI12_UART_CLK
] = &gsbi12_uart_clk
.clkr
,
3273 [GSBI1_QUP_SRC
] = &gsbi1_qup_src
.clkr
,
3274 [GSBI1_QUP_CLK
] = &gsbi1_qup_clk
.clkr
,
3275 [GSBI2_QUP_SRC
] = &gsbi2_qup_src
.clkr
,
3276 [GSBI2_QUP_CLK
] = &gsbi2_qup_clk
.clkr
,
3277 [GSBI3_QUP_SRC
] = &gsbi3_qup_src
.clkr
,
3278 [GSBI3_QUP_CLK
] = &gsbi3_qup_clk
.clkr
,
3279 [GSBI4_QUP_SRC
] = &gsbi4_qup_src
.clkr
,
3280 [GSBI4_QUP_CLK
] = &gsbi4_qup_clk
.clkr
,
3281 [GSBI5_QUP_SRC
] = &gsbi5_qup_src
.clkr
,
3282 [GSBI5_QUP_CLK
] = &gsbi5_qup_clk
.clkr
,
3283 [GSBI6_QUP_SRC
] = &gsbi6_qup_src
.clkr
,
3284 [GSBI6_QUP_CLK
] = &gsbi6_qup_clk
.clkr
,
3285 [GSBI7_QUP_SRC
] = &gsbi7_qup_src
.clkr
,
3286 [GSBI7_QUP_CLK
] = &gsbi7_qup_clk
.clkr
,
3287 [GSBI8_QUP_SRC
] = &gsbi8_qup_src
.clkr
,
3288 [GSBI8_QUP_CLK
] = &gsbi8_qup_clk
.clkr
,
3289 [GSBI9_QUP_SRC
] = &gsbi9_qup_src
.clkr
,
3290 [GSBI9_QUP_CLK
] = &gsbi9_qup_clk
.clkr
,
3291 [GSBI10_QUP_SRC
] = &gsbi10_qup_src
.clkr
,
3292 [GSBI10_QUP_CLK
] = &gsbi10_qup_clk
.clkr
,
3293 [GSBI11_QUP_SRC
] = &gsbi11_qup_src
.clkr
,
3294 [GSBI11_QUP_CLK
] = &gsbi11_qup_clk
.clkr
,
3295 [GSBI12_QUP_SRC
] = &gsbi12_qup_src
.clkr
,
3296 [GSBI12_QUP_CLK
] = &gsbi12_qup_clk
.clkr
,
3297 [GP0_SRC
] = &gp0_src
.clkr
,
3298 [GP0_CLK
] = &gp0_clk
.clkr
,
3299 [GP1_SRC
] = &gp1_src
.clkr
,
3300 [GP1_CLK
] = &gp1_clk
.clkr
,
3301 [GP2_SRC
] = &gp2_src
.clkr
,
3302 [GP2_CLK
] = &gp2_clk
.clkr
,
3303 [PMEM_A_CLK
] = &pmem_clk
.clkr
,
3304 [PRNG_SRC
] = &prng_src
.clkr
,
3305 [PRNG_CLK
] = &prng_clk
.clkr
,
3306 [SDC1_SRC
] = &sdc1_src
.clkr
,
3307 [SDC1_CLK
] = &sdc1_clk
.clkr
,
3308 [SDC2_SRC
] = &sdc2_src
.clkr
,
3309 [SDC2_CLK
] = &sdc2_clk
.clkr
,
3310 [SDC3_SRC
] = &sdc3_src
.clkr
,
3311 [SDC3_CLK
] = &sdc3_clk
.clkr
,
3312 [SDC4_SRC
] = &sdc4_src
.clkr
,
3313 [SDC4_CLK
] = &sdc4_clk
.clkr
,
3314 [SDC5_SRC
] = &sdc5_src
.clkr
,
3315 [SDC5_CLK
] = &sdc5_clk
.clkr
,
3316 [TSIF_REF_SRC
] = &tsif_ref_src
.clkr
,
3317 [TSIF_REF_CLK
] = &tsif_ref_clk
.clkr
,
3318 [USB_HS1_XCVR_SRC
] = &usb_hs1_xcvr_src
.clkr
,
3319 [USB_HS1_XCVR_CLK
] = &usb_hs1_xcvr_clk
.clkr
,
3320 [USB_HSIC_XCVR_FS_SRC
] = &usb_hsic_xcvr_fs_src
.clkr
,
3321 [USB_HSIC_XCVR_FS_CLK
] = &usb_hsic_xcvr_fs_clk
.clkr
,
3322 [USB_HSIC_SYSTEM_CLK
] = &usb_hsic_system_clk
.clkr
,
3323 [USB_HSIC_HSIC_CLK
] = &usb_hsic_hsic_clk
.clkr
,
3324 [USB_HSIC_HSIO_CAL_CLK
] = &usb_hsic_hsio_cal_clk
.clkr
,
3325 [USB_FS1_XCVR_FS_SRC
] = &usb_fs1_xcvr_fs_src
.clkr
,
3326 [USB_FS1_XCVR_FS_CLK
] = &usb_fs1_xcvr_fs_clk
.clkr
,
3327 [USB_FS1_SYSTEM_CLK
] = &usb_fs1_system_clk
.clkr
,
3328 [USB_FS2_XCVR_FS_SRC
] = &usb_fs2_xcvr_fs_src
.clkr
,
3329 [USB_FS2_XCVR_FS_CLK
] = &usb_fs2_xcvr_fs_clk
.clkr
,
3330 [USB_FS2_SYSTEM_CLK
] = &usb_fs2_system_clk
.clkr
,
3331 [CE1_CORE_CLK
] = &ce1_core_clk
.clkr
,
3332 [CE1_H_CLK
] = &ce1_h_clk
.clkr
,
3333 [DMA_BAM_H_CLK
] = &dma_bam_h_clk
.clkr
,
3334 [GSBI1_H_CLK
] = &gsbi1_h_clk
.clkr
,
3335 [GSBI2_H_CLK
] = &gsbi2_h_clk
.clkr
,
3336 [GSBI3_H_CLK
] = &gsbi3_h_clk
.clkr
,
3337 [GSBI4_H_CLK
] = &gsbi4_h_clk
.clkr
,
3338 [GSBI5_H_CLK
] = &gsbi5_h_clk
.clkr
,
3339 [GSBI6_H_CLK
] = &gsbi6_h_clk
.clkr
,
3340 [GSBI7_H_CLK
] = &gsbi7_h_clk
.clkr
,
3341 [GSBI8_H_CLK
] = &gsbi8_h_clk
.clkr
,
3342 [GSBI9_H_CLK
] = &gsbi9_h_clk
.clkr
,
3343 [GSBI10_H_CLK
] = &gsbi10_h_clk
.clkr
,
3344 [GSBI11_H_CLK
] = &gsbi11_h_clk
.clkr
,
3345 [GSBI12_H_CLK
] = &gsbi12_h_clk
.clkr
,
3346 [TSIF_H_CLK
] = &tsif_h_clk
.clkr
,
3347 [USB_FS1_H_CLK
] = &usb_fs1_h_clk
.clkr
,
3348 [USB_FS2_H_CLK
] = &usb_fs2_h_clk
.clkr
,
3349 [USB_HS1_H_CLK
] = &usb_hs1_h_clk
.clkr
,
3350 [USB_HSIC_H_CLK
] = &usb_hsic_h_clk
.clkr
,
3351 [SDC1_H_CLK
] = &sdc1_h_clk
.clkr
,
3352 [SDC2_H_CLK
] = &sdc2_h_clk
.clkr
,
3353 [SDC3_H_CLK
] = &sdc3_h_clk
.clkr
,
3354 [SDC4_H_CLK
] = &sdc4_h_clk
.clkr
,
3355 [SDC5_H_CLK
] = &sdc5_h_clk
.clkr
,
3356 [ADM0_CLK
] = &adm0_clk
.clkr
,
3357 [ADM0_PBUS_CLK
] = &adm0_pbus_clk
.clkr
,
3358 [PMIC_ARB0_H_CLK
] = &pmic_arb0_h_clk
.clkr
,
3359 [PMIC_ARB1_H_CLK
] = &pmic_arb1_h_clk
.clkr
,
3360 [PMIC_SSBI2_CLK
] = &pmic_ssbi2_clk
.clkr
,
3361 [RPM_MSG_RAM_H_CLK
] = &rpm_msg_ram_h_clk
.clkr
,
3362 [PLL9
] = &hfpll0
.clkr
,
3363 [PLL10
] = &hfpll1
.clkr
,
3364 [PLL12
] = &hfpll_l2
.clkr
,
3367 static const struct qcom_reset_map gcc_msm8960_resets
[] = {
3368 [SFAB_MSS_Q6_SW_RESET
] = { 0x2040, 7 },
3369 [SFAB_MSS_Q6_FW_RESET
] = { 0x2044, 7 },
3370 [QDSS_STM_RESET
] = { 0x2060, 6 },
3371 [AFAB_SMPSS_S_RESET
] = { 0x20b8, 2 },
3372 [AFAB_SMPSS_M1_RESET
] = { 0x20b8, 1 },
3373 [AFAB_SMPSS_M0_RESET
] = { 0x20b8 },
3374 [AFAB_EBI1_CH0_RESET
] = { 0x20c0, 7 },
3375 [AFAB_EBI1_CH1_RESET
] = { 0x20c4, 7},
3376 [SFAB_ADM0_M0_RESET
] = { 0x21e0, 7 },
3377 [SFAB_ADM0_M1_RESET
] = { 0x21e4, 7 },
3378 [SFAB_ADM0_M2_RESET
] = { 0x21e8, 7 },
3379 [ADM0_C2_RESET
] = { 0x220c, 4},
3380 [ADM0_C1_RESET
] = { 0x220c, 3},
3381 [ADM0_C0_RESET
] = { 0x220c, 2},
3382 [ADM0_PBUS_RESET
] = { 0x220c, 1 },
3383 [ADM0_RESET
] = { 0x220c },
3384 [QDSS_CLKS_SW_RESET
] = { 0x2260, 5 },
3385 [QDSS_POR_RESET
] = { 0x2260, 4 },
3386 [QDSS_TSCTR_RESET
] = { 0x2260, 3 },
3387 [QDSS_HRESET_RESET
] = { 0x2260, 2 },
3388 [QDSS_AXI_RESET
] = { 0x2260, 1 },
3389 [QDSS_DBG_RESET
] = { 0x2260 },
3390 [PCIE_A_RESET
] = { 0x22c0, 7 },
3391 [PCIE_AUX_RESET
] = { 0x22c8, 7 },
3392 [PCIE_H_RESET
] = { 0x22d0, 7 },
3393 [SFAB_PCIE_M_RESET
] = { 0x22d4, 1 },
3394 [SFAB_PCIE_S_RESET
] = { 0x22d4 },
3395 [SFAB_MSS_M_RESET
] = { 0x2340, 7 },
3396 [SFAB_USB3_M_RESET
] = { 0x2360, 7 },
3397 [SFAB_RIVA_M_RESET
] = { 0x2380, 7 },
3398 [SFAB_LPASS_RESET
] = { 0x23a0, 7 },
3399 [SFAB_AFAB_M_RESET
] = { 0x23e0, 7 },
3400 [AFAB_SFAB_M0_RESET
] = { 0x2420, 7 },
3401 [AFAB_SFAB_M1_RESET
] = { 0x2424, 7 },
3402 [SFAB_SATA_S_RESET
] = { 0x2480, 7 },
3403 [SFAB_DFAB_M_RESET
] = { 0x2500, 7 },
3404 [DFAB_SFAB_M_RESET
] = { 0x2520, 7 },
3405 [DFAB_SWAY0_RESET
] = { 0x2540, 7 },
3406 [DFAB_SWAY1_RESET
] = { 0x2544, 7 },
3407 [DFAB_ARB0_RESET
] = { 0x2560, 7 },
3408 [DFAB_ARB1_RESET
] = { 0x2564, 7 },
3409 [PPSS_PROC_RESET
] = { 0x2594, 1 },
3410 [PPSS_RESET
] = { 0x2594},
3411 [DMA_BAM_RESET
] = { 0x25c0, 7 },
3412 [SPS_TIC_H_RESET
] = { 0x2600, 7 },
3413 [SLIMBUS_H_RESET
] = { 0x2620, 7 },
3414 [SFAB_CFPB_M_RESET
] = { 0x2680, 7 },
3415 [SFAB_CFPB_S_RESET
] = { 0x26c0, 7 },
3416 [TSIF_H_RESET
] = { 0x2700, 7 },
3417 [CE1_H_RESET
] = { 0x2720, 7 },
3418 [CE1_CORE_RESET
] = { 0x2724, 7 },
3419 [CE1_SLEEP_RESET
] = { 0x2728, 7 },
3420 [CE2_H_RESET
] = { 0x2740, 7 },
3421 [CE2_CORE_RESET
] = { 0x2744, 7 },
3422 [SFAB_SFPB_M_RESET
] = { 0x2780, 7 },
3423 [SFAB_SFPB_S_RESET
] = { 0x27a0, 7 },
3424 [RPM_PROC_RESET
] = { 0x27c0, 7 },
3425 [PMIC_SSBI2_RESET
] = { 0x280c, 12 },
3426 [SDC1_RESET
] = { 0x2830 },
3427 [SDC2_RESET
] = { 0x2850 },
3428 [SDC3_RESET
] = { 0x2870 },
3429 [SDC4_RESET
] = { 0x2890 },
3430 [SDC5_RESET
] = { 0x28b0 },
3431 [DFAB_A2_RESET
] = { 0x28c0, 7 },
3432 [USB_HS1_RESET
] = { 0x2910 },
3433 [USB_HSIC_RESET
] = { 0x2934 },
3434 [USB_FS1_XCVR_RESET
] = { 0x2974, 1 },
3435 [USB_FS1_RESET
] = { 0x2974 },
3436 [USB_FS2_XCVR_RESET
] = { 0x2994, 1 },
3437 [USB_FS2_RESET
] = { 0x2994 },
3438 [GSBI1_RESET
] = { 0x29dc },
3439 [GSBI2_RESET
] = { 0x29fc },
3440 [GSBI3_RESET
] = { 0x2a1c },
3441 [GSBI4_RESET
] = { 0x2a3c },
3442 [GSBI5_RESET
] = { 0x2a5c },
3443 [GSBI6_RESET
] = { 0x2a7c },
3444 [GSBI7_RESET
] = { 0x2a9c },
3445 [GSBI8_RESET
] = { 0x2abc },
3446 [GSBI9_RESET
] = { 0x2adc },
3447 [GSBI10_RESET
] = { 0x2afc },
3448 [GSBI11_RESET
] = { 0x2b1c },
3449 [GSBI12_RESET
] = { 0x2b3c },
3450 [SPDM_RESET
] = { 0x2b6c },
3451 [TLMM_H_RESET
] = { 0x2ba0, 7 },
3452 [SFAB_MSS_S_RESET
] = { 0x2c00, 7 },
3453 [MSS_SLP_RESET
] = { 0x2c60, 7 },
3454 [MSS_Q6SW_JTAG_RESET
] = { 0x2c68, 7 },
3455 [MSS_Q6FW_JTAG_RESET
] = { 0x2c6c, 7 },
3456 [MSS_RESET
] = { 0x2c64 },
3457 [SATA_H_RESET
] = { 0x2c80, 7 },
3458 [SATA_RXOOB_RESE
] = { 0x2c8c, 7 },
3459 [SATA_PMALIVE_RESET
] = { 0x2c90, 7 },
3460 [SATA_SFAB_M_RESET
] = { 0x2c98, 7 },
3461 [TSSC_RESET
] = { 0x2ca0, 7 },
3462 [PDM_RESET
] = { 0x2cc0, 12 },
3463 [MPM_H_RESET
] = { 0x2da0, 7 },
3464 [MPM_RESET
] = { 0x2da4 },
3465 [SFAB_SMPSS_S_RESET
] = { 0x2e00, 7 },
3466 [PRNG_RESET
] = { 0x2e80, 12 },
3467 [RIVA_RESET
] = { 0x35e0 },
3470 static struct clk_regmap
*gcc_apq8064_clks
[] = {
3471 [PLL3
] = &pll3
.clkr
,
3472 [PLL4_VOTE
] = &pll4_vote
,
3473 [PLL8
] = &pll8
.clkr
,
3474 [PLL8_VOTE
] = &pll8_vote
,
3475 [PLL14
] = &pll14
.clkr
,
3476 [PLL14_VOTE
] = &pll14_vote
,
3477 [GSBI1_UART_SRC
] = &gsbi1_uart_src
.clkr
,
3478 [GSBI1_UART_CLK
] = &gsbi1_uart_clk
.clkr
,
3479 [GSBI2_UART_SRC
] = &gsbi2_uart_src
.clkr
,
3480 [GSBI2_UART_CLK
] = &gsbi2_uart_clk
.clkr
,
3481 [GSBI3_UART_SRC
] = &gsbi3_uart_src
.clkr
,
3482 [GSBI3_UART_CLK
] = &gsbi3_uart_clk
.clkr
,
3483 [GSBI4_UART_SRC
] = &gsbi4_uart_src
.clkr
,
3484 [GSBI4_UART_CLK
] = &gsbi4_uart_clk
.clkr
,
3485 [GSBI5_UART_SRC
] = &gsbi5_uart_src
.clkr
,
3486 [GSBI5_UART_CLK
] = &gsbi5_uart_clk
.clkr
,
3487 [GSBI6_UART_SRC
] = &gsbi6_uart_src
.clkr
,
3488 [GSBI6_UART_CLK
] = &gsbi6_uart_clk
.clkr
,
3489 [GSBI7_UART_SRC
] = &gsbi7_uart_src
.clkr
,
3490 [GSBI7_UART_CLK
] = &gsbi7_uart_clk
.clkr
,
3491 [GSBI1_QUP_SRC
] = &gsbi1_qup_src
.clkr
,
3492 [GSBI1_QUP_CLK
] = &gsbi1_qup_clk
.clkr
,
3493 [GSBI2_QUP_SRC
] = &gsbi2_qup_src
.clkr
,
3494 [GSBI2_QUP_CLK
] = &gsbi2_qup_clk
.clkr
,
3495 [GSBI3_QUP_SRC
] = &gsbi3_qup_src
.clkr
,
3496 [GSBI3_QUP_CLK
] = &gsbi3_qup_clk
.clkr
,
3497 [GSBI4_QUP_SRC
] = &gsbi4_qup_src
.clkr
,
3498 [GSBI4_QUP_CLK
] = &gsbi4_qup_clk
.clkr
,
3499 [GSBI5_QUP_SRC
] = &gsbi5_qup_src
.clkr
,
3500 [GSBI5_QUP_CLK
] = &gsbi5_qup_clk
.clkr
,
3501 [GSBI6_QUP_SRC
] = &gsbi6_qup_src
.clkr
,
3502 [GSBI6_QUP_CLK
] = &gsbi6_qup_clk
.clkr
,
3503 [GSBI7_QUP_SRC
] = &gsbi7_qup_src
.clkr
,
3504 [GSBI7_QUP_CLK
] = &gsbi7_qup_clk
.clkr
,
3505 [GP0_SRC
] = &gp0_src
.clkr
,
3506 [GP0_CLK
] = &gp0_clk
.clkr
,
3507 [GP1_SRC
] = &gp1_src
.clkr
,
3508 [GP1_CLK
] = &gp1_clk
.clkr
,
3509 [GP2_SRC
] = &gp2_src
.clkr
,
3510 [GP2_CLK
] = &gp2_clk
.clkr
,
3511 [PMEM_A_CLK
] = &pmem_clk
.clkr
,
3512 [PRNG_SRC
] = &prng_src
.clkr
,
3513 [PRNG_CLK
] = &prng_clk
.clkr
,
3514 [SDC1_SRC
] = &sdc1_src
.clkr
,
3515 [SDC1_CLK
] = &sdc1_clk
.clkr
,
3516 [SDC2_SRC
] = &sdc2_src
.clkr
,
3517 [SDC2_CLK
] = &sdc2_clk
.clkr
,
3518 [SDC3_SRC
] = &sdc3_src
.clkr
,
3519 [SDC3_CLK
] = &sdc3_clk
.clkr
,
3520 [SDC4_SRC
] = &sdc4_src
.clkr
,
3521 [SDC4_CLK
] = &sdc4_clk
.clkr
,
3522 [TSIF_REF_SRC
] = &tsif_ref_src
.clkr
,
3523 [TSIF_REF_CLK
] = &tsif_ref_clk
.clkr
,
3524 [USB_HS1_XCVR_SRC
] = &usb_hs1_xcvr_src
.clkr
,
3525 [USB_HS1_XCVR_CLK
] = &usb_hs1_xcvr_clk
.clkr
,
3526 [USB_HS3_XCVR_SRC
] = &usb_hs3_xcvr_src
.clkr
,
3527 [USB_HS3_XCVR_CLK
] = &usb_hs3_xcvr_clk
.clkr
,
3528 [USB_HS4_XCVR_SRC
] = &usb_hs4_xcvr_src
.clkr
,
3529 [USB_HS4_XCVR_CLK
] = &usb_hs4_xcvr_clk
.clkr
,
3530 [USB_HSIC_XCVR_FS_SRC
] = &usb_hsic_xcvr_fs_src
.clkr
,
3531 [USB_HSIC_XCVR_FS_CLK
] = &usb_hsic_xcvr_fs_clk
.clkr
,
3532 [USB_HSIC_SYSTEM_CLK
] = &usb_hsic_system_clk
.clkr
,
3533 [USB_HSIC_HSIC_CLK
] = &usb_hsic_hsic_clk
.clkr
,
3534 [USB_HSIC_HSIO_CAL_CLK
] = &usb_hsic_hsio_cal_clk
.clkr
,
3535 [USB_FS1_XCVR_FS_SRC
] = &usb_fs1_xcvr_fs_src
.clkr
,
3536 [USB_FS1_XCVR_FS_CLK
] = &usb_fs1_xcvr_fs_clk
.clkr
,
3537 [USB_FS1_SYSTEM_CLK
] = &usb_fs1_system_clk
.clkr
,
3538 [SATA_H_CLK
] = &sata_h_clk
.clkr
,
3539 [SATA_CLK_SRC
] = &sata_clk_src
.clkr
,
3540 [SATA_RXOOB_CLK
] = &sata_rxoob_clk
.clkr
,
3541 [SATA_PMALIVE_CLK
] = &sata_pmalive_clk
.clkr
,
3542 [SATA_PHY_REF_CLK
] = &sata_phy_ref_clk
.clkr
,
3543 [SATA_PHY_CFG_CLK
] = &sata_phy_cfg_clk
.clkr
,
3544 [SATA_A_CLK
] = &sata_a_clk
.clkr
,
3545 [SFAB_SATA_S_H_CLK
] = &sfab_sata_s_h_clk
.clkr
,
3546 [CE3_SRC
] = &ce3_src
.clkr
,
3547 [CE3_CORE_CLK
] = &ce3_core_clk
.clkr
,
3548 [CE3_H_CLK
] = &ce3_h_clk
.clkr
,
3549 [DMA_BAM_H_CLK
] = &dma_bam_h_clk
.clkr
,
3550 [GSBI1_H_CLK
] = &gsbi1_h_clk
.clkr
,
3551 [GSBI2_H_CLK
] = &gsbi2_h_clk
.clkr
,
3552 [GSBI3_H_CLK
] = &gsbi3_h_clk
.clkr
,
3553 [GSBI4_H_CLK
] = &gsbi4_h_clk
.clkr
,
3554 [GSBI5_H_CLK
] = &gsbi5_h_clk
.clkr
,
3555 [GSBI6_H_CLK
] = &gsbi6_h_clk
.clkr
,
3556 [GSBI7_H_CLK
] = &gsbi7_h_clk
.clkr
,
3557 [TSIF_H_CLK
] = &tsif_h_clk
.clkr
,
3558 [USB_FS1_H_CLK
] = &usb_fs1_h_clk
.clkr
,
3559 [USB_HS1_H_CLK
] = &usb_hs1_h_clk
.clkr
,
3560 [USB_HSIC_H_CLK
] = &usb_hsic_h_clk
.clkr
,
3561 [USB_HS3_H_CLK
] = &usb_hs3_h_clk
.clkr
,
3562 [USB_HS4_H_CLK
] = &usb_hs4_h_clk
.clkr
,
3563 [SDC1_H_CLK
] = &sdc1_h_clk
.clkr
,
3564 [SDC2_H_CLK
] = &sdc2_h_clk
.clkr
,
3565 [SDC3_H_CLK
] = &sdc3_h_clk
.clkr
,
3566 [SDC4_H_CLK
] = &sdc4_h_clk
.clkr
,
3567 [ADM0_CLK
] = &adm0_clk
.clkr
,
3568 [ADM0_PBUS_CLK
] = &adm0_pbus_clk
.clkr
,
3569 [PCIE_A_CLK
] = &pcie_a_clk
.clkr
,
3570 [PCIE_PHY_REF_CLK
] = &pcie_phy_ref_clk
.clkr
,
3571 [PCIE_H_CLK
] = &pcie_h_clk
.clkr
,
3572 [PMIC_ARB0_H_CLK
] = &pmic_arb0_h_clk
.clkr
,
3573 [PMIC_ARB1_H_CLK
] = &pmic_arb1_h_clk
.clkr
,
3574 [PMIC_SSBI2_CLK
] = &pmic_ssbi2_clk
.clkr
,
3575 [RPM_MSG_RAM_H_CLK
] = &rpm_msg_ram_h_clk
.clkr
,
3576 [PLL9
] = &hfpll0
.clkr
,
3577 [PLL10
] = &hfpll1
.clkr
,
3578 [PLL12
] = &hfpll_l2
.clkr
,
3579 [PLL16
] = &hfpll2
.clkr
,
3580 [PLL17
] = &hfpll3
.clkr
,
3583 static const struct qcom_reset_map gcc_apq8064_resets
[] = {
3584 [QDSS_STM_RESET
] = { 0x2060, 6 },
3585 [AFAB_SMPSS_S_RESET
] = { 0x20b8, 2 },
3586 [AFAB_SMPSS_M1_RESET
] = { 0x20b8, 1 },
3587 [AFAB_SMPSS_M0_RESET
] = { 0x20b8 },
3588 [AFAB_EBI1_CH0_RESET
] = { 0x20c0, 7 },
3589 [AFAB_EBI1_CH1_RESET
] = { 0x20c4, 7},
3590 [SFAB_ADM0_M0_RESET
] = { 0x21e0, 7 },
3591 [SFAB_ADM0_M1_RESET
] = { 0x21e4, 7 },
3592 [SFAB_ADM0_M2_RESET
] = { 0x21e8, 7 },
3593 [ADM0_C2_RESET
] = { 0x220c, 4},
3594 [ADM0_C1_RESET
] = { 0x220c, 3},
3595 [ADM0_C0_RESET
] = { 0x220c, 2},
3596 [ADM0_PBUS_RESET
] = { 0x220c, 1 },
3597 [ADM0_RESET
] = { 0x220c },
3598 [QDSS_CLKS_SW_RESET
] = { 0x2260, 5 },
3599 [QDSS_POR_RESET
] = { 0x2260, 4 },
3600 [QDSS_TSCTR_RESET
] = { 0x2260, 3 },
3601 [QDSS_HRESET_RESET
] = { 0x2260, 2 },
3602 [QDSS_AXI_RESET
] = { 0x2260, 1 },
3603 [QDSS_DBG_RESET
] = { 0x2260 },
3604 [SFAB_PCIE_M_RESET
] = { 0x22d8, 1 },
3605 [SFAB_PCIE_S_RESET
] = { 0x22d8 },
3606 [PCIE_EXT_PCI_RESET
] = { 0x22dc, 6 },
3607 [PCIE_PHY_RESET
] = { 0x22dc, 5 },
3608 [PCIE_PCI_RESET
] = { 0x22dc, 4 },
3609 [PCIE_POR_RESET
] = { 0x22dc, 3 },
3610 [PCIE_HCLK_RESET
] = { 0x22dc, 2 },
3611 [PCIE_ACLK_RESET
] = { 0x22dc },
3612 [SFAB_USB3_M_RESET
] = { 0x2360, 7 },
3613 [SFAB_RIVA_M_RESET
] = { 0x2380, 7 },
3614 [SFAB_LPASS_RESET
] = { 0x23a0, 7 },
3615 [SFAB_AFAB_M_RESET
] = { 0x23e0, 7 },
3616 [AFAB_SFAB_M0_RESET
] = { 0x2420, 7 },
3617 [AFAB_SFAB_M1_RESET
] = { 0x2424, 7 },
3618 [SFAB_SATA_S_RESET
] = { 0x2480, 7 },
3619 [SFAB_DFAB_M_RESET
] = { 0x2500, 7 },
3620 [DFAB_SFAB_M_RESET
] = { 0x2520, 7 },
3621 [DFAB_SWAY0_RESET
] = { 0x2540, 7 },
3622 [DFAB_SWAY1_RESET
] = { 0x2544, 7 },
3623 [DFAB_ARB0_RESET
] = { 0x2560, 7 },
3624 [DFAB_ARB1_RESET
] = { 0x2564, 7 },
3625 [PPSS_PROC_RESET
] = { 0x2594, 1 },
3626 [PPSS_RESET
] = { 0x2594},
3627 [DMA_BAM_RESET
] = { 0x25c0, 7 },
3628 [SPS_TIC_H_RESET
] = { 0x2600, 7 },
3629 [SFAB_CFPB_M_RESET
] = { 0x2680, 7 },
3630 [SFAB_CFPB_S_RESET
] = { 0x26c0, 7 },
3631 [TSIF_H_RESET
] = { 0x2700, 7 },
3632 [CE1_H_RESET
] = { 0x2720, 7 },
3633 [CE1_CORE_RESET
] = { 0x2724, 7 },
3634 [CE1_SLEEP_RESET
] = { 0x2728, 7 },
3635 [CE2_H_RESET
] = { 0x2740, 7 },
3636 [CE2_CORE_RESET
] = { 0x2744, 7 },
3637 [SFAB_SFPB_M_RESET
] = { 0x2780, 7 },
3638 [SFAB_SFPB_S_RESET
] = { 0x27a0, 7 },
3639 [RPM_PROC_RESET
] = { 0x27c0, 7 },
3640 [PMIC_SSBI2_RESET
] = { 0x280c, 12 },
3641 [SDC1_RESET
] = { 0x2830 },
3642 [SDC2_RESET
] = { 0x2850 },
3643 [SDC3_RESET
] = { 0x2870 },
3644 [SDC4_RESET
] = { 0x2890 },
3645 [USB_HS1_RESET
] = { 0x2910 },
3646 [USB_HSIC_RESET
] = { 0x2934 },
3647 [USB_FS1_XCVR_RESET
] = { 0x2974, 1 },
3648 [USB_FS1_RESET
] = { 0x2974 },
3649 [GSBI1_RESET
] = { 0x29dc },
3650 [GSBI2_RESET
] = { 0x29fc },
3651 [GSBI3_RESET
] = { 0x2a1c },
3652 [GSBI4_RESET
] = { 0x2a3c },
3653 [GSBI5_RESET
] = { 0x2a5c },
3654 [GSBI6_RESET
] = { 0x2a7c },
3655 [GSBI7_RESET
] = { 0x2a9c },
3656 [SPDM_RESET
] = { 0x2b6c },
3657 [TLMM_H_RESET
] = { 0x2ba0, 7 },
3658 [SATA_SFAB_M_RESET
] = { 0x2c18 },
3659 [SATA_RESET
] = { 0x2c1c },
3660 [GSS_SLP_RESET
] = { 0x2c60, 7 },
3661 [GSS_RESET
] = { 0x2c64 },
3662 [TSSC_RESET
] = { 0x2ca0, 7 },
3663 [PDM_RESET
] = { 0x2cc0, 12 },
3664 [MPM_H_RESET
] = { 0x2da0, 7 },
3665 [MPM_RESET
] = { 0x2da4 },
3666 [SFAB_SMPSS_S_RESET
] = { 0x2e00, 7 },
3667 [PRNG_RESET
] = { 0x2e80, 12 },
3668 [RIVA_RESET
] = { 0x35e0 },
3669 [CE3_H_RESET
] = { 0x36c4, 7 },
3670 [SFAB_CE3_M_RESET
] = { 0x36c8, 1 },
3671 [SFAB_CE3_S_RESET
] = { 0x36c8 },
3672 [CE3_RESET
] = { 0x36cc, 7 },
3673 [CE3_SLEEP_RESET
] = { 0x36d0, 7 },
3674 [USB_HS3_RESET
] = { 0x3710 },
3675 [USB_HS4_RESET
] = { 0x3730 },
3678 static const struct regmap_config gcc_msm8960_regmap_config
= {
3682 .max_register
= 0x3660,
3686 static const struct regmap_config gcc_apq8064_regmap_config
= {
3690 .max_register
= 0x3880,
3694 static const struct qcom_cc_desc gcc_msm8960_desc
= {
3695 .config
= &gcc_msm8960_regmap_config
,
3696 .clks
= gcc_msm8960_clks
,
3697 .num_clks
= ARRAY_SIZE(gcc_msm8960_clks
),
3698 .resets
= gcc_msm8960_resets
,
3699 .num_resets
= ARRAY_SIZE(gcc_msm8960_resets
),
3702 static const struct qcom_cc_desc gcc_apq8064_desc
= {
3703 .config
= &gcc_apq8064_regmap_config
,
3704 .clks
= gcc_apq8064_clks
,
3705 .num_clks
= ARRAY_SIZE(gcc_apq8064_clks
),
3706 .resets
= gcc_apq8064_resets
,
3707 .num_resets
= ARRAY_SIZE(gcc_apq8064_resets
),
3710 static const struct of_device_id gcc_msm8960_match_table
[] = {
3711 { .compatible
= "qcom,gcc-msm8960", .data
= &gcc_msm8960_desc
},
3712 { .compatible
= "qcom,gcc-apq8064", .data
= &gcc_apq8064_desc
},
3715 MODULE_DEVICE_TABLE(of
, gcc_msm8960_match_table
);
3717 static int gcc_msm8960_probe(struct platform_device
*pdev
)
3719 struct device
*dev
= &pdev
->dev
;
3720 struct platform_device
*tsens
;
3721 const struct qcom_cc_desc
*desc
= device_get_match_data(dev
);
3724 ret
= qcom_cc_register_board_clk(dev
, "cxo_board", "cxo", 19200000);
3728 ret
= qcom_cc_register_board_clk(dev
, "pxo_board", "pxo", 27000000);
3732 ret
= qcom_cc_probe(pdev
, desc
);
3736 if (desc
== &gcc_apq8064_desc
) {
3737 hfpll1
.d
= &hfpll1_8064_data
;
3738 hfpll_l2
.d
= &hfpll_l2_8064_data
;
3741 if (of_get_available_child_count(pdev
->dev
.of_node
) != 0)
3742 return devm_of_platform_populate(&pdev
->dev
);
3744 tsens
= platform_device_register_data(&pdev
->dev
, "qcom-tsens", -1,
3747 return PTR_ERR(tsens
);
3749 platform_set_drvdata(pdev
, tsens
);
3754 static void gcc_msm8960_remove(struct platform_device
*pdev
)
3756 struct platform_device
*tsens
= platform_get_drvdata(pdev
);
3759 platform_device_unregister(tsens
);
3762 static struct platform_driver gcc_msm8960_driver
= {
3763 .probe
= gcc_msm8960_probe
,
3764 .remove
= gcc_msm8960_remove
,
3766 .name
= "gcc-msm8960",
3767 .of_match_table
= gcc_msm8960_match_table
,
3771 static int __init
gcc_msm8960_init(void)
3773 return platform_driver_register(&gcc_msm8960_driver
);
3775 core_initcall(gcc_msm8960_init
);
3777 static void __exit
gcc_msm8960_exit(void)
3779 platform_driver_unregister(&gcc_msm8960_driver
);
3781 module_exit(gcc_msm8960_exit
);
3783 MODULE_DESCRIPTION("QCOM GCC MSM8960 Driver");
3784 MODULE_LICENSE("GPL v2");
3785 MODULE_ALIAS("platform:gcc-msm8960");