xref: /linux/drivers/clk/spacemit/ccu-k3.c (revision e371a77255b837f5d64c9d2520f87e41ea5350b9)
1*e371a772SYixun Lan // SPDX-License-Identifier: GPL-2.0-only
2*e371a772SYixun Lan /*
3*e371a772SYixun Lan  * Copyright (c) 2025 SpacemiT Technology Co. Ltd
4*e371a772SYixun Lan  */
5*e371a772SYixun Lan 
6*e371a772SYixun Lan #include <linux/array_size.h>
7*e371a772SYixun Lan #include <linux/clk-provider.h>
8*e371a772SYixun Lan #include <linux/module.h>
9*e371a772SYixun Lan #include <soc/spacemit/k3-syscon.h>
10*e371a772SYixun Lan 
11*e371a772SYixun Lan #include "ccu_common.h"
12*e371a772SYixun Lan #include "ccu_pll.h"
13*e371a772SYixun Lan #include "ccu_mix.h"
14*e371a772SYixun Lan #include "ccu_ddn.h"
15*e371a772SYixun Lan 
16*e371a772SYixun Lan #include <dt-bindings/clock/spacemit,k3-clocks.h>
17*e371a772SYixun Lan 
18*e371a772SYixun Lan /* APBS clocks start, APBS region contains and only contains all PLL clocks */
19*e371a772SYixun Lan 
20*e371a772SYixun Lan /*
21*e371a772SYixun Lan  * PLL{1,2} must run at fixed frequencies to provide clocks in correct rates for
22*e371a772SYixun Lan  * peripherals.
23*e371a772SYixun Lan  */
24*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll1_rate_tbl[] = {
25*e371a772SYixun Lan 	CCU_PLLA_RATE(2457600000UL, 0x0b330ccc, 0x0000cd00, 0xa0558989),
26*e371a772SYixun Lan };
27*e371a772SYixun Lan 
28*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll2_rate_tbl[] = {
29*e371a772SYixun Lan 	CCU_PLLA_RATE(3000000000UL, 0x0b3e2000, 0x00000000, 0xa0558c8c),
30*e371a772SYixun Lan };
31*e371a772SYixun Lan 
32*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll3_rate_tbl[] = {
33*e371a772SYixun Lan 	CCU_PLLA_RATE(2200000000UL, 0x0b2d3555, 0x00005500, 0xa0558787),
34*e371a772SYixun Lan };
35*e371a772SYixun Lan 
36*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll4_rate_tbl[] = {
37*e371a772SYixun Lan 	CCU_PLLA_RATE(2200000000UL, 0x0b2d3555, 0x00005500, 0xa0558787),
38*e371a772SYixun Lan };
39*e371a772SYixun Lan 
40*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll5_rate_tbl[] = {
41*e371a772SYixun Lan 	CCU_PLLA_RATE(2000000000UL, 0x0b292aaa, 0x0000ab00, 0xa0558686),
42*e371a772SYixun Lan };
43*e371a772SYixun Lan 
44*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll6_rate_tbl[] = {
45*e371a772SYixun Lan 	CCU_PLLA_RATE(3200000000UL, 0x0b422aaa, 0x0000ab00, 0xa0558e8e),
46*e371a772SYixun Lan };
47*e371a772SYixun Lan 
48*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll7_rate_tbl[] = {
49*e371a772SYixun Lan 	CCU_PLLA_RATE(2800000000UL, 0x0b3a1555, 0x00005500, 0xa0558b8b),
50*e371a772SYixun Lan };
51*e371a772SYixun Lan 
52*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll8_rate_tbl[] = {
53*e371a772SYixun Lan 	CCU_PLLA_RATE(2000000000UL, 0x0b292aaa, 0x0000ab00, 0xa0558686),
54*e371a772SYixun Lan };
55*e371a772SYixun Lan 
56*e371a772SYixun Lan CCU_PLLA_DEFINE(pll1, pll1_rate_tbl, APBS_PLL1_SWCR1, APBS_PLL1_SWCR2, APBS_PLL1_SWCR3,
57*e371a772SYixun Lan 		MPMU_POSR, POSR_PLL1_LOCK, CLK_SET_RATE_GATE);
58*e371a772SYixun Lan CCU_PLLA_DEFINE(pll2, pll2_rate_tbl, APBS_PLL2_SWCR1, APBS_PLL2_SWCR2, APBS_PLL2_SWCR3,
59*e371a772SYixun Lan 		MPMU_POSR, POSR_PLL2_LOCK, CLK_SET_RATE_GATE);
60*e371a772SYixun Lan CCU_PLLA_DEFINE(pll3, pll3_rate_tbl, APBS_PLL3_SWCR1, APBS_PLL3_SWCR2, APBS_PLL3_SWCR3,
61*e371a772SYixun Lan 		MPMU_POSR, POSR_PLL3_LOCK, CLK_SET_RATE_GATE);
62*e371a772SYixun Lan CCU_PLLA_DEFINE(pll4, pll4_rate_tbl, APBS_PLL4_SWCR1, APBS_PLL4_SWCR2, APBS_PLL4_SWCR3,
63*e371a772SYixun Lan 		MPMU_POSR, POSR_PLL4_LOCK, CLK_SET_RATE_GATE);
64*e371a772SYixun Lan CCU_PLLA_DEFINE(pll5, pll5_rate_tbl, APBS_PLL5_SWCR1, APBS_PLL5_SWCR2, APBS_PLL5_SWCR3,
65*e371a772SYixun Lan 		MPMU_POSR, POSR_PLL5_LOCK, CLK_SET_RATE_GATE);
66*e371a772SYixun Lan CCU_PLLA_DEFINE(pll6, pll6_rate_tbl, APBS_PLL6_SWCR1, APBS_PLL6_SWCR2, APBS_PLL6_SWCR3,
67*e371a772SYixun Lan 		MPMU_POSR, POSR_PLL6_LOCK, CLK_SET_RATE_GATE);
68*e371a772SYixun Lan CCU_PLLA_DEFINE(pll7, pll7_rate_tbl, APBS_PLL7_SWCR1, APBS_PLL7_SWCR2, APBS_PLL7_SWCR3,
69*e371a772SYixun Lan 		MPMU_POSR, POSR_PLL7_LOCK, CLK_SET_RATE_GATE);
70*e371a772SYixun Lan CCU_PLLA_DEFINE(pll8, pll8_rate_tbl, APBS_PLL8_SWCR1, APBS_PLL8_SWCR2, APBS_PLL8_SWCR3,
71*e371a772SYixun Lan 		MPMU_POSR, POSR_PLL8_LOCK, CLK_SET_RATE_GATE);
72*e371a772SYixun Lan 
73*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d2, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(1), 2, 1);
74*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d3, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(2), 3, 1);
75*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d4, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(3), 4, 1);
76*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d5, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(4), 5, 1);
77*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d6, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(5), 6, 1);
78*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d7, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(6), 7, 1);
79*e371a772SYixun Lan CCU_FACTOR_GATE_FLAGS_DEFINE(pll1_d8, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(7), 8, 1,
80*e371a772SYixun Lan 			     CLK_IS_CRITICAL);
81*e371a772SYixun Lan CCU_DIV_GATE_DEFINE(pll1_dx, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, 23, 5, BIT(22), 0);
82*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d64_38p4, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(31), 64, 1);
83*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_aud_245p7, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(21), 10, 1);
84*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_aud_24p5, CCU_PARENT_HW(pll1_aud_245p7), 10, 1);
85*e371a772SYixun Lan 
86*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d1, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(0), 1, 1);
87*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d2, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(1), 2, 1);
88*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d3, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(2), 3, 1);
89*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d4, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(3), 4, 1);
90*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d5, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(4), 5, 1);
91*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d6, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(5), 6, 1);
92*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d7, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(6), 7, 1);
93*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d8, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(7), 8, 1);
94*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_66, CCU_PARENT_HW(pll2_d5), 9, 1);
95*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_33, CCU_PARENT_HW(pll2_66), 2, 1);
96*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_50, CCU_PARENT_HW(pll2_d5), 12, 1);
97*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_25, CCU_PARENT_HW(pll2_50), 2, 1);
98*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_20, CCU_PARENT_HW(pll2_d5), 30, 1);
99*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_d24_125, CCU_PARENT_HW(pll2_d3), 8, 1);
100*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_d120_25, CCU_PARENT_HW(pll2_d3), 40, 1);
101*e371a772SYixun Lan 
102*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d1, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(0), 1, 1);
103*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d2, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(1), 2, 1);
104*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d3, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(2), 3, 1);
105*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d4, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(3), 4, 1);
106*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d5, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(4), 5, 1);
107*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d6, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(5), 6, 1);
108*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d7, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(6), 7, 1);
109*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d8, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(7), 8, 1);
110*e371a772SYixun Lan 
111*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d1, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(0), 1, 1);
112*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d2, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(1), 2, 1);
113*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d3, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(2), 3, 1);
114*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d4, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(3), 4, 1);
115*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d5, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(4), 5, 1);
116*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d6, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(5), 6, 1);
117*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d7, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(6), 7, 1);
118*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d8, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(7), 8, 1);
119*e371a772SYixun Lan 
120*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d1, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(0), 1, 1);
121*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d2, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(1), 2, 1);
122*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d3, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(2), 3, 1);
123*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d4, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(3), 4, 1);
124*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d5, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(4), 5, 1);
125*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d6, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(5), 6, 1);
126*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d7, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(6), 7, 1);
127*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d8, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(7), 8, 1);
128*e371a772SYixun Lan 
129*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d1, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(0), 1, 1);
130*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d2, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(1), 2, 1);
131*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d3, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(2), 3, 1);
132*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d4, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(3), 4, 1);
133*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d5, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(4), 5, 1);
134*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d6, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(5), 6, 1);
135*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d7, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(6), 7, 1);
136*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d8, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(7), 8, 1);
137*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll6_80, CCU_PARENT_HW(pll6_d5), 8, 1);
138*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll6_40, CCU_PARENT_HW(pll6_d5), 16, 1);
139*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll6_20, CCU_PARENT_HW(pll6_d5), 32, 1);
140*e371a772SYixun Lan 
141*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d1, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(0), 1, 1);
142*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d2, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(1), 2, 1);
143*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d3, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(2), 3, 1);
144*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d4, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(3), 4, 1);
145*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d5, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(4), 5, 1);
146*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d6, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(5), 6, 1);
147*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d7, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(6), 7, 1);
148*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d8, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(7), 8, 1);
149*e371a772SYixun Lan 
150*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d1, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(0), 1, 1);
151*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d2, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(1), 2, 1);
152*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d3, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(2), 3, 1);
153*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d4, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(3), 4, 1);
154*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d5, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(4), 5, 1);
155*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d6, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(5), 6, 1);
156*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d7, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(6), 7, 1);
157*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d8, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(7), 8, 1);
158*e371a772SYixun Lan /* APBS clocks end */
159*e371a772SYixun Lan 
160*e371a772SYixun Lan /* MPMU clocks start */
161*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d8_307p2, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(13), 0);
162*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d32_76p8, CCU_PARENT_HW(pll1_d8_307p2), 4, 1);
163*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d40_61p44, CCU_PARENT_HW(pll1_d8_307p2), 5, 1);
164*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d16_153p6, CCU_PARENT_HW(pll1_d8), 2, 1);
165*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d24_102p4, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(12), 3, 1);
166*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d48_51p2, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(7), 6, 1);
167*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d48_51p2_ap, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(11), 6, 1);
168*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_m3d128_57p6, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(8), 16, 3);
169*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d96_25p6, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(4), 12, 1);
170*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d192_12p8, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(3), 24, 1);
171*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d192_12p8_wdt, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(19), 24, 1);
172*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d384_6p4, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(2), 48, 1);
173*e371a772SYixun Lan 
174*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d768_3p2, CCU_PARENT_HW(pll1_d384_6p4), 2, 1);
175*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d1536_1p6, CCU_PARENT_HW(pll1_d384_6p4), 4, 1);
176*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d3072_0p8, CCU_PARENT_HW(pll1_d384_6p4), 8, 1);
177*e371a772SYixun Lan 
178*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d6_409p6, CCU_PARENT_HW(pll1_d6), MPMU_ACGR, BIT(0), 0);
179*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d12_204p8, CCU_PARENT_HW(pll1_d6), MPMU_ACGR, BIT(5), 2, 1);
180*e371a772SYixun Lan 
181*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d5_491p52, CCU_PARENT_HW(pll1_d5), MPMU_ACGR, BIT(21), 0);
182*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d10_245p76, CCU_PARENT_HW(pll1_d5), MPMU_ACGR, BIT(18), 2, 1);
183*e371a772SYixun Lan 
184*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d4_614p4, CCU_PARENT_HW(pll1_d4), MPMU_ACGR, BIT(15), 0);
185*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d52_47p26, CCU_PARENT_HW(pll1_d4), MPMU_ACGR, BIT(10), 13, 1);
186*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d78_31p5, CCU_PARENT_HW(pll1_d4), MPMU_ACGR, BIT(6), 39, 2);
187*e371a772SYixun Lan 
188*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d3_819p2, CCU_PARENT_HW(pll1_d3), MPMU_ACGR, BIT(14), 0);
189*e371a772SYixun Lan 
190*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d2_1228p8, CCU_PARENT_HW(pll1_d2), MPMU_ACGR, BIT(16), 0);
191*e371a772SYixun Lan 
192*e371a772SYixun Lan static const struct clk_parent_data apb_parents[] = {
193*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
194*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2),
195*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
196*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d24_102p4),
197*e371a772SYixun Lan };
198*e371a772SYixun Lan CCU_MUX_DEFINE(apb_clk, apb_parents, MPMU_APBCSCR, 0, 2, 0);
199*e371a772SYixun Lan 
200*e371a772SYixun Lan CCU_GATE_DEFINE(slow_uart, CCU_PARENT_NAME(osc_32k), MPMU_ACGR, BIT(1), CLK_IGNORE_UNUSED);
201*e371a772SYixun Lan CCU_DDN_DEFINE(slow_uart1_14p74, pll1_d16_153p6, MPMU_SUCCR, 16, 13, 0, 13, 2, 0);
202*e371a772SYixun Lan CCU_DDN_DEFINE(slow_uart2_48, pll1_d4_614p4, MPMU_SUCCR_1, 16, 13, 0, 13, 2, 0);
203*e371a772SYixun Lan 
204*e371a772SYixun Lan CCU_GATE_DEFINE(wdt_clk, CCU_PARENT_HW(pll1_d96_25p6), MPMU_WDTPCR, BIT(1), 0);
205*e371a772SYixun Lan CCU_GATE_DEFINE(wdt_bus_clk, CCU_PARENT_HW(apb_clk), MPMU_WDTPCR, BIT(0), 0);
206*e371a772SYixun Lan 
207*e371a772SYixun Lan CCU_GATE_DEFINE(r_ipc_clk, CCU_PARENT_HW(apb_clk), MPMU_RIPCCR, BIT(0), 0);
208*e371a772SYixun Lan 
209*e371a772SYixun Lan CCU_FACTOR_DEFINE(i2s_153p6, CCU_PARENT_HW(pll1_d8_307p2), 2, 1);
210*e371a772SYixun Lan 
211*e371a772SYixun Lan static const struct clk_parent_data i2s_153p6_base_parents[] = {
212*e371a772SYixun Lan 	CCU_PARENT_HW(i2s_153p6),
213*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
214*e371a772SYixun Lan };
215*e371a772SYixun Lan CCU_MUX_DEFINE(i2s_153p6_base, i2s_153p6_base_parents, MPMU_FCCR, 29, 1, 0);
216*e371a772SYixun Lan 
217*e371a772SYixun Lan static const struct clk_parent_data i2s_sysclk_src_parents[] = {
218*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
219*e371a772SYixun Lan 	CCU_PARENT_HW(i2s_153p6_base),
220*e371a772SYixun Lan };
221*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s_sysclk_src, i2s_sysclk_src_parents, MPMU_ISCCR, 30, 1, BIT(31), 0);
222*e371a772SYixun Lan 
223*e371a772SYixun Lan CCU_DDN_DEFINE(i2s1_sysclk, i2s_sysclk_src, MPMU_ISCCR, 0, 15, 15, 12, 1, 0);
224*e371a772SYixun Lan 
225*e371a772SYixun Lan CCU_DIV_GATE_DEFINE(i2s_bclk, CCU_PARENT_HW(i2s1_sysclk), MPMU_ISCCR, 27, 2, BIT(29), 0);
226*e371a772SYixun Lan 
227*e371a772SYixun Lan static const struct clk_parent_data i2s_sysclk_parents[] = {
228*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
229*e371a772SYixun Lan 	CCU_PARENT_NAME(vctcxo_24m),
230*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d5),
231*e371a772SYixun Lan 	CCU_PARENT_NAME(vctcxo_24m),
232*e371a772SYixun Lan };
233*e371a772SYixun Lan CCU_MUX_DEFINE(i2s0_sysclk_sel, i2s_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 0, 2, 0);
234*e371a772SYixun Lan CCU_MUX_DEFINE(i2s2_sysclk_sel, i2s_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 4, 2, 0);
235*e371a772SYixun Lan CCU_MUX_DEFINE(i2s3_sysclk_sel, i2s_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 12, 2, 0);
236*e371a772SYixun Lan CCU_MUX_DEFINE(i2s4_sysclk_sel, i2s_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 16, 2, 0);
237*e371a772SYixun Lan CCU_MUX_DEFINE(i2s5_sysclk_sel, i2s_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 20, 2, 0);
238*e371a772SYixun Lan 
239*e371a772SYixun Lan CCU_DDN_DEFINE(i2s0_sysclk_div, i2s0_sysclk_sel, MPMU_I2S0_SYSCLK, 0, 16, 16, 16, 1, 0);
240*e371a772SYixun Lan CCU_DDN_DEFINE(i2s2_sysclk_div, i2s2_sysclk_sel, MPMU_I2S2_SYSCLK, 0, 16, 16, 16, 1, 0);
241*e371a772SYixun Lan CCU_DDN_DEFINE(i2s3_sysclk_div, i2s3_sysclk_sel, MPMU_I2S3_SYSCLK, 0, 16, 16, 16, 1, 0);
242*e371a772SYixun Lan CCU_DDN_DEFINE(i2s4_sysclk_div, i2s4_sysclk_sel, MPMU_I2S4_SYSCLK, 0, 16, 16, 16, 1, 0);
243*e371a772SYixun Lan CCU_DDN_DEFINE(i2s5_sysclk_div, i2s5_sysclk_sel, MPMU_I2S5_SYSCLK, 0, 16, 16, 16, 1, 0);
244*e371a772SYixun Lan 
245*e371a772SYixun Lan static const struct clk_parent_data i2s2_sysclk_parents[] = {
246*e371a772SYixun Lan 	CCU_PARENT_HW(i2s1_sysclk),
247*e371a772SYixun Lan 	CCU_PARENT_HW(i2s2_sysclk_div),
248*e371a772SYixun Lan };
249*e371a772SYixun Lan CCU_GATE_DEFINE(i2s0_sysclk, CCU_PARENT_HW(i2s0_sysclk_div), MPMU_I2S_SYSCLK_CTRL, BIT(2), 0);
250*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s2_sysclk, i2s2_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 8, 1, BIT(6), 0);
251*e371a772SYixun Lan CCU_GATE_DEFINE(i2s3_sysclk, CCU_PARENT_HW(i2s3_sysclk_div), MPMU_I2S_SYSCLK_CTRL, BIT(14), 0);
252*e371a772SYixun Lan CCU_GATE_DEFINE(i2s4_sysclk, CCU_PARENT_HW(i2s4_sysclk_div), MPMU_I2S_SYSCLK_CTRL, BIT(18), 0);
253*e371a772SYixun Lan CCU_GATE_DEFINE(i2s5_sysclk, CCU_PARENT_HW(i2s5_sysclk_div), MPMU_I2S_SYSCLK_CTRL, BIT(22), 0);
254*e371a772SYixun Lan /* MPMU clocks end */
255*e371a772SYixun Lan 
256*e371a772SYixun Lan /* APBC clocks start */
257*e371a772SYixun Lan static const struct clk_parent_data uart_clk_parents[] = {
258*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_m3d128_57p6),
259*e371a772SYixun Lan 	CCU_PARENT_HW(slow_uart1_14p74),
260*e371a772SYixun Lan 	CCU_PARENT_HW(slow_uart2_48),
261*e371a772SYixun Lan };
262*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart0_clk, uart_clk_parents, APBC_UART0_CLK_RST, 4, 3, BIT(1), 0);
263*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart2_clk, uart_clk_parents, APBC_UART2_CLK_RST, 4, 3, BIT(1), 0);
264*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart3_clk, uart_clk_parents, APBC_UART3_CLK_RST, 4, 3, BIT(1), 0);
265*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart4_clk, uart_clk_parents, APBC_UART4_CLK_RST, 4, 3, BIT(1), 0);
266*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart5_clk, uart_clk_parents, APBC_UART5_CLK_RST, 4, 3, BIT(1), 0);
267*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart6_clk, uart_clk_parents, APBC_UART6_CLK_RST, 4, 3, BIT(1), 0);
268*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart7_clk, uart_clk_parents, APBC_UART7_CLK_RST, 4, 3, BIT(1), 0);
269*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart8_clk, uart_clk_parents, APBC_UART8_CLK_RST, 4, 3, BIT(1), 0);
270*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart9_clk, uart_clk_parents, APBC_UART9_CLK_RST, 4, 3, BIT(1), 0);
271*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart10_clk, uart_clk_parents, APBC_UART10_CLK_RST, 4, 3, BIT(1), 0);
272*e371a772SYixun Lan 
273*e371a772SYixun Lan CCU_GATE_DEFINE(uart0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART0_CLK_RST, BIT(0), 0);
274*e371a772SYixun Lan CCU_GATE_DEFINE(uart2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART2_CLK_RST, BIT(0), 0);
275*e371a772SYixun Lan CCU_GATE_DEFINE(uart3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART3_CLK_RST, BIT(0), 0);
276*e371a772SYixun Lan CCU_GATE_DEFINE(uart4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART4_CLK_RST, BIT(0), 0);
277*e371a772SYixun Lan CCU_GATE_DEFINE(uart5_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART5_CLK_RST, BIT(0), 0);
278*e371a772SYixun Lan CCU_GATE_DEFINE(uart6_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART6_CLK_RST, BIT(0), 0);
279*e371a772SYixun Lan CCU_GATE_DEFINE(uart7_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART7_CLK_RST, BIT(0), 0);
280*e371a772SYixun Lan CCU_GATE_DEFINE(uart8_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART8_CLK_RST, BIT(0), 0);
281*e371a772SYixun Lan CCU_GATE_DEFINE(uart9_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART9_CLK_RST, BIT(0), 0);
282*e371a772SYixun Lan CCU_GATE_DEFINE(uart10_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART10_CLK_RST, BIT(0), 0);
283*e371a772SYixun Lan 
284*e371a772SYixun Lan CCU_GATE_DEFINE(gpio_clk, CCU_PARENT_NAME(vctcxo_24m), APBC_GPIO_CLK_RST, BIT(1), 0);
285*e371a772SYixun Lan CCU_GATE_DEFINE(gpio_bus_clk, CCU_PARENT_HW(apb_clk), APBC_GPIO_CLK_RST, BIT(0), 0);
286*e371a772SYixun Lan 
287*e371a772SYixun Lan static const struct clk_parent_data pwm_parents[] = {
288*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d192_12p8),
289*e371a772SYixun Lan 	CCU_PARENT_NAME(osc_32k),
290*e371a772SYixun Lan };
291*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm0_clk, pwm_parents, APBC_PWM0_CLK_RST, 4, 3, BIT(1), 0);
292*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm1_clk, pwm_parents, APBC_PWM1_CLK_RST, 4, 3, BIT(1), 0);
293*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm2_clk, pwm_parents, APBC_PWM2_CLK_RST, 4, 3, BIT(1), 0);
294*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm3_clk, pwm_parents, APBC_PWM3_CLK_RST, 4, 3, BIT(1), 0);
295*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm4_clk, pwm_parents, APBC_PWM4_CLK_RST, 4, 3, BIT(1), 0);
296*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm5_clk, pwm_parents, APBC_PWM5_CLK_RST, 4, 3, BIT(1), 0);
297*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm6_clk, pwm_parents, APBC_PWM6_CLK_RST, 4, 3, BIT(1), 0);
298*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm7_clk, pwm_parents, APBC_PWM7_CLK_RST, 4, 3, BIT(1), 0);
299*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm8_clk, pwm_parents, APBC_PWM8_CLK_RST, 4, 3, BIT(1), 0);
300*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm9_clk, pwm_parents, APBC_PWM9_CLK_RST, 4, 3, BIT(1), 0);
301*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm10_clk, pwm_parents, APBC_PWM10_CLK_RST, 4, 3, BIT(1), 0);
302*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm11_clk, pwm_parents, APBC_PWM11_CLK_RST, 4, 3, BIT(1), 0);
303*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm12_clk, pwm_parents, APBC_PWM12_CLK_RST, 4, 3, BIT(1), 0);
304*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm13_clk, pwm_parents, APBC_PWM13_CLK_RST, 4, 3, BIT(1), 0);
305*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm14_clk, pwm_parents, APBC_PWM14_CLK_RST, 4, 3, BIT(1), 0);
306*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm15_clk, pwm_parents, APBC_PWM15_CLK_RST, 4, 3, BIT(1), 0);
307*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm16_clk, pwm_parents, APBC_PWM16_CLK_RST, 4, 3, BIT(1), 0);
308*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm17_clk, pwm_parents, APBC_PWM17_CLK_RST, 4, 3, BIT(1), 0);
309*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm18_clk, pwm_parents, APBC_PWM18_CLK_RST, 4, 3, BIT(1), 0);
310*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm19_clk, pwm_parents, APBC_PWM19_CLK_RST, 4, 3, BIT(1), 0);
311*e371a772SYixun Lan 
312*e371a772SYixun Lan CCU_GATE_DEFINE(pwm0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM0_CLK_RST, BIT(0), 0);
313*e371a772SYixun Lan CCU_GATE_DEFINE(pwm1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM1_CLK_RST, BIT(0), 0);
314*e371a772SYixun Lan CCU_GATE_DEFINE(pwm2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM2_CLK_RST, BIT(0), 0);
315*e371a772SYixun Lan CCU_GATE_DEFINE(pwm3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM3_CLK_RST, BIT(0), 0);
316*e371a772SYixun Lan CCU_GATE_DEFINE(pwm4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM4_CLK_RST, BIT(0), 0);
317*e371a772SYixun Lan CCU_GATE_DEFINE(pwm5_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM5_CLK_RST, BIT(0), 0);
318*e371a772SYixun Lan CCU_GATE_DEFINE(pwm6_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM6_CLK_RST, BIT(0), 0);
319*e371a772SYixun Lan CCU_GATE_DEFINE(pwm7_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM7_CLK_RST, BIT(0), 0);
320*e371a772SYixun Lan CCU_GATE_DEFINE(pwm8_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM8_CLK_RST, BIT(0), 0);
321*e371a772SYixun Lan CCU_GATE_DEFINE(pwm9_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM9_CLK_RST, BIT(0), 0);
322*e371a772SYixun Lan CCU_GATE_DEFINE(pwm10_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM10_CLK_RST, BIT(0), 0);
323*e371a772SYixun Lan CCU_GATE_DEFINE(pwm11_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM11_CLK_RST, BIT(0), 0);
324*e371a772SYixun Lan CCU_GATE_DEFINE(pwm12_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM12_CLK_RST, BIT(0), 0);
325*e371a772SYixun Lan CCU_GATE_DEFINE(pwm13_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM13_CLK_RST, BIT(0), 0);
326*e371a772SYixun Lan CCU_GATE_DEFINE(pwm14_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM14_CLK_RST, BIT(0), 0);
327*e371a772SYixun Lan CCU_GATE_DEFINE(pwm15_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM15_CLK_RST, BIT(0), 0);
328*e371a772SYixun Lan CCU_GATE_DEFINE(pwm16_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM16_CLK_RST, BIT(0), 0);
329*e371a772SYixun Lan CCU_GATE_DEFINE(pwm17_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM17_CLK_RST, BIT(0), 0);
330*e371a772SYixun Lan CCU_GATE_DEFINE(pwm18_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM18_CLK_RST, BIT(0), 0);
331*e371a772SYixun Lan CCU_GATE_DEFINE(pwm19_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM19_CLK_RST, BIT(0), 0);
332*e371a772SYixun Lan 
333*e371a772SYixun Lan static const struct clk_parent_data i2s_bclk_parents[] = {
334*e371a772SYixun Lan 	CCU_PARENT_NAME(vctcxo_1m),
335*e371a772SYixun Lan 	CCU_PARENT_HW(i2s_bclk),
336*e371a772SYixun Lan };
337*e371a772SYixun Lan CCU_MUX_DEFINE(spi0_i2s_bclk, i2s_bclk_parents, APBC_SSP0_CLK_RST, 3, 1, 0);
338*e371a772SYixun Lan CCU_MUX_DEFINE(spi1_i2s_bclk, i2s_bclk_parents, APBC_SSP1_CLK_RST, 3, 1, 0);
339*e371a772SYixun Lan CCU_MUX_DEFINE(spi3_i2s_bclk, i2s_bclk_parents, APBC_SSP3_CLK_RST, 3, 1, 0);
340*e371a772SYixun Lan 
341*e371a772SYixun Lan static const struct clk_parent_data spi0_parents[] = {
342*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d384_6p4),
343*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d192_12p8),
344*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
345*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2),
346*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d768_3p2),
347*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d1536_1p6),
348*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3072_0p8),
349*e371a772SYixun Lan 	CCU_PARENT_HW(spi0_i2s_bclk),
350*e371a772SYixun Lan };
351*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(spi0_clk, spi0_parents, APBC_SSP0_CLK_RST, 4, 3, BIT(1), 0);
352*e371a772SYixun Lan 
353*e371a772SYixun Lan static const struct clk_parent_data spi1_parents[] = {
354*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d384_6p4),
355*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d192_12p8),
356*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
357*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2),
358*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d768_3p2),
359*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d1536_1p6),
360*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3072_0p8),
361*e371a772SYixun Lan 	CCU_PARENT_HW(spi1_i2s_bclk),
362*e371a772SYixun Lan };
363*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(spi1_clk, spi1_parents, APBC_SSP1_CLK_RST, 4, 3, BIT(1), 0);
364*e371a772SYixun Lan 
365*e371a772SYixun Lan static const struct clk_parent_data spi3_parents[] = {
366*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d384_6p4),
367*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d192_12p8),
368*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
369*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2),
370*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d768_3p2),
371*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d1536_1p6),
372*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3072_0p8),
373*e371a772SYixun Lan 	CCU_PARENT_HW(spi3_i2s_bclk),
374*e371a772SYixun Lan };
375*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(spi3_clk, spi3_parents, APBC_SSP3_CLK_RST, 4, 3, BIT(1), 0);
376*e371a772SYixun Lan 
377*e371a772SYixun Lan CCU_GATE_DEFINE(spi0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSP0_CLK_RST, BIT(0), 0);
378*e371a772SYixun Lan CCU_GATE_DEFINE(spi1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSP1_CLK_RST, BIT(0), 0);
379*e371a772SYixun Lan CCU_GATE_DEFINE(spi3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSP3_CLK_RST, BIT(0), 0);
380*e371a772SYixun Lan 
381*e371a772SYixun Lan 
382*e371a772SYixun Lan CCU_GATE_DEFINE(rtc_clk, CCU_PARENT_NAME(osc_32k), APBC_RTC_CLK_RST,
383*e371a772SYixun Lan 		BIT(7) | BIT(1), 0);
384*e371a772SYixun Lan CCU_GATE_DEFINE(rtc_bus_clk, CCU_PARENT_HW(apb_clk), APBC_RTC_CLK_RST, BIT(0), 0);
385*e371a772SYixun Lan 
386*e371a772SYixun Lan static const struct clk_parent_data twsi_parents[] = {
387*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d78_31p5),
388*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2),
389*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d40_61p44),
390*e371a772SYixun Lan };
391*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi0_clk, twsi_parents, APBC_TWSI0_CLK_RST, 4, 3, BIT(1), 0);
392*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi1_clk, twsi_parents, APBC_TWSI1_CLK_RST, 4, 3, BIT(1), 0);
393*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi2_clk, twsi_parents, APBC_TWSI2_CLK_RST, 4, 3, BIT(1), 0);
394*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi4_clk, twsi_parents, APBC_TWSI4_CLK_RST, 4, 3, BIT(1), 0);
395*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi5_clk, twsi_parents, APBC_TWSI5_CLK_RST, 4, 3, BIT(1), 0);
396*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi6_clk, twsi_parents, APBC_TWSI6_CLK_RST, 4, 3, BIT(1), 0);
397*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi8_clk, twsi_parents, APBC_TWSI8_CLK_RST, 4, 3, BIT(1), 0);
398*e371a772SYixun Lan 
399*e371a772SYixun Lan CCU_GATE_DEFINE(twsi0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI0_CLK_RST, BIT(0), 0);
400*e371a772SYixun Lan CCU_GATE_DEFINE(twsi1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI1_CLK_RST, BIT(0), 0);
401*e371a772SYixun Lan CCU_GATE_DEFINE(twsi2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI2_CLK_RST, BIT(0), 0);
402*e371a772SYixun Lan CCU_GATE_DEFINE(twsi4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI4_CLK_RST, BIT(0), 0);
403*e371a772SYixun Lan CCU_GATE_DEFINE(twsi5_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI5_CLK_RST, BIT(0), 0);
404*e371a772SYixun Lan CCU_GATE_DEFINE(twsi6_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI6_CLK_RST, BIT(0), 0);
405*e371a772SYixun Lan CCU_GATE_DEFINE(twsi8_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI8_CLK_RST, BIT(0), 0);
406*e371a772SYixun Lan 
407*e371a772SYixun Lan static const struct clk_parent_data timer_parents[] = {
408*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d192_12p8),
409*e371a772SYixun Lan 	CCU_PARENT_NAME(osc_32k),
410*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d384_6p4),
411*e371a772SYixun Lan 	CCU_PARENT_NAME(vctcxo_3m),
412*e371a772SYixun Lan 	CCU_PARENT_NAME(vctcxo_1m),
413*e371a772SYixun Lan };
414*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers0_clk, timer_parents, APBC_TIMERS0_CLK_RST, 4, 3, BIT(1), 0);
415*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers1_clk, timer_parents, APBC_TIMERS1_CLK_RST, 4, 3, BIT(1), 0);
416*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers2_clk, timer_parents, APBC_TIMERS2_CLK_RST, 4, 3, BIT(1), 0);
417*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers3_clk, timer_parents, APBC_TIMERS3_CLK_RST, 4, 3, BIT(1), 0);
418*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers4_clk, timer_parents, APBC_TIMERS4_CLK_RST, 4, 3, BIT(1), 0);
419*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers5_clk, timer_parents, APBC_TIMERS5_CLK_RST, 4, 3, BIT(1), 0);
420*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers6_clk, timer_parents, APBC_TIMERS6_CLK_RST, 4, 3, BIT(1), 0);
421*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers7_clk, timer_parents, APBC_TIMERS7_CLK_RST, 4, 3, BIT(1), 0);
422*e371a772SYixun Lan 
423*e371a772SYixun Lan CCU_GATE_DEFINE(timers0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS0_CLK_RST, BIT(0), 0);
424*e371a772SYixun Lan CCU_GATE_DEFINE(timers1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS1_CLK_RST, BIT(0), 0);
425*e371a772SYixun Lan CCU_GATE_DEFINE(timers2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS2_CLK_RST, BIT(0), 0);
426*e371a772SYixun Lan CCU_GATE_DEFINE(timers3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS3_CLK_RST, BIT(0), 0);
427*e371a772SYixun Lan CCU_GATE_DEFINE(timers4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS4_CLK_RST, BIT(0), 0);
428*e371a772SYixun Lan CCU_GATE_DEFINE(timers5_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS5_CLK_RST, BIT(0), 0);
429*e371a772SYixun Lan CCU_GATE_DEFINE(timers6_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS6_CLK_RST, BIT(0), 0);
430*e371a772SYixun Lan CCU_GATE_DEFINE(timers7_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS7_CLK_RST, BIT(0), 0);
431*e371a772SYixun Lan 
432*e371a772SYixun Lan CCU_GATE_DEFINE(aib_clk, CCU_PARENT_NAME(vctcxo_24m), APBC_AIB_CLK_RST, BIT(1), 0);
433*e371a772SYixun Lan CCU_GATE_DEFINE(aib_bus_clk, CCU_PARENT_HW(apb_clk), APBC_AIB_CLK_RST, BIT(0), 0);
434*e371a772SYixun Lan 
435*e371a772SYixun Lan CCU_GATE_DEFINE(onewire_clk, CCU_PARENT_NAME(vctcxo_24m), APBC_ONEWIRE_CLK_RST, BIT(1), 0);
436*e371a772SYixun Lan CCU_GATE_DEFINE(onewire_bus_clk, CCU_PARENT_HW(apb_clk), APBC_ONEWIRE_CLK_RST, BIT(0), 0);
437*e371a772SYixun Lan 
438*e371a772SYixun Lan /*
439*e371a772SYixun Lan  * When i2s_bclk is selected as the parent clock of sspa,
440*e371a772SYixun Lan  * the hardware requires bit3 to be set
441*e371a772SYixun Lan  */
442*e371a772SYixun Lan 
443*e371a772SYixun Lan CCU_MUX_DEFINE(i2s0_i2s_bclk, i2s_bclk_parents, APBC_SSPA0_CLK_RST, 3, 1, 0);
444*e371a772SYixun Lan CCU_MUX_DEFINE(i2s1_i2s_bclk, i2s_bclk_parents, APBC_SSPA1_CLK_RST, 3, 1, 0);
445*e371a772SYixun Lan CCU_MUX_DEFINE(i2s2_i2s_bclk, i2s_bclk_parents, APBC_SSPA2_CLK_RST, 3, 1, 0);
446*e371a772SYixun Lan CCU_MUX_DEFINE(i2s3_i2s_bclk, i2s_bclk_parents, APBC_SSPA3_CLK_RST, 3, 1, 0);
447*e371a772SYixun Lan CCU_MUX_DEFINE(i2s4_i2s_bclk, i2s_bclk_parents, APBC_SSPA4_CLK_RST, 3, 1, 0);
448*e371a772SYixun Lan CCU_MUX_DEFINE(i2s5_i2s_bclk, i2s_bclk_parents, APBC_SSPA5_CLK_RST, 3, 1, 0);
449*e371a772SYixun Lan 
450*e371a772SYixun Lan static const struct clk_parent_data i2s0_parents[] = {
451*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d384_6p4),
452*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d192_12p8),
453*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
454*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2),
455*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d768_3p2),
456*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d1536_1p6),
457*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3072_0p8),
458*e371a772SYixun Lan 	CCU_PARENT_HW(i2s0_i2s_bclk),
459*e371a772SYixun Lan };
460*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s0_clk, i2s0_parents, APBC_SSPA0_CLK_RST, 4, 3, BIT(1), 0);
461*e371a772SYixun Lan 
462*e371a772SYixun Lan static const struct clk_parent_data i2s1_parents[] = {
463*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d384_6p4),
464*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d192_12p8),
465*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
466*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2),
467*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d768_3p2),
468*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d1536_1p6),
469*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3072_0p8),
470*e371a772SYixun Lan 	CCU_PARENT_HW(i2s1_i2s_bclk),
471*e371a772SYixun Lan };
472*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s1_clk, i2s1_parents, APBC_SSPA1_CLK_RST, 4, 3, BIT(1), 0);
473*e371a772SYixun Lan 
474*e371a772SYixun Lan static const struct clk_parent_data i2s2_parents[] = {
475*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d384_6p4),
476*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d192_12p8),
477*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
478*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2),
479*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d768_3p2),
480*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d1536_1p6),
481*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3072_0p8),
482*e371a772SYixun Lan 	CCU_PARENT_HW(i2s2_i2s_bclk),
483*e371a772SYixun Lan };
484*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s2_clk, i2s2_parents, APBC_SSPA2_CLK_RST, 4, 3, BIT(1), 0);
485*e371a772SYixun Lan 
486*e371a772SYixun Lan static const struct clk_parent_data i2s3_parents[] = {
487*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d384_6p4),
488*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d192_12p8),
489*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
490*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2),
491*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d768_3p2),
492*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d1536_1p6),
493*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3072_0p8),
494*e371a772SYixun Lan 	CCU_PARENT_HW(i2s3_i2s_bclk),
495*e371a772SYixun Lan };
496*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s3_clk, i2s3_parents, APBC_SSPA3_CLK_RST, 4, 3, BIT(1), 0);
497*e371a772SYixun Lan 
498*e371a772SYixun Lan static const struct clk_parent_data i2s4_parents[] = {
499*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d384_6p4),
500*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d192_12p8),
501*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
502*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2),
503*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d768_3p2),
504*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d1536_1p6),
505*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3072_0p8),
506*e371a772SYixun Lan 	CCU_PARENT_HW(i2s4_i2s_bclk),
507*e371a772SYixun Lan };
508*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s4_clk, i2s4_parents, APBC_SSPA4_CLK_RST, 4, 3, BIT(1), 0);
509*e371a772SYixun Lan 
510*e371a772SYixun Lan static const struct clk_parent_data i2s5_parents[] = {
511*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d384_6p4),
512*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d192_12p8),
513*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
514*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2),
515*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d768_3p2),
516*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d1536_1p6),
517*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3072_0p8),
518*e371a772SYixun Lan 	CCU_PARENT_HW(i2s5_i2s_bclk),
519*e371a772SYixun Lan };
520*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s5_clk, i2s5_parents, APBC_SSPA5_CLK_RST, 4, 3, BIT(1), 0);
521*e371a772SYixun Lan 
522*e371a772SYixun Lan CCU_GATE_DEFINE(i2s0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA0_CLK_RST, BIT(0), 0);
523*e371a772SYixun Lan CCU_GATE_DEFINE(i2s1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA1_CLK_RST, BIT(0), 0);
524*e371a772SYixun Lan CCU_GATE_DEFINE(i2s2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA2_CLK_RST, BIT(0), 0);
525*e371a772SYixun Lan CCU_GATE_DEFINE(i2s3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA3_CLK_RST, BIT(0), 0);
526*e371a772SYixun Lan CCU_GATE_DEFINE(i2s4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA4_CLK_RST, BIT(0), 0);
527*e371a772SYixun Lan CCU_GATE_DEFINE(i2s5_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA5_CLK_RST, BIT(0), 0);
528*e371a772SYixun Lan 
529*e371a772SYixun Lan CCU_GATE_DEFINE(dro_clk, CCU_PARENT_HW(apb_clk), APBC_DRO_CLK_RST, BIT(1), 0);
530*e371a772SYixun Lan CCU_GATE_DEFINE(ir0_clk, CCU_PARENT_HW(apb_clk), APBC_IR0_CLK_RST, BIT(1), 0);
531*e371a772SYixun Lan CCU_GATE_DEFINE(ir1_clk, CCU_PARENT_HW(apb_clk), APBC_IR1_CLK_RST, BIT(1), 0);
532*e371a772SYixun Lan 
533*e371a772SYixun Lan CCU_GATE_DEFINE(tsen_clk, CCU_PARENT_HW(apb_clk), APBC_TSEN_CLK_RST, BIT(1), 0);
534*e371a772SYixun Lan CCU_GATE_DEFINE(tsen_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TSEN_CLK_RST, BIT(0), 0);
535*e371a772SYixun Lan 
536*e371a772SYixun Lan CCU_GATE_DEFINE(ipc_ap2rcpu_clk, CCU_PARENT_HW(apb_clk), APBC_IPC_AP2AUD_CLK_RST, BIT(1), 0);
537*e371a772SYixun Lan CCU_GATE_DEFINE(ipc_ap2rcpu_bus_clk, CCU_PARENT_HW(apb_clk), APBC_IPC_AP2AUD_CLK_RST, BIT(0), 0);
538*e371a772SYixun Lan 
539*e371a772SYixun Lan static const struct clk_parent_data can_parents[] = {
540*e371a772SYixun Lan 	CCU_PARENT_HW(pll6_20),
541*e371a772SYixun Lan 	CCU_PARENT_HW(pll6_40),
542*e371a772SYixun Lan 	CCU_PARENT_HW(pll6_80),
543*e371a772SYixun Lan };
544*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(can0_clk, can_parents, APBC_CAN0_CLK_RST, 4, 3, BIT(1), 0);
545*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(can1_clk, can_parents, APBC_CAN1_CLK_RST, 4, 3, BIT(1), 0);
546*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(can2_clk, can_parents, APBC_CAN2_CLK_RST, 4, 3, BIT(1), 0);
547*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(can3_clk, can_parents, APBC_CAN3_CLK_RST, 4, 3, BIT(1), 0);
548*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(can4_clk, can_parents, APBC_CAN4_CLK_RST, 4, 3, BIT(1), 0);
549*e371a772SYixun Lan 
550*e371a772SYixun Lan CCU_GATE_DEFINE(can0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_CAN0_CLK_RST, BIT(0), 0);
551*e371a772SYixun Lan CCU_GATE_DEFINE(can1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_CAN1_CLK_RST, BIT(0), 0);
552*e371a772SYixun Lan CCU_GATE_DEFINE(can2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_CAN2_CLK_RST, BIT(0), 0);
553*e371a772SYixun Lan CCU_GATE_DEFINE(can3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_CAN3_CLK_RST, BIT(0), 0);
554*e371a772SYixun Lan CCU_GATE_DEFINE(can4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_CAN4_CLK_RST, BIT(0), 0);
555*e371a772SYixun Lan /* APBC clocks end */
556*e371a772SYixun Lan 
557*e371a772SYixun Lan /* APMU clocks start */
558*e371a772SYixun Lan static const struct clk_parent_data axi_clk_parents[] = {
559*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
560*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
561*e371a772SYixun Lan };
562*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(axi_clk, axi_clk_parents, APMU_ACLK_CLK_CTRL, 1, 2, BIT(4), 0, 1, 0);
563*e371a772SYixun Lan 
564*e371a772SYixun Lan static const struct clk_parent_data cci550_clk_parents[] = {
565*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d10_245p76),
566*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
567*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
568*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3_819p2),
569*e371a772SYixun Lan 	CCU_PARENT_HW(pll7_d3),
570*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d3),
571*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d2_1228p8),
572*e371a772SYixun Lan 	CCU_PARENT_HW(pll7_d2),
573*e371a772SYixun Lan };
574*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(cci550_clk, cci550_clk_parents, APMU_CCI550_CLK_CTRL, 8, 2, BIT(12), 0, 3,
575*e371a772SYixun Lan 		      CLK_IS_CRITICAL);
576*e371a772SYixun Lan 
577*e371a772SYixun Lan static const struct clk_parent_data cpu_c0_clk_parents[] = {
578*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3_819p2),
579*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
580*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
581*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d3),
582*e371a772SYixun Lan 	CCU_PARENT_HW(pll3_d2),
583*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d2_1228p8),
584*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d2),
585*e371a772SYixun Lan 	CCU_PARENT_HW(pll3_d1),
586*e371a772SYixun Lan };
587*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(cpu_c0_core_clk, cpu_c0_clk_parents, APMU_CPU_C0_CLK_CTRL,
588*e371a772SYixun Lan 		      3, 3, BIT(12), 0, 3, CLK_IS_CRITICAL);
589*e371a772SYixun Lan 
590*e371a772SYixun Lan static const struct clk_parent_data cpu_c1_clk_parents[] = {
591*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3_819p2),
592*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
593*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
594*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d3),
595*e371a772SYixun Lan 	CCU_PARENT_HW(pll4_d2),
596*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d2_1228p8),
597*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d2),
598*e371a772SYixun Lan 	CCU_PARENT_HW(pll4_d1),
599*e371a772SYixun Lan };
600*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(cpu_c1_core_clk, cpu_c1_clk_parents, APMU_CPU_C1_CLK_CTRL,
601*e371a772SYixun Lan 		      3, 3, BIT(12), 0, 3, CLK_IS_CRITICAL);
602*e371a772SYixun Lan 
603*e371a772SYixun Lan static const struct clk_parent_data cpu_c2_clk_parents[] = {
604*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3_819p2),
605*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
606*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
607*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d3),
608*e371a772SYixun Lan 	CCU_PARENT_HW(pll5_d2),
609*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d2_1228p8),
610*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d2),
611*e371a772SYixun Lan 	CCU_PARENT_HW(pll5_d1),
612*e371a772SYixun Lan };
613*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(cpu_c2_core_clk, cpu_c2_clk_parents, APMU_CPU_C2_CLK_CTRL,
614*e371a772SYixun Lan 		      3, 3, BIT(12), 0, 3, CLK_IS_CRITICAL);
615*e371a772SYixun Lan 
616*e371a772SYixun Lan static const struct clk_parent_data cpu_c3_clk_parents[] = {
617*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3_819p2),
618*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
619*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
620*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d3),
621*e371a772SYixun Lan 	CCU_PARENT_HW(pll8_d2),
622*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d2_1228p8),
623*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d2),
624*e371a772SYixun Lan 	CCU_PARENT_HW(pll8_d1),
625*e371a772SYixun Lan };
626*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(cpu_c3_core_clk, cpu_c3_clk_parents, APMU_CPU_C3_CLK_CTRL,
627*e371a772SYixun Lan 		      3, 3, BIT(12), 0, 3, CLK_IS_CRITICAL);
628*e371a772SYixun Lan 
629*e371a772SYixun Lan static const struct clk_parent_data ccic2phy_parents[] = {
630*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d24_102p4),
631*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2_ap),
632*e371a772SYixun Lan };
633*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(ccic2phy_clk, ccic2phy_parents, APMU_CSI_CCIC2_CLK_RES_CTRL, 7, 1, BIT(5), 0);
634*e371a772SYixun Lan 
635*e371a772SYixun Lan static const struct clk_parent_data ccic3phy_parents[] = {
636*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d24_102p4),
637*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2_ap),
638*e371a772SYixun Lan };
639*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(ccic3phy_clk, ccic3phy_parents, APMU_CSI_CCIC2_CLK_RES_CTRL, 31, 1, BIT(30), 0);
640*e371a772SYixun Lan 
641*e371a772SYixun Lan static const struct clk_parent_data csi_parents[] = {
642*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
643*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
644*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
645*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3_819p2),
646*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d2),
647*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d3),
648*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d4),
649*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d2_1228p8),
650*e371a772SYixun Lan };
651*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(csi_clk, csi_parents, APMU_CSI_CCIC2_CLK_RES_CTRL, 20, 3, BIT(15),
652*e371a772SYixun Lan 			   16, 3, BIT(4), 0);
653*e371a772SYixun Lan 
654*e371a772SYixun Lan static const struct clk_parent_data isp_bus_parents[] = {
655*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
656*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
657*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
658*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d10_245p76),
659*e371a772SYixun Lan };
660*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(isp_bus_clk, isp_bus_parents, APMU_ISP_CLK_RES_CTRL, 18, 3, BIT(23),
661*e371a772SYixun Lan 			   21, 2, BIT(17), 0);
662*e371a772SYixun Lan 
663*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_1228p8, CCU_PARENT_HW(pll1_d2_1228p8), APMU_PMU_CLK_GATE_CTRL, BIT(31), 0);
664*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_819p2, CCU_PARENT_HW(pll1_d3_819p2), APMU_PMU_CLK_GATE_CTRL, BIT(30), 0);
665*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_614p4, CCU_PARENT_HW(pll1_d4_614p4), APMU_PMU_CLK_GATE_CTRL, BIT(29), 0);
666*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_491p52, CCU_PARENT_HW(pll1_d5_491p52), APMU_PMU_CLK_GATE_CTRL, BIT(28), 0);
667*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_409p6, CCU_PARENT_HW(pll1_d6_409p6), APMU_PMU_CLK_GATE_CTRL, BIT(27), 0);
668*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_307p2, CCU_PARENT_HW(pll1_d8_307p2), APMU_PMU_CLK_GATE_CTRL, BIT(26), 0);
669*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_245p76, CCU_PARENT_HW(pll1_d10_245p76), APMU_PMU_CLK_GATE_CTRL, BIT(22), 0);
670*e371a772SYixun Lan 
671*e371a772SYixun Lan static const struct clk_parent_data v2d_parents[] = {
672*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
673*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d4),
674*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
675*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
676*e371a772SYixun Lan };
677*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(v2d_clk, v2d_parents, APMU_LCD_CLK_RES_CTRL1, 9, 3, BIT(28), 12, 2,
678*e371a772SYixun Lan 			   BIT(8), 0);
679*e371a772SYixun Lan 
680*e371a772SYixun Lan static const struct clk_parent_data dsiesc_parents[] = {
681*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2_ap),
682*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d52_47p26),
683*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
684*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d32_76p8),
685*e371a772SYixun Lan };
686*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(dsi_esc_clk, dsiesc_parents, APMU_LCD_CLK_RES_CTRL1, 0, 2, BIT(2), 0);
687*e371a772SYixun Lan 
688*e371a772SYixun Lan CCU_GATE_DEFINE(lcd_hclk, CCU_PARENT_HW(axi_clk), APMU_LCD_CLK_RES_CTRL1, BIT(5), 0);
689*e371a772SYixun Lan 
690*e371a772SYixun Lan static const struct clk_parent_data lcd_dsc_parents[] = {
691*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
692*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
693*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d10_245p76),
694*e371a772SYixun Lan 	CCU_PARENT_HW(pll7_d5),
695*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d7),
696*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
697*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2_ap),
698*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d8),
699*e371a772SYixun Lan };
700*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(lcd_dsc_clk, lcd_dsc_parents, APMU_LCD_CLK_RES_CTRL2,
701*e371a772SYixun Lan 				 APMU_LCD_CLK_RES_CTRL1, 25, 3, BIT(26), 29, 3, BIT(14), 0);
702*e371a772SYixun Lan 
703*e371a772SYixun Lan static const struct clk_parent_data lcdpx_parents[] = {
704*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
705*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
706*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d10_245p76),
707*e371a772SYixun Lan 	CCU_PARENT_HW(pll7_d5),
708*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d7),
709*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d4),
710*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2_ap),
711*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d8),
712*e371a772SYixun Lan };
713*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(lcd_pxclk, lcdpx_parents, APMU_LCD_CLK_RES_CTRL2,
714*e371a772SYixun Lan 				 APMU_LCD_CLK_RES_CTRL1, 17, 3, BIT(30), 21, 3, BIT(16), 0);
715*e371a772SYixun Lan 
716*e371a772SYixun Lan static const struct clk_parent_data lcdmclk_parents[] = {
717*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
718*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
719*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
720*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
721*e371a772SYixun Lan };
722*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(lcd_mclk, lcdmclk_parents, APMU_LCD_CLK_RES_CTRL2,
723*e371a772SYixun Lan 				 APMU_LCD_CLK_RES_CTRL1, 1, 4, BIT(29), 5, 3, BIT(0), 0);
724*e371a772SYixun Lan 
725*e371a772SYixun Lan static const struct clk_parent_data ccic_4x_parents[] = {
726*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
727*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
728*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
729*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3_819p2),
730*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d2),
731*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d3),
732*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d4),
733*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d2_1228p8),
734*e371a772SYixun Lan };
735*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(ccic_4x_clk, ccic_4x_parents, APMU_CCIC_CLK_RES_CTRL, 18, 3,
736*e371a772SYixun Lan 			   BIT(15), 23, 2, BIT(4), 0);
737*e371a772SYixun Lan 
738*e371a772SYixun Lan static const struct clk_parent_data ccic1phy_parents[] = {
739*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d24_102p4),
740*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2_ap),
741*e371a772SYixun Lan };
742*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(ccic1phy_clk, ccic1phy_parents, APMU_CCIC_CLK_RES_CTRL, 7, 1, BIT(5), 0);
743*e371a772SYixun Lan 
744*e371a772SYixun Lan 
745*e371a772SYixun Lan static const struct clk_parent_data sc2hclk_parents[] = {
746*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
747*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
748*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
749*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d4),
750*e371a772SYixun Lan };
751*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(sc2_hclk, sc2hclk_parents, APMU_CCIC_CLK_RES_CTRL, 10, 3,
752*e371a772SYixun Lan 			   BIT(16), 8, 2, BIT(3), 0);
753*e371a772SYixun Lan 
754*e371a772SYixun Lan CCU_GATE_DEFINE(sdh_axi_aclk, CCU_PARENT_HW(axi_clk), APMU_SDH0_CLK_RES_CTRL, BIT(3), 0);
755*e371a772SYixun Lan static const struct clk_parent_data sdh01_parents[] = {
756*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
757*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
758*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d8),
759*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d5),
760*e371a772SYixun Lan 	CCU_PARENT_NAME(reserved_clk),
761*e371a772SYixun Lan 	CCU_PARENT_NAME(reserved_clk),
762*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_dx),
763*e371a772SYixun Lan };
764*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(sdh0_clk, sdh01_parents, APMU_SDH0_CLK_RES_CTRL, 8, 3,
765*e371a772SYixun Lan 			   BIT(11), 5, 3, BIT(4), 0);
766*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(sdh1_clk, sdh01_parents, APMU_SDH1_CLK_RES_CTRL, 8, 3,
767*e371a772SYixun Lan 			   BIT(11), 5, 3, BIT(4), 0);
768*e371a772SYixun Lan static const struct clk_parent_data sdh2_parents[] = {
769*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
770*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
771*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d8),
772*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3_819p2),
773*e371a772SYixun Lan 	CCU_PARENT_NAME(reserved_clk),
774*e371a772SYixun Lan 	CCU_PARENT_NAME(reserved_clk),
775*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_dx),
776*e371a772SYixun Lan };
777*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(sdh2_clk, sdh2_parents, APMU_SDH2_CLK_RES_CTRL, 8, 3,
778*e371a772SYixun Lan 			   BIT(11), 5, 3, BIT(4), 0);
779*e371a772SYixun Lan 
780*e371a772SYixun Lan CCU_GATE_DEFINE(usb2_bus_clk, CCU_PARENT_HW(axi_clk), APMU_USB_CLK_RES_CTRL, BIT(0), 0);
781*e371a772SYixun Lan CCU_GATE_DEFINE(usb3_porta_bus_clk, CCU_PARENT_HW(axi_clk), APMU_USB_CLK_RES_CTRL, BIT(4), 0);
782*e371a772SYixun Lan CCU_GATE_DEFINE(usb3_portb_bus_clk, CCU_PARENT_HW(axi_clk), APMU_USB_CLK_RES_CTRL, BIT(8), 0);
783*e371a772SYixun Lan CCU_GATE_DEFINE(usb3_portc_bus_clk, CCU_PARENT_HW(axi_clk), APMU_USB_CLK_RES_CTRL, BIT(12), 0);
784*e371a772SYixun Lan CCU_GATE_DEFINE(usb3_portd_bus_clk, CCU_PARENT_HW(axi_clk), APMU_USB_CLK_RES_CTRL, BIT(16), 0);
785*e371a772SYixun Lan 
786*e371a772SYixun Lan static const struct clk_parent_data qspi_parents[] = {
787*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
788*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d8),
789*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
790*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d10_245p76),
791*e371a772SYixun Lan 	CCU_PARENT_NAME(reserved_clk),
792*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_dx),
793*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
794*e371a772SYixun Lan 	CCU_PARENT_NAME(reserved_clk),
795*e371a772SYixun Lan };
796*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(qspi_clk, qspi_parents, APMU_QSPI_CLK_RES_CTRL, 9, 3,
797*e371a772SYixun Lan 			   BIT(12), 6, 3, BIT(4), 0);
798*e371a772SYixun Lan CCU_GATE_DEFINE(qspi_bus_clk, CCU_PARENT_HW(axi_clk), APMU_QSPI_CLK_RES_CTRL, BIT(3), 0);
799*e371a772SYixun Lan 
800*e371a772SYixun Lan CCU_GATE_DEFINE(dma_clk, CCU_PARENT_HW(axi_clk), APMU_DMA_CLK_RES_CTRL, BIT(3), 0);
801*e371a772SYixun Lan 
802*e371a772SYixun Lan static const struct clk_parent_data aes_wtm_parents[] = {
803*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d12_204p8),
804*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d24_102p4),
805*e371a772SYixun Lan };
806*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(aes_wtm_clk, aes_wtm_parents, APMU_AES_CLK_RES_CTRL, 6, 1, BIT(5), 0);
807*e371a772SYixun Lan 
808*e371a772SYixun Lan static const struct clk_parent_data vpu_parents[] = {
809*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
810*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
811*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3_819p2),
812*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
813*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d2_1228p8),
814*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d3),
815*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d4),
816*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d5),
817*e371a772SYixun Lan };
818*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(vpu_clk, vpu_parents, APMU_VPU_CLK_RES_CTRL, 13, 3,
819*e371a772SYixun Lan 			   BIT(21), 10, 3, BIT(3), 0);
820*e371a772SYixun Lan 
821*e371a772SYixun Lan CCU_GATE_DEFINE(dtc_clk, CCU_PARENT_HW(axi_clk), APMU_DTC_CLK_RES_CTRL, BIT(3), 0);
822*e371a772SYixun Lan 
823*e371a772SYixun Lan static const struct clk_parent_data gpu_parents[] = {
824*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
825*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
826*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d3_819p2),
827*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
828*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d2_1228p8),
829*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d3),
830*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d4),
831*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d5),
832*e371a772SYixun Lan };
833*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(gpu_clk, gpu_parents, APMU_GPU_CLK_RES_CTRL, 12, 3,
834*e371a772SYixun Lan 			   BIT(15), 18, 3, BIT(4), 0);
835*e371a772SYixun Lan 
836*e371a772SYixun Lan CCU_GATE_DEFINE(mc_ahb_clk, CCU_PARENT_HW(axi_clk), APMU_PMUA_MC_CTRL, BIT(1), 0);
837*e371a772SYixun Lan 
838*e371a772SYixun Lan static const struct clk_parent_data top_parents[] = {
839*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
840*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
841*e371a772SYixun Lan 	CCU_PARENT_HW(pll3_d4),
842*e371a772SYixun Lan 	CCU_PARENT_HW(pll6_d5),
843*e371a772SYixun Lan 	CCU_PARENT_HW(pll7_d4),
844*e371a772SYixun Lan 	CCU_PARENT_HW(pll6_d4),
845*e371a772SYixun Lan 	CCU_PARENT_HW(pll7_d3),
846*e371a772SYixun Lan 	CCU_PARENT_HW(pll6_d3),
847*e371a772SYixun Lan };
848*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(top_dclk, top_parents, APMU_TOP_DCLK_CTRL, 5, 3,
849*e371a772SYixun Lan 			   BIT(8), 2, 3, BIT(1), 0);
850*e371a772SYixun Lan 
851*e371a772SYixun Lan static const struct clk_parent_data ucie_parents[] = {
852*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
853*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
854*e371a772SYixun Lan 	CCU_PARENT_HW(pll3_d4),
855*e371a772SYixun Lan 	CCU_PARENT_HW(pll6_d5),
856*e371a772SYixun Lan 	CCU_PARENT_HW(pll7_d4),
857*e371a772SYixun Lan 	CCU_PARENT_HW(pll6_d4),
858*e371a772SYixun Lan };
859*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(ucie_clk, ucie_parents, APMU_UCIE_CTRL, 4, 3, BIT(0), 0);
860*e371a772SYixun Lan CCU_GATE_DEFINE(ucie_sbclk, CCU_PARENT_HW(axi_clk), APMU_UCIE_CTRL, BIT(8), 0);
861*e371a772SYixun Lan 
862*e371a772SYixun Lan static const struct clk_parent_data rcpu_clk_parents[] = {
863*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_aud_245p7),
864*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
865*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
866*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
867*e371a772SYixun Lan };
868*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(rcpu_clk, rcpu_clk_parents, APMU_RCPU_CLK_RES_CTRL,
869*e371a772SYixun Lan 			   4, 3, BIT(15), 7, 3, BIT(12), 0);
870*e371a772SYixun Lan 
871*e371a772SYixun Lan static const struct clk_parent_data dsi4ln2_dsi_esc_parents[] = {
872*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2_ap),
873*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d52_47p26),
874*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d96_25p6),
875*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d32_76p8),
876*e371a772SYixun Lan };
877*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(dsi4ln2_dsi_esc_clk, dsi4ln2_dsi_esc_parents, APMU_LCD_CLK_RES_CTRL3,
878*e371a772SYixun Lan 		    0, 1, BIT(2), 0);
879*e371a772SYixun Lan 
880*e371a772SYixun Lan static const struct clk_parent_data dsi4ln2_lcd_dsc_parents[] = {
881*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
882*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
883*e371a772SYixun Lan 	CCU_PARENT_HW(pll7_d5),
884*e371a772SYixun Lan 	CCU_PARENT_HW(pll6_d6),
885*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d7),
886*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
887*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2_ap),
888*e371a772SYixun Lan };
889*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(dsi4ln2_lcd_dsc_clk, dsi4ln2_lcd_dsc_parents,
890*e371a772SYixun Lan 				 APMU_LCD_CLK_RES_CTRL4, APMU_LCD_CLK_RES_CTRL3,
891*e371a772SYixun Lan 				 25, 3, BIT(26), 29, 3, BIT(14), 0);
892*e371a772SYixun Lan 
893*e371a772SYixun Lan static const struct clk_parent_data dsi4ln2_lcdpx_parents[] = {
894*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
895*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
896*e371a772SYixun Lan 	CCU_PARENT_HW(pll7_d5),
897*e371a772SYixun Lan 	CCU_PARENT_HW(pll6_d6),
898*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d7),
899*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d4),
900*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d48_51p2_ap),
901*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d8),
902*e371a772SYixun Lan };
903*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(dsi4ln2_lcd_pxclk, dsi4ln2_lcdpx_parents, APMU_LCD_CLK_RES_CTRL4,
904*e371a772SYixun Lan 				 APMU_LCD_CLK_RES_CTRL3, 17, 3, BIT(30), 21, 3, BIT(16), 0);
905*e371a772SYixun Lan 
906*e371a772SYixun Lan static const struct clk_parent_data dsi4ln2_lcd_mclk_parents[] = {
907*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
908*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
909*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
910*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
911*e371a772SYixun Lan };
912*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(dsi4ln2_lcd_mclk, dsi4ln2_lcd_mclk_parents, APMU_LCD_CLK_RES_CTRL4,
913*e371a772SYixun Lan 				 APMU_LCD_CLK_RES_CTRL3, 1, 4, BIT(29), 5, 3, BIT(0), 0);
914*e371a772SYixun Lan 
915*e371a772SYixun Lan static const struct clk_parent_data dpu_aclk_parents[] = {
916*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
917*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
918*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
919*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
920*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d4),
921*e371a772SYixun Lan };
922*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(dsi4ln2_dpu_aclk, dpu_aclk_parents, APMU_LCD_CLK_RES_CTRL5,
923*e371a772SYixun Lan 			   2, 3, BIT(30), 5, 3, BIT(1), 0);
924*e371a772SYixun Lan 
925*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(dpu_aclk, dpu_aclk_parents, APMU_LCD_CLK_RES_CTRL5, 17, 3, BIT(31),
926*e371a772SYixun Lan 			   20, 3, BIT(16), 0);
927*e371a772SYixun Lan 
928*e371a772SYixun Lan static const struct clk_parent_data ufs_aclk_parents[] = {
929*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d6_409p6),
930*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d5_491p52),
931*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d4_614p4),
932*e371a772SYixun Lan 	CCU_PARENT_HW(pll1_d8_307p2),
933*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d4),
934*e371a772SYixun Lan };
935*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(ufs_aclk, ufs_aclk_parents, APMU_UFS_CLK_RES_CTRL, 5, 3, BIT(8),
936*e371a772SYixun Lan 			   2, 3, BIT(1), 0);
937*e371a772SYixun Lan 
938*e371a772SYixun Lan static const struct clk_parent_data edp0_pclk_parents[] = {
939*e371a772SYixun Lan 	CCU_PARENT_HW(lcd_pxclk),
940*e371a772SYixun Lan 	CCU_PARENT_NAME(external_clk),
941*e371a772SYixun Lan };
942*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(edp0_pxclk, edp0_pclk_parents, APMU_LCD_EDP_CTRL, 2, 1, BIT(1), 0);
943*e371a772SYixun Lan 
944*e371a772SYixun Lan static const struct clk_parent_data edp1_pclk_parents[] = {
945*e371a772SYixun Lan 	CCU_PARENT_HW(dsi4ln2_lcd_pxclk),
946*e371a772SYixun Lan 	CCU_PARENT_NAME(external_clk),
947*e371a772SYixun Lan };
948*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(edp1_pxclk, edp1_pclk_parents, APMU_LCD_EDP_CTRL, 18, 1, BIT(17), 0);
949*e371a772SYixun Lan 
950*e371a772SYixun Lan CCU_GATE_DEFINE(pciea_mstr_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_A, BIT(2), 0);
951*e371a772SYixun Lan CCU_GATE_DEFINE(pciea_slv_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_A, BIT(1), 0);
952*e371a772SYixun Lan CCU_GATE_DEFINE(pcieb_mstr_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_B, BIT(2), 0);
953*e371a772SYixun Lan CCU_GATE_DEFINE(pcieb_slv_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_B, BIT(1), 0);
954*e371a772SYixun Lan CCU_GATE_DEFINE(pciec_mstr_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_C, BIT(2), 0);
955*e371a772SYixun Lan CCU_GATE_DEFINE(pciec_slv_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_C, BIT(1), 0);
956*e371a772SYixun Lan CCU_GATE_DEFINE(pcied_mstr_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_D, BIT(2), 0);
957*e371a772SYixun Lan CCU_GATE_DEFINE(pcied_slv_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_D, BIT(1), 0);
958*e371a772SYixun Lan CCU_GATE_DEFINE(pciee_mstr_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_E, BIT(2), 0);
959*e371a772SYixun Lan CCU_GATE_DEFINE(pciee_slv_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_E, BIT(1), 0);
960*e371a772SYixun Lan 
961*e371a772SYixun Lan static const struct clk_parent_data emac_1588_parents[] = {
962*e371a772SYixun Lan 	CCU_PARENT_NAME(vctcxo_24m),
963*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_d24_125),
964*e371a772SYixun Lan };
965*e371a772SYixun Lan 
966*e371a772SYixun Lan CCU_GATE_DEFINE(emac0_bus_clk, CCU_PARENT_HW(axi_clk), APMU_EMAC0_CLK_RES_CTRL, BIT(0), 0);
967*e371a772SYixun Lan CCU_GATE_FLAGS_DEFINE(emac0_ref_clk, CCU_PARENT_HW(pll2_d120_25), APMU_EMAC0_CLK_RES_CTRL,
968*e371a772SYixun Lan 		      BIT(14), true, 0);
969*e371a772SYixun Lan CCU_MUX_DEFINE(emac0_1588_clk, emac_1588_parents, APMU_EMAC0_CLK_RES_CTRL, 15, 1, 0);
970*e371a772SYixun Lan CCU_GATE_DEFINE(emac0_rgmii_tx_clk, CCU_PARENT_HW(pll2_d24_125), APMU_EMAC0_CLK_RES_CTRL,
971*e371a772SYixun Lan 		BIT(8), 0);
972*e371a772SYixun Lan CCU_GATE_DEFINE(emac1_bus_clk, CCU_PARENT_HW(axi_clk), APMU_EMAC1_CLK_RES_CTRL, BIT(0), 0);
973*e371a772SYixun Lan CCU_GATE_FLAGS_DEFINE(emac1_ref_clk, CCU_PARENT_HW(pll2_d120_25), APMU_EMAC1_CLK_RES_CTRL,
974*e371a772SYixun Lan 		      BIT(14), true, 0);
975*e371a772SYixun Lan CCU_MUX_DEFINE(emac1_1588_clk, emac_1588_parents, APMU_EMAC1_CLK_RES_CTRL, 15, 1, 0);
976*e371a772SYixun Lan CCU_GATE_DEFINE(emac1_rgmii_tx_clk, CCU_PARENT_HW(pll2_d24_125), APMU_EMAC1_CLK_RES_CTRL,
977*e371a772SYixun Lan 		BIT(8), 0);
978*e371a772SYixun Lan CCU_GATE_DEFINE(emac2_bus_clk, CCU_PARENT_HW(axi_clk), APMU_EMAC2_CLK_RES_CTRL, BIT(0), 0);
979*e371a772SYixun Lan CCU_GATE_FLAGS_DEFINE(emac2_ref_clk, CCU_PARENT_HW(pll2_d120_25), APMU_EMAC2_CLK_RES_CTRL,
980*e371a772SYixun Lan 		      BIT(14), true, 0);
981*e371a772SYixun Lan CCU_MUX_DEFINE(emac2_1588_clk, emac_1588_parents, APMU_EMAC2_CLK_RES_CTRL, 15, 1, 0);
982*e371a772SYixun Lan CCU_GATE_DEFINE(emac2_rgmii_tx_clk, CCU_PARENT_HW(pll2_d24_125), APMU_EMAC2_CLK_RES_CTRL,
983*e371a772SYixun Lan 		BIT(8), 0);
984*e371a772SYixun Lan 
985*e371a772SYixun Lan static const struct clk_parent_data espi_sclk_src_parents[] = {
986*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_20),
987*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_25),
988*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_33),
989*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_50),
990*e371a772SYixun Lan 	CCU_PARENT_HW(pll2_66),
991*e371a772SYixun Lan };
992*e371a772SYixun Lan CCU_MUX_DEFINE(espi_sclk_src, espi_sclk_src_parents, APMU_ESPI_CLK_RES_CTRL, 4, 3, 0);
993*e371a772SYixun Lan 
994*e371a772SYixun Lan static const struct clk_parent_data espi_sclk_parents[] = {
995*e371a772SYixun Lan 	CCU_PARENT_NAME(external_clk),
996*e371a772SYixun Lan 	CCU_PARENT_HW(espi_sclk_src),
997*e371a772SYixun Lan };
998*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(espi_sclk, espi_sclk_parents, APMU_ESPI_CLK_RES_CTRL, 7, 1, BIT(3), 0);
999*e371a772SYixun Lan 
1000*e371a772SYixun Lan CCU_GATE_DEFINE(espi_mclk, CCU_PARENT_HW(axi_clk), APMU_ESPI_CLK_RES_CTRL, BIT(1), 0);
1001*e371a772SYixun Lan 
1002*e371a772SYixun Lan CCU_FACTOR_DEFINE(cam_src1_clk, CCU_PARENT_HW(pll1_d6_409p6), 15, 1);
1003*e371a772SYixun Lan CCU_FACTOR_DEFINE(cam_src2_clk, CCU_PARENT_HW(pll2_d5), 25, 1);
1004*e371a772SYixun Lan CCU_FACTOR_DEFINE(cam_src3_clk, CCU_PARENT_HW(pll2_d6), 20, 1);
1005*e371a772SYixun Lan CCU_FACTOR_DEFINE(cam_src4_clk, CCU_PARENT_HW(pll1_d6_409p6), 16, 1);
1006*e371a772SYixun Lan 
1007*e371a772SYixun Lan static const struct clk_parent_data isim_vclk_parents[] = {
1008*e371a772SYixun Lan 	CCU_PARENT_HW(cam_src1_clk),
1009*e371a772SYixun Lan 	CCU_PARENT_HW(cam_src2_clk),
1010*e371a772SYixun Lan 	CCU_PARENT_HW(cam_src3_clk),
1011*e371a772SYixun Lan 	CCU_PARENT_HW(cam_src4_clk),
1012*e371a772SYixun Lan };
1013*e371a772SYixun Lan CCU_MUX_DIV_GATE_DEFINE(isim_vclk_out0, isim_vclk_parents, APMU_SNR_ISIM_VCLK_CTRL, 3, 4,
1014*e371a772SYixun Lan 			1, 2, BIT(0), 0);
1015*e371a772SYixun Lan CCU_MUX_DIV_GATE_DEFINE(isim_vclk_out1, isim_vclk_parents, APMU_SNR_ISIM_VCLK_CTRL, 11, 4,
1016*e371a772SYixun Lan 			9, 2, BIT(8), 0);
1017*e371a772SYixun Lan CCU_MUX_DIV_GATE_DEFINE(isim_vclk_out2, isim_vclk_parents, APMU_SNR_ISIM_VCLK_CTRL, 19, 4,
1018*e371a772SYixun Lan 			17, 2, BIT(16), 0);
1019*e371a772SYixun Lan CCU_MUX_DIV_GATE_DEFINE(isim_vclk_out3, isim_vclk_parents, APMU_SNR_ISIM_VCLK_CTRL, 27, 4,
1020*e371a772SYixun Lan 			25, 2, BIT(24), 0);
1021*e371a772SYixun Lan /* APMU clocks end */
1022*e371a772SYixun Lan 
1023*e371a772SYixun Lan /* DCIU clocks start */
1024*e371a772SYixun Lan CCU_GATE_DEFINE(hdma_clk, CCU_PARENT_HW(axi_clk), DCIU_DMASYS_CLK_EN, BIT(0), 0);
1025*e371a772SYixun Lan CCU_GATE_DEFINE(dma350_clk, CCU_PARENT_HW(axi_clk), DCIU_DMASYS_SDMA_CLK_EN, BIT(0), 0);
1026*e371a772SYixun Lan CCU_GATE_DEFINE(c2_tcm_pipe_clk, CCU_PARENT_HW(axi_clk), DCIU_C2_TCM_PIPE_CLK, BIT(0), 0);
1027*e371a772SYixun Lan CCU_GATE_DEFINE(c3_tcm_pipe_clk, CCU_PARENT_HW(axi_clk), DCIU_C3_TCM_PIPE_CLK, BIT(0), 0);
1028*e371a772SYixun Lan /* DCIU clocks end */
1029*e371a772SYixun Lan 
1030*e371a772SYixun Lan static struct clk_hw *k3_ccu_pll_hws[] = {
1031*e371a772SYixun Lan 	[CLK_PLL1]		= &pll1.common.hw,
1032*e371a772SYixun Lan 	[CLK_PLL2]		= &pll2.common.hw,
1033*e371a772SYixun Lan 	[CLK_PLL3]		= &pll3.common.hw,
1034*e371a772SYixun Lan 	[CLK_PLL4]		= &pll4.common.hw,
1035*e371a772SYixun Lan 	[CLK_PLL5]		= &pll5.common.hw,
1036*e371a772SYixun Lan 	[CLK_PLL6]		= &pll6.common.hw,
1037*e371a772SYixun Lan 	[CLK_PLL7]		= &pll7.common.hw,
1038*e371a772SYixun Lan 	[CLK_PLL8]		= &pll8.common.hw,
1039*e371a772SYixun Lan 	[CLK_PLL1_D2]		= &pll1_d2.common.hw,
1040*e371a772SYixun Lan 	[CLK_PLL1_D3]		= &pll1_d3.common.hw,
1041*e371a772SYixun Lan 	[CLK_PLL1_D4]		= &pll1_d4.common.hw,
1042*e371a772SYixun Lan 	[CLK_PLL1_D5]		= &pll1_d5.common.hw,
1043*e371a772SYixun Lan 	[CLK_PLL1_D6]		= &pll1_d6.common.hw,
1044*e371a772SYixun Lan 	[CLK_PLL1_D7]		= &pll1_d7.common.hw,
1045*e371a772SYixun Lan 	[CLK_PLL1_D8]		= &pll1_d8.common.hw,
1046*e371a772SYixun Lan 	[CLK_PLL1_DX]		= &pll1_dx.common.hw,
1047*e371a772SYixun Lan 	[CLK_PLL1_D64]		= &pll1_d64_38p4.common.hw,
1048*e371a772SYixun Lan 	[CLK_PLL1_D10_AUD]	= &pll1_aud_245p7.common.hw,
1049*e371a772SYixun Lan 	[CLK_PLL1_D100_AUD]	= &pll1_aud_24p5.common.hw,
1050*e371a772SYixun Lan 	[CLK_PLL2_D1]		= &pll2_d1.common.hw,
1051*e371a772SYixun Lan 	[CLK_PLL2_D2]		= &pll2_d2.common.hw,
1052*e371a772SYixun Lan 	[CLK_PLL2_D3]		= &pll2_d3.common.hw,
1053*e371a772SYixun Lan 	[CLK_PLL2_D4]		= &pll2_d4.common.hw,
1054*e371a772SYixun Lan 	[CLK_PLL2_D5]		= &pll2_d5.common.hw,
1055*e371a772SYixun Lan 	[CLK_PLL2_D6]		= &pll2_d6.common.hw,
1056*e371a772SYixun Lan 	[CLK_PLL2_D7]		= &pll2_d7.common.hw,
1057*e371a772SYixun Lan 	[CLK_PLL2_D8]		= &pll2_d8.common.hw,
1058*e371a772SYixun Lan 	[CLK_PLL2_66]		= &pll2_66.common.hw,
1059*e371a772SYixun Lan 	[CLK_PLL2_33]		= &pll2_33.common.hw,
1060*e371a772SYixun Lan 	[CLK_PLL2_50]		= &pll2_50.common.hw,
1061*e371a772SYixun Lan 	[CLK_PLL2_25]		= &pll2_25.common.hw,
1062*e371a772SYixun Lan 	[CLK_PLL2_20]		= &pll2_20.common.hw,
1063*e371a772SYixun Lan 	[CLK_PLL2_D24_125]	= &pll2_d24_125.common.hw,
1064*e371a772SYixun Lan 	[CLK_PLL2_D120_25]	= &pll2_d120_25.common.hw,
1065*e371a772SYixun Lan 	[CLK_PLL3_D1]		= &pll3_d1.common.hw,
1066*e371a772SYixun Lan 	[CLK_PLL3_D2]		= &pll3_d2.common.hw,
1067*e371a772SYixun Lan 	[CLK_PLL3_D3]		= &pll3_d3.common.hw,
1068*e371a772SYixun Lan 	[CLK_PLL3_D4]		= &pll3_d4.common.hw,
1069*e371a772SYixun Lan 	[CLK_PLL3_D5]		= &pll3_d5.common.hw,
1070*e371a772SYixun Lan 	[CLK_PLL3_D6]		= &pll3_d6.common.hw,
1071*e371a772SYixun Lan 	[CLK_PLL3_D7]		= &pll3_d7.common.hw,
1072*e371a772SYixun Lan 	[CLK_PLL3_D8]		= &pll3_d8.common.hw,
1073*e371a772SYixun Lan 	[CLK_PLL4_D1]		= &pll4_d1.common.hw,
1074*e371a772SYixun Lan 	[CLK_PLL4_D2]		= &pll4_d2.common.hw,
1075*e371a772SYixun Lan 	[CLK_PLL4_D3]		= &pll4_d3.common.hw,
1076*e371a772SYixun Lan 	[CLK_PLL4_D4]		= &pll4_d4.common.hw,
1077*e371a772SYixun Lan 	[CLK_PLL4_D5]		= &pll4_d5.common.hw,
1078*e371a772SYixun Lan 	[CLK_PLL4_D6]		= &pll4_d6.common.hw,
1079*e371a772SYixun Lan 	[CLK_PLL4_D7]		= &pll4_d7.common.hw,
1080*e371a772SYixun Lan 	[CLK_PLL4_D8]		= &pll4_d8.common.hw,
1081*e371a772SYixun Lan 	[CLK_PLL5_D1]		= &pll5_d1.common.hw,
1082*e371a772SYixun Lan 	[CLK_PLL5_D2]		= &pll5_d2.common.hw,
1083*e371a772SYixun Lan 	[CLK_PLL5_D3]		= &pll5_d3.common.hw,
1084*e371a772SYixun Lan 	[CLK_PLL5_D4]		= &pll5_d4.common.hw,
1085*e371a772SYixun Lan 	[CLK_PLL5_D5]		= &pll5_d5.common.hw,
1086*e371a772SYixun Lan 	[CLK_PLL5_D6]		= &pll5_d6.common.hw,
1087*e371a772SYixun Lan 	[CLK_PLL5_D7]		= &pll5_d7.common.hw,
1088*e371a772SYixun Lan 	[CLK_PLL5_D8]		= &pll5_d8.common.hw,
1089*e371a772SYixun Lan 	[CLK_PLL6_D1]		= &pll6_d1.common.hw,
1090*e371a772SYixun Lan 	[CLK_PLL6_D2]		= &pll6_d2.common.hw,
1091*e371a772SYixun Lan 	[CLK_PLL6_D3]		= &pll6_d3.common.hw,
1092*e371a772SYixun Lan 	[CLK_PLL6_D4]		= &pll6_d4.common.hw,
1093*e371a772SYixun Lan 	[CLK_PLL6_D5]		= &pll6_d5.common.hw,
1094*e371a772SYixun Lan 	[CLK_PLL6_D6]		= &pll6_d6.common.hw,
1095*e371a772SYixun Lan 	[CLK_PLL6_D7]		= &pll6_d7.common.hw,
1096*e371a772SYixun Lan 	[CLK_PLL6_D8]		= &pll6_d8.common.hw,
1097*e371a772SYixun Lan 	[CLK_PLL6_80]		= &pll6_80.common.hw,
1098*e371a772SYixun Lan 	[CLK_PLL6_40]		= &pll6_40.common.hw,
1099*e371a772SYixun Lan 	[CLK_PLL6_20]		= &pll6_20.common.hw,
1100*e371a772SYixun Lan 	[CLK_PLL7_D1]		= &pll7_d1.common.hw,
1101*e371a772SYixun Lan 	[CLK_PLL7_D2]		= &pll7_d2.common.hw,
1102*e371a772SYixun Lan 	[CLK_PLL7_D3]		= &pll7_d3.common.hw,
1103*e371a772SYixun Lan 	[CLK_PLL7_D4]		= &pll7_d4.common.hw,
1104*e371a772SYixun Lan 	[CLK_PLL7_D5]		= &pll7_d5.common.hw,
1105*e371a772SYixun Lan 	[CLK_PLL7_D6]		= &pll7_d6.common.hw,
1106*e371a772SYixun Lan 	[CLK_PLL7_D7]		= &pll7_d7.common.hw,
1107*e371a772SYixun Lan 	[CLK_PLL7_D8]		= &pll7_d8.common.hw,
1108*e371a772SYixun Lan 	[CLK_PLL8_D1]		= &pll8_d1.common.hw,
1109*e371a772SYixun Lan 	[CLK_PLL8_D2]		= &pll8_d2.common.hw,
1110*e371a772SYixun Lan 	[CLK_PLL8_D3]		= &pll8_d3.common.hw,
1111*e371a772SYixun Lan 	[CLK_PLL8_D4]		= &pll8_d4.common.hw,
1112*e371a772SYixun Lan 	[CLK_PLL8_D5]		= &pll8_d5.common.hw,
1113*e371a772SYixun Lan 	[CLK_PLL8_D6]		= &pll8_d6.common.hw,
1114*e371a772SYixun Lan 	[CLK_PLL8_D7]		= &pll8_d7.common.hw,
1115*e371a772SYixun Lan 	[CLK_PLL8_D8]		= &pll8_d8.common.hw,
1116*e371a772SYixun Lan };
1117*e371a772SYixun Lan 
1118*e371a772SYixun Lan static const struct spacemit_ccu_data k3_ccu_pll_data = {
1119*e371a772SYixun Lan 	/* The APBS CCU implements PLLs, but no resets */
1120*e371a772SYixun Lan 	.hws		= k3_ccu_pll_hws,
1121*e371a772SYixun Lan 	.num		= ARRAY_SIZE(k3_ccu_pll_hws),
1122*e371a772SYixun Lan };
1123*e371a772SYixun Lan 
1124*e371a772SYixun Lan static struct clk_hw *k3_ccu_mpmu_hws[] = {
1125*e371a772SYixun Lan 	[CLK_MPMU_PLL1_307P2]		= &pll1_d8_307p2.common.hw,
1126*e371a772SYixun Lan 	[CLK_MPMU_PLL1_76P8]		= &pll1_d32_76p8.common.hw,
1127*e371a772SYixun Lan 	[CLK_MPMU_PLL1_61P44]		= &pll1_d40_61p44.common.hw,
1128*e371a772SYixun Lan 	[CLK_MPMU_PLL1_153P6]		= &pll1_d16_153p6.common.hw,
1129*e371a772SYixun Lan 	[CLK_MPMU_PLL1_102P4]		= &pll1_d24_102p4.common.hw,
1130*e371a772SYixun Lan 	[CLK_MPMU_PLL1_51P2]		= &pll1_d48_51p2.common.hw,
1131*e371a772SYixun Lan 	[CLK_MPMU_PLL1_51P2_AP]		= &pll1_d48_51p2_ap.common.hw,
1132*e371a772SYixun Lan 	[CLK_MPMU_PLL1_57P6]		= &pll1_m3d128_57p6.common.hw,
1133*e371a772SYixun Lan 	[CLK_MPMU_PLL1_25P6]		= &pll1_d96_25p6.common.hw,
1134*e371a772SYixun Lan 	[CLK_MPMU_PLL1_12P8]		= &pll1_d192_12p8.common.hw,
1135*e371a772SYixun Lan 	[CLK_MPMU_PLL1_12P8_WDT]	= &pll1_d192_12p8_wdt.common.hw,
1136*e371a772SYixun Lan 	[CLK_MPMU_PLL1_6P4]		= &pll1_d384_6p4.common.hw,
1137*e371a772SYixun Lan 	[CLK_MPMU_PLL1_3P2]		= &pll1_d768_3p2.common.hw,
1138*e371a772SYixun Lan 	[CLK_MPMU_PLL1_1P6]		= &pll1_d1536_1p6.common.hw,
1139*e371a772SYixun Lan 	[CLK_MPMU_PLL1_0P8]		= &pll1_d3072_0p8.common.hw,
1140*e371a772SYixun Lan 	[CLK_MPMU_PLL1_409P6]		= &pll1_d6_409p6.common.hw,
1141*e371a772SYixun Lan 	[CLK_MPMU_PLL1_204P8]		= &pll1_d12_204p8.common.hw,
1142*e371a772SYixun Lan 	[CLK_MPMU_PLL1_491]		= &pll1_d5_491p52.common.hw,
1143*e371a772SYixun Lan 	[CLK_MPMU_PLL1_245P76]		= &pll1_d10_245p76.common.hw,
1144*e371a772SYixun Lan 	[CLK_MPMU_PLL1_614]		= &pll1_d4_614p4.common.hw,
1145*e371a772SYixun Lan 	[CLK_MPMU_PLL1_47P26]		= &pll1_d52_47p26.common.hw,
1146*e371a772SYixun Lan 	[CLK_MPMU_PLL1_31P5]		= &pll1_d78_31p5.common.hw,
1147*e371a772SYixun Lan 	[CLK_MPMU_PLL1_819]		= &pll1_d3_819p2.common.hw,
1148*e371a772SYixun Lan 	[CLK_MPMU_PLL1_1228]		= &pll1_d2_1228p8.common.hw,
1149*e371a772SYixun Lan 	[CLK_MPMU_APB]			= &apb_clk.common.hw,
1150*e371a772SYixun Lan 	[CLK_MPMU_SLOW_UART]		= &slow_uart.common.hw,
1151*e371a772SYixun Lan 	[CLK_MPMU_SLOW_UART1]		= &slow_uart1_14p74.common.hw,
1152*e371a772SYixun Lan 	[CLK_MPMU_SLOW_UART2]		= &slow_uart2_48.common.hw,
1153*e371a772SYixun Lan 	[CLK_MPMU_WDT]			= &wdt_clk.common.hw,
1154*e371a772SYixun Lan 	[CLK_MPMU_WDT_BUS]		= &wdt_bus_clk.common.hw,
1155*e371a772SYixun Lan 	[CLK_MPMU_RIPC]			= &r_ipc_clk.common.hw,
1156*e371a772SYixun Lan 	[CLK_MPMU_I2S_153P6]		= &i2s_153p6.common.hw,
1157*e371a772SYixun Lan 	[CLK_MPMU_I2S_153P6_BASE]	= &i2s_153p6_base.common.hw,
1158*e371a772SYixun Lan 	[CLK_MPMU_I2S_SYSCLK_SRC]	= &i2s_sysclk_src.common.hw,
1159*e371a772SYixun Lan 	[CLK_MPMU_I2S1_SYSCLK]		= &i2s1_sysclk.common.hw,
1160*e371a772SYixun Lan 	[CLK_MPMU_I2S_BCLK]		= &i2s_bclk.common.hw,
1161*e371a772SYixun Lan 	[CLK_MPMU_I2S0_SYSCLK_SEL]	= &i2s0_sysclk_sel.common.hw,
1162*e371a772SYixun Lan 	[CLK_MPMU_I2S2_SYSCLK_SEL]	= &i2s2_sysclk_sel.common.hw,
1163*e371a772SYixun Lan 	[CLK_MPMU_I2S3_SYSCLK_SEL]	= &i2s3_sysclk_sel.common.hw,
1164*e371a772SYixun Lan 	[CLK_MPMU_I2S4_SYSCLK_SEL]	= &i2s4_sysclk_sel.common.hw,
1165*e371a772SYixun Lan 	[CLK_MPMU_I2S5_SYSCLK_SEL]	= &i2s5_sysclk_sel.common.hw,
1166*e371a772SYixun Lan 	[CLK_MPMU_I2S0_SYSCLK_DIV]	= &i2s0_sysclk_div.common.hw,
1167*e371a772SYixun Lan 	[CLK_MPMU_I2S2_SYSCLK_DIV]	= &i2s2_sysclk_div.common.hw,
1168*e371a772SYixun Lan 	[CLK_MPMU_I2S3_SYSCLK_DIV]	= &i2s3_sysclk_div.common.hw,
1169*e371a772SYixun Lan 	[CLK_MPMU_I2S4_SYSCLK_DIV]	= &i2s4_sysclk_div.common.hw,
1170*e371a772SYixun Lan 	[CLK_MPMU_I2S5_SYSCLK_DIV]	= &i2s5_sysclk_div.common.hw,
1171*e371a772SYixun Lan 	[CLK_MPMU_I2S0_SYSCLK]		= &i2s0_sysclk.common.hw,
1172*e371a772SYixun Lan 	[CLK_MPMU_I2S2_SYSCLK]		= &i2s2_sysclk.common.hw,
1173*e371a772SYixun Lan 	[CLK_MPMU_I2S3_SYSCLK]		= &i2s3_sysclk.common.hw,
1174*e371a772SYixun Lan 	[CLK_MPMU_I2S4_SYSCLK]		= &i2s4_sysclk.common.hw,
1175*e371a772SYixun Lan 	[CLK_MPMU_I2S5_SYSCLK]		= &i2s5_sysclk.common.hw,
1176*e371a772SYixun Lan };
1177*e371a772SYixun Lan 
1178*e371a772SYixun Lan static const struct spacemit_ccu_data k3_ccu_mpmu_data = {
1179*e371a772SYixun Lan 	.reset_name	= "k3-mpmu-reset",
1180*e371a772SYixun Lan 	.hws		= k3_ccu_mpmu_hws,
1181*e371a772SYixun Lan 	.num		= ARRAY_SIZE(k3_ccu_mpmu_hws),
1182*e371a772SYixun Lan };
1183*e371a772SYixun Lan 
1184*e371a772SYixun Lan static struct clk_hw *k3_ccu_apbc_hws[] = {
1185*e371a772SYixun Lan 	[CLK_APBC_UART0]		= &uart0_clk.common.hw,
1186*e371a772SYixun Lan 	[CLK_APBC_UART2]		= &uart2_clk.common.hw,
1187*e371a772SYixun Lan 	[CLK_APBC_UART3]		= &uart3_clk.common.hw,
1188*e371a772SYixun Lan 	[CLK_APBC_UART4]		= &uart4_clk.common.hw,
1189*e371a772SYixun Lan 	[CLK_APBC_UART5]		= &uart5_clk.common.hw,
1190*e371a772SYixun Lan 	[CLK_APBC_UART6]		= &uart6_clk.common.hw,
1191*e371a772SYixun Lan 	[CLK_APBC_UART7]		= &uart7_clk.common.hw,
1192*e371a772SYixun Lan 	[CLK_APBC_UART8]		= &uart8_clk.common.hw,
1193*e371a772SYixun Lan 	[CLK_APBC_UART9]		= &uart9_clk.common.hw,
1194*e371a772SYixun Lan 	[CLK_APBC_UART10]		= &uart10_clk.common.hw,
1195*e371a772SYixun Lan 	[CLK_APBC_UART0_BUS]		= &uart0_bus_clk.common.hw,
1196*e371a772SYixun Lan 	[CLK_APBC_UART2_BUS]		= &uart2_bus_clk.common.hw,
1197*e371a772SYixun Lan 	[CLK_APBC_UART3_BUS]		= &uart3_bus_clk.common.hw,
1198*e371a772SYixun Lan 	[CLK_APBC_UART4_BUS]		= &uart4_bus_clk.common.hw,
1199*e371a772SYixun Lan 	[CLK_APBC_UART5_BUS]		= &uart5_bus_clk.common.hw,
1200*e371a772SYixun Lan 	[CLK_APBC_UART6_BUS]		= &uart6_bus_clk.common.hw,
1201*e371a772SYixun Lan 	[CLK_APBC_UART7_BUS]		= &uart7_bus_clk.common.hw,
1202*e371a772SYixun Lan 	[CLK_APBC_UART8_BUS]		= &uart8_bus_clk.common.hw,
1203*e371a772SYixun Lan 	[CLK_APBC_UART9_BUS]		= &uart9_bus_clk.common.hw,
1204*e371a772SYixun Lan 	[CLK_APBC_UART10_BUS]		= &uart10_bus_clk.common.hw,
1205*e371a772SYixun Lan 	[CLK_APBC_GPIO]			= &gpio_clk.common.hw,
1206*e371a772SYixun Lan 	[CLK_APBC_GPIO_BUS]		= &gpio_bus_clk.common.hw,
1207*e371a772SYixun Lan 	[CLK_APBC_PWM0]			= &pwm0_clk.common.hw,
1208*e371a772SYixun Lan 	[CLK_APBC_PWM1]			= &pwm1_clk.common.hw,
1209*e371a772SYixun Lan 	[CLK_APBC_PWM2]			= &pwm2_clk.common.hw,
1210*e371a772SYixun Lan 	[CLK_APBC_PWM3]			= &pwm3_clk.common.hw,
1211*e371a772SYixun Lan 	[CLK_APBC_PWM4]			= &pwm4_clk.common.hw,
1212*e371a772SYixun Lan 	[CLK_APBC_PWM5]			= &pwm5_clk.common.hw,
1213*e371a772SYixun Lan 	[CLK_APBC_PWM6]			= &pwm6_clk.common.hw,
1214*e371a772SYixun Lan 	[CLK_APBC_PWM7]			= &pwm7_clk.common.hw,
1215*e371a772SYixun Lan 	[CLK_APBC_PWM8]			= &pwm8_clk.common.hw,
1216*e371a772SYixun Lan 	[CLK_APBC_PWM9]			= &pwm9_clk.common.hw,
1217*e371a772SYixun Lan 	[CLK_APBC_PWM10]		= &pwm10_clk.common.hw,
1218*e371a772SYixun Lan 	[CLK_APBC_PWM11]		= &pwm11_clk.common.hw,
1219*e371a772SYixun Lan 	[CLK_APBC_PWM12]		= &pwm12_clk.common.hw,
1220*e371a772SYixun Lan 	[CLK_APBC_PWM13]		= &pwm13_clk.common.hw,
1221*e371a772SYixun Lan 	[CLK_APBC_PWM14]		= &pwm14_clk.common.hw,
1222*e371a772SYixun Lan 	[CLK_APBC_PWM15]		= &pwm15_clk.common.hw,
1223*e371a772SYixun Lan 	[CLK_APBC_PWM16]		= &pwm16_clk.common.hw,
1224*e371a772SYixun Lan 	[CLK_APBC_PWM17]		= &pwm17_clk.common.hw,
1225*e371a772SYixun Lan 	[CLK_APBC_PWM18]		= &pwm18_clk.common.hw,
1226*e371a772SYixun Lan 	[CLK_APBC_PWM19]		= &pwm19_clk.common.hw,
1227*e371a772SYixun Lan 	[CLK_APBC_PWM0_BUS]		= &pwm0_bus_clk.common.hw,
1228*e371a772SYixun Lan 	[CLK_APBC_PWM1_BUS]		= &pwm1_bus_clk.common.hw,
1229*e371a772SYixun Lan 	[CLK_APBC_PWM2_BUS]		= &pwm2_bus_clk.common.hw,
1230*e371a772SYixun Lan 	[CLK_APBC_PWM3_BUS]		= &pwm3_bus_clk.common.hw,
1231*e371a772SYixun Lan 	[CLK_APBC_PWM4_BUS]		= &pwm4_bus_clk.common.hw,
1232*e371a772SYixun Lan 	[CLK_APBC_PWM5_BUS]		= &pwm5_bus_clk.common.hw,
1233*e371a772SYixun Lan 	[CLK_APBC_PWM6_BUS]		= &pwm6_bus_clk.common.hw,
1234*e371a772SYixun Lan 	[CLK_APBC_PWM7_BUS]		= &pwm7_bus_clk.common.hw,
1235*e371a772SYixun Lan 	[CLK_APBC_PWM8_BUS]		= &pwm8_bus_clk.common.hw,
1236*e371a772SYixun Lan 	[CLK_APBC_PWM9_BUS]		= &pwm9_bus_clk.common.hw,
1237*e371a772SYixun Lan 	[CLK_APBC_PWM10_BUS]		= &pwm10_bus_clk.common.hw,
1238*e371a772SYixun Lan 	[CLK_APBC_PWM11_BUS]		= &pwm11_bus_clk.common.hw,
1239*e371a772SYixun Lan 	[CLK_APBC_PWM12_BUS]		= &pwm12_bus_clk.common.hw,
1240*e371a772SYixun Lan 	[CLK_APBC_PWM13_BUS]		= &pwm13_bus_clk.common.hw,
1241*e371a772SYixun Lan 	[CLK_APBC_PWM14_BUS]		= &pwm14_bus_clk.common.hw,
1242*e371a772SYixun Lan 	[CLK_APBC_PWM15_BUS]		= &pwm15_bus_clk.common.hw,
1243*e371a772SYixun Lan 	[CLK_APBC_PWM16_BUS]		= &pwm16_bus_clk.common.hw,
1244*e371a772SYixun Lan 	[CLK_APBC_PWM17_BUS]		= &pwm17_bus_clk.common.hw,
1245*e371a772SYixun Lan 	[CLK_APBC_PWM18_BUS]		= &pwm18_bus_clk.common.hw,
1246*e371a772SYixun Lan 	[CLK_APBC_PWM19_BUS]		= &pwm19_bus_clk.common.hw,
1247*e371a772SYixun Lan 	[CLK_APBC_SPI0_I2S_BCLK]	= &spi0_i2s_bclk.common.hw,
1248*e371a772SYixun Lan 	[CLK_APBC_SPI1_I2S_BCLK]	= &spi1_i2s_bclk.common.hw,
1249*e371a772SYixun Lan 	[CLK_APBC_SPI3_I2S_BCLK]	= &spi3_i2s_bclk.common.hw,
1250*e371a772SYixun Lan 	[CLK_APBC_SPI0]			= &spi0_clk.common.hw,
1251*e371a772SYixun Lan 	[CLK_APBC_SPI1]			= &spi1_clk.common.hw,
1252*e371a772SYixun Lan 	[CLK_APBC_SPI3]			= &spi3_clk.common.hw,
1253*e371a772SYixun Lan 	[CLK_APBC_SPI0_BUS]		= &spi0_bus_clk.common.hw,
1254*e371a772SYixun Lan 	[CLK_APBC_SPI1_BUS]		= &spi1_bus_clk.common.hw,
1255*e371a772SYixun Lan 	[CLK_APBC_SPI3_BUS]		= &spi3_bus_clk.common.hw,
1256*e371a772SYixun Lan 	[CLK_APBC_RTC]			= &rtc_clk.common.hw,
1257*e371a772SYixun Lan 	[CLK_APBC_RTC_BUS]		= &rtc_bus_clk.common.hw,
1258*e371a772SYixun Lan 	[CLK_APBC_TWSI0]		= &twsi0_clk.common.hw,
1259*e371a772SYixun Lan 	[CLK_APBC_TWSI1]		= &twsi1_clk.common.hw,
1260*e371a772SYixun Lan 	[CLK_APBC_TWSI2]		= &twsi2_clk.common.hw,
1261*e371a772SYixun Lan 	[CLK_APBC_TWSI4]		= &twsi4_clk.common.hw,
1262*e371a772SYixun Lan 	[CLK_APBC_TWSI5]		= &twsi5_clk.common.hw,
1263*e371a772SYixun Lan 	[CLK_APBC_TWSI6]		= &twsi6_clk.common.hw,
1264*e371a772SYixun Lan 	[CLK_APBC_TWSI8]		= &twsi8_clk.common.hw,
1265*e371a772SYixun Lan 	[CLK_APBC_TWSI0_BUS]		= &twsi0_bus_clk.common.hw,
1266*e371a772SYixun Lan 	[CLK_APBC_TWSI1_BUS]		= &twsi1_bus_clk.common.hw,
1267*e371a772SYixun Lan 	[CLK_APBC_TWSI2_BUS]		= &twsi2_bus_clk.common.hw,
1268*e371a772SYixun Lan 	[CLK_APBC_TWSI4_BUS]		= &twsi4_bus_clk.common.hw,
1269*e371a772SYixun Lan 	[CLK_APBC_TWSI5_BUS]		= &twsi5_bus_clk.common.hw,
1270*e371a772SYixun Lan 	[CLK_APBC_TWSI6_BUS]		= &twsi6_bus_clk.common.hw,
1271*e371a772SYixun Lan 	[CLK_APBC_TWSI8_BUS]		= &twsi8_bus_clk.common.hw,
1272*e371a772SYixun Lan 	[CLK_APBC_TIMERS0]		= &timers0_clk.common.hw,
1273*e371a772SYixun Lan 	[CLK_APBC_TIMERS1]		= &timers1_clk.common.hw,
1274*e371a772SYixun Lan 	[CLK_APBC_TIMERS2]		= &timers2_clk.common.hw,
1275*e371a772SYixun Lan 	[CLK_APBC_TIMERS3]		= &timers3_clk.common.hw,
1276*e371a772SYixun Lan 	[CLK_APBC_TIMERS4]		= &timers4_clk.common.hw,
1277*e371a772SYixun Lan 	[CLK_APBC_TIMERS5]		= &timers5_clk.common.hw,
1278*e371a772SYixun Lan 	[CLK_APBC_TIMERS6]		= &timers6_clk.common.hw,
1279*e371a772SYixun Lan 	[CLK_APBC_TIMERS7]		= &timers7_clk.common.hw,
1280*e371a772SYixun Lan 	[CLK_APBC_TIMERS0_BUS]		= &timers0_bus_clk.common.hw,
1281*e371a772SYixun Lan 	[CLK_APBC_TIMERS1_BUS]		= &timers1_bus_clk.common.hw,
1282*e371a772SYixun Lan 	[CLK_APBC_TIMERS2_BUS]		= &timers2_bus_clk.common.hw,
1283*e371a772SYixun Lan 	[CLK_APBC_TIMERS3_BUS]		= &timers3_bus_clk.common.hw,
1284*e371a772SYixun Lan 	[CLK_APBC_TIMERS4_BUS]		= &timers4_bus_clk.common.hw,
1285*e371a772SYixun Lan 	[CLK_APBC_TIMERS5_BUS]		= &timers5_bus_clk.common.hw,
1286*e371a772SYixun Lan 	[CLK_APBC_TIMERS6_BUS]		= &timers6_bus_clk.common.hw,
1287*e371a772SYixun Lan 	[CLK_APBC_TIMERS7_BUS]		= &timers7_bus_clk.common.hw,
1288*e371a772SYixun Lan 	[CLK_APBC_AIB]			= &aib_clk.common.hw,
1289*e371a772SYixun Lan 	[CLK_APBC_AIB_BUS]		= &aib_bus_clk.common.hw,
1290*e371a772SYixun Lan 	[CLK_APBC_ONEWIRE]		= &onewire_clk.common.hw,
1291*e371a772SYixun Lan 	[CLK_APBC_ONEWIRE_BUS]		= &onewire_bus_clk.common.hw,
1292*e371a772SYixun Lan 	[CLK_APBC_I2S0_BCLK]		= &i2s0_i2s_bclk.common.hw,
1293*e371a772SYixun Lan 	[CLK_APBC_I2S1_BCLK]		= &i2s1_i2s_bclk.common.hw,
1294*e371a772SYixun Lan 	[CLK_APBC_I2S2_BCLK]		= &i2s2_i2s_bclk.common.hw,
1295*e371a772SYixun Lan 	[CLK_APBC_I2S3_BCLK]		= &i2s3_i2s_bclk.common.hw,
1296*e371a772SYixun Lan 	[CLK_APBC_I2S4_BCLK]		= &i2s4_i2s_bclk.common.hw,
1297*e371a772SYixun Lan 	[CLK_APBC_I2S5_BCLK]		= &i2s5_i2s_bclk.common.hw,
1298*e371a772SYixun Lan 	[CLK_APBC_I2S0]			= &i2s0_clk.common.hw,
1299*e371a772SYixun Lan 	[CLK_APBC_I2S1]			= &i2s1_clk.common.hw,
1300*e371a772SYixun Lan 	[CLK_APBC_I2S2]			= &i2s2_clk.common.hw,
1301*e371a772SYixun Lan 	[CLK_APBC_I2S3]			= &i2s3_clk.common.hw,
1302*e371a772SYixun Lan 	[CLK_APBC_I2S4]			= &i2s4_clk.common.hw,
1303*e371a772SYixun Lan 	[CLK_APBC_I2S5]			= &i2s5_clk.common.hw,
1304*e371a772SYixun Lan 	[CLK_APBC_I2S0_BUS]		= &i2s0_bus_clk.common.hw,
1305*e371a772SYixun Lan 	[CLK_APBC_I2S1_BUS]		= &i2s1_bus_clk.common.hw,
1306*e371a772SYixun Lan 	[CLK_APBC_I2S2_BUS]		= &i2s2_bus_clk.common.hw,
1307*e371a772SYixun Lan 	[CLK_APBC_I2S3_BUS]		= &i2s3_bus_clk.common.hw,
1308*e371a772SYixun Lan 	[CLK_APBC_I2S4_BUS]		= &i2s4_bus_clk.common.hw,
1309*e371a772SYixun Lan 	[CLK_APBC_I2S5_BUS]		= &i2s5_bus_clk.common.hw,
1310*e371a772SYixun Lan 	[CLK_APBC_DRO]			= &dro_clk.common.hw,
1311*e371a772SYixun Lan 	[CLK_APBC_IR0]			= &ir0_clk.common.hw,
1312*e371a772SYixun Lan 	[CLK_APBC_IR1]			= &ir1_clk.common.hw,
1313*e371a772SYixun Lan 	[CLK_APBC_TSEN]			= &tsen_clk.common.hw,
1314*e371a772SYixun Lan 	[CLK_APBC_TSEN_BUS]		= &tsen_bus_clk.common.hw,
1315*e371a772SYixun Lan 	[CLK_APBC_IPC_AP2RCPU]		= &ipc_ap2rcpu_clk.common.hw,
1316*e371a772SYixun Lan 	[CLK_APBC_IPC_AP2RCPU_BUS]	= &ipc_ap2rcpu_bus_clk.common.hw,
1317*e371a772SYixun Lan 	[CLK_APBC_CAN0]			= &can0_clk.common.hw,
1318*e371a772SYixun Lan 	[CLK_APBC_CAN1]			= &can1_clk.common.hw,
1319*e371a772SYixun Lan 	[CLK_APBC_CAN2]			= &can2_clk.common.hw,
1320*e371a772SYixun Lan 	[CLK_APBC_CAN3]			= &can3_clk.common.hw,
1321*e371a772SYixun Lan 	[CLK_APBC_CAN4]			= &can4_clk.common.hw,
1322*e371a772SYixun Lan 	[CLK_APBC_CAN0_BUS]		= &can0_bus_clk.common.hw,
1323*e371a772SYixun Lan 	[CLK_APBC_CAN1_BUS]		= &can1_bus_clk.common.hw,
1324*e371a772SYixun Lan 	[CLK_APBC_CAN2_BUS]		= &can2_bus_clk.common.hw,
1325*e371a772SYixun Lan 	[CLK_APBC_CAN3_BUS]		= &can3_bus_clk.common.hw,
1326*e371a772SYixun Lan 	[CLK_APBC_CAN4_BUS]		= &can4_bus_clk.common.hw,
1327*e371a772SYixun Lan };
1328*e371a772SYixun Lan 
1329*e371a772SYixun Lan static const struct spacemit_ccu_data k3_ccu_apbc_data = {
1330*e371a772SYixun Lan 	.reset_name	= "k3-apbc-reset",
1331*e371a772SYixun Lan 	.hws		= k3_ccu_apbc_hws,
1332*e371a772SYixun Lan 	.num		= ARRAY_SIZE(k3_ccu_apbc_hws),
1333*e371a772SYixun Lan };
1334*e371a772SYixun Lan 
1335*e371a772SYixun Lan static struct clk_hw *k3_ccu_apmu_hws[] = {
1336*e371a772SYixun Lan 	[CLK_APMU_AXICLK]		= &axi_clk.common.hw,
1337*e371a772SYixun Lan 	[CLK_APMU_CCI550]		= &cci550_clk.common.hw,
1338*e371a772SYixun Lan 	[CLK_APMU_CPU_C0_CORE]		= &cpu_c0_core_clk.common.hw,
1339*e371a772SYixun Lan 	[CLK_APMU_CPU_C1_CORE]		= &cpu_c1_core_clk.common.hw,
1340*e371a772SYixun Lan 	[CLK_APMU_CPU_C2_CORE]		= &cpu_c2_core_clk.common.hw,
1341*e371a772SYixun Lan 	[CLK_APMU_CPU_C3_CORE]		= &cpu_c3_core_clk.common.hw,
1342*e371a772SYixun Lan 	[CLK_APMU_CCIC2PHY]		= &ccic2phy_clk.common.hw,
1343*e371a772SYixun Lan 	[CLK_APMU_CCIC3PHY]		= &ccic3phy_clk.common.hw,
1344*e371a772SYixun Lan 	[CLK_APMU_CSI]			= &csi_clk.common.hw,
1345*e371a772SYixun Lan 	[CLK_APMU_ISP_BUS]		= &isp_bus_clk.common.hw,
1346*e371a772SYixun Lan 	[CLK_APMU_D1P_1228P8]		= &d1p_1228p8.common.hw,
1347*e371a772SYixun Lan 	[CLK_APMU_D1P_819P2]		= &d1p_819p2.common.hw,
1348*e371a772SYixun Lan 	[CLK_APMU_D1P_614P4]		= &d1p_614p4.common.hw,
1349*e371a772SYixun Lan 	[CLK_APMU_D1P_491P52]		= &d1p_491p52.common.hw,
1350*e371a772SYixun Lan 	[CLK_APMU_D1P_409P6]		= &d1p_409p6.common.hw,
1351*e371a772SYixun Lan 	[CLK_APMU_D1P_307P2]		= &d1p_307p2.common.hw,
1352*e371a772SYixun Lan 	[CLK_APMU_D1P_245P76]		= &d1p_245p76.common.hw,
1353*e371a772SYixun Lan 	[CLK_APMU_V2D]			= &v2d_clk.common.hw,
1354*e371a772SYixun Lan 	[CLK_APMU_DSI_ESC]		= &dsi_esc_clk.common.hw,
1355*e371a772SYixun Lan 	[CLK_APMU_LCD_HCLK]		= &lcd_hclk.common.hw,
1356*e371a772SYixun Lan 	[CLK_APMU_LCD_DSC]		= &lcd_dsc_clk.common.hw,
1357*e371a772SYixun Lan 	[CLK_APMU_LCD_PXCLK]		= &lcd_pxclk.common.hw,
1358*e371a772SYixun Lan 	[CLK_APMU_LCD_MCLK]		= &lcd_mclk.common.hw,
1359*e371a772SYixun Lan 	[CLK_APMU_CCIC_4X]		= &ccic_4x_clk.common.hw,
1360*e371a772SYixun Lan 	[CLK_APMU_CCIC1PHY]		= &ccic1phy_clk.common.hw,
1361*e371a772SYixun Lan 	[CLK_APMU_SC2_HCLK]		= &sc2_hclk.common.hw,
1362*e371a772SYixun Lan 	[CLK_APMU_SDH_AXI]		= &sdh_axi_aclk.common.hw,
1363*e371a772SYixun Lan 	[CLK_APMU_SDH0]			= &sdh0_clk.common.hw,
1364*e371a772SYixun Lan 	[CLK_APMU_SDH1]			= &sdh1_clk.common.hw,
1365*e371a772SYixun Lan 	[CLK_APMU_SDH2]			= &sdh2_clk.common.hw,
1366*e371a772SYixun Lan 	[CLK_APMU_USB2_BUS]		= &usb2_bus_clk.common.hw,
1367*e371a772SYixun Lan 	[CLK_APMU_USB3_PORTA_BUS]	= &usb3_porta_bus_clk.common.hw,
1368*e371a772SYixun Lan 	[CLK_APMU_USB3_PORTB_BUS]	= &usb3_portb_bus_clk.common.hw,
1369*e371a772SYixun Lan 	[CLK_APMU_USB3_PORTC_BUS]	= &usb3_portc_bus_clk.common.hw,
1370*e371a772SYixun Lan 	[CLK_APMU_USB3_PORTD_BUS]	= &usb3_portd_bus_clk.common.hw,
1371*e371a772SYixun Lan 	[CLK_APMU_QSPI]			= &qspi_clk.common.hw,
1372*e371a772SYixun Lan 	[CLK_APMU_QSPI_BUS]		= &qspi_bus_clk.common.hw,
1373*e371a772SYixun Lan 	[CLK_APMU_DMA]			= &dma_clk.common.hw,
1374*e371a772SYixun Lan 	[CLK_APMU_AES_WTM]		= &aes_wtm_clk.common.hw,
1375*e371a772SYixun Lan 	[CLK_APMU_VPU]			= &vpu_clk.common.hw,
1376*e371a772SYixun Lan 	[CLK_APMU_DTC]			= &dtc_clk.common.hw,
1377*e371a772SYixun Lan 	[CLK_APMU_GPU]			= &gpu_clk.common.hw,
1378*e371a772SYixun Lan 	[CLK_APMU_MC_AHB]		= &mc_ahb_clk.common.hw,
1379*e371a772SYixun Lan 	[CLK_APMU_TOP_DCLK]		= &top_dclk.common.hw,
1380*e371a772SYixun Lan 	[CLK_APMU_UCIE]			= &ucie_clk.common.hw,
1381*e371a772SYixun Lan 	[CLK_APMU_UCIE_SBCLK]		= &ucie_sbclk.common.hw,
1382*e371a772SYixun Lan 	[CLK_APMU_RCPU]			= &rcpu_clk.common.hw,
1383*e371a772SYixun Lan 	[CLK_APMU_DSI4LN2_DSI_ESC]	= &dsi4ln2_dsi_esc_clk.common.hw,
1384*e371a772SYixun Lan 	[CLK_APMU_DSI4LN2_LCD_DSC]	= &dsi4ln2_lcd_dsc_clk.common.hw,
1385*e371a772SYixun Lan 	[CLK_APMU_DSI4LN2_LCD_PXCLK]	= &dsi4ln2_lcd_pxclk.common.hw,
1386*e371a772SYixun Lan 	[CLK_APMU_DSI4LN2_LCD_MCLK]	= &dsi4ln2_lcd_mclk.common.hw,
1387*e371a772SYixun Lan 	[CLK_APMU_DSI4LN2_DPU_ACLK]	= &dsi4ln2_dpu_aclk.common.hw,
1388*e371a772SYixun Lan 	[CLK_APMU_DPU_ACLK]		= &dpu_aclk.common.hw,
1389*e371a772SYixun Lan 	[CLK_APMU_UFS_ACLK]		= &ufs_aclk.common.hw,
1390*e371a772SYixun Lan 	[CLK_APMU_EDP0_PXCLK]		= &edp0_pxclk.common.hw,
1391*e371a772SYixun Lan 	[CLK_APMU_EDP1_PXCLK]		= &edp1_pxclk.common.hw,
1392*e371a772SYixun Lan 	[CLK_APMU_PCIE_PORTA_MSTE]	= &pciea_mstr_clk.common.hw,
1393*e371a772SYixun Lan 	[CLK_APMU_PCIE_PORTA_SLV]	= &pciea_slv_clk.common.hw,
1394*e371a772SYixun Lan 	[CLK_APMU_PCIE_PORTB_MSTE]	= &pcieb_mstr_clk.common.hw,
1395*e371a772SYixun Lan 	[CLK_APMU_PCIE_PORTB_SLV]	= &pcieb_slv_clk.common.hw,
1396*e371a772SYixun Lan 	[CLK_APMU_PCIE_PORTC_MSTE]	= &pciec_mstr_clk.common.hw,
1397*e371a772SYixun Lan 	[CLK_APMU_PCIE_PORTC_SLV]	= &pciec_slv_clk.common.hw,
1398*e371a772SYixun Lan 	[CLK_APMU_PCIE_PORTD_MSTE]	= &pcied_mstr_clk.common.hw,
1399*e371a772SYixun Lan 	[CLK_APMU_PCIE_PORTD_SLV]	= &pcied_slv_clk.common.hw,
1400*e371a772SYixun Lan 	[CLK_APMU_PCIE_PORTE_MSTE]	= &pciee_mstr_clk.common.hw,
1401*e371a772SYixun Lan 	[CLK_APMU_PCIE_PORTE_SLV]	= &pciee_slv_clk.common.hw,
1402*e371a772SYixun Lan 	[CLK_APMU_EMAC0_BUS]		= &emac0_bus_clk.common.hw,
1403*e371a772SYixun Lan 	[CLK_APMU_EMAC0_REF]		= &emac0_ref_clk.common.hw,
1404*e371a772SYixun Lan 	[CLK_APMU_EMAC0_1588]		= &emac0_1588_clk.common.hw,
1405*e371a772SYixun Lan 	[CLK_APMU_EMAC0_RGMII_TX]	= &emac0_rgmii_tx_clk.common.hw,
1406*e371a772SYixun Lan 	[CLK_APMU_EMAC1_BUS]		= &emac1_bus_clk.common.hw,
1407*e371a772SYixun Lan 	[CLK_APMU_EMAC1_REF]		= &emac1_ref_clk.common.hw,
1408*e371a772SYixun Lan 	[CLK_APMU_EMAC1_1588]		= &emac1_1588_clk.common.hw,
1409*e371a772SYixun Lan 	[CLK_APMU_EMAC1_RGMII_TX]	= &emac1_rgmii_tx_clk.common.hw,
1410*e371a772SYixun Lan 	[CLK_APMU_EMAC2_BUS]		= &emac2_bus_clk.common.hw,
1411*e371a772SYixun Lan 	[CLK_APMU_EMAC2_REF]		= &emac2_ref_clk.common.hw,
1412*e371a772SYixun Lan 	[CLK_APMU_EMAC2_1588]		= &emac2_1588_clk.common.hw,
1413*e371a772SYixun Lan 	[CLK_APMU_EMAC2_RGMII_TX]	= &emac2_rgmii_tx_clk.common.hw,
1414*e371a772SYixun Lan 	[CLK_APMU_ESPI_SCLK_SRC]	= &espi_sclk_src.common.hw,
1415*e371a772SYixun Lan 	[CLK_APMU_ESPI_SCLK]		= &espi_sclk.common.hw,
1416*e371a772SYixun Lan 	[CLK_APMU_ESPI_MCLK]		= &espi_mclk.common.hw,
1417*e371a772SYixun Lan 	[CLK_APMU_CAM_SRC1]		= &cam_src1_clk.common.hw,
1418*e371a772SYixun Lan 	[CLK_APMU_CAM_SRC2]		= &cam_src2_clk.common.hw,
1419*e371a772SYixun Lan 	[CLK_APMU_CAM_SRC3]		= &cam_src3_clk.common.hw,
1420*e371a772SYixun Lan 	[CLK_APMU_CAM_SRC4]		= &cam_src4_clk.common.hw,
1421*e371a772SYixun Lan 	[CLK_APMU_ISIM_VCLK0]		= &isim_vclk_out0.common.hw,
1422*e371a772SYixun Lan 	[CLK_APMU_ISIM_VCLK1]		= &isim_vclk_out1.common.hw,
1423*e371a772SYixun Lan 	[CLK_APMU_ISIM_VCLK2]		= &isim_vclk_out2.common.hw,
1424*e371a772SYixun Lan 	[CLK_APMU_ISIM_VCLK3]		= &isim_vclk_out3.common.hw,
1425*e371a772SYixun Lan };
1426*e371a772SYixun Lan 
1427*e371a772SYixun Lan static const struct spacemit_ccu_data k3_ccu_apmu_data = {
1428*e371a772SYixun Lan 	.reset_name	= "k3-apmu-reset",
1429*e371a772SYixun Lan 	.hws		= k3_ccu_apmu_hws,
1430*e371a772SYixun Lan 	.num		= ARRAY_SIZE(k3_ccu_apmu_hws),
1431*e371a772SYixun Lan };
1432*e371a772SYixun Lan 
1433*e371a772SYixun Lan static struct clk_hw *k3_ccu_dciu_hws[] = {
1434*e371a772SYixun Lan 	[CLK_DCIU_HDMA]			= &hdma_clk.common.hw,
1435*e371a772SYixun Lan 	[CLK_DCIU_DMA350]		= &dma350_clk.common.hw,
1436*e371a772SYixun Lan 	[CLK_DCIU_C2_TCM_PIPE]		= &c2_tcm_pipe_clk.common.hw,
1437*e371a772SYixun Lan 	[CLK_DCIU_C3_TCM_PIPE]		= &c3_tcm_pipe_clk.common.hw,
1438*e371a772SYixun Lan };
1439*e371a772SYixun Lan 
1440*e371a772SYixun Lan static const struct spacemit_ccu_data k3_ccu_dciu_data = {
1441*e371a772SYixun Lan 	.reset_name	= "k3-dciu-reset",
1442*e371a772SYixun Lan 	.hws		= k3_ccu_dciu_hws,
1443*e371a772SYixun Lan 	.num		= ARRAY_SIZE(k3_ccu_dciu_hws),
1444*e371a772SYixun Lan };
1445*e371a772SYixun Lan 
1446*e371a772SYixun Lan static const struct of_device_id of_k3_ccu_match[] = {
1447*e371a772SYixun Lan 	{
1448*e371a772SYixun Lan 		.compatible	= "spacemit,k3-pll",
1449*e371a772SYixun Lan 		.data		= &k3_ccu_pll_data,
1450*e371a772SYixun Lan 	},
1451*e371a772SYixun Lan 	{
1452*e371a772SYixun Lan 		.compatible	= "spacemit,k3-syscon-mpmu",
1453*e371a772SYixun Lan 		.data		= &k3_ccu_mpmu_data,
1454*e371a772SYixun Lan 	},
1455*e371a772SYixun Lan 	{
1456*e371a772SYixun Lan 		.compatible	= "spacemit,k3-syscon-apbc",
1457*e371a772SYixun Lan 		.data		= &k3_ccu_apbc_data,
1458*e371a772SYixun Lan 	},
1459*e371a772SYixun Lan 	{
1460*e371a772SYixun Lan 		.compatible	= "spacemit,k3-syscon-apmu",
1461*e371a772SYixun Lan 		.data		= &k3_ccu_apmu_data,
1462*e371a772SYixun Lan 	},
1463*e371a772SYixun Lan 	{
1464*e371a772SYixun Lan 		.compatible	= "spacemit,k3-syscon-dciu",
1465*e371a772SYixun Lan 		.data		= &k3_ccu_dciu_data,
1466*e371a772SYixun Lan 	},
1467*e371a772SYixun Lan 	{ /* sentinel */ }
1468*e371a772SYixun Lan };
1469*e371a772SYixun Lan MODULE_DEVICE_TABLE(of, of_k3_ccu_match);
1470*e371a772SYixun Lan 
1471*e371a772SYixun Lan static int k3_ccu_probe(struct platform_device *pdev)
1472*e371a772SYixun Lan {
1473*e371a772SYixun Lan 	return spacemit_ccu_probe(pdev, "spacemit,k3-pll");
1474*e371a772SYixun Lan }
1475*e371a772SYixun Lan 
1476*e371a772SYixun Lan static struct platform_driver k3_ccu_driver = {
1477*e371a772SYixun Lan 	.driver = {
1478*e371a772SYixun Lan 		.name		= "spacemit,k3-ccu",
1479*e371a772SYixun Lan 		.of_match_table = of_k3_ccu_match,
1480*e371a772SYixun Lan 	},
1481*e371a772SYixun Lan 	.probe	= k3_ccu_probe,
1482*e371a772SYixun Lan };
1483*e371a772SYixun Lan module_platform_driver(k3_ccu_driver);
1484*e371a772SYixun Lan 
1485*e371a772SYixun Lan MODULE_IMPORT_NS("CLK_SPACEMIT");
1486*e371a772SYixun Lan MODULE_DESCRIPTION("SpacemiT K3 CCU driver");
1487*e371a772SYixun Lan MODULE_LICENSE("GPL");
1488