xref: /linux/drivers/clk/rockchip/clk-rk3576.c (revision ab93e0dd72c37d378dd936f031ffb83ff2bd87ce)
1cc40f5baSElaine Zhang // SPDX-License-Identifier: GPL-2.0
2cc40f5baSElaine Zhang /*
3cc40f5baSElaine Zhang  * Copyright (c) 2023 Rockchip Electronics Co. Ltd.
4cc40f5baSElaine Zhang  * Author: Elaine Zhang <zhangqing@rock-chips.com>
5cc40f5baSElaine Zhang  */
6cc40f5baSElaine Zhang 
7cc40f5baSElaine Zhang #include <linux/clk-provider.h>
8cc40f5baSElaine Zhang #include <linux/of.h>
9cc40f5baSElaine Zhang #include <linux/of_address.h>
10cc40f5baSElaine Zhang #include <linux/platform_device.h>
11cc40f5baSElaine Zhang #include <linux/syscore_ops.h>
12cc40f5baSElaine Zhang #include <linux/mfd/syscon.h>
13*92da5c3cSHeiko Stuebner #include <linux/slab.h>
14cc40f5baSElaine Zhang #include <dt-bindings/clock/rockchip,rk3576-cru.h>
15cc40f5baSElaine Zhang #include "clk.h"
16cc40f5baSElaine Zhang 
17cc40f5baSElaine Zhang #define RK3576_GRF_SOC_STATUS0		0x600
18cc40f5baSElaine Zhang #define RK3576_PMU0_GRF_OSC_CON6	0x18
199199ec29SNicolas Frattaroli #define RK3576_VCCIO_IOC_MISC_CON0	0x6400
20cc40f5baSElaine Zhang 
21cc40f5baSElaine Zhang enum rk3576_plls {
22cc40f5baSElaine Zhang 	bpll, lpll, vpll, aupll, cpll, gpll, ppll,
23cc40f5baSElaine Zhang };
24cc40f5baSElaine Zhang 
25cc40f5baSElaine Zhang static struct rockchip_pll_rate_table rk3576_pll_rates[] = {
26cc40f5baSElaine Zhang 	/* _mhz, _p, _m, _s, _k */
27cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2520000000, 2, 210, 0, 0),
28cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2496000000, 2, 208, 0, 0),
29cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2472000000, 2, 206, 0, 0),
30cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2448000000, 2, 204, 0, 0),
31cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2424000000, 2, 202, 0, 0),
32cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2400000000, 2, 200, 0, 0),
33cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2376000000, 2, 198, 0, 0),
34cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2352000000, 2, 196, 0, 0),
35cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2328000000, 2, 194, 0, 0),
36cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2304000000, 2, 192, 0, 0),
37cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2280000000, 2, 190, 0, 0),
38cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2256000000, 2, 376, 1, 0),
39cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2232000000, 2, 372, 1, 0),
40cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2208000000, 2, 368, 1, 0),
41cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2184000000, 2, 364, 1, 0),
42cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2160000000, 2, 360, 1, 0),
43cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2136000000, 2, 356, 1, 0),
44cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2112000000, 2, 352, 1, 0),
45cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2088000000, 2, 348, 1, 0),
46cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2064000000, 2, 344, 1, 0),
47cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2040000000, 2, 340, 1, 0),
48cc40f5baSElaine Zhang 	RK3588_PLL_RATE(2016000000, 2, 336, 1, 0),
49cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1992000000, 2, 332, 1, 0),
50cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1968000000, 2, 328, 1, 0),
51cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1944000000, 2, 324, 1, 0),
52cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1920000000, 2, 320, 1, 0),
53cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1896000000, 2, 316, 1, 0),
54cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1872000000, 2, 312, 1, 0),
55cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1848000000, 2, 308, 1, 0),
56cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1824000000, 2, 304, 1, 0),
57cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1800000000, 2, 300, 1, 0),
58cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1776000000, 2, 296, 1, 0),
59cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1752000000, 2, 292, 1, 0),
60cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1728000000, 2, 288, 1, 0),
61cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1704000000, 2, 284, 1, 0),
62cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1680000000, 2, 280, 1, 0),
63cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1656000000, 2, 276, 1, 0),
64cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1632000000, 2, 272, 1, 0),
65cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1608000000, 2, 268, 1, 0),
66cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1584000000, 2, 264, 1, 0),
67cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1560000000, 2, 260, 1, 0),
68cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1536000000, 2, 256, 1, 0),
69cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1512000000, 2, 252, 1, 0),
70cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1488000000, 2, 248, 1, 0),
71cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1464000000, 2, 244, 1, 0),
72cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1440000000, 2, 240, 1, 0),
73cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1416000000, 2, 236, 1, 0),
74cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1392000000, 2, 232, 1, 0),
75cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1320000000, 2, 220, 1, 0),
76cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1200000000, 2, 200, 1, 0),
77cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1188000000, 2, 198, 1, 0),
78cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1100000000, 3, 550, 2, 0),
79cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1008000000, 2, 336, 2, 0),
80cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1000000000, 3, 500, 2, 0),
81cc40f5baSElaine Zhang 	RK3588_PLL_RATE(983040000, 4, 655, 2, 23592),
82cc40f5baSElaine Zhang 	RK3588_PLL_RATE(955520000, 3, 477, 2, 49806),
83cc40f5baSElaine Zhang 	RK3588_PLL_RATE(903168000, 6, 903, 2, 11009),
84cc40f5baSElaine Zhang 	RK3588_PLL_RATE(900000000, 2, 300, 2, 0),
85cc40f5baSElaine Zhang 	RK3588_PLL_RATE(816000000, 2, 272, 2, 0),
86cc40f5baSElaine Zhang 	RK3588_PLL_RATE(786432000, 2, 262, 2, 9437),
87cc40f5baSElaine Zhang 	RK3588_PLL_RATE(786000000, 1, 131, 2, 0),
88cc40f5baSElaine Zhang 	RK3588_PLL_RATE(785560000, 3, 392, 2, 51117),
89cc40f5baSElaine Zhang 	RK3588_PLL_RATE(722534400, 8, 963, 2, 24850),
90cc40f5baSElaine Zhang 	RK3588_PLL_RATE(600000000, 2, 200, 2, 0),
91cc40f5baSElaine Zhang 	RK3588_PLL_RATE(594000000, 2, 198, 2, 0),
92cc40f5baSElaine Zhang 	RK3588_PLL_RATE(408000000, 2, 272, 3, 0),
93cc40f5baSElaine Zhang 	RK3588_PLL_RATE(312000000, 2, 208, 3, 0),
94cc40f5baSElaine Zhang 	RK3588_PLL_RATE(216000000, 2, 288, 4, 0),
95cc40f5baSElaine Zhang 	RK3588_PLL_RATE(96000000, 2, 256, 5, 0),
96cc40f5baSElaine Zhang 	{ /* sentinel */ },
97cc40f5baSElaine Zhang };
98cc40f5baSElaine Zhang 
99cc40f5baSElaine Zhang static struct rockchip_pll_rate_table rk3576_ppll_rates[] = {
100cc40f5baSElaine Zhang 	/* _mhz, _p, _m, _s, _k */
101cc40f5baSElaine Zhang 	RK3588_PLL_RATE(1300000000, 3, 325, 2, 0),
102cc40f5baSElaine Zhang 	{ /* sentinel */ },
103cc40f5baSElaine Zhang };
104cc40f5baSElaine Zhang 
105cc40f5baSElaine Zhang #define RK3576_ACLK_M_BIGCORE_DIV_MASK		0x1f
106cc40f5baSElaine Zhang #define RK3576_ACLK_M_BIGCORE_DIV_SHIFT		0
107cc40f5baSElaine Zhang #define RK3576_ACLK_M_LITCORE_DIV_MASK		0x1f
108cc40f5baSElaine Zhang #define RK3576_ACLK_M_LITCORE_DIV_SHIFT		8
109cc40f5baSElaine Zhang #define RK3576_PCLK_DBG_LITCORE_DIV_MASK	0x1f
110cc40f5baSElaine Zhang #define RK3576_PCLK_DBG_LITCORE_DIV_SHIFT	0
111cc40f5baSElaine Zhang #define RK3576_ACLK_CCI_DIV_MASK		0x1f
112cc40f5baSElaine Zhang #define RK3576_ACLK_CCI_DIV_SHIFT		7
113cc40f5baSElaine Zhang #define RK3576_ACLK_CCI_MUX_MASK		0x3
114cc40f5baSElaine Zhang #define RK3576_ACLK_CCI_MUX_SHIFT		12
115cc40f5baSElaine Zhang 
116cc40f5baSElaine Zhang #define RK3576_BIGCORE_CLKSEL2(_amcore)						\
117cc40f5baSElaine Zhang {										\
118cc40f5baSElaine Zhang 	.reg = RK3576_BIGCORE_CLKSEL_CON(2),					\
119cc40f5baSElaine Zhang 	.val = HIWORD_UPDATE(_amcore - 1, RK3576_ACLK_M_BIGCORE_DIV_MASK,	\
120cc40f5baSElaine Zhang 			RK3576_ACLK_M_BIGCORE_DIV_SHIFT),			\
121cc40f5baSElaine Zhang }
122cc40f5baSElaine Zhang 
123cc40f5baSElaine Zhang #define RK3576_LITCORE_CLKSEL1(_amcore)						\
124cc40f5baSElaine Zhang {										\
125cc40f5baSElaine Zhang 	.reg = RK3576_LITCORE_CLKSEL_CON(1),					\
126cc40f5baSElaine Zhang 	.val = HIWORD_UPDATE(_amcore - 1, RK3576_ACLK_M_LITCORE_DIV_MASK,	\
127cc40f5baSElaine Zhang 			RK3576_ACLK_M_LITCORE_DIV_SHIFT),			\
128cc40f5baSElaine Zhang }
129cc40f5baSElaine Zhang 
130cc40f5baSElaine Zhang #define RK3576_LITCORE_CLKSEL2(_pclkdbg)					\
131cc40f5baSElaine Zhang {										\
132cc40f5baSElaine Zhang 	.reg = RK3576_LITCORE_CLKSEL_CON(2),					\
133cc40f5baSElaine Zhang 	.val = HIWORD_UPDATE(_pclkdbg - 1, RK3576_PCLK_DBG_LITCORE_DIV_MASK,	\
134cc40f5baSElaine Zhang 			RK3576_PCLK_DBG_LITCORE_DIV_SHIFT),			\
135cc40f5baSElaine Zhang }
136cc40f5baSElaine Zhang 
137cc40f5baSElaine Zhang #define RK3576_CCI_CLKSEL4(_ccisel, _div)					\
138cc40f5baSElaine Zhang {										\
139cc40f5baSElaine Zhang 	.reg = RK3576_CCI_CLKSEL_CON(4),					\
140cc40f5baSElaine Zhang 	.val = HIWORD_UPDATE(_ccisel, RK3576_ACLK_CCI_MUX_MASK,			\
141cc40f5baSElaine Zhang 			RK3576_ACLK_CCI_MUX_SHIFT) |				\
142cc40f5baSElaine Zhang 	       HIWORD_UPDATE(_div - 1, RK3576_ACLK_CCI_DIV_MASK,		\
143cc40f5baSElaine Zhang 			RK3576_ACLK_CCI_DIV_SHIFT),				\
144cc40f5baSElaine Zhang }
145cc40f5baSElaine Zhang 
146cc40f5baSElaine Zhang #define RK3576_CPUBCLK_RATE(_prate, _amcore)					\
147cc40f5baSElaine Zhang {										\
148cc40f5baSElaine Zhang 	.prate = _prate##U,							\
149cc40f5baSElaine Zhang 	.divs = {								\
150cc40f5baSElaine Zhang 		RK3576_BIGCORE_CLKSEL2(_amcore),				\
151cc40f5baSElaine Zhang 	},									\
152cc40f5baSElaine Zhang }
153cc40f5baSElaine Zhang 
154cc40f5baSElaine Zhang #define RK3576_CPULCLK_RATE(_prate, _amcore, _pclkdbg, _ccisel)			\
155cc40f5baSElaine Zhang {										\
156cc40f5baSElaine Zhang 	.prate = _prate##U,							\
157cc40f5baSElaine Zhang 	.divs = {								\
158cc40f5baSElaine Zhang 		RK3576_LITCORE_CLKSEL1(_amcore),				\
159cc40f5baSElaine Zhang 		RK3576_LITCORE_CLKSEL2(_pclkdbg),				\
160cc40f5baSElaine Zhang 	},									\
161cc40f5baSElaine Zhang 	.pre_muxs = {								\
162cc40f5baSElaine Zhang 		RK3576_CCI_CLKSEL4(2, 2),					\
163cc40f5baSElaine Zhang 	},									\
164cc40f5baSElaine Zhang 	.post_muxs = {								\
165cc40f5baSElaine Zhang 		RK3576_CCI_CLKSEL4(_ccisel, 2),					\
166cc40f5baSElaine Zhang 	},									\
167cc40f5baSElaine Zhang }
168cc40f5baSElaine Zhang 
169cc40f5baSElaine Zhang static struct rockchip_cpuclk_rate_table rk3576_cpubclk_rates[] __initdata = {
170cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(2496000000, 2),
171cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(2400000000, 2),
172cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(2304000000, 2),
173cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(2208000000, 2),
174cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(2184000000, 2),
175cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(2088000000, 2),
176cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(2040000000, 2),
177cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(2016000000, 2),
178cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1992000000, 2),
179cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1896000000, 2),
180cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1800000000, 2),
181cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1704000000, 2),
182cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1608000000, 2),
183cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1584000000, 2),
184cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1560000000, 2),
185cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1536000000, 2),
186cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1512000000, 2),
187cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1488000000, 2),
188cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1464000000, 2),
189cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1440000000, 2),
190cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1416000000, 2),
191cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1392000000, 2),
192cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1368000000, 2),
193cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1344000000, 2),
194cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1320000000, 2),
195cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1296000000, 2),
196cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1272000000, 2),
197cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1248000000, 2),
198cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1224000000, 2),
199cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1200000000, 2),
200cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1104000000, 2),
201cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(1008000000, 2),
202cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(912000000, 2),
203cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(816000000, 2),
204cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(696000000, 2),
205cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(600000000, 2),
206cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(408000000, 2),
207cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(312000000, 2),
208cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(216000000, 2),
209cc40f5baSElaine Zhang 	RK3576_CPUBCLK_RATE(96000000, 2),
210cc40f5baSElaine Zhang };
211cc40f5baSElaine Zhang 
212cc40f5baSElaine Zhang static const struct rockchip_cpuclk_reg_data rk3576_cpubclk_data = {
213cc40f5baSElaine Zhang 	.core_reg[0] = RK3576_BIGCORE_CLKSEL_CON(1),
214cc40f5baSElaine Zhang 	.div_core_shift[0] = 7,
215cc40f5baSElaine Zhang 	.div_core_mask[0] = 0x1f,
216cc40f5baSElaine Zhang 	.num_cores = 1,
217cc40f5baSElaine Zhang 	.mux_core_alt = 1,
218cc40f5baSElaine Zhang 	.mux_core_main = 0,
219cc40f5baSElaine Zhang 	.mux_core_shift = 12,
220cc40f5baSElaine Zhang 	.mux_core_mask = 0x3,
221cc40f5baSElaine Zhang };
222cc40f5baSElaine Zhang 
223cc40f5baSElaine Zhang static struct rockchip_cpuclk_rate_table rk3576_cpulclk_rates[] __initdata = {
224cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(2400000000, 2, 6, 3),
225cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(2304000000, 2, 6, 3),
226cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(2208000000, 2, 6, 3),
227cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(2184000000, 2, 6, 3),
228cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(2088000000, 2, 6, 3),
229cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(2040000000, 2, 6, 3),
230cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(2016000000, 2, 6, 3),
231cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1992000000, 2, 6, 3),
232cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1896000000, 2, 6, 3),
233cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1800000000, 2, 6, 3),
234cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1704000000, 2, 6, 3),
235cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1608000000, 2, 6, 3),
236cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1584000000, 2, 6, 3),
237cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1560000000, 2, 6, 3),
238cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1536000000, 2, 6, 3),
239cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1512000000, 2, 6, 3),
240cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1488000000, 2, 6, 3),
241cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1464000000, 2, 6, 3),
242cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1440000000, 2, 6, 3),
243cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1416000000, 2, 6, 3),
244cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1392000000, 2, 6, 3),
245cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1368000000, 2, 6, 3),
246cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1344000000, 2, 6, 3),
247cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1320000000, 2, 6, 3),
248cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1296000000, 2, 6, 3),
249cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1272000000, 2, 6, 3),
250cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1248000000, 2, 6, 3),
251cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1224000000, 2, 6, 3),
252cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1200000000, 2, 6, 2),
253cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1104000000, 2, 6, 2),
254cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(1008000000, 2, 6, 2),
255cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(912000000, 2, 6, 2),
256cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(816000000, 2, 6, 2),
257cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(696000000, 2, 6, 2),
258cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(600000000, 2, 6, 2),
259cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(408000000, 2, 6, 2),
260cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(312000000, 2, 6, 2),
261cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(216000000, 2, 6, 2),
262cc40f5baSElaine Zhang 	RK3576_CPULCLK_RATE(96000000, 2, 6, 2),
263cc40f5baSElaine Zhang };
264cc40f5baSElaine Zhang 
265cc40f5baSElaine Zhang static const struct rockchip_cpuclk_reg_data rk3576_cpulclk_data = {
266cc40f5baSElaine Zhang 	.core_reg[0] = RK3576_LITCORE_CLKSEL_CON(0),
267cc40f5baSElaine Zhang 	.div_core_shift[0] = 7,
268cc40f5baSElaine Zhang 	.div_core_mask[0] = 0x1f,
269cc40f5baSElaine Zhang 	.num_cores = 1,
270cc40f5baSElaine Zhang 	.mux_core_alt = 1,
271cc40f5baSElaine Zhang 	.mux_core_main = 0,
272cc40f5baSElaine Zhang 	.mux_core_shift = 12,
273cc40f5baSElaine Zhang 	.mux_core_mask = 0x3,
274cc40f5baSElaine Zhang };
275cc40f5baSElaine Zhang 
276cc40f5baSElaine Zhang #define MFLAGS CLK_MUX_HIWORD_MASK
277cc40f5baSElaine Zhang #define DFLAGS CLK_DIVIDER_HIWORD_MASK
278cc40f5baSElaine Zhang #define GFLAGS (CLK_GATE_HIWORD_MASK | CLK_GATE_SET_TO_DISABLE)
279cc40f5baSElaine Zhang 
280cc40f5baSElaine Zhang PNAME(mux_pll_p)			= { "xin24m", "xin32k" };
281cc40f5baSElaine Zhang PNAME(mux_24m_32k_p)			= { "xin24m", "xin_osc0_div" };
282cc40f5baSElaine Zhang PNAME(mux_armclkl_p)			= { "xin24m", "pll_lpll", "lpll" };
283cc40f5baSElaine Zhang PNAME(mux_armclkb_p)			= { "xin24m", "pll_bpll", "bpll" };
284cc40f5baSElaine Zhang PNAME(gpll_24m_p)			= { "gpll", "xin24m" };
285cc40f5baSElaine Zhang PNAME(cpll_24m_p)			= { "cpll", "xin24m" };
286cc40f5baSElaine Zhang PNAME(gpll_cpll_p)			= { "gpll", "cpll" };
287cc40f5baSElaine Zhang PNAME(gpll_spll_p)			= { "gpll", "spll" };
288cc40f5baSElaine Zhang PNAME(gpll_cpll_aupll_p)		= { "gpll", "cpll", "aupll" };
289cc40f5baSElaine Zhang PNAME(gpll_cpll_24m_p)			= { "gpll", "cpll", "xin24m" };
290cc40f5baSElaine Zhang PNAME(gpll_cpll_24m_spll_p)		= { "gpll", "cpll", "xin24m", "spll" };
291cc40f5baSElaine Zhang PNAME(gpll_cpll_aupll_24m_p)		= { "gpll", "cpll", "aupll", "xin24m" };
292cc40f5baSElaine Zhang PNAME(gpll_cpll_aupll_spll_p)		= { "gpll", "cpll", "aupll", "spll" };
293cc40f5baSElaine Zhang PNAME(gpll_cpll_aupll_spll_lpll_p)	= { "gpll", "cpll", "aupll", "spll", "lpll_dummy" };
294cc40f5baSElaine Zhang PNAME(gpll_cpll_spll_bpll_p)		= { "gpll", "cpll", "spll", "bpll_dummy" };
295cc40f5baSElaine Zhang PNAME(gpll_cpll_lpll_bpll_p)		= { "gpll", "cpll", "lpll_dummy", "bpll_dummy" };
296cc40f5baSElaine Zhang PNAME(gpll_spll_cpll_bpll_lpll_p)	= { "gpll", "spll",  "cpll", "bpll_dummy", "lpll_dummy" };
297cc40f5baSElaine Zhang PNAME(gpll_cpll_vpll_aupll_24m_p)	= { "gpll", "cpll", "vpll", "aupll", "xin24m" };
298cc40f5baSElaine Zhang PNAME(gpll_cpll_spll_aupll_bpll_p)	= { "gpll", "cpll", "spll", "aupll", "bpll_dummy" };
299cc40f5baSElaine Zhang PNAME(gpll_cpll_spll_bpll_lpll_p)	= { "gpll", "cpll", "spll", "bpll_dummy", "lpll_dummy" };
300cc40f5baSElaine Zhang PNAME(gpll_cpll_spll_lpll_bpll_p)	= { "gpll", "cpll", "spll", "lpll_dummy", "bpll_dummy" };
301cc40f5baSElaine Zhang PNAME(gpll_cpll_vpll_bpll_lpll_p)	= { "gpll", "cpll", "vpll", "bpll_dummy", "lpll_dummy" };
302cc40f5baSElaine Zhang PNAME(gpll_spll_aupll_bpll_lpll_p)	= { "gpll", "spll", "aupll", "bpll_dummy", "lpll_dummy" };
303cc40f5baSElaine Zhang PNAME(gpll_spll_isppvtpll_bpll_lpll_p)	= { "gpll", "spll", "isp_pvtpll", "bpll_dummy", "lpll_dummy" };
304cc40f5baSElaine Zhang PNAME(gpll_cpll_spll_aupll_lpll_24m_p)	= { "gpll", "cpll", "spll", "aupll", "lpll_dummy", "xin24m" };
305cc40f5baSElaine Zhang PNAME(gpll_cpll_spll_vpll_bpll_lpll_p)	= { "gpll", "cpll", "spll", "vpll", "bpll_dummy", "lpll_dummy" };
306cc40f5baSElaine Zhang PNAME(cpll_vpll_lpll_bpll_p)		= { "cpll", "vpll", "lpll_dummy", "bpll_dummy" };
307cc40f5baSElaine Zhang PNAME(mux_24m_ccipvtpll_gpll_lpll_p)	= { "xin24m", "cci_pvtpll", "gpll", "lpll" };
308cc40f5baSElaine Zhang PNAME(mux_24m_spll_gpll_cpll_p)		= {"xin24m", "spll", "gpll", "cpll" };
309cc40f5baSElaine Zhang PNAME(audio_frac_int_p)			= { "xin24m", "clk_audio_frac_0", "clk_audio_frac_1", "clk_audio_frac_2",
310cc40f5baSElaine Zhang 					    "clk_audio_frac_3", "clk_audio_int_0", "clk_audio_int_1", "clk_audio_int_2" };
311cc40f5baSElaine Zhang PNAME(audio_frac_p)			= { "clk_audio_frac_0", "clk_audio_frac_1", "clk_audio_frac_2", "clk_audio_frac_3" };
312cc40f5baSElaine Zhang PNAME(mux_100m_24m_p)			= { "clk_cpll_div10", "xin24m" };
313cc40f5baSElaine Zhang PNAME(mux_100m_50m_24m_p)		= { "clk_cpll_div10", "clk_cpll_div20", "xin24m" };
314cc40f5baSElaine Zhang PNAME(mux_100m_24m_lclk0_p)		= { "clk_cpll_div10", "xin24m", "lclk_asrc_src_0" };
315cc40f5baSElaine Zhang PNAME(mux_100m_24m_lclk1_p)		= { "clk_cpll_div10", "xin24m", "lclk_asrc_src_1" };
316cc40f5baSElaine Zhang PNAME(mux_150m_100m_50m_24m_p)		= { "clk_gpll_div8", "clk_cpll_div10", "clk_cpll_div20", "xin24m" };
317cc40f5baSElaine Zhang PNAME(mux_200m_100m_50m_24m_p)		= { "clk_gpll_div6", "clk_cpll_div10", "clk_cpll_div20", "xin24m" };
318cc40f5baSElaine Zhang PNAME(mux_400m_200m_100m_24m_p)		= { "clk_gpll_div3", "clk_gpll_div6", "clk_cpll_div10", "xin24m" };
319cc40f5baSElaine Zhang PNAME(mux_500m_250m_100m_24m_p)		= { "clk_cpll_div2", "clk_cpll_div4", "clk_cpll_div10", "xin24m" };
320cc40f5baSElaine Zhang PNAME(mux_600m_400m_300m_24m_p)		= { "clk_gpll_div2", "clk_gpll_div3", "clk_gpll_div4", "xin24m" };
321cc40f5baSElaine Zhang PNAME(mux_350m_175m_116m_24m_p)		= { "clk_spll_div2", "clk_spll_div4", "clk_spll_div6", "xin24m" };
322cc40f5baSElaine Zhang PNAME(mux_175m_116m_58m_24m_p)		= { "clk_spll_div4", "clk_spll_div6", "clk_spll_div12", "xin24m" };
323cc40f5baSElaine Zhang PNAME(mux_116m_58m_24m_p)		= { "clk_spll_div6", "clk_spll_div12", "xin24m" };
324cc40f5baSElaine Zhang PNAME(mclk_sai0_8ch_p)			= { "mclk_sai0_8ch_src", "sai0_mclkin", "sai1_mclkin" };
325cc40f5baSElaine Zhang PNAME(mclk_sai1_8ch_p)			= { "mclk_sai1_8ch_src", "sai1_mclkin" };
326cc40f5baSElaine Zhang PNAME(mclk_sai2_2ch_p)			= { "mclk_sai2_2ch_src", "sai2_mclkin", "sai1_mclkin" };
327cc40f5baSElaine Zhang PNAME(mclk_sai3_2ch_p)			= { "mclk_sai3_2ch_src", "sai3_mclkin", "sai1_mclkin" };
328cc40f5baSElaine Zhang PNAME(mclk_sai4_2ch_p)			= { "mclk_sai4_2ch_src", "sai4_mclkin", "sai1_mclkin" };
329cc40f5baSElaine Zhang PNAME(mclk_sai5_8ch_p)			= { "mclk_sai5_8ch_src", "sai1_mclkin" };
330cc40f5baSElaine Zhang PNAME(mclk_sai6_8ch_p)			= { "mclk_sai6_8ch_src", "sai1_mclkin" };
331cc40f5baSElaine Zhang PNAME(mclk_sai7_8ch_p)			= { "mclk_sai7_8ch_src", "sai1_mclkin" };
332cc40f5baSElaine Zhang PNAME(mclk_sai8_8ch_p)			= { "mclk_sai8_8ch_src", "sai1_mclkin" };
333cc40f5baSElaine Zhang PNAME(mclk_sai9_8ch_p)			= { "mclk_sai9_8ch_src", "sai1_mclkin" };
334cc40f5baSElaine Zhang PNAME(uart1_p)				= { "clk_uart1_src_top", "xin24m" };
335cc40f5baSElaine Zhang PNAME(clk_gmac1_ptp_ref_src_p)		= { "gpll", "cpll", "gmac1_ptp_refclk_in" };
336cc40f5baSElaine Zhang PNAME(clk_gmac0_ptp_ref_src_p)		= { "gpll", "cpll", "gmac0_ptp_refclk_in" };
337cc40f5baSElaine Zhang PNAME(dclk_ebc_p)			= { "gpll", "cpll", "vpll", "aupll", "lpll_dummy",
338cc40f5baSElaine Zhang 					    "dclk_ebc_frac", "xin24m" };
339cc40f5baSElaine Zhang PNAME(dclk_vp0_p)			= { "dclk_vp0_src", "clk_hdmiphy_pixel0" };
340cc40f5baSElaine Zhang PNAME(dclk_vp1_p)			= { "dclk_vp1_src", "clk_hdmiphy_pixel0" };
341cc40f5baSElaine Zhang PNAME(dclk_vp2_p)			= { "dclk_vp2_src", "clk_hdmiphy_pixel0" };
342cc40f5baSElaine Zhang PNAME(clk_uart_p)			= { "gpll", "cpll", "aupll", "xin24m", "clk_uart_frac_0",
343cc40f5baSElaine Zhang 					    "clk_uart_frac_1", "clk_uart_frac_2"};
344cc40f5baSElaine Zhang PNAME(clk_freq_pwm1_p)			= { "sai0_mclkin", "sai1_mclkin", "sai2_mclkin",
345cc40f5baSElaine Zhang 					    "sai3_mclkin", "sai4_mclkin", "sai_sclkin_freq"};
346cc40f5baSElaine Zhang PNAME(clk_counter_pwm1_p)		= { "sai0_mclkin", "sai1_mclkin", "sai2_mclkin",
347cc40f5baSElaine Zhang 					    "sai3_mclkin", "sai4_mclkin", "sai_sclkin_counter"};
348cc40f5baSElaine Zhang PNAME(sai_sclkin_freq_p)		= { "sai0_sclk_in", "sai1_sclk_in", "sai2_sclk_in",
349cc40f5baSElaine Zhang 					    "sai3_sclk_in", "sai4_sclk_in"};
350cc40f5baSElaine Zhang PNAME(clk_ref_pcie0_phy_p)		= { "clk_pcie_100m_src", "clk_pcie_100m_nduty_src",
351cc40f5baSElaine Zhang 					    "xin24m"};
352cc40f5baSElaine Zhang PNAME(hclk_vi_root_p)			= { "clk_gpll_div6", "clk_cpll_div10",
353cc40f5baSElaine Zhang 					    "aclk_vi_root_inter", "xin24m"};
354cc40f5baSElaine Zhang PNAME(clk_ref_osc_mphy_p)		= { "xin24m", "clk_gpio_mphy_i", "clk_ref_mphy_26m"};
355cc40f5baSElaine Zhang PNAME(mux_pmu200m_pmu100m_pmu50m_24m_p)	= { "clk_200m_pmu_src", "clk_100m_pmu_src",
356cc40f5baSElaine Zhang 					    "clk_50m_pmu_src", "xin24m" };
357cc40f5baSElaine Zhang PNAME(mux_pmu100m_pmu50m_24m_p)		= { "clk_100m_pmu_src", "clk_50m_pmu_src", "xin24m" };
358cc40f5baSElaine Zhang PNAME(mux_pmu100m_24m_32k_p)		= { "clk_100m_pmu_src", "xin24m", "xin_osc0_div" };
359cc40f5baSElaine Zhang PNAME(clk_phy_ref_src_p)		= { "xin24m", "clk_pmuphy_ref_src" };
360cc40f5baSElaine Zhang PNAME(clk_usbphy_ref_src_p)		= { "usbphy0_24m", "usbphy1_24m" };
361cc40f5baSElaine Zhang PNAME(clk_cpll_ref_src_p)		= { "xin24m", "clk_usbphy_ref_src" };
362cc40f5baSElaine Zhang PNAME(clk_aupll_ref_src_p)		= { "xin24m", "clk_aupll_ref_io" };
363cc40f5baSElaine Zhang 
364cc40f5baSElaine Zhang static struct rockchip_pll_clock rk3576_pll_clks[] __initdata = {
365cc40f5baSElaine Zhang 	[bpll] = PLL(pll_rk3588_core, PLL_BPLL, "bpll", mux_pll_p,
366cc40f5baSElaine Zhang 		     0, RK3576_PLL_CON(0),
367cc40f5baSElaine Zhang 		     RK3576_BPLL_MODE_CON0, 0, 15, 0, rk3576_pll_rates),
368cc40f5baSElaine Zhang 	[lpll] = PLL(pll_rk3588_core, PLL_LPLL, "lpll", mux_pll_p,
369cc40f5baSElaine Zhang 		     0, RK3576_LPLL_CON(16),
370cc40f5baSElaine Zhang 		     RK3576_LPLL_MODE_CON0, 0, 15, 0, rk3576_pll_rates),
371cc40f5baSElaine Zhang 	[vpll] = PLL(pll_rk3588, PLL_VPLL, "vpll", mux_pll_p,
372cc40f5baSElaine Zhang 		     0, RK3576_PLL_CON(88),
373cc40f5baSElaine Zhang 		     RK3576_MODE_CON0, 4, 15, 0, rk3576_pll_rates),
374cc40f5baSElaine Zhang 	[aupll] = PLL(pll_rk3588, PLL_AUPLL, "aupll", mux_pll_p,
375cc40f5baSElaine Zhang 		     0, RK3576_PLL_CON(96),
376cc40f5baSElaine Zhang 		     RK3576_MODE_CON0, 6, 15, 0, rk3576_pll_rates),
377cc40f5baSElaine Zhang 	[cpll] = PLL(pll_rk3588, PLL_CPLL, "cpll", mux_pll_p,
378cc40f5baSElaine Zhang 		     CLK_IGNORE_UNUSED, RK3576_PLL_CON(104),
379cc40f5baSElaine Zhang 		     RK3576_MODE_CON0, 8, 15, 0, rk3576_pll_rates),
380cc40f5baSElaine Zhang 	[gpll] = PLL(pll_rk3588, PLL_GPLL, "gpll", mux_pll_p,
381cc40f5baSElaine Zhang 		     CLK_IGNORE_UNUSED, RK3576_PLL_CON(112),
382cc40f5baSElaine Zhang 		     RK3576_MODE_CON0, 2, 15, 0, rk3576_pll_rates),
383cc40f5baSElaine Zhang 	[ppll] = PLL(pll_rk3588_ddr, PLL_PPLL, "ppll", mux_pll_p,
384cc40f5baSElaine Zhang 		     CLK_IGNORE_UNUSED, RK3576_PMU_PLL_CON(128),
385cc40f5baSElaine Zhang 		     RK3576_MODE_CON0, 10, 15, 0, rk3576_ppll_rates),
386cc40f5baSElaine Zhang };
387cc40f5baSElaine Zhang 
388cc40f5baSElaine Zhang static struct rockchip_clk_branch rk3576_clk_branches[] __initdata = {
389cc40f5baSElaine Zhang 	/*
390cc40f5baSElaine Zhang 	 * CRU Clock-Architecture
391cc40f5baSElaine Zhang 	 */
392cc40f5baSElaine Zhang 	/* fixed */
393cc40f5baSElaine Zhang 	FACTOR(0, "xin12m", "xin24m", 0, 1, 2),
394cc40f5baSElaine Zhang 
395cc40f5baSElaine Zhang 	COMPOSITE_FRAC(XIN_OSC0_DIV, "xin_osc0_div", "xin24m", CLK_IS_CRITICAL,
396cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(21), 0,
397cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(7), 11, GFLAGS),
398cc40f5baSElaine Zhang 
399cc40f5baSElaine Zhang 	FACTOR(0, "clk_spll_div12", "spll", 0, 1, 12),
400cc40f5baSElaine Zhang 	FACTOR(0, "clk_spll_div6", "spll", 0, 1, 6),
401cc40f5baSElaine Zhang 	FACTOR(0, "clk_spll_div4", "spll", 0, 1, 4),
402cc40f5baSElaine Zhang 	FACTOR(0, "lpll_div2", "lpll", 0, 1, 2),
403cc40f5baSElaine Zhang 	FACTOR(0, "bpll_div4", "bpll", 0, 1, 4),
404cc40f5baSElaine Zhang 
405cc40f5baSElaine Zhang 	/* top */
406cc40f5baSElaine Zhang 	COMPOSITE(CLK_CPLL_DIV20, "clk_cpll_div20", gpll_cpll_p, CLK_IS_CRITICAL,
407cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(0), 5, 1, MFLAGS, 0, 5, DFLAGS,
408cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(0), 0, GFLAGS),
409cc40f5baSElaine Zhang 	COMPOSITE(CLK_CPLL_DIV10, "clk_cpll_div10", gpll_cpll_p, CLK_IS_CRITICAL,
410cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(0), 11, 1, MFLAGS, 6, 5, DFLAGS,
411cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(0), 1, GFLAGS),
412cc40f5baSElaine Zhang 	COMPOSITE(CLK_GPLL_DIV8, "clk_gpll_div8", gpll_cpll_p, CLK_IS_CRITICAL,
413cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(1), 5, 1, MFLAGS, 0, 5, DFLAGS,
414cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(0), 2, GFLAGS),
415cc40f5baSElaine Zhang 	COMPOSITE(CLK_GPLL_DIV6, "clk_gpll_div6", gpll_cpll_p, CLK_IS_CRITICAL,
416cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(1), 11, 1, MFLAGS, 6, 5, DFLAGS,
417cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(0), 3, GFLAGS),
418cc40f5baSElaine Zhang 	COMPOSITE(CLK_CPLL_DIV4, "clk_cpll_div4", gpll_cpll_p, CLK_IS_CRITICAL,
419cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(2), 5, 1, MFLAGS, 0, 5, DFLAGS,
420cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(0), 4, GFLAGS),
421cc40f5baSElaine Zhang 	COMPOSITE(CLK_GPLL_DIV4, "clk_gpll_div4", gpll_cpll_p, CLK_IS_CRITICAL,
422cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(2), 11, 1, MFLAGS, 6, 5, DFLAGS,
423cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(0), 5, GFLAGS),
424cc40f5baSElaine Zhang 	COMPOSITE(CLK_SPLL_DIV2, "clk_spll_div2", gpll_cpll_spll_bpll_p, CLK_IS_CRITICAL,
425cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(3), 5, 2, MFLAGS, 0, 5, DFLAGS,
426cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(0), 6, GFLAGS),
427cc40f5baSElaine Zhang 	COMPOSITE(CLK_GPLL_DIV3, "clk_gpll_div3", gpll_cpll_p, CLK_IS_CRITICAL,
428cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(3), 12, 1, MFLAGS, 7, 5, DFLAGS,
429cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(0), 7, GFLAGS),
430cc40f5baSElaine Zhang 	COMPOSITE(CLK_CPLL_DIV2, "clk_cpll_div2", gpll_cpll_p, CLK_IS_CRITICAL,
431cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(4), 11, 1, MFLAGS, 6, 5, DFLAGS,
432cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(0), 9, GFLAGS),
433cc40f5baSElaine Zhang 	COMPOSITE(CLK_GPLL_DIV2, "clk_gpll_div2", gpll_cpll_p, CLK_IS_CRITICAL,
434cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(5), 5, 1, MFLAGS, 0, 5, DFLAGS,
435cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(0), 10, GFLAGS),
436cc40f5baSElaine Zhang 	COMPOSITE(CLK_SPLL_DIV1, "clk_spll_div1", gpll_cpll_spll_bpll_lpll_p, CLK_IS_CRITICAL,
437cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(6), 5, 3, MFLAGS, 0, 5, DFLAGS,
438cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(0), 12, GFLAGS),
439cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_TOP_ROOT, "pclk_top_root", mux_100m_50m_24m_p, CLK_IS_CRITICAL,
440cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(8), 7, 2, MFLAGS,
441cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(1), 1, GFLAGS),
442cc40f5baSElaine Zhang 	COMPOSITE(ACLK_TOP, "aclk_top", gpll_cpll_aupll_p, CLK_IS_CRITICAL,
443cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(9), 5, 2, MFLAGS, 0, 5, DFLAGS,
444cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(1), 3, GFLAGS),
445cc40f5baSElaine Zhang 	COMPOSITE(ACLK_TOP_MID, "aclk_top_mid", gpll_cpll_p, CLK_IS_CRITICAL,
446cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(10), 5, 1, MFLAGS, 0, 5, DFLAGS,
447cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(1), 6, GFLAGS),
448cc40f5baSElaine Zhang 	COMPOSITE(ACLK_SECURE_HIGH, "aclk_secure_high", gpll_spll_aupll_bpll_lpll_p, CLK_IS_CRITICAL,
449cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(10), 11, 3, MFLAGS, 6, 5, DFLAGS,
450cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(1), 7, GFLAGS),
451cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_TOP, "hclk_top", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL,
452cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(19), 2, 2, MFLAGS,
453cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(1), 14, GFLAGS),
454cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_VO0VOP_CHANNEL, "hclk_vo0vop_channel", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL,
455cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(19), 6, 2, MFLAGS,
456cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(2), 0, GFLAGS),
457cc40f5baSElaine Zhang 	COMPOSITE(ACLK_VO0VOP_CHANNEL, "aclk_vo0vop_channel", gpll_cpll_lpll_bpll_p, CLK_IS_CRITICAL,
458cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(19), 12, 2, MFLAGS, 8, 4, DFLAGS,
459cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(2), 1, GFLAGS),
460cc40f5baSElaine Zhang 	MUX(CLK_AUDIO_FRAC_0_SRC, "clk_audio_frac_0_src", gpll_cpll_aupll_24m_p, 0,
461cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(13), 0, 2, MFLAGS),
462cc40f5baSElaine Zhang 	COMPOSITE_FRAC(CLK_AUDIO_FRAC_0, "clk_audio_frac_0", "clk_audio_frac_0_src", 0,
463cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(12), 0,
464cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(1), 10, GFLAGS),
465cc40f5baSElaine Zhang 	MUX(CLK_AUDIO_FRAC_1_SRC, "clk_audio_frac_1_src", gpll_cpll_aupll_24m_p, 0,
466cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(15), 0, 2, MFLAGS),
467cc40f5baSElaine Zhang 	COMPOSITE_FRAC(CLK_AUDIO_FRAC_1, "clk_audio_frac_1", "clk_audio_frac_1_src", 0,
468cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(14), 0,
469cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(1), 11, GFLAGS),
470cc40f5baSElaine Zhang 	MUX(CLK_AUDIO_FRAC_2_SRC, "clk_audio_frac_2_src", gpll_cpll_aupll_24m_p, 0,
471cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(17), 0, 2, MFLAGS),
472cc40f5baSElaine Zhang 	COMPOSITE_FRAC(CLK_AUDIO_FRAC_2, "clk_audio_frac_2", "clk_audio_frac_2_src", 0,
473cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(16), 0,
474cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(1), 12, GFLAGS),
475cc40f5baSElaine Zhang 	MUX(CLK_AUDIO_FRAC_3_SRC, "clk_audio_frac_3_src", gpll_cpll_aupll_24m_p, 0,
476cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(19), 0, 2, MFLAGS),
477cc40f5baSElaine Zhang 	COMPOSITE_FRAC(CLK_AUDIO_FRAC_3, "clk_audio_frac_3", "clk_audio_frac_3_src", 0,
478cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(18), 0,
479cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(1), 13, GFLAGS),
480cc40f5baSElaine Zhang 	MUX(0, "clk_uart_frac_0_src", gpll_cpll_aupll_24m_p, 0,
481cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(22), 0, 2, MFLAGS),
482cc40f5baSElaine Zhang 	COMPOSITE_FRAC(CLK_UART_FRAC_0, "clk_uart_frac_0", "clk_uart_frac_0_src", 0,
483cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(21), 0,
484cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(2), 5, GFLAGS),
485cc40f5baSElaine Zhang 	MUX(0, "clk_uart_frac_1_src", gpll_cpll_aupll_24m_p, 0,
486cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(24), 0, 2, MFLAGS),
487cc40f5baSElaine Zhang 	COMPOSITE_FRAC(CLK_UART_FRAC_1, "clk_uart_frac_1", "clk_uart_frac_1_src", 0,
488cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(23), 0,
489cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(2), 6, GFLAGS),
490cc40f5baSElaine Zhang 	MUX(0, "clk_uart_frac_2_src", gpll_cpll_aupll_24m_p, 0,
491cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(26), 0, 2, MFLAGS),
492cc40f5baSElaine Zhang 	COMPOSITE_FRAC(CLK_UART_FRAC_2, "clk_uart_frac_2", "clk_uart_frac_2_src", 0,
493cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(25), 0,
494cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(2), 7, GFLAGS),
495cc40f5baSElaine Zhang 	COMPOSITE(CLK_UART1_SRC_TOP, "clk_uart1_src_top", clk_uart_p, 0,
496cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(27), 13, 3, MFLAGS, 5, 8, DFLAGS,
497cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(2), 13, GFLAGS),
498cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_AUDIO_INT_0, "clk_audio_int_0", "gpll", 0,
499cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(28), 0, 5, DFLAGS,
500cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(2), 14, GFLAGS),
501cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_AUDIO_INT_1, "clk_audio_int_1", "cpll", 0,
502cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(28), 5, 5, DFLAGS,
503cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(2), 15, GFLAGS),
504cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_AUDIO_INT_2, "clk_audio_int_2", "aupll", 0,
505cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(28), 10, 5, DFLAGS,
506cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(3), 0, GFLAGS),
507cc40f5baSElaine Zhang 	COMPOSITE(CLK_PDM0_SRC_TOP, "clk_pdm0_src_top", audio_frac_int_p, 0,
508cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(29), 9, 3, MFLAGS, 0, 9, DFLAGS,
509cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(3), 2, GFLAGS),
510cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_GMAC0_125M_SRC, "clk_gmac0_125m_src", "cpll", 0,
511cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(30), 10, 5, DFLAGS,
512cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(3), 6, GFLAGS),
513cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_GMAC1_125M_SRC, "clk_gmac1_125m_src", "cpll", 0,
514cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(31), 0, 5, DFLAGS,
515cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(3), 7, GFLAGS),
516cc40f5baSElaine Zhang 	COMPOSITE(LCLK_ASRC_SRC_0, "lclk_asrc_src_0", audio_frac_p, 0,
517cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(31), 10, 2, MFLAGS, 5, 5, DFLAGS,
518cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(3), 10, GFLAGS),
519cc40f5baSElaine Zhang 	COMPOSITE(LCLK_ASRC_SRC_1, "lclk_asrc_src_1", audio_frac_p, 0,
520cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(32), 5, 2, MFLAGS, 0, 5, DFLAGS,
521cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(3), 11, GFLAGS),
522cc40f5baSElaine Zhang 	COMPOSITE(REF_CLK0_OUT_PLL, "ref_clk0_out_pll", gpll_cpll_spll_aupll_lpll_24m_p, 0,
523cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(33), 8, 3, MFLAGS, 0, 8, DFLAGS,
524cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(4), 1, GFLAGS),
525cc40f5baSElaine Zhang 	COMPOSITE(REF_CLK1_OUT_PLL, "ref_clk1_out_pll", gpll_cpll_spll_aupll_lpll_24m_p, 0,
526cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(34), 8, 3, MFLAGS, 0, 8, DFLAGS,
527cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(4), 2, GFLAGS),
528cc40f5baSElaine Zhang 	COMPOSITE(REF_CLK2_OUT_PLL, "ref_clk2_out_pll", gpll_cpll_spll_aupll_lpll_24m_p, 0,
529cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(35), 8, 3, MFLAGS, 0, 8, DFLAGS,
530cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(4), 3, GFLAGS),
531cc40f5baSElaine Zhang 	COMPOSITE(REFCLKO25M_GMAC0_OUT, "refclko25m_gmac0_out", gpll_cpll_p, 0,
532cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(36), 7, 1, MFLAGS, 0, 7, DFLAGS,
533cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(5), 10, GFLAGS),
534cc40f5baSElaine Zhang 	COMPOSITE(REFCLKO25M_GMAC1_OUT, "refclko25m_gmac1_out", gpll_cpll_p, 0,
535cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(36), 15, 1, MFLAGS, 8, 7, DFLAGS,
536cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(5), 11, GFLAGS),
537cc40f5baSElaine Zhang 	COMPOSITE(CLK_CIFOUT_OUT, "clk_cifout_out", gpll_cpll_24m_spll_p, 0,
538cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(37), 8, 2, MFLAGS, 0, 8, DFLAGS,
539cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(5), 12, GFLAGS),
540cc40f5baSElaine Zhang 	GATE(CLK_GMAC0_RMII_CRU, "clk_gmac0_rmii_cru", "clk_cpll_div20", 0,
541cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(5), 13, GFLAGS),
542cc40f5baSElaine Zhang 	GATE(CLK_GMAC1_RMII_CRU, "clk_gmac1_rmii_cru", "clk_cpll_div20", 0,
543cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(5), 14, GFLAGS),
544cc40f5baSElaine Zhang 	GATE(CLK_OTPC_AUTO_RD_G, "clk_otpc_auto_rd_g", "xin24m", 0,
545cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(5), 15, GFLAGS),
546d934a93bSHeiko Stuebner 	GATE(CLK_OTP_PHY_G, "clk_otp_phy_g", "xin24m", 0,
547d934a93bSHeiko Stuebner 			RK3576_CLKGATE_CON(6), 0, GFLAGS),
548cc40f5baSElaine Zhang 	COMPOSITE(CLK_MIPI_CAMERAOUT_M0, "clk_mipi_cameraout_m0", mux_24m_spll_gpll_cpll_p, 0,
549cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(38), 8, 2, MFLAGS, 0, 8, DFLAGS,
550cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(6), 3, GFLAGS),
551cc40f5baSElaine Zhang 	COMPOSITE(CLK_MIPI_CAMERAOUT_M1, "clk_mipi_cameraout_m1", mux_24m_spll_gpll_cpll_p, 0,
552cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(39), 8, 2, MFLAGS, 0, 8, DFLAGS,
553cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(6), 4, GFLAGS),
554cc40f5baSElaine Zhang 	COMPOSITE(CLK_MIPI_CAMERAOUT_M2, "clk_mipi_cameraout_m2", mux_24m_spll_gpll_cpll_p, 0,
555cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(40), 8, 2, MFLAGS, 0, 8, DFLAGS,
556cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(6), 5, GFLAGS),
557cc40f5baSElaine Zhang 	COMPOSITE(MCLK_PDM0_SRC_TOP, "mclk_pdm0_src_top", audio_frac_int_p, 0,
558cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(41), 7, 3, MFLAGS, 2, 5, DFLAGS,
559cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(6), 8, GFLAGS),
560cc40f5baSElaine Zhang 
561cc40f5baSElaine Zhang 	/* bus */
562cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_BUS_ROOT, "hclk_bus_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL,
563cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(55), 0, 2, MFLAGS,
564cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(11), 0, GFLAGS),
565cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_BUS_ROOT, "pclk_bus_root", mux_100m_50m_24m_p, CLK_IS_CRITICAL,
566cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(55), 2, 2, MFLAGS,
567cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(11), 1, GFLAGS),
568cc40f5baSElaine Zhang 	COMPOSITE(ACLK_BUS_ROOT, "aclk_bus_root", gpll_cpll_p, CLK_IS_CRITICAL,
569cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(55), 9, 1, MFLAGS, 4, 5, DFLAGS,
570cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(11), 2, GFLAGS),
571cc40f5baSElaine Zhang 	GATE(HCLK_CAN0, "hclk_can0", "hclk_bus_root", 0,
572cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(11), 6, GFLAGS),
573cc40f5baSElaine Zhang 	COMPOSITE(CLK_CAN0, "clk_can0", gpll_cpll_24m_p, 0,
574cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(56), 5, 2, MFLAGS, 0, 5, DFLAGS,
575cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(11), 7, GFLAGS),
576cc40f5baSElaine Zhang 	GATE(HCLK_CAN1, "hclk_can1", "hclk_bus_root", 0,
577cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(11), 8, GFLAGS),
578cc40f5baSElaine Zhang 	COMPOSITE(CLK_CAN1, "clk_can1", gpll_cpll_24m_p, 0,
579cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(56), 12, 2, MFLAGS, 7, 5, DFLAGS,
580cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(11), 9, GFLAGS),
581cc40f5baSElaine Zhang 	GATE(CLK_KEY_SHIFT, "clk_key_shift", "xin24m", CLK_IS_CRITICAL,
582cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(11), 15, GFLAGS),
583cc40f5baSElaine Zhang 	GATE(PCLK_I2C1, "pclk_i2c1", "pclk_bus_root", 0,
584cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 0, GFLAGS),
585cc40f5baSElaine Zhang 	GATE(PCLK_I2C2, "pclk_i2c2", "pclk_bus_root", 0,
586cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 1, GFLAGS),
587cc40f5baSElaine Zhang 	GATE(PCLK_I2C3, "pclk_i2c3", "pclk_bus_root", 0,
588cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 2, GFLAGS),
589cc40f5baSElaine Zhang 	GATE(PCLK_I2C4, "pclk_i2c4", "pclk_bus_root", 0,
590cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 3, GFLAGS),
591cc40f5baSElaine Zhang 	GATE(PCLK_I2C5, "pclk_i2c5", "pclk_bus_root", 0,
592cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 4, GFLAGS),
593cc40f5baSElaine Zhang 	GATE(PCLK_I2C6, "pclk_i2c6", "pclk_bus_root", 0,
594cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 5, GFLAGS),
595cc40f5baSElaine Zhang 	GATE(PCLK_I2C7, "pclk_i2c7", "pclk_bus_root", 0,
596cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 6, GFLAGS),
597cc40f5baSElaine Zhang 	GATE(PCLK_I2C8, "pclk_i2c8", "pclk_bus_root", 0,
598cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 7, GFLAGS),
599cc40f5baSElaine Zhang 	GATE(PCLK_I2C9, "pclk_i2c9", "pclk_bus_root", 0,
600cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 8, GFLAGS),
601cc40f5baSElaine Zhang 	GATE(PCLK_WDT_BUSMCU, "pclk_wdt_busmcu", "pclk_bus_root", 0,
602cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 9, GFLAGS),
603cc40f5baSElaine Zhang 	GATE(TCLK_WDT_BUSMCU, "tclk_wdt_busmcu", "xin24m", 0,
604cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 10, GFLAGS),
605cc40f5baSElaine Zhang 	GATE(ACLK_GIC, "aclk_gic", "aclk_bus_root", CLK_IS_CRITICAL,
606cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 11, GFLAGS),
607cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_I2C1, "clk_i2c1", mux_200m_100m_50m_24m_p, 0,
608cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(57), 0, 2, MFLAGS,
609cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 12, GFLAGS),
610cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_I2C2, "clk_i2c2", mux_200m_100m_50m_24m_p, 0,
611cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(57), 2, 2, MFLAGS,
612cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 13, GFLAGS),
613cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_I2C3, "clk_i2c3", mux_200m_100m_50m_24m_p, 0,
614cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(57), 4, 2, MFLAGS,
615cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 14, GFLAGS),
616cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_I2C4, "clk_i2c4", mux_200m_100m_50m_24m_p, 0,
617cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(57), 6, 2, MFLAGS,
618cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(12), 15, GFLAGS),
619cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_I2C5, "clk_i2c5", mux_200m_100m_50m_24m_p, 0,
620cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(57), 8, 2, MFLAGS,
621cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 0, GFLAGS),
622cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_I2C6, "clk_i2c6", mux_200m_100m_50m_24m_p, 0,
623cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(57), 10, 2, MFLAGS,
624cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 1, GFLAGS),
625cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_I2C7, "clk_i2c7", mux_200m_100m_50m_24m_p, 0,
626cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(57), 12, 2, MFLAGS,
627cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 2, GFLAGS),
628cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_I2C8, "clk_i2c8", mux_200m_100m_50m_24m_p, 0,
629cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(57), 14, 2, MFLAGS,
630cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 3, GFLAGS),
631cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_I2C9, "clk_i2c9", mux_200m_100m_50m_24m_p, 0,
632cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(58), 0, 2, MFLAGS,
633cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 4, GFLAGS),
634cc40f5baSElaine Zhang 	GATE(PCLK_SARADC, "pclk_saradc", "pclk_bus_root", 0,
635cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 6, GFLAGS),
636cc40f5baSElaine Zhang 	COMPOSITE(CLK_SARADC, "clk_saradc", gpll_24m_p, 0,
637cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(58), 12, 1, MFLAGS, 4, 8, DFLAGS,
638cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 7, GFLAGS),
639cc40f5baSElaine Zhang 	GATE(PCLK_TSADC, "pclk_tsadc", "pclk_bus_root", 0,
640cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 8, GFLAGS),
641cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_TSADC, "clk_tsadc", "xin24m", 0,
642cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(59), 0, 8, DFLAGS,
643cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 9, GFLAGS),
644cc40f5baSElaine Zhang 	GATE(PCLK_UART0, "pclk_uart0", "pclk_bus_root", 0,
645cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 10, GFLAGS),
646cc40f5baSElaine Zhang 	GATE(PCLK_UART2, "pclk_uart2", "pclk_bus_root", 0,
647cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 11, GFLAGS),
648cc40f5baSElaine Zhang 	GATE(PCLK_UART3, "pclk_uart3", "pclk_bus_root", 0,
649cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 12, GFLAGS),
650cc40f5baSElaine Zhang 	GATE(PCLK_UART4, "pclk_uart4", "pclk_bus_root", 0,
651cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 13, GFLAGS),
652cc40f5baSElaine Zhang 	GATE(PCLK_UART5, "pclk_uart5", "pclk_bus_root", 0,
653cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 14, GFLAGS),
654cc40f5baSElaine Zhang 	GATE(PCLK_UART6, "pclk_uart6", "pclk_bus_root", 0,
655cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(13), 15, GFLAGS),
656cc40f5baSElaine Zhang 	GATE(PCLK_UART7, "pclk_uart7", "pclk_bus_root", 0,
657cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(14), 0, GFLAGS),
658cc40f5baSElaine Zhang 	GATE(PCLK_UART8, "pclk_uart8", "pclk_bus_root", 0,
659cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(14), 1, GFLAGS),
660cc40f5baSElaine Zhang 	GATE(PCLK_UART9, "pclk_uart9", "pclk_bus_root", 0,
661cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(14), 2, GFLAGS),
662cc40f5baSElaine Zhang 	GATE(PCLK_UART10, "pclk_uart10", "pclk_bus_root", 0,
663cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(14), 3, GFLAGS),
664cc40f5baSElaine Zhang 	GATE(PCLK_UART11, "pclk_uart11", "pclk_bus_root", 0,
665cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(14), 4, GFLAGS),
666cc40f5baSElaine Zhang 	COMPOSITE(SCLK_UART0, "sclk_uart0", clk_uart_p, 0,
667cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(60), 8, 3, MFLAGS, 0, 8, DFLAGS,
668cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(14), 5, GFLAGS),
669cc40f5baSElaine Zhang 	COMPOSITE(SCLK_UART2, "sclk_uart2", clk_uart_p, 0,
670cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(61), 8, 3, MFLAGS, 0, 8, DFLAGS,
671cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(14), 6, GFLAGS),
672cc40f5baSElaine Zhang 	COMPOSITE(SCLK_UART3, "sclk_uart3", clk_uart_p, 0,
673cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(62), 8, 3, MFLAGS, 0, 8, DFLAGS,
674cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(14), 9, GFLAGS),
675cc40f5baSElaine Zhang 	COMPOSITE(SCLK_UART4, "sclk_uart4", clk_uart_p, 0,
676cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(63), 8, 3, MFLAGS, 0, 8, DFLAGS,
677cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(14), 12, GFLAGS),
678cc40f5baSElaine Zhang 	COMPOSITE(SCLK_UART5, "sclk_uart5", clk_uart_p, 0,
679cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(64), 8, 3, MFLAGS, 0, 8, DFLAGS,
680cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(14), 15, GFLAGS),
681cc40f5baSElaine Zhang 	COMPOSITE(SCLK_UART6, "sclk_uart6", clk_uart_p, 0,
682cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(65), 8, 3, MFLAGS, 0, 8, DFLAGS,
683cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(15), 2, GFLAGS),
684cc40f5baSElaine Zhang 	COMPOSITE(SCLK_UART7, "sclk_uart7", clk_uart_p, 0,
685cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(66), 8, 3, MFLAGS, 0, 8, DFLAGS,
686cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(15), 5, GFLAGS),
687cc40f5baSElaine Zhang 	COMPOSITE(SCLK_UART8, "sclk_uart8", clk_uart_p, 0,
688cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(67), 8, 3, MFLAGS, 0, 8, DFLAGS,
689cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(15), 8, GFLAGS),
690cc40f5baSElaine Zhang 	COMPOSITE(SCLK_UART9, "sclk_uart9", clk_uart_p, 0,
691cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(68), 8, 3, MFLAGS, 0, 8, DFLAGS,
692cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(15), 9, GFLAGS),
693cc40f5baSElaine Zhang 	COMPOSITE(SCLK_UART10, "sclk_uart10", clk_uart_p, 0,
694cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(69), 8, 3, MFLAGS, 0, 8, DFLAGS,
695cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(15), 10, GFLAGS),
696cc40f5baSElaine Zhang 	COMPOSITE(SCLK_UART11, "sclk_uart11", clk_uart_p, 0,
697cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(70), 8, 3, MFLAGS, 0, 8, DFLAGS,
698cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(15), 11, GFLAGS),
699cc40f5baSElaine Zhang 	GATE(PCLK_SPI0, "pclk_spi0", "pclk_bus_root", 0,
700cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(15), 13, GFLAGS),
701cc40f5baSElaine Zhang 	GATE(PCLK_SPI1, "pclk_spi1", "pclk_bus_root", 0,
702cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(15), 14, GFLAGS),
703cc40f5baSElaine Zhang 	GATE(PCLK_SPI2, "pclk_spi2", "pclk_bus_root", 0,
704cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(15), 15, GFLAGS),
705cc40f5baSElaine Zhang 	GATE(PCLK_SPI3, "pclk_spi3", "pclk_bus_root", 0,
706cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 0, GFLAGS),
707cc40f5baSElaine Zhang 	GATE(PCLK_SPI4, "pclk_spi4", "pclk_bus_root", 0,
708cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 1, GFLAGS),
709cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_SPI0, "clk_spi0", mux_200m_100m_50m_24m_p, 0,
710cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(70), 13, 2, MFLAGS,
711cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 2, GFLAGS),
712cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_SPI1, "clk_spi1", mux_200m_100m_50m_24m_p, 0,
713cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(71), 0, 2, MFLAGS,
714cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 3, GFLAGS),
715cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_SPI2, "clk_spi2", mux_200m_100m_50m_24m_p, 0,
716cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(71), 2, 2, MFLAGS,
717cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 4, GFLAGS),
718cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_SPI3, "clk_spi3", mux_200m_100m_50m_24m_p, 0,
719cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(71), 4, 2, MFLAGS,
720cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 5, GFLAGS),
721cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_SPI4, "clk_spi4", mux_200m_100m_50m_24m_p, 0,
722cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(71), 6, 2, MFLAGS,
723cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 6, GFLAGS),
724cc40f5baSElaine Zhang 	GATE(PCLK_WDT0, "pclk_wdt0", "pclk_bus_root", 0,
725cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 7, GFLAGS),
726cc40f5baSElaine Zhang 	GATE(TCLK_WDT0, "tclk_wdt0", "xin24m", 0,
727cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 8, GFLAGS),
728cc40f5baSElaine Zhang 	GATE(PCLK_PWM1, "pclk_pwm1", "pclk_bus_root", 0,
729cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 10, GFLAGS),
730cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_PWM1, "clk_pwm1", mux_100m_50m_24m_p, 0,
731cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(71), 8, 2, MFLAGS,
732cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 11, GFLAGS),
733cc40f5baSElaine Zhang 	GATE(CLK_OSC_PWM1, "clk_osc_pwm1", "xin24m", 0,
734cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 13, GFLAGS),
735cc40f5baSElaine Zhang 	GATE(CLK_RC_PWM1, "clk_rc_pwm1", "clk_pvtm_clkout", 0,
736cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(16), 15, GFLAGS),
737cc40f5baSElaine Zhang 	GATE(PCLK_BUSTIMER0, "pclk_bustimer0", "pclk_bus_root", 0,
738cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(17), 3, GFLAGS),
739cc40f5baSElaine Zhang 	GATE(PCLK_BUSTIMER1, "pclk_bustimer1", "pclk_bus_root", 0,
740cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(17), 4, GFLAGS),
741cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_TIMER0_ROOT, "clk_timer0_root", mux_100m_24m_p, 0,
742cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(71), 14, 1, MFLAGS,
743cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(17), 5, GFLAGS),
744cc40f5baSElaine Zhang 	GATE(CLK_TIMER0, "clk_timer0", "clk_timer0_root", 0,
745cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(17), 6, GFLAGS),
746cc40f5baSElaine Zhang 	GATE(CLK_TIMER1, "clk_timer1", "clk_timer0_root", 0,
747cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(17), 7, GFLAGS),
748cc40f5baSElaine Zhang 	GATE(CLK_TIMER2, "clk_timer2", "clk_timer0_root", 0,
749cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(17), 8, GFLAGS),
750cc40f5baSElaine Zhang 	GATE(CLK_TIMER3, "clk_timer3", "clk_timer0_root", 0,
751cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(17), 9, GFLAGS),
752cc40f5baSElaine Zhang 	GATE(CLK_TIMER4, "clk_timer4", "clk_timer0_root", 0,
753cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(17), 10, GFLAGS),
754cc40f5baSElaine Zhang 	GATE(CLK_TIMER5, "clk_timer5", "clk_timer0_root", 0,
755cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(17), 11, GFLAGS),
756cc40f5baSElaine Zhang 	GATE(PCLK_MAILBOX0, "pclk_mailbox0", "pclk_bus_root", 0,
757cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(17), 13, GFLAGS),
758cc40f5baSElaine Zhang 	GATE(PCLK_GPIO1, "pclk_gpio1", "pclk_bus_root", 0,
759cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(17), 15, GFLAGS),
760cc40f5baSElaine Zhang 	GATE(DBCLK_GPIO1, "dbclk_gpio1", "xin24m", 0,
761cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 0, GFLAGS),
762cc40f5baSElaine Zhang 	GATE(PCLK_GPIO2, "pclk_gpio2", "pclk_bus_root", 0,
763cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 1, GFLAGS),
764cc40f5baSElaine Zhang 	GATE(DBCLK_GPIO2, "dbclk_gpio2", "xin24m", 0,
765cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 2, GFLAGS),
766cc40f5baSElaine Zhang 	GATE(PCLK_GPIO3, "pclk_gpio3", "pclk_bus_root", 0,
767cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 3, GFLAGS),
768cc40f5baSElaine Zhang 	GATE(DBCLK_GPIO3, "dbclk_gpio3", "xin24m", 0,
769cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 4, GFLAGS),
770cc40f5baSElaine Zhang 	GATE(PCLK_GPIO4, "pclk_gpio4", "pclk_bus_root", 0,
771cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 5, GFLAGS),
772cc40f5baSElaine Zhang 	GATE(DBCLK_GPIO4, "dbclk_gpio4", "xin24m", 0,
773cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 6, GFLAGS),
774cc40f5baSElaine Zhang 	GATE(ACLK_DECOM, "aclk_decom", "aclk_bus_root", 0,
775cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 7, GFLAGS),
776cc40f5baSElaine Zhang 	GATE(PCLK_DECOM, "pclk_decom", "pclk_bus_root", 0,
777cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 8, GFLAGS),
778cc40f5baSElaine Zhang 	COMPOSITE(DCLK_DECOM, "dclk_decom", gpll_spll_p, 0,
779cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(72), 5, 1, MFLAGS, 0, 5, DFLAGS,
780cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 9, GFLAGS),
781cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_TIMER1_ROOT, "clk_timer1_root", mux_100m_24m_p, 0,
782cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(72), 6, 1, MFLAGS,
783cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 10, GFLAGS),
784cc40f5baSElaine Zhang 	GATE(CLK_TIMER6, "clk_timer6", "clk_timer1_root", 0,
785cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 11, GFLAGS),
786cc40f5baSElaine Zhang 	COMPOSITE(CLK_TIMER7, "clk_timer7", mux_100m_24m_lclk0_p, 0,
787cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(72), 12, 2, MFLAGS, 7, 5, DFLAGS,
788cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 12, GFLAGS),
789cc40f5baSElaine Zhang 	COMPOSITE(CLK_TIMER8, "clk_timer8", mux_100m_24m_lclk1_p, 0,
790cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(73), 5, 2, MFLAGS, 0, 5, DFLAGS,
791cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 13, GFLAGS),
792cc40f5baSElaine Zhang 	GATE(CLK_TIMER9, "clk_timer9", "clk_timer1_root", 0,
793cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 14, GFLAGS),
794cc40f5baSElaine Zhang 	GATE(CLK_TIMER10, "clk_timer10", "clk_timer1_root", 0,
795cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(18), 15, GFLAGS),
796cc40f5baSElaine Zhang 	GATE(CLK_TIMER11, "clk_timer11", "clk_timer1_root", 0,
797cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(19), 0, GFLAGS),
798cc40f5baSElaine Zhang 	GATE(ACLK_DMAC0, "aclk_dmac0", "aclk_bus_root", 0,
799cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(19), 1, GFLAGS),
800cc40f5baSElaine Zhang 	GATE(ACLK_DMAC1, "aclk_dmac1", "aclk_bus_root", 0,
801cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(19), 2, GFLAGS),
802cc40f5baSElaine Zhang 	GATE(ACLK_DMAC2, "aclk_dmac2", "aclk_bus_root", 0,
803cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(19), 3, GFLAGS),
804cc40f5baSElaine Zhang 	GATE(ACLK_SPINLOCK, "aclk_spinlock", "aclk_bus_root", 0,
805cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(19), 4, GFLAGS),
806cc40f5baSElaine Zhang 	GATE(HCLK_I3C0, "hclk_i3c0", "hclk_bus_root", 0,
807cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(19), 7, GFLAGS),
808cc40f5baSElaine Zhang 	GATE(HCLK_I3C1, "hclk_i3c1", "hclk_bus_root", 0,
809cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(19), 9, GFLAGS),
810cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_BUS_CM0_ROOT, "hclk_bus_cm0_root", mux_400m_200m_100m_24m_p, 0,
811cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(73), 13, 2, MFLAGS,
812cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(19), 10, GFLAGS),
813cc40f5baSElaine Zhang 	GATE(FCLK_BUS_CM0_CORE, "fclk_bus_cm0_core", "hclk_bus_cm0_root", 0,
814cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(19), 12, GFLAGS),
815cc40f5baSElaine Zhang 	COMPOSITE(CLK_BUS_CM0_RTC, "clk_bus_cm0_rtc", mux_24m_32k_p, 0,
816cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(74), 5, 1, MFLAGS, 0, 5, DFLAGS,
817cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(19), 14, GFLAGS),
818cc40f5baSElaine Zhang 	GATE(PCLK_PMU2, "pclk_pmu2", "pclk_bus_root", CLK_IS_CRITICAL,
819cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(19), 15, GFLAGS),
820cc40f5baSElaine Zhang 	GATE(PCLK_PWM2, "pclk_pwm2", "pclk_bus_root", 0,
821cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(20), 4, GFLAGS),
822cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_PWM2, "clk_pwm2", mux_100m_50m_24m_p, 0,
823cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(74), 6, 2, MFLAGS,
824cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(20), 5, GFLAGS),
825cc40f5baSElaine Zhang 	GATE(CLK_OSC_PWM2, "clk_osc_pwm2", "xin24m", 0,
826cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(20), 7, GFLAGS),
827cc40f5baSElaine Zhang 	GATE(CLK_RC_PWM2, "clk_rc_pwm2", "clk_pvtm_clkout", 0,
828cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(20), 6, GFLAGS),
829cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_FREQ_PWM1, "clk_freq_pwm1", clk_freq_pwm1_p, 0,
830cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(74), 8, 3, MFLAGS,
831cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(20), 8, GFLAGS),
832cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_COUNTER_PWM1, "clk_counter_pwm1", clk_counter_pwm1_p, 0,
833cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(74), 11, 3, MFLAGS,
834cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(20), 9, GFLAGS),
835cc40f5baSElaine Zhang 	COMPOSITE_NODIV(SAI_SCLKIN_FREQ, "sai_sclkin_freq", sai_sclkin_freq_p, 0,
836cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(75), 0, 3, MFLAGS,
837cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(20), 10, GFLAGS),
838cc40f5baSElaine Zhang 	COMPOSITE_NODIV(SAI_SCLKIN_COUNTER, "sai_sclkin_counter", sai_sclkin_freq_p, 0,
839cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(75), 3, 3, MFLAGS,
840cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(20), 11, GFLAGS),
841cc40f5baSElaine Zhang 	COMPOSITE(CLK_I3C0, "clk_i3c0", gpll_cpll_aupll_spll_p, 0,
842cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(78), 5, 2, MFLAGS, 0, 5, DFLAGS,
843cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(20), 12, GFLAGS),
844cc40f5baSElaine Zhang 	COMPOSITE(CLK_I3C1, "clk_i3c1", gpll_cpll_aupll_spll_p, 0,
845cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(78), 12, 2, MFLAGS, 7, 5, DFLAGS,
846cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(20), 13, GFLAGS),
847cc40f5baSElaine Zhang 	GATE(PCLK_CSIDPHY1, "pclk_csidphy1", "pclk_bus_root", 0,
848cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(40), 2, GFLAGS),
849cc40f5baSElaine Zhang 
850cc40f5baSElaine Zhang 	/* cci */
851cc40f5baSElaine Zhang 	COMPOSITE(PCLK_CCI_ROOT, "pclk_cci_root", mux_24m_ccipvtpll_gpll_lpll_p, CLK_IS_CRITICAL,
852cc40f5baSElaine Zhang 			RK3576_CCI_CLKSEL_CON(4), 5, 2, MFLAGS, 0, 5, DFLAGS,
853cc40f5baSElaine Zhang 			RK3576_CCI_CLKGATE_CON(1), 10, GFLAGS),
854cc40f5baSElaine Zhang 	COMPOSITE(ACLK_CCI_ROOT, "aclk_cci_root", mux_24m_ccipvtpll_gpll_lpll_p, CLK_IS_CRITICAL,
855cc40f5baSElaine Zhang 			RK3576_CCI_CLKSEL_CON(4), 12, 2, MFLAGS, 7, 5, DFLAGS,
856cc40f5baSElaine Zhang 			RK3576_CCI_CLKGATE_CON(1), 11, GFLAGS),
857cc40f5baSElaine Zhang 
858cc40f5baSElaine Zhang 	/* center */
859cc40f5baSElaine Zhang 	COMPOSITE_DIV_OFFSET(ACLK_CENTER_ROOT, "aclk_center_root", gpll_cpll_spll_aupll_bpll_p, CLK_IS_CRITICAL,
860cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(168), 5, 3, MFLAGS,
861cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(167), 9, 5, DFLAGS,
862cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(72), 0, GFLAGS),
863cc40f5baSElaine Zhang 	COMPOSITE_NODIV(ACLK_CENTER_LOW_ROOT, "aclk_center_low_root", mux_500m_250m_100m_24m_p, CLK_IS_CRITICAL,
864cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(168), 8, 2, MFLAGS,
865cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(72), 1, GFLAGS),
866cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_CENTER_ROOT, "hclk_center_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL,
867cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(168), 10, 2, MFLAGS,
868cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(72), 2, GFLAGS),
869cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_CENTER_ROOT, "pclk_center_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL,
870cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(168), 12, 2, MFLAGS,
871cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(72), 3, GFLAGS),
872cc40f5baSElaine Zhang 	GATE(ACLK_DMA2DDR, "aclk_dma2ddr", "aclk_center_root", CLK_IGNORE_UNUSED,
873cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(72), 5, GFLAGS),
874cc40f5baSElaine Zhang 	GATE(ACLK_DDR_SHAREMEM, "aclk_ddr_sharemem", "aclk_center_low_root", CLK_IGNORE_UNUSED,
875cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(72), 6, GFLAGS),
876cc40f5baSElaine Zhang 	GATE(PCLK_DMA2DDR, "pclk_dma2ddr", "pclk_center_root", CLK_IGNORE_UNUSED,
877cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(72), 10, GFLAGS),
878cc40f5baSElaine Zhang 	GATE(PCLK_SHAREMEM, "pclk_sharemem", "pclk_center_root", CLK_IGNORE_UNUSED,
879cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(72), 11, GFLAGS),
880cc40f5baSElaine Zhang 
881cc40f5baSElaine Zhang 	/* ddr */
882cc40f5baSElaine Zhang 	COMPOSITE(PCLK_DDR_ROOT, "pclk_ddr_root", gpll_cpll_24m_p, CLK_IS_CRITICAL,
883cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(76), 5, 2, MFLAGS, 0, 5, DFLAGS,
884cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(21), 0, GFLAGS),
885cc40f5baSElaine Zhang 	GATE(PCLK_DDR_MON_CH0, "pclk_ddr_mon_ch0", "pclk_ddr_root", CLK_IGNORE_UNUSED,
886cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(21), 1, GFLAGS),
887cc40f5baSElaine Zhang 	COMPOSITE(HCLK_DDR_ROOT, "hclk_ddr_root", gpll_cpll_p, CLK_IGNORE_UNUSED,
888cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(77), 5, 1, MFLAGS, 0, 5, DFLAGS,
889cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(22), 11, GFLAGS),
890cc40f5baSElaine Zhang 	GATE(FCLK_DDR_CM0_CORE, "fclk_ddr_cm0_core", "hclk_ddr_root", CLK_IS_CRITICAL,
891cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(22), 15, GFLAGS),
892cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_DDR_TIMER_ROOT, "clk_ddr_timer_root", mux_100m_24m_p, 0,
893cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(77), 6, 1, MFLAGS,
894cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(23), 3, GFLAGS),
895cc40f5baSElaine Zhang 	GATE(CLK_DDR_TIMER0, "clk_ddr_timer0", "clk_ddr_timer_root", 0,
896cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(23), 4, GFLAGS),
897cc40f5baSElaine Zhang 	GATE(CLK_DDR_TIMER1, "clk_ddr_timer1", "clk_ddr_timer_root", 0,
898cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(23), 5, GFLAGS),
899cc40f5baSElaine Zhang 	GATE(TCLK_WDT_DDR, "tclk_wdt_ddr", "xin24m", 0,
900cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(23), 6, GFLAGS),
901cc40f5baSElaine Zhang 	GATE(PCLK_WDT, "pclk_wdt", "pclk_ddr_root", 0,
902cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(23), 7, GFLAGS),
903cc40f5baSElaine Zhang 	GATE(PCLK_TIMER, "pclk_timer", "pclk_ddr_root", 0,
904cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(23), 8, GFLAGS),
905cc40f5baSElaine Zhang 	COMPOSITE(CLK_DDR_CM0_RTC, "clk_ddr_cm0_rtc", mux_24m_32k_p, 0,
906cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(77), 12, 1, MFLAGS, 7, 5, DFLAGS,
907cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(23), 10, GFLAGS),
908cc40f5baSElaine Zhang 
909cc40f5baSElaine Zhang 	/* gpu */
910cc40f5baSElaine Zhang 	COMPOSITE(CLK_GPU_SRC_PRE, "clk_gpu_src_pre", gpll_cpll_aupll_spll_lpll_p, 0,
911cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(165), 5, 3, MFLAGS, 0, 5, DFLAGS,
912cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(69), 1, GFLAGS),
913cc40f5baSElaine Zhang 	GATE(CLK_GPU, "clk_gpu", "clk_gpu_src_pre", 0,
914cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(69), 3, GFLAGS),
915cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_GPU_ROOT, "pclk_gpu_root", mux_100m_50m_24m_p, 0,
916cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(166), 10, 2, MFLAGS,
917cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(69), 8, GFLAGS),
918cc40f5baSElaine Zhang 
919cc40f5baSElaine Zhang 	/* npu */
920cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_RKNN_ROOT, "hclk_rknn_root", mux_200m_100m_50m_24m_p, 0,
921cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(86), 0, 2, MFLAGS,
922cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(31), 4, GFLAGS),
923cc40f5baSElaine Zhang 	COMPOSITE(CLK_RKNN_DSU0, "clk_rknn_dsu0", gpll_cpll_aupll_spll_p, 0,
924cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(86), 7, 2, MFLAGS, 2, 5, DFLAGS,
925cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(31), 5, GFLAGS),
926cc40f5baSElaine Zhang 	GATE(ACLK_RKNN0, "aclk_rknn0", "clk_rknn_dsu0", 0,
927cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(28), 9, GFLAGS),
928cc40f5baSElaine Zhang 	GATE(ACLK_RKNN1, "aclk_rknn1", "clk_rknn_dsu0", 0,
929cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(29), 0, GFLAGS),
930cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_NPUTOP_ROOT, "pclk_nputop_root", mux_100m_50m_24m_p, 0,
931cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(87), 0, 2, MFLAGS,
932cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(31), 8, GFLAGS),
933cc40f5baSElaine Zhang 	GATE(PCLK_NPU_TIMER, "pclk_npu_timer", "pclk_nputop_root", 0,
934cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(31), 10, GFLAGS),
935cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_NPUTIMER_ROOT, "clk_nputimer_root", mux_100m_24m_p, 0,
936cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(87), 2, 1, MFLAGS,
937cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(31), 11, GFLAGS),
938cc40f5baSElaine Zhang 	GATE(CLK_NPUTIMER0, "clk_nputimer0", "clk_nputimer_root", 0,
939cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(31), 12, GFLAGS),
940cc40f5baSElaine Zhang 	GATE(CLK_NPUTIMER1, "clk_nputimer1", "clk_nputimer_root", 0,
941cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(31), 13, GFLAGS),
942cc40f5baSElaine Zhang 	GATE(PCLK_NPU_WDT, "pclk_npu_wdt", "pclk_nputop_root", 0,
943cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(31), 14, GFLAGS),
944cc40f5baSElaine Zhang 	GATE(TCLK_NPU_WDT, "tclk_npu_wdt", "xin24m", 0,
945cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(31), 15, GFLAGS),
946cc40f5baSElaine Zhang 	GATE(ACLK_RKNN_CBUF, "aclk_rknn_cbuf", "clk_rknn_dsu0", 0,
947cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(32), 0, GFLAGS),
948cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_NPU_CM0_ROOT, "hclk_npu_cm0_root", mux_400m_200m_100m_24m_p, 0,
949cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(87), 3, 2, MFLAGS,
950cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(32), 5, GFLAGS),
951cc40f5baSElaine Zhang 	GATE(FCLK_NPU_CM0_CORE, "fclk_npu_cm0_core", "hclk_npu_cm0_root", 0,
952cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(32), 7, GFLAGS),
953cc40f5baSElaine Zhang 	COMPOSITE(CLK_NPU_CM0_RTC, "clk_npu_cm0_rtc", mux_24m_32k_p, 0,
954cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(87), 10, 1, MFLAGS, 5, 5, DFLAGS,
955cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(32), 9, GFLAGS),
956cc40f5baSElaine Zhang 	GATE(HCLK_RKNN_CBUF, "hclk_rknn_cbuf", "hclk_rknn_root", 0,
957cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(32), 12, GFLAGS),
958cc40f5baSElaine Zhang 
959cc40f5baSElaine Zhang 	/* nvm */
960cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_NVM_ROOT, "hclk_nvm_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL,
961cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(88), 0, 2, MFLAGS,
962cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(33), 0, GFLAGS),
963cc40f5baSElaine Zhang 	COMPOSITE(ACLK_NVM_ROOT, "aclk_nvm_root", gpll_cpll_p, CLK_IS_CRITICAL,
964cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(88), 7, 1, MFLAGS, 2, 5, DFLAGS,
965cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(33), 1, GFLAGS),
966cc40f5baSElaine Zhang 	COMPOSITE(SCLK_FSPI_X2, "sclk_fspi_x2", gpll_cpll_24m_p, 0,
967cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(89), 6, 2, MFLAGS, 0, 6, DFLAGS,
968cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(33), 6, GFLAGS),
969cc40f5baSElaine Zhang 	GATE(HCLK_FSPI, "hclk_fspi", "hclk_nvm_root", 0,
970cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(33), 7, GFLAGS),
971cc40f5baSElaine Zhang 	COMPOSITE(CCLK_SRC_EMMC, "cclk_src_emmc", gpll_cpll_24m_p, 0,
972cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(89), 14, 2, MFLAGS, 8, 6, DFLAGS,
973cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(33), 8, GFLAGS),
974cc40f5baSElaine Zhang 	GATE(HCLK_EMMC, "hclk_emmc", "hclk_nvm_root", 0,
975cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(33), 9, GFLAGS),
976cc40f5baSElaine Zhang 	GATE(ACLK_EMMC, "aclk_emmc", "aclk_nvm_root", 0,
977cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(33), 10, GFLAGS),
978cc40f5baSElaine Zhang 	COMPOSITE_NODIV(BCLK_EMMC, "bclk_emmc", mux_200m_100m_50m_24m_p, 0,
979cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(90), 0, 2, MFLAGS,
980cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(33), 11, GFLAGS),
981cc40f5baSElaine Zhang 	GATE(TCLK_EMMC, "tclk_emmc", "xin24m", 0,
982cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(33), 12, GFLAGS),
983cc40f5baSElaine Zhang 
984cc40f5baSElaine Zhang 	/* usb */
985cc40f5baSElaine Zhang 	COMPOSITE(ACLK_UFS_ROOT, "aclk_ufs_root", gpll_cpll_p, 0,
986cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(115), 5, 1, MFLAGS, 0, 5, DFLAGS,
987cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(47), 0, GFLAGS),
988cc40f5baSElaine Zhang 	COMPOSITE(ACLK_USB_ROOT, "aclk_usb_root", gpll_cpll_p, CLK_IS_CRITICAL,
989cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(115), 11, 1, MFLAGS, 6, 5, DFLAGS,
990cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(47), 1, GFLAGS),
991cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_USB_ROOT, "pclk_usb_root", mux_100m_50m_24m_p, CLK_IS_CRITICAL,
992cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(115), 12, 2, MFLAGS,
993cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(47), 2, GFLAGS),
994cc40f5baSElaine Zhang 	GATE(ACLK_USB3OTG0, "aclk_usb3otg0", "aclk_usb_root", 0,
995cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(47), 5, GFLAGS),
996cc40f5baSElaine Zhang 	GATE(CLK_REF_USB3OTG0, "clk_ref_usb3otg0", "xin24m", 0,
997cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(47), 6, GFLAGS),
998cc40f5baSElaine Zhang 	GATE(CLK_SUSPEND_USB3OTG0, "clk_suspend_usb3otg0", "xin24m", 0,
999cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(47), 7, GFLAGS),
1000cc40f5baSElaine Zhang 	GATE(ACLK_MMU2, "aclk_mmu2", "aclk_usb_root", 0,
1001cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(47), 12, GFLAGS),
1002cc40f5baSElaine Zhang 	GATE(ACLK_SLV_MMU2, "aclk_slv_mmu2", "aclk_usb_root", 0,
1003cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(47), 13, GFLAGS),
1004cc40f5baSElaine Zhang 	GATE(ACLK_UFS_SYS, "aclk_ufs_sys", "aclk_ufs_root", 0,
1005cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(47), 15, GFLAGS),
1006cc40f5baSElaine Zhang 
1007cc40f5baSElaine Zhang 	/* vdec */
1008cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_RKVDEC_ROOT, "hclk_rkvdec_root", mux_200m_100m_50m_24m_p, 0,
1009cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(110), 0, 2, MFLAGS,
1010cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(45), 0, GFLAGS),
1011cc40f5baSElaine Zhang 	COMPOSITE(ACLK_RKVDEC_ROOT, "aclk_rkvdec_root", gpll_cpll_aupll_spll_p, 0,
1012cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(110), 7, 2, MFLAGS, 2, 5, DFLAGS,
1013cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(45), 1, GFLAGS),
1014cc40f5baSElaine Zhang 	COMPOSITE(ACLK_RKVDEC_ROOT_BAK, "aclk_rkvdec_root_bak", cpll_vpll_lpll_bpll_p, 0,
1015cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(110), 14, 2, MFLAGS, 9, 5, DFLAGS,
1016cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(45), 2, GFLAGS),
1017cc40f5baSElaine Zhang 	GATE(HCLK_RKVDEC, "hclk_rkvdec", "hclk_rkvdec_root", 0,
1018cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(45), 3, GFLAGS),
1019cc40f5baSElaine Zhang 	COMPOSITE(CLK_RKVDEC_HEVC_CA, "clk_rkvdec_hevc_ca", gpll_cpll_lpll_bpll_p, 0,
1020cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(111), 5, 2, MFLAGS, 0, 5, DFLAGS,
1021cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(45), 8, GFLAGS),
1022cc40f5baSElaine Zhang 	GATE(CLK_RKVDEC_CORE, "clk_rkvdec_core", "aclk_rkvdec_root", 0,
1023cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(45), 9, GFLAGS),
1024cc40f5baSElaine Zhang 
1025cc40f5baSElaine Zhang 	/* venc */
1026cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_VEPU0_ROOT, "hclk_vepu0_root", mux_200m_100m_50m_24m_p, 0,
1027cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(124), 0, 2, MFLAGS,
1028cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(51), 0, GFLAGS),
1029cc40f5baSElaine Zhang 	COMPOSITE(ACLK_VEPU0_ROOT, "aclk_vepu0_root", gpll_cpll_p, 0,
1030cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(124), 7, 1, MFLAGS, 2, 5, DFLAGS,
1031cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(51), 1, GFLAGS),
1032cc40f5baSElaine Zhang 	COMPOSITE(CLK_VEPU0_CORE, "clk_vepu0_core", gpll_cpll_spll_lpll_bpll_p, 0,
1033cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(124), 13, 3, MFLAGS, 8, 5, DFLAGS,
1034cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(51), 6, GFLAGS),
1035cc40f5baSElaine Zhang 	GATE(HCLK_VEPU0, "hclk_vepu0", "hclk_vepu0_root", 0,
1036cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(51), 4, GFLAGS),
1037cc40f5baSElaine Zhang 	GATE(ACLK_VEPU0, "aclk_vepu0", "aclk_vepu0_root", 0,
1038cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(51), 5, GFLAGS),
1039cc40f5baSElaine Zhang 
1040cc40f5baSElaine Zhang 	/* vi */
1041cc40f5baSElaine Zhang 	COMPOSITE(ACLK_VI_ROOT, "aclk_vi_root", gpll_spll_isppvtpll_bpll_lpll_p, CLK_IS_CRITICAL,
1042cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(128), 5, 3, MFLAGS, 0, 5, DFLAGS,
1043cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 0, GFLAGS),
1044cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(ACLK_VI_ROOT_INTER, "aclk_vi_root_inter", "aclk_vi_root", 0,
1045cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(130), 10, 3, DFLAGS,
1046cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(54), 13, GFLAGS),
1047cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_VI_ROOT, "hclk_vi_root", hclk_vi_root_p, CLK_IS_CRITICAL,
1048cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(128), 8, 2, MFLAGS,
1049cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 1, GFLAGS),
1050cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_VI_ROOT, "pclk_vi_root", mux_100m_50m_24m_p, 0,
1051cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(128), 10, 2, MFLAGS,
1052cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 2, GFLAGS),
1053cc40f5baSElaine Zhang 	COMPOSITE(DCLK_VICAP, "dclk_vicap", gpll_cpll_p, 0,
1054cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(129), 5, 1, MFLAGS, 0, 5, DFLAGS,
1055cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 6, GFLAGS),
1056cc40f5baSElaine Zhang 	GATE(ACLK_VICAP, "aclk_vicap", "aclk_vi_root", 0,
1057cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 7, GFLAGS),
1058cc40f5baSElaine Zhang 	GATE(HCLK_VICAP, "hclk_vicap", "hclk_vi_root", 0,
1059cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 8, GFLAGS),
1060cc40f5baSElaine Zhang 	COMPOSITE(CLK_ISP_CORE, "clk_isp_core", gpll_spll_isppvtpll_bpll_lpll_p, 0,
1061cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(129), 11, 3, MFLAGS, 6, 5, DFLAGS,
1062cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 9, GFLAGS),
1063cc40f5baSElaine Zhang 	GATE(CLK_ISP_CORE_MARVIN, "clk_isp_core_marvin", "clk_isp_core", 0,
1064cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 10, GFLAGS),
1065cc40f5baSElaine Zhang 	GATE(CLK_ISP_CORE_VICAP, "clk_isp_core_vicap", "clk_isp_core", 0,
1066cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 11, GFLAGS),
1067cc40f5baSElaine Zhang 	GATE(ACLK_ISP, "aclk_isp", "aclk_vi_root", 0,
1068cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 12, GFLAGS),
1069cc40f5baSElaine Zhang 	GATE(HCLK_ISP, "hclk_isp", "hclk_vi_root", 0,
1070cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 13, GFLAGS),
1071cc40f5baSElaine Zhang 	GATE(ACLK_VPSS, "aclk_vpss", "aclk_vi_root", 0,
1072cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(53), 15, GFLAGS),
1073cc40f5baSElaine Zhang 	GATE(HCLK_VPSS, "hclk_vpss", "hclk_vi_root", 0,
1074cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(54), 0, GFLAGS),
1075cc40f5baSElaine Zhang 	GATE(CLK_CORE_VPSS, "clk_core_vpss", "clk_isp_core", 0,
1076cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(54), 1, GFLAGS),
1077cc40f5baSElaine Zhang 	GATE(PCLK_CSI_HOST_0, "pclk_csi_host_0", "pclk_vi_root", 0,
1078cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(54), 4, GFLAGS),
1079cc40f5baSElaine Zhang 	GATE(PCLK_CSI_HOST_1, "pclk_csi_host_1", "pclk_vi_root", 0,
1080cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(54), 5, GFLAGS),
1081cc40f5baSElaine Zhang 	GATE(PCLK_CSI_HOST_2, "pclk_csi_host_2", "pclk_vi_root", 0,
1082cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(54), 6, GFLAGS),
1083cc40f5baSElaine Zhang 	GATE(PCLK_CSI_HOST_3, "pclk_csi_host_3", "pclk_vi_root", 0,
1084cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(54), 7, GFLAGS),
1085cc40f5baSElaine Zhang 	GATE(PCLK_CSI_HOST_4, "pclk_csi_host_4", "pclk_vi_root", 0,
1086cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(54), 8, GFLAGS),
1087cc40f5baSElaine Zhang 	COMPOSITE_NODIV(ICLK_CSIHOST01, "iclk_csihost01", mux_400m_200m_100m_24m_p, 0,
1088cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(130), 7, 2, MFLAGS,
1089cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(54), 10, GFLAGS),
1090cc40f5baSElaine Zhang 	GATE(ICLK_CSIHOST0, "iclk_csihost0", "iclk_csihost01", 0,
1091cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(54), 11, GFLAGS),
1092cc40f5baSElaine Zhang 	COMPOSITE(ACLK_VOP_ROOT, "aclk_vop_root", gpll_cpll_aupll_spll_lpll_p, CLK_IS_CRITICAL,
1093cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(144), 5, 3, MFLAGS, 0, 5, DFLAGS,
1094cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(61), 0, GFLAGS),
1095cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_VOP_ROOT, "hclk_vop_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL,
1096cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(144), 10, 2, MFLAGS,
1097cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(61), 2, GFLAGS),
1098cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_VOP_ROOT, "pclk_vop_root", mux_100m_50m_24m_p, 0,
1099cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(144), 12, 2, MFLAGS,
1100cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(61), 3, GFLAGS),
1101cc40f5baSElaine Zhang 	GATE(HCLK_VOP, "hclk_vop", "hclk_vop_root", 0,
1102cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(61), 8, GFLAGS),
1103cc40f5baSElaine Zhang 	GATE(ACLK_VOP, "aclk_vop", "aclk_vop_root", 0,
1104cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(61), 9, GFLAGS),
1105cc40f5baSElaine Zhang 	COMPOSITE(DCLK_VP0_SRC, "dclk_vp0_src", gpll_cpll_vpll_bpll_lpll_p, CLK_SET_RATE_NO_REPARENT,
1106cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(145), 8, 3, MFLAGS, 0, 8, DFLAGS,
1107cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(61), 10, GFLAGS),
1108cc40f5baSElaine Zhang 	COMPOSITE(DCLK_VP1_SRC, "dclk_vp1_src", gpll_cpll_vpll_bpll_lpll_p, CLK_SET_RATE_NO_REPARENT,
1109cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(146), 8, 3, MFLAGS, 0, 8, DFLAGS,
1110cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(61), 11, GFLAGS),
1111cc40f5baSElaine Zhang 	COMPOSITE(DCLK_VP2_SRC, "dclk_vp2_src", gpll_cpll_vpll_bpll_lpll_p, CLK_SET_RATE_NO_REPARENT,
1112cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(147), 8, 3, MFLAGS, 0, 8, DFLAGS,
1113cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(61), 12, GFLAGS),
1114cc40f5baSElaine Zhang 	COMPOSITE_NODIV(DCLK_VP0, "dclk_vp0", dclk_vp0_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT,
1115cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(147), 11, 1, MFLAGS,
1116cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(61), 13, GFLAGS),
1117cc40f5baSElaine Zhang 	COMPOSITE_NODIV(DCLK_VP1, "dclk_vp1", dclk_vp1_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT,
1118cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(147), 12, 1, MFLAGS,
1119cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(62), 0, GFLAGS),
1120cc40f5baSElaine Zhang 	COMPOSITE_NODIV(DCLK_VP2, "dclk_vp2", dclk_vp2_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT,
1121cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(147), 13, 1, MFLAGS,
1122cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(62), 1, GFLAGS),
1123cc40f5baSElaine Zhang 
1124cc40f5baSElaine Zhang 	/* vo0 */
1125cc40f5baSElaine Zhang 	COMPOSITE(ACLK_VO0_ROOT, "aclk_vo0_root", gpll_cpll_lpll_bpll_p, 0,
1126cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(149), 5, 2, MFLAGS, 0, 5, DFLAGS,
1127cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(63), 0, GFLAGS),
1128cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_VO0_ROOT, "hclk_vo0_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL,
1129cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(149), 7, 2, MFLAGS,
1130cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(63), 1, GFLAGS),
1131cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_VO0_ROOT, "pclk_vo0_root", mux_150m_100m_50m_24m_p, 0,
1132cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(149), 11, 2, MFLAGS,
1133cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(63), 3, GFLAGS),
1134cc40f5baSElaine Zhang 	GATE(ACLK_HDCP0, "aclk_hdcp0", "aclk_vo0_root", 0,
1135cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(63), 12, GFLAGS),
1136cc40f5baSElaine Zhang 	GATE(HCLK_HDCP0, "hclk_hdcp0", "hclk_vo0_root", 0,
1137cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(63), 13, GFLAGS),
1138cc40f5baSElaine Zhang 	GATE(PCLK_HDCP0, "pclk_hdcp0", "pclk_vo0_root", 0,
1139cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(63), 14, GFLAGS),
1140cc40f5baSElaine Zhang 	GATE(CLK_TRNG0_SKP, "clk_trng0_skp", "aclk_hdcp0", 0,
1141cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(64), 4, GFLAGS),
1142cc40f5baSElaine Zhang 	GATE(PCLK_DSIHOST0, "pclk_dsihost0", "pclk_vo0_root", 0,
1143cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(64), 5, GFLAGS),
1144cc40f5baSElaine Zhang 	COMPOSITE(CLK_DSIHOST0, "clk_dsihost0", gpll_cpll_spll_vpll_bpll_lpll_p, 0,
1145cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(151), 7, 3, MFLAGS, 0, 7, DFLAGS,
1146cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(64), 6, GFLAGS),
1147cc40f5baSElaine Zhang 	GATE(PCLK_HDMITX0, "pclk_hdmitx0", "pclk_vo0_root", 0,
1148cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(64), 7, GFLAGS),
1149cc40f5baSElaine Zhang 	COMPOSITE(CLK_HDMITX0_EARC, "clk_hdmitx0_earc", gpll_cpll_p, 0,
1150cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(151), 15, 1, MFLAGS, 10, 5, DFLAGS,
1151cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(64), 8, GFLAGS),
1152cc40f5baSElaine Zhang 	GATE(CLK_HDMITX0_REF, "clk_hdmitx0_ref", "aclk_vo0_root", 0,
1153cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(64), 9, GFLAGS),
1154cc40f5baSElaine Zhang 	GATE(PCLK_EDP0, "pclk_edp0", "pclk_vo0_root", 0,
1155cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(64), 13, GFLAGS),
1156cc40f5baSElaine Zhang 	GATE(CLK_EDP0_24M, "clk_edp0_24m", "xin24m", 0,
1157cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(64), 14, GFLAGS),
1158cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_EDP0_200M, "clk_edp0_200m", mux_200m_100m_50m_24m_p, 0,
1159cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(152), 1, 2, MFLAGS,
1160cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(64), 15, GFLAGS),
1161cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SAI5_8CH_SRC, "mclk_sai5_8ch_src", audio_frac_int_p, 0,
1162cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(154), 10, 3, MFLAGS, 2, 8, DFLAGS,
1163cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(65), 3, GFLAGS),
1164cc40f5baSElaine Zhang 	COMPOSITE_NODIV(MCLK_SAI5_8CH, "mclk_sai5_8ch", mclk_sai5_8ch_p, CLK_SET_RATE_PARENT,
1165cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(154), 13, 1, MFLAGS,
1166cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(65), 4, GFLAGS),
1167cc40f5baSElaine Zhang 	GATE(HCLK_SAI5_8CH, "hclk_sai5_8ch", "hclk_vo0_root", 0,
1168cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(65), 5, GFLAGS),
1169cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SAI6_8CH_SRC, "mclk_sai6_8ch_src", audio_frac_int_p, 0,
1170cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(155), 8, 3, MFLAGS, 0, 8, DFLAGS,
1171cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(65), 7, GFLAGS),
1172cc40f5baSElaine Zhang 	COMPOSITE_NODIV(MCLK_SAI6_8CH, "mclk_sai6_8ch", mclk_sai6_8ch_p, CLK_SET_RATE_PARENT,
1173cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(155), 11, 1, MFLAGS,
1174cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(65), 8, GFLAGS),
1175cc40f5baSElaine Zhang 	GATE(HCLK_SAI6_8CH, "hclk_sai6_8ch", "hclk_vo0_root", 0,
1176cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(65), 9, GFLAGS),
1177cc40f5baSElaine Zhang 	GATE(HCLK_SPDIF_TX2, "hclk_spdif_tx2", "hclk_vo0_root", 0,
1178cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(65), 10, GFLAGS),
1179cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SPDIF_TX2, "mclk_spdif_tx2", audio_frac_int_p, 0,
1180cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(156), 5, 3, MFLAGS, 0, 5, DFLAGS,
1181cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(65), 13, GFLAGS),
1182cc40f5baSElaine Zhang 	GATE(HCLK_SPDIF_RX2, "hclk_spdif_rx2", "hclk_vo0_root", 0,
1183cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(65), 14, GFLAGS),
1184cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SPDIF_RX2, "mclk_spdif_rx2", gpll_cpll_aupll_p, 0,
1185cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(156), 13, 2, MFLAGS, 8, 5, DFLAGS,
1186cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(65), 15, GFLAGS),
1187cc40f5baSElaine Zhang 
1188cc40f5baSElaine Zhang 	/* vo1 */
1189cc40f5baSElaine Zhang 	COMPOSITE(ACLK_VO1_ROOT, "aclk_vo1_root", gpll_cpll_lpll_bpll_p, 0,
1190cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(158), 5, 2, MFLAGS, 0, 5, DFLAGS,
1191cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(67), 1, GFLAGS),
1192cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_VO1_ROOT, "hclk_vo1_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL,
1193cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(158), 7, 2, MFLAGS,
1194cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(67), 2, GFLAGS),
1195cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_VO1_ROOT, "pclk_vo1_root", mux_100m_50m_24m_p, 0,
1196cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(158), 9, 2, MFLAGS,
1197cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(67), 3, GFLAGS),
1198cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SAI8_8CH_SRC, "mclk_sai8_8ch_src", audio_frac_int_p, 0,
1199cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(157), 8, 3, MFLAGS, 0, 8, DFLAGS,
1200cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(66), 1, GFLAGS),
1201cc40f5baSElaine Zhang 	COMPOSITE_NODIV(MCLK_SAI8_8CH, "mclk_sai8_8ch", mclk_sai8_8ch_p, CLK_SET_RATE_PARENT,
1202cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(157), 11, 1, MFLAGS,
1203cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(66), 2, GFLAGS),
1204cc40f5baSElaine Zhang 	GATE(HCLK_SAI8_8CH, "hclk_sai8_8ch", "hclk_vo1_root", 0,
1205cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(66), 0, GFLAGS),
1206cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SAI7_8CH_SRC, "mclk_sai7_8ch_src", audio_frac_int_p, 0,
1207cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(159), 8, 3, MFLAGS, 0, 8, DFLAGS,
1208cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(67), 8, GFLAGS),
1209cc40f5baSElaine Zhang 	COMPOSITE_NODIV(MCLK_SAI7_8CH, "mclk_sai7_8ch", mclk_sai7_8ch_p, CLK_SET_RATE_PARENT,
1210cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(159), 11, 1, MFLAGS,
1211cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(67), 9, GFLAGS),
1212cc40f5baSElaine Zhang 	GATE(HCLK_SAI7_8CH, "hclk_sai7_8ch", "hclk_vo1_root", 0,
1213cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(67), 10, GFLAGS),
1214cc40f5baSElaine Zhang 	GATE(HCLK_SPDIF_TX3, "hclk_spdif_tx3", "hclk_vo1_root", 0,
1215cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(67), 11, GFLAGS),
1216cc40f5baSElaine Zhang 	GATE(HCLK_SPDIF_TX4, "hclk_spdif_tx4", "hclk_vo1_root", 0,
1217cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(67), 12, GFLAGS),
1218cc40f5baSElaine Zhang 	GATE(HCLK_SPDIF_TX5, "hclk_spdif_tx5", "hclk_vo1_root", 0,
1219cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(67), 13, GFLAGS),
1220cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SPDIF_TX3, "mclk_spdif_tx3", audio_frac_int_p, 0,
1221cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(160), 8, 3, MFLAGS, 0, 8, DFLAGS,
1222cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(67), 14, GFLAGS),
1223cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_AUX16MHZ_0, "clk_aux16mhz_0", "gpll", 0,
1224cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(161), 0, 8, DFLAGS,
1225cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(67), 15, GFLAGS),
1226cc40f5baSElaine Zhang 	GATE(ACLK_DP0, "aclk_dp0", "aclk_vo1_root", 0,
1227cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(68), 0, GFLAGS),
1228cc40f5baSElaine Zhang 	GATE(PCLK_DP0, "pclk_dp0", "pclk_vo1_root", 0,
1229cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(68), 1, GFLAGS),
1230cc40f5baSElaine Zhang 	GATE(ACLK_HDCP1, "aclk_hdcp1", "aclk_vo1_root", 0,
1231cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(68), 4, GFLAGS),
1232cc40f5baSElaine Zhang 	GATE(HCLK_HDCP1, "hclk_hdcp1", "hclk_vo1_root", 0,
1233cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(68), 5, GFLAGS),
1234cc40f5baSElaine Zhang 	GATE(PCLK_HDCP1, "pclk_hdcp1", "pclk_vo1_root", 0,
1235cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(68), 6, GFLAGS),
1236cc40f5baSElaine Zhang 	GATE(CLK_TRNG1_SKP, "clk_trng1_skp", "aclk_hdcp1", 0,
1237cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(68), 7, GFLAGS),
1238cc40f5baSElaine Zhang 	GATE(HCLK_SAI9_8CH, "hclk_sai9_8ch", "hclk_vo1_root", 0,
1239cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(68), 9, GFLAGS),
1240cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SAI9_8CH_SRC, "mclk_sai9_8ch_src", audio_frac_int_p, 0,
1241cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(162), 8, 3, MFLAGS, 0, 8, DFLAGS,
1242cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(68), 10, GFLAGS),
1243cc40f5baSElaine Zhang 	COMPOSITE_NODIV(MCLK_SAI9_8CH, "mclk_sai9_8ch", mclk_sai9_8ch_p, CLK_SET_RATE_PARENT,
1244cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(162), 11, 1, MFLAGS,
1245cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(68), 11, GFLAGS),
1246cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SPDIF_TX4, "mclk_spdif_tx4", audio_frac_int_p, 0,
1247cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(163), 8, 3, MFLAGS, 0, 8, DFLAGS,
1248cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(68), 12, GFLAGS),
1249cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SPDIF_TX5, "mclk_spdif_tx5", audio_frac_int_p, 0,
1250cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(164), 8, 3, MFLAGS, 0, 8, DFLAGS,
1251cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(68), 13, GFLAGS),
1252cc40f5baSElaine Zhang 
1253cc40f5baSElaine Zhang 	/* vpu */
1254cc40f5baSElaine Zhang 	COMPOSITE(ACLK_VPU_ROOT, "aclk_vpu_root", gpll_spll_cpll_bpll_lpll_p, CLK_IS_CRITICAL,
1255cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(118), 5, 3, MFLAGS, 0, 5, DFLAGS,
1256cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(49), 0, GFLAGS),
1257cc40f5baSElaine Zhang 	COMPOSITE_NODIV(ACLK_VPU_MID_ROOT, "aclk_vpu_mid_root", mux_600m_400m_300m_24m_p, 0,
1258cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(118), 8, 2, MFLAGS,
1259cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(49), 1, GFLAGS),
1260cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_VPU_ROOT, "hclk_vpu_root", mux_200m_100m_50m_24m_p, 0,
1261cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(118), 10, 2, MFLAGS,
1262cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(49), 2, GFLAGS),
1263cc40f5baSElaine Zhang 	COMPOSITE(ACLK_JPEG_ROOT, "aclk_jpeg_root", gpll_cpll_aupll_spll_p, 0,
1264cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(119), 5, 2, MFLAGS, 0, 5, DFLAGS,
1265cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(49), 3, GFLAGS),
1266cc40f5baSElaine Zhang 	COMPOSITE_NODIV(ACLK_VPU_LOW_ROOT, "aclk_vpu_low_root", mux_400m_200m_100m_24m_p, 0,
1267cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(119), 7, 2, MFLAGS,
1268cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(49), 4, GFLAGS),
1269cc40f5baSElaine Zhang 	GATE(HCLK_RGA2E_0, "hclk_rga2e_0", "hclk_vpu_root", 0,
1270cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(49), 13, GFLAGS),
1271cc40f5baSElaine Zhang 	GATE(ACLK_RGA2E_0, "aclk_rga2e_0", "aclk_vpu_root", 0,
1272cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(49), 14, GFLAGS),
1273cc40f5baSElaine Zhang 	COMPOSITE(CLK_CORE_RGA2E_0, "clk_core_rga2e_0", gpll_spll_cpll_bpll_lpll_p, 0,
1274cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(120), 5, 3, MFLAGS, 0, 5, DFLAGS,
1275cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(49), 15, GFLAGS),
1276cc40f5baSElaine Zhang 	GATE(ACLK_JPEG, "aclk_jpeg", "aclk_jpeg_root", 0,
1277cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 0, GFLAGS),
1278cc40f5baSElaine Zhang 	GATE(HCLK_JPEG, "hclk_jpeg", "hclk_vpu_root", 0,
1279cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 1, GFLAGS),
1280cc40f5baSElaine Zhang 	GATE(HCLK_VDPP, "hclk_vdpp", "hclk_vpu_root", 0,
1281cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 2, GFLAGS),
1282cc40f5baSElaine Zhang 	GATE(ACLK_VDPP, "aclk_vdpp", "aclk_vpu_mid_root", 0,
1283cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 3, GFLAGS),
1284cc40f5baSElaine Zhang 	COMPOSITE(CLK_CORE_VDPP, "clk_core_vdpp", gpll_cpll_p, 0,
1285cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(120), 13, 1, MFLAGS, 8, 5, DFLAGS,
1286cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 4, GFLAGS),
1287cc40f5baSElaine Zhang 	GATE(HCLK_RGA2E_1, "hclk_rga2e_1", "hclk_vpu_root", 0,
1288cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 5, GFLAGS),
1289cc40f5baSElaine Zhang 	GATE(ACLK_RGA2E_1, "aclk_rga2e_1", "aclk_vpu_root", 0,
1290cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 6, GFLAGS),
1291cc40f5baSElaine Zhang 	COMPOSITE(CLK_CORE_RGA2E_1, "clk_core_rga2e_1", gpll_spll_cpll_bpll_lpll_p, 0,
1292cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(121), 5, 3, MFLAGS, 0, 5, DFLAGS,
1293cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 7, GFLAGS),
1294cc40f5baSElaine Zhang 	MUX(0, "dclk_ebc_frac_src_p", gpll_cpll_vpll_aupll_24m_p, 0,
1295cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(123), 0, 3, MFLAGS),
1296cc40f5baSElaine Zhang 	COMPOSITE_FRAC(DCLK_EBC_FRAC_SRC, "dclk_ebc_frac_src", "dclk_ebc_frac_src_p", 0,
1297cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(122), 0,
1298cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 9, GFLAGS),
1299cc40f5baSElaine Zhang 	GATE(ACLK_EBC, "aclk_ebc", "aclk_vpu_low_root", 0,
1300cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 11, GFLAGS),
1301cc40f5baSElaine Zhang 	GATE(HCLK_EBC, "hclk_ebc", "hclk_vpu_root", 0,
1302cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 10, GFLAGS),
1303cc40f5baSElaine Zhang 	COMPOSITE(DCLK_EBC, "dclk_ebc", dclk_ebc_p, CLK_SET_RATE_NO_REPARENT,
1304cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(123), 12, 3, MFLAGS, 3, 9, DFLAGS,
1305cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(50), 12, GFLAGS),
1306cc40f5baSElaine Zhang 
1307cc40f5baSElaine Zhang 	/* vepu */
1308cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_VEPU1_ROOT, "hclk_vepu1_root", mux_200m_100m_50m_24m_p, 0,
1309cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(178), 0, 2, MFLAGS,
1310cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(78), 0, GFLAGS),
1311cc40f5baSElaine Zhang 	COMPOSITE(ACLK_VEPU1_ROOT, "aclk_vepu1_root", gpll_cpll_p, 0,
1312cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(180), 5, 1, MFLAGS, 0, 5, DFLAGS,
1313cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(79), 0, GFLAGS),
1314cc40f5baSElaine Zhang 	GATE(HCLK_VEPU1, "hclk_vepu1", "hclk_vepu1_root", 0,
1315cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(79), 3, GFLAGS),
1316cc40f5baSElaine Zhang 	GATE(ACLK_VEPU1, "aclk_vepu1", "aclk_vepu1_root", 0,
1317cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(79), 4, GFLAGS),
1318cc40f5baSElaine Zhang 	COMPOSITE(CLK_VEPU1_CORE, "clk_vepu1_core", gpll_cpll_spll_lpll_bpll_p, 0,
1319cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(180), 11, 3, MFLAGS, 6, 5, DFLAGS,
1320cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(79), 5, GFLAGS),
1321cc40f5baSElaine Zhang 
1322cc40f5baSElaine Zhang 	/* php */
1323cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_PHP_ROOT, "pclk_php_root", mux_100m_50m_24m_p, 0,
1324cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(92), 0, 2, MFLAGS,
1325cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(34), 0, GFLAGS),
1326cc40f5baSElaine Zhang 	COMPOSITE(ACLK_PHP_ROOT, "aclk_php_root", gpll_cpll_p, 0,
1327cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(92), 9, 1, MFLAGS, 4, 5, DFLAGS,
1328cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(34), 7, GFLAGS),
1329cc40f5baSElaine Zhang 	GATE(PCLK_PCIE0, "pclk_pcie0", "pclk_php_root", 0,
1330cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(34), 13, GFLAGS),
1331cc40f5baSElaine Zhang 	GATE(CLK_PCIE0_AUX, "clk_pcie0_aux", "xin24m", 0,
1332cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(34), 14, GFLAGS),
1333cc40f5baSElaine Zhang 	GATE(ACLK_PCIE0_MST, "aclk_pcie0_mst", "aclk_php_root", 0,
1334cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(34), 15, GFLAGS),
1335cc40f5baSElaine Zhang 	GATE(ACLK_PCIE0_SLV, "aclk_pcie0_slv", "aclk_php_root", 0,
1336cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(35), 0, GFLAGS),
1337cc40f5baSElaine Zhang 	GATE(ACLK_PCIE0_DBI, "aclk_pcie0_dbi", "aclk_php_root", 0,
1338cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(35), 1, GFLAGS),
1339cc40f5baSElaine Zhang 	GATE(ACLK_USB3OTG1, "aclk_usb3otg1", "aclk_php_root", 0,
1340cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(35), 3, GFLAGS),
1341cc40f5baSElaine Zhang 	GATE(CLK_REF_USB3OTG1, "clk_ref_usb3otg1", "xin24m", 0,
1342cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(35), 4, GFLAGS),
1343cc40f5baSElaine Zhang 	GATE(CLK_SUSPEND_USB3OTG1, "clk_suspend_usb3otg1", "xin24m", 0,
1344cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(35), 5, GFLAGS),
1345cc40f5baSElaine Zhang 	GATE(ACLK_MMU0, "aclk_mmu0", "aclk_php_root", 0,
1346cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(35), 11, GFLAGS),
1347cc40f5baSElaine Zhang 	GATE(ACLK_SLV_MMU0, "aclk_slv_mmu0", "aclk_php_root", 0,
1348cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(35), 13, GFLAGS),
1349cc40f5baSElaine Zhang 	GATE(ACLK_MMU1, "aclk_mmu1", "aclk_php_root", 0,
1350cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(35), 14, GFLAGS),
1351cc40f5baSElaine Zhang 	GATE(ACLK_SLV_MMU1, "aclk_slv_mmu1", "aclk_php_root", 0,
1352cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(36), 0, GFLAGS),
1353cc40f5baSElaine Zhang 	GATE(PCLK_PCIE1, "pclk_pcie1", "pclk_php_root", 0,
1354cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(36), 7, GFLAGS),
1355cc40f5baSElaine Zhang 	GATE(CLK_PCIE1_AUX, "clk_pcie1_aux", "xin24m", 0,
1356cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(36), 8, GFLAGS),
1357cc40f5baSElaine Zhang 	GATE(ACLK_PCIE1_MST, "aclk_pcie1_mst", "aclk_php_root", 0,
1358cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(36), 9, GFLAGS),
1359cc40f5baSElaine Zhang 	GATE(ACLK_PCIE1_SLV, "aclk_pcie1_slv", "aclk_php_root", 0,
1360cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(36), 10, GFLAGS),
1361cc40f5baSElaine Zhang 	GATE(ACLK_PCIE1_DBI, "aclk_pcie1_dbi", "aclk_php_root", 0,
1362cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(36), 11, GFLAGS),
1363cc40f5baSElaine Zhang 	COMPOSITE(CLK_RXOOB0, "clk_rxoob0", gpll_cpll_p, 0,
1364cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(93), 7, 1, MFLAGS, 0, 7, DFLAGS,
1365cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(37), 0, GFLAGS),
1366cc40f5baSElaine Zhang 	COMPOSITE(CLK_RXOOB1, "clk_rxoob1", gpll_cpll_p, 0,
1367cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(93), 15, 1, MFLAGS, 8, 7, DFLAGS,
1368cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(37), 1, GFLAGS),
1369cc40f5baSElaine Zhang 	GATE(CLK_PMALIVE0, "clk_pmalive0", "xin24m", CLK_IS_CRITICAL,
1370cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(37), 2, GFLAGS),
1371cc40f5baSElaine Zhang 	GATE(CLK_PMALIVE1, "clk_pmalive1", "xin24m", CLK_IS_CRITICAL,
1372cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(37), 3, GFLAGS),
1373cc40f5baSElaine Zhang 	GATE(ACLK_SATA0, "aclk_sata0", "aclk_php_root", 0,
1374cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(37), 4, GFLAGS),
1375cc40f5baSElaine Zhang 	GATE(ACLK_SATA1, "aclk_sata1", "aclk_php_root", 0,
1376cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(37), 5, GFLAGS),
1377cc40f5baSElaine Zhang 
1378cc40f5baSElaine Zhang 	/* audio */
1379cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_AUDIO_ROOT, "hclk_audio_root", mux_200m_100m_50m_24m_p, 0,
1380cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(42), 0, 2, MFLAGS,
1381cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 1, GFLAGS),
1382cc40f5baSElaine Zhang 	GATE(HCLK_ASRC_2CH_0, "hclk_asrc_2ch_0", "hclk_audio_root", 0,
1383cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 3, GFLAGS),
1384cc40f5baSElaine Zhang 	GATE(HCLK_ASRC_2CH_1, "hclk_asrc_2ch_1", "hclk_audio_root", 0,
1385cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 4, GFLAGS),
1386cc40f5baSElaine Zhang 	GATE(HCLK_ASRC_4CH_0, "hclk_asrc_4ch_0", "hclk_audio_root", 0,
1387cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 5, GFLAGS),
1388cc40f5baSElaine Zhang 	GATE(HCLK_ASRC_4CH_1, "hclk_asrc_4ch_1", "hclk_audio_root", 0,
1389cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 6, GFLAGS),
1390cc40f5baSElaine Zhang 	COMPOSITE(CLK_ASRC_2CH_0, "clk_asrc_2ch_0", gpll_cpll_aupll_p, 0,
1391cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(42), 7, 2, MFLAGS, 2, 5, DFLAGS,
1392cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 7, GFLAGS),
1393cc40f5baSElaine Zhang 	COMPOSITE(CLK_ASRC_2CH_1, "clk_asrc_2ch_1", gpll_cpll_aupll_p, 0,
1394cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(42), 14, 2, MFLAGS, 9, 5, DFLAGS,
1395cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 8, GFLAGS),
1396cc40f5baSElaine Zhang 	COMPOSITE(CLK_ASRC_4CH_0, "clk_asrc_4ch_0", gpll_cpll_aupll_p, 0,
1397cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(43), 5, 2, MFLAGS, 0, 5, DFLAGS,
1398cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 9, GFLAGS),
1399cc40f5baSElaine Zhang 	COMPOSITE(CLK_ASRC_4CH_1, "clk_asrc_4ch_1", gpll_cpll_aupll_p, 0,
1400cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(43), 12, 2, MFLAGS, 7, 5, DFLAGS,
1401cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 10, GFLAGS),
1402cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SAI0_8CH_SRC, "mclk_sai0_8ch_src", audio_frac_int_p, 0,
1403cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(44), 8, 3, MFLAGS, 0, 8, DFLAGS,
1404cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 11, GFLAGS),
1405cc40f5baSElaine Zhang 	COMPOSITE_NODIV(MCLK_SAI0_8CH, "mclk_sai0_8ch", mclk_sai0_8ch_p, CLK_SET_RATE_PARENT,
1406cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(44), 11, 2, MFLAGS,
1407cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 12, GFLAGS),
1408cc40f5baSElaine Zhang 	GATE(HCLK_SAI0_8CH, "hclk_sai0_8ch", "hclk_audio_root", 0,
1409cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 13, GFLAGS),
1410cc40f5baSElaine Zhang 	GATE(HCLK_SPDIF_RX0, "hclk_spdif_rx0", "hclk_audio_root", 0,
1411cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 14, GFLAGS),
1412cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SPDIF_RX0, "mclk_spdif_rx0", gpll_cpll_aupll_p, 0,
1413cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(45), 5, 2, MFLAGS, 0, 5, DFLAGS,
1414cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(7), 15, GFLAGS),
1415cc40f5baSElaine Zhang 	GATE(HCLK_SPDIF_RX1, "hclk_spdif_rx1", "hclk_audio_root", 0,
1416cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 0, GFLAGS),
1417cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SPDIF_RX1, "mclk_spdif_rx1", gpll_cpll_aupll_p, 0,
1418cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(45), 12, 2, MFLAGS, 7, 5, DFLAGS,
1419cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 1, GFLAGS),
1420cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SAI1_8CH_SRC, "mclk_sai1_8ch_src", audio_frac_int_p, 0,
1421cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(46), 8, 3, MFLAGS, 0, 8, DFLAGS,
1422cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 4, GFLAGS),
1423cc40f5baSElaine Zhang 	COMPOSITE_NODIV(MCLK_SAI1_8CH, "mclk_sai1_8ch", mclk_sai1_8ch_p, CLK_SET_RATE_PARENT,
1424cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(46), 11, 1, MFLAGS,
1425cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 5, GFLAGS),
1426cc40f5baSElaine Zhang 	GATE(HCLK_SAI1_8CH, "hclk_sai1_8ch", "hclk_audio_root", 0,
1427cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 6, GFLAGS),
1428cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SAI2_2CH_SRC, "mclk_sai2_2ch_src", audio_frac_int_p, 0,
1429cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(47), 8, 3, MFLAGS, 0, 8, DFLAGS,
1430cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 7, GFLAGS),
1431cc40f5baSElaine Zhang 	COMPOSITE_NODIV(MCLK_SAI2_2CH, "mclk_sai2_2ch", mclk_sai2_2ch_p, CLK_SET_RATE_PARENT,
1432cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(47), 11, 2, MFLAGS,
1433cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 8, GFLAGS),
1434cc40f5baSElaine Zhang 	GATE(HCLK_SAI2_2CH, "hclk_sai2_2ch", "hclk_audio_root", 0,
1435cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 10, GFLAGS),
1436cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SAI3_2CH_SRC, "mclk_sai3_2ch_src", audio_frac_int_p, 0,
1437cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(48), 8, 3, MFLAGS, 0, 8, DFLAGS,
1438cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 11, GFLAGS),
1439cc40f5baSElaine Zhang 	COMPOSITE_NODIV(MCLK_SAI3_2CH, "mclk_sai3_2ch", mclk_sai3_2ch_p, CLK_SET_RATE_PARENT,
1440cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(48), 11, 2, MFLAGS,
1441cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 12, GFLAGS),
1442cc40f5baSElaine Zhang 	GATE(HCLK_SAI3_2CH, "hclk_sai3_2ch", "hclk_audio_root", 0,
1443cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 14, GFLAGS),
1444cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SAI4_2CH_SRC, "mclk_sai4_2ch_src", audio_frac_int_p, 0,
1445cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(49), 8, 3, MFLAGS, 0, 8, DFLAGS,
1446cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(8), 15, GFLAGS),
1447cc40f5baSElaine Zhang 	COMPOSITE_NODIV(MCLK_SAI4_2CH, "mclk_sai4_2ch", mclk_sai4_2ch_p, CLK_SET_RATE_PARENT,
1448cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(49), 11, 2, MFLAGS,
1449cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 0, GFLAGS),
1450cc40f5baSElaine Zhang 	GATE(HCLK_SAI4_2CH, "hclk_sai4_2ch", "hclk_audio_root", 0,
1451cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 2, GFLAGS),
1452cc40f5baSElaine Zhang 	GATE(HCLK_ACDCDIG_DSM, "hclk_acdcdig_dsm", "hclk_audio_root", 0,
1453cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 3, GFLAGS),
1454cc40f5baSElaine Zhang 	GATE(MCLK_ACDCDIG_DSM, "mclk_acdcdig_dsm", "mclk_sai4_2ch", 0,
1455cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 4, GFLAGS),
1456cc40f5baSElaine Zhang 	COMPOSITE(CLK_PDM1, "clk_pdm1", audio_frac_int_p, 0,
1457cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(50), 9, 3, MFLAGS, 0, 9, DFLAGS,
1458cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 5, GFLAGS),
1459cc40f5baSElaine Zhang 	GATE(HCLK_PDM1, "hclk_pdm1", "hclk_audio_root", 0,
1460cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 7, GFLAGS),
1461cc40f5baSElaine Zhang 	GATE(CLK_PDM1_OUT, "clk_pdm1_out", "clk_pdm1", 0,
1462cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(3), 5, GFLAGS),
1463cc40f5baSElaine Zhang 	COMPOSITE(MCLK_PDM1, "mclk_pdm1", audio_frac_int_p, 0,
1464cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(51), 5, 3, MFLAGS, 0, 5, DFLAGS,
1465cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 8, GFLAGS),
1466cc40f5baSElaine Zhang 	GATE(HCLK_SPDIF_TX0, "hclk_spdif_tx0", "hclk_audio_root", 0,
1467cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 9, GFLAGS),
1468cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SPDIF_TX0, "mclk_spdif_tx0", audio_frac_int_p, 0,
1469cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(52), 8, 3, MFLAGS, 0, 8, DFLAGS,
1470cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 10, GFLAGS),
1471cc40f5baSElaine Zhang 	GATE(HCLK_SPDIF_TX1, "hclk_spdif_tx1", "hclk_audio_root", 0,
1472cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 11, GFLAGS),
1473cc40f5baSElaine Zhang 	COMPOSITE(MCLK_SPDIF_TX1, "mclk_spdif_tx1", audio_frac_int_p, 0,
1474cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(53), 8, 3, MFLAGS, 0, 8, DFLAGS,
1475cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 12, GFLAGS),
1476cc40f5baSElaine Zhang 	GATE(CLK_SAI1_MCLKOUT, "clk_sai1_mclkout", "mclk_sai1_8ch", 0,
1477cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 13, GFLAGS),
1478cc40f5baSElaine Zhang 	GATE(CLK_SAI2_MCLKOUT, "clk_sai2_mclkout", "mclk_sai2_2ch", 0,
1479cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 14, GFLAGS),
1480cc40f5baSElaine Zhang 	GATE(CLK_SAI3_MCLKOUT, "clk_sai3_mclkout", "mclk_sai3_2ch", 0,
1481cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(9), 15, GFLAGS),
1482cc40f5baSElaine Zhang 	GATE(CLK_SAI4_MCLKOUT, "clk_sai4_mclkout", "mclk_sai4_2ch", 0,
1483cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(10), 0, GFLAGS),
1484cc40f5baSElaine Zhang 	GATE(CLK_SAI0_MCLKOUT, "clk_sai0_mclkout", "mclk_sai0_8ch", 0,
1485cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(10), 1, GFLAGS),
14869199ec29SNicolas Frattaroli 	GATE_GRF(CLK_SAI0_MCLKOUT_TO_IO, "mclk_sai0_to_io", "clk_sai0_mclkout",
14879199ec29SNicolas Frattaroli 			0, RK3576_VCCIO_IOC_MISC_CON0, 0, GFLAGS, grf_type_ioc),
14889199ec29SNicolas Frattaroli 	GATE_GRF(CLK_SAI1_MCLKOUT_TO_IO, "mclk_sai1_to_io", "clk_sai1_mclkout",
14899199ec29SNicolas Frattaroli 			0, RK3576_VCCIO_IOC_MISC_CON0, 1, GFLAGS, grf_type_ioc),
14909199ec29SNicolas Frattaroli 	GATE_GRF(CLK_SAI2_MCLKOUT_TO_IO, "mclk_sai2_to_io", "clk_sai2_mclkout",
14919199ec29SNicolas Frattaroli 			0, RK3576_VCCIO_IOC_MISC_CON0, 2, GFLAGS, grf_type_ioc),
14929199ec29SNicolas Frattaroli 	GATE_GRF(CLK_SAI3_MCLKOUT_TO_IO, "mclk_sai3_to_io", "clk_sai3_mclkout",
14939199ec29SNicolas Frattaroli 			0, RK3576_VCCIO_IOC_MISC_CON0, 3, GFLAGS, grf_type_ioc),
1494cc40f5baSElaine Zhang 
1495cc40f5baSElaine Zhang 	/* sdgmac */
1496cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_SDGMAC_ROOT, "hclk_sdgmac_root", mux_200m_100m_50m_24m_p, 0,
1497cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(103), 0, 2, MFLAGS,
1498cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 0, GFLAGS),
1499cc40f5baSElaine Zhang 	COMPOSITE(ACLK_SDGMAC_ROOT, "aclk_sdgmac_root", gpll_cpll_p, CLK_IS_CRITICAL,
1500cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(103), 7, 1, MFLAGS, 2, 5, DFLAGS,
1501cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 1, GFLAGS),
1502cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_SDGMAC_ROOT, "pclk_sdgmac_root", mux_100m_50m_24m_p, 0,
1503cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(103), 8, 2, MFLAGS,
1504cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 2, GFLAGS),
1505cc40f5baSElaine Zhang 	GATE(ACLK_GMAC0, "aclk_gmac0", "aclk_sdgmac_root", 0,
1506cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 7, GFLAGS),
1507cc40f5baSElaine Zhang 	GATE(ACLK_GMAC1, "aclk_gmac1", "aclk_sdgmac_root", 0,
1508cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 8, GFLAGS),
1509cc40f5baSElaine Zhang 	GATE(PCLK_GMAC0, "pclk_gmac0", "pclk_sdgmac_root", 0,
1510cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 9, GFLAGS),
1511cc40f5baSElaine Zhang 	GATE(PCLK_GMAC1, "pclk_gmac1", "pclk_sdgmac_root", 0,
1512cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 10, GFLAGS),
1513cc40f5baSElaine Zhang 	COMPOSITE(CCLK_SRC_SDIO, "cclk_src_sdio", gpll_cpll_24m_p, 0,
1514cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(104), 6, 2, MFLAGS, 0, 6, DFLAGS,
1515cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 11, GFLAGS),
1516cc40f5baSElaine Zhang 	GATE(HCLK_SDIO, "hclk_sdio", "hclk_sdgmac_root", 0,
1517cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 12, GFLAGS),
1518cc40f5baSElaine Zhang 	COMPOSITE(CLK_GMAC1_PTP_REF_SRC, "clk_gmac1_ptp_ref_src", clk_gmac1_ptp_ref_src_p, 0,
1519cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(104), 13, 2, MFLAGS, 8, 5, DFLAGS,
1520cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 15, GFLAGS),
1521cc40f5baSElaine Zhang 	COMPOSITE(CLK_GMAC0_PTP_REF_SRC, "clk_gmac0_ptp_ref_src", clk_gmac0_ptp_ref_src_p, 0,
1522cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(105), 5, 2, MFLAGS, 0, 5, DFLAGS,
1523cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 0, GFLAGS),
1524cc40f5baSElaine Zhang 	GATE(CLK_GMAC1_PTP_REF, "clk_gmac1_ptp_ref", "clk_gmac1_ptp_ref_src", 0,
1525cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 13, GFLAGS),
1526cc40f5baSElaine Zhang 	GATE(CLK_GMAC0_PTP_REF, "clk_gmac0_ptp_ref", "clk_gmac0_ptp_ref_src", 0,
1527cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(42), 14, GFLAGS),
1528cc40f5baSElaine Zhang 	COMPOSITE(CCLK_SRC_SDMMC0, "cclk_src_sdmmc0", gpll_cpll_24m_p, 0,
1529cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(105), 13, 2, MFLAGS, 7, 6, DFLAGS,
1530cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 1, GFLAGS),
1531cc40f5baSElaine Zhang 	GATE(HCLK_SDMMC0, "hclk_sdmmc0", "hclk_sdgmac_root", 0,
1532cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 2, GFLAGS),
1533cc40f5baSElaine Zhang 	COMPOSITE(SCLK_FSPI1_X2, "sclk_fspi1_x2", gpll_cpll_24m_p, 0,
1534cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(106), 6, 2, MFLAGS, 0, 6, DFLAGS,
1535cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 3, GFLAGS),
1536cc40f5baSElaine Zhang 	GATE(HCLK_FSPI1, "hclk_fspi1", "hclk_sdgmac_root", 0,
1537cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 4, GFLAGS),
1538cc40f5baSElaine Zhang 	COMPOSITE(ACLK_DSMC_ROOT, "aclk_dsmc_root", gpll_cpll_p, CLK_IS_CRITICAL,
1539cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(106), 13, 1, MFLAGS, 8, 5, DFLAGS,
1540cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 5, GFLAGS),
1541cc40f5baSElaine Zhang 	GATE(ACLK_DSMC, "aclk_dsmc", "aclk_dsmc_root", 0,
1542cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 7, GFLAGS),
1543cc40f5baSElaine Zhang 	GATE(PCLK_DSMC, "pclk_dsmc", "pclk_sdgmac_root", 0,
1544cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 8, GFLAGS),
1545cc40f5baSElaine Zhang 	COMPOSITE(CLK_DSMC_SYS, "clk_dsmc_sys", gpll_cpll_p, 0,
1546cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(107), 5, 1, MFLAGS, 0, 5, DFLAGS,
1547cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 9, GFLAGS),
1548cc40f5baSElaine Zhang 	GATE(HCLK_HSGPIO, "hclk_hsgpio", "hclk_sdgmac_root", 0,
1549cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 10, GFLAGS),
1550cc40f5baSElaine Zhang 	COMPOSITE(CLK_HSGPIO_TX, "clk_hsgpio_tx", gpll_cpll_24m_p, 0,
1551cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(107), 11, 2, MFLAGS, 6, 5, DFLAGS,
1552cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 11, GFLAGS),
1553cc40f5baSElaine Zhang 	COMPOSITE(CLK_HSGPIO_RX, "clk_hsgpio_rx", gpll_cpll_24m_p, 0,
1554cc40f5baSElaine Zhang 			RK3576_CLKSEL_CON(108), 5, 2, MFLAGS, 0, 5, DFLAGS,
1555cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 12, GFLAGS),
1556cc40f5baSElaine Zhang 	GATE(ACLK_HSGPIO, "aclk_hsgpio", "aclk_sdgmac_root", 0,
1557cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(43), 13, GFLAGS),
1558cc40f5baSElaine Zhang 
1559cc40f5baSElaine Zhang 	/* phpphy */
1560cc40f5baSElaine Zhang 	GATE(PCLK_PHPPHY_ROOT, "pclk_phpphy_root", "pclk_bus_root", CLK_IS_CRITICAL,
1561cc40f5baSElaine Zhang 			RK3576_PHP_CLKGATE_CON(0), 2, GFLAGS),
1562cc40f5baSElaine Zhang 	GATE(PCLK_PCIE2_COMBOPHY0, "pclk_pcie2_combophy0", "pclk_phpphy_root", 0,
1563cc40f5baSElaine Zhang 			RK3576_PHP_CLKGATE_CON(0), 5, GFLAGS),
1564cc40f5baSElaine Zhang 	GATE(PCLK_PCIE2_COMBOPHY1, "pclk_pcie2_combophy1", "pclk_phpphy_root", 0,
1565cc40f5baSElaine Zhang 			RK3576_PHP_CLKGATE_CON(0), 7, GFLAGS),
1566cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_PCIE_100M_SRC, "clk_pcie_100m_src", "ppll", 0,
1567cc40f5baSElaine Zhang 			RK3576_PHP_CLKSEL_CON(0), 2, 5, DFLAGS,
1568cc40f5baSElaine Zhang 			RK3576_PHP_CLKGATE_CON(1), 1, GFLAGS),
1569cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_PCIE_100M_NDUTY_SRC, "clk_pcie_100m_nduty_src", "ppll", 0,
1570cc40f5baSElaine Zhang 			RK3576_PHP_CLKSEL_CON(0), 7, 5, DFLAGS,
1571cc40f5baSElaine Zhang 			RK3576_PHP_CLKGATE_CON(1), 2, GFLAGS),
1572cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_REF_PCIE0_PHY, "clk_ref_pcie0_phy", clk_ref_pcie0_phy_p, 0,
1573cc40f5baSElaine Zhang 			RK3576_PHP_CLKSEL_CON(0), 12, 2, MFLAGS,
1574cc40f5baSElaine Zhang 			RK3576_PHP_CLKGATE_CON(1), 5, GFLAGS),
1575cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_REF_PCIE1_PHY, "clk_ref_pcie1_phy", clk_ref_pcie0_phy_p, 0,
1576cc40f5baSElaine Zhang 			RK3576_PHP_CLKSEL_CON(0), 14, 2, MFLAGS,
1577cc40f5baSElaine Zhang 			RK3576_PHP_CLKGATE_CON(1), 8, GFLAGS),
1578cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_REF_MPHY_26M, "clk_ref_mphy_26m", "ppll", CLK_IS_CRITICAL,
1579cc40f5baSElaine Zhang 			RK3576_PHP_CLKSEL_CON(1), 0, 8, DFLAGS,
1580cc40f5baSElaine Zhang 			RK3576_PHP_CLKGATE_CON(1), 9, GFLAGS),
1581cc40f5baSElaine Zhang 
1582cc40f5baSElaine Zhang 	/* pmu */
1583cc40f5baSElaine Zhang 	GATE(CLK_200M_PMU_SRC, "clk_200m_pmu_src", "clk_gpll_div6", 0,
1584cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(3), 2, GFLAGS),
1585cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_100M_PMU_SRC, "clk_100m_pmu_src", "cpll", 0,
1586cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(4), 4, 5, DFLAGS,
1587cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(3), 3, GFLAGS),
1588cc40f5baSElaine Zhang 	FACTOR_GATE(CLK_50M_PMU_SRC, "clk_50m_pmu_src", "clk_100m_pmu_src", 0, 1, 2,
1589cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(3), 4, GFLAGS),
1590cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_PMU1_ROOT, "hclk_pmu1_root", mux_pmu200m_pmu100m_pmu50m_24m_p, CLK_IS_CRITICAL,
1591cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(4), 0, 2, MFLAGS,
1592cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(3), 0, GFLAGS),
1593cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_PMU_CM0_ROOT, "hclk_pmu_cm0_root", mux_pmu200m_pmu100m_pmu50m_24m_p, 0,
1594cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(4), 2, 2, MFLAGS,
1595cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(3), 1, GFLAGS),
1596cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_PMU0_ROOT, "pclk_pmu0_root", mux_pmu100m_pmu50m_24m_p, 0,
1597cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(20), 0, 2, MFLAGS,
1598cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(7), 0, GFLAGS),
1599cc40f5baSElaine Zhang 	GATE(PCLK_PMU0, "pclk_pmu0", "pclk_pmu0_root", CLK_IS_CRITICAL,
1600cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(7), 3, GFLAGS),
1601cc40f5baSElaine Zhang 	GATE(PCLK_PMU1_ROOT, "pclk_pmu1_root", "pclk_pmu0_root", CLK_IS_CRITICAL,
1602cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(7), 9, GFLAGS),
1603cc40f5baSElaine Zhang 	GATE(PCLK_PMU1, "pclk_pmu1", "pclk_pmu1_root", CLK_IS_CRITICAL,
1604cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(3), 15, GFLAGS),
1605cc40f5baSElaine Zhang 	GATE(CLK_PMU1, "clk_pmu1", "xin24m", CLK_IS_CRITICAL,
1606cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(4), 2, GFLAGS),
1607cc40f5baSElaine Zhang 	GATE(PCLK_PMUPHY_ROOT, "pclk_pmuphy_root", "pclk_pmu1_root", CLK_IS_CRITICAL,
1608cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(5), 0, GFLAGS),
1609cc40f5baSElaine Zhang 	GATE(PCLK_HDPTX_APB, "pclk_hdptx_apb", "pclk_pmuphy_root", 0,
1610cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(0), 1, GFLAGS),
1611cc40f5baSElaine Zhang 	GATE(PCLK_MIPI_DCPHY, "pclk_mipi_dcphy", "pclk_pmuphy_root", 0,
1612cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(0), 2, GFLAGS),
1613cc40f5baSElaine Zhang 	GATE(PCLK_CSIDPHY, "pclk_csidphy", "pclk_pmuphy_root", 0,
1614cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(0), 8, GFLAGS),
1615cc40f5baSElaine Zhang 	GATE(PCLK_USBDPPHY, "pclk_usbdpphy", "pclk_pmuphy_root", 0,
1616cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(0), 12, GFLAGS),
1617cc40f5baSElaine Zhang 	COMPOSITE_NOMUX(CLK_PMUPHY_REF_SRC, "clk_pmuphy_ref_src", "cpll", 0,
1618cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(0), 0, 5, DFLAGS,
1619cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(0), 13, GFLAGS),
1620cc40f5baSElaine Zhang 	GATE(CLK_USBDP_COMBO_PHY_IMMORTAL, "clk_usbdp_combo_phy_immortal", "xin24m", 0,
1621cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(0), 15, GFLAGS),
1622cc40f5baSElaine Zhang 	GATE(CLK_HDMITXHDP, "clk_hdmitxhdp", "xin24m", 0,
1623cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(1), 13, GFLAGS),
1624cc40f5baSElaine Zhang 	GATE(PCLK_MPHY, "pclk_mphy", "pclk_pmuphy_root", 0,
1625cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(2), 0, GFLAGS),
1626cc40f5baSElaine Zhang 	MUX(CLK_REF_OSC_MPHY, "clk_ref_osc_mphy", clk_ref_osc_mphy_p, 0,
1627cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(3), 0, 2, MFLAGS),
1628cc40f5baSElaine Zhang 	GATE(CLK_REF_UFS_CLKOUT, "clk_ref_ufs_clkout", "clk_ref_osc_mphy", 0,
1629cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(2), 5, GFLAGS),
1630cc40f5baSElaine Zhang 	GATE(FCLK_PMU_CM0_CORE, "fclk_pmu_cm0_core", "hclk_pmu_cm0_root", 0,
1631cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(3), 12, GFLAGS),
1632cc40f5baSElaine Zhang 	COMPOSITE(CLK_PMU_CM0_RTC, "clk_pmu_cm0_rtc", mux_24m_32k_p, 0,
1633cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(4), 14, 1, MFLAGS, 9, 5, DFLAGS,
1634cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(3), 14, GFLAGS),
1635cc40f5baSElaine Zhang 	GATE(PCLK_PMU1WDT, "pclk_pmu1wdt", "pclk_pmu1_root", 0,
1636cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(4), 5, GFLAGS),
1637cc40f5baSElaine Zhang 	COMPOSITE_NODIV(TCLK_PMU1WDT, "tclk_pmu1wdt", mux_24m_32k_p, 0,
1638cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(4), 15, 1, MFLAGS,
1639cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(4), 6, GFLAGS),
1640cc40f5baSElaine Zhang 	GATE(PCLK_PMUTIMER, "pclk_pmutimer", "pclk_pmu1_root", 0,
1641cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(4), 7, GFLAGS),
1642cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_PMUTIMER_ROOT, "clk_pmutimer_root", mux_pmu100m_24m_32k_p, 0,
1643cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(5), 0, 2, MFLAGS,
1644cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(4), 8, GFLAGS),
1645cc40f5baSElaine Zhang 	GATE(CLK_PMUTIMER0, "clk_pmutimer0", "clk_pmutimer_root", 0,
1646cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(4), 9, GFLAGS),
1647cc40f5baSElaine Zhang 	GATE(CLK_PMUTIMER1, "clk_pmutimer1", "clk_pmutimer_root", 0,
1648cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(4), 10, GFLAGS),
1649cc40f5baSElaine Zhang 	GATE(PCLK_PMU1PWM, "pclk_pmu1pwm", "pclk_pmu1_root", 0,
1650cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(4), 11, GFLAGS),
1651cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_PMU1PWM, "clk_pmu1pwm", mux_pmu100m_pmu50m_24m_p, 0,
1652cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(5), 2, 2, MFLAGS,
1653cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(4), 12, GFLAGS),
1654cc40f5baSElaine Zhang 	GATE(CLK_PMU1PWM_OSC, "clk_pmu1pwm_osc", "xin24m", 0,
1655cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(4), 13, GFLAGS),
1656cc40f5baSElaine Zhang 	GATE(PCLK_I2C0, "pclk_i2c0", "pclk_pmu1_root", 0,
1657cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(5), 1, GFLAGS),
1658cc40f5baSElaine Zhang 	COMPOSITE_NODIV(CLK_I2C0, "clk_i2c0", mux_pmu200m_pmu100m_pmu50m_24m_p, 0,
1659cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(6), 7, 2, MFLAGS,
1660cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(5), 2, GFLAGS),
1661cc40f5baSElaine Zhang 	COMPOSITE_NODIV(SCLK_UART1, "sclk_uart1", uart1_p, 0,
1662cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(8), 0, 1, MFLAGS,
1663cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(5), 5, GFLAGS),
1664cc40f5baSElaine Zhang 	GATE(PCLK_UART1, "pclk_uart1", "pclk_pmu1_root", 0,
1665cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(5), 6, GFLAGS),
1666cc40f5baSElaine Zhang 	GATE(CLK_PDM0, "clk_pdm0", "clk_pdm0_src_top", 0,
1667cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(5), 13, GFLAGS),
1668cc40f5baSElaine Zhang 	GATE(HCLK_PDM0, "hclk_pdm0", "hclk_pmu1_root", 0,
1669cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(5), 15, GFLAGS),
1670cc40f5baSElaine Zhang 	GATE(MCLK_PDM0, "mclk_pdm0", "mclk_pdm0_src_top", 0,
1671cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(6), 0, GFLAGS),
1672cc40f5baSElaine Zhang 	GATE(HCLK_VAD, "hclk_vad", "hclk_pmu1_root", 0,
1673cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(6), 1, GFLAGS),
1674cc40f5baSElaine Zhang 	GATE(CLK_PDM0_OUT, "clk_pdm0_out", "clk_pdm0", 0,
1675cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(6), 8, GFLAGS),
1676cc40f5baSElaine Zhang 	COMPOSITE(CLK_HPTIMER_SRC, "clk_hptimer_src", cpll_24m_p, CLK_IS_CRITICAL,
1677cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(11), 6, 1, MFLAGS, 1, 5, DFLAGS,
1678cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(6), 10, GFLAGS),
1679cc40f5baSElaine Zhang 	GATE(PCLK_GPIO0, "pclk_gpio0", "pclk_pmu0_root", 0,
1680cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(7), 6, GFLAGS),
1681cc40f5baSElaine Zhang 	COMPOSITE_NODIV(DBCLK_GPIO0, "dbclk_gpio0", mux_24m_32k_p, 0,
1682cc40f5baSElaine Zhang 			RK3576_PMU_CLKSEL_CON(20), 2, 1, MFLAGS,
1683cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(7), 7, GFLAGS),
1684cc40f5baSElaine Zhang 	GATE(CLK_OSC0_PMU1, "clk_osc0_pmu1", "xin24m", CLK_IS_CRITICAL,
1685cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(7), 8, GFLAGS),
1686cc40f5baSElaine Zhang 	GATE(CLK_PMU1PWM_RC, "clk_pmu1pwm_rc", "clk_pvtm_clkout", 0,
1687cc40f5baSElaine Zhang 			RK3576_PMU_CLKGATE_CON(5), 7, GFLAGS),
1688cc40f5baSElaine Zhang 
1689cc40f5baSElaine Zhang 	/* phy ref */
1690cc40f5baSElaine Zhang 	MUXGRF(CLK_PHY_REF_SRC, "clk_phy_ref_src", clk_phy_ref_src_p,  0,
169170a114daSNicolas Frattaroli 			RK3576_PMU0_GRF_OSC_CON6, 4, 1, MFLAGS, grf_type_pmu0),
1692cc40f5baSElaine Zhang 	MUXGRF(CLK_USBPHY_REF_SRC, "clk_usbphy_ref_src", clk_usbphy_ref_src_p,  0,
169370a114daSNicolas Frattaroli 			RK3576_PMU0_GRF_OSC_CON6, 2, 1, MFLAGS, grf_type_pmu0),
1694cc40f5baSElaine Zhang 	MUXGRF(CLK_CPLL_REF_SRC, "clk_cpll_ref_src", clk_cpll_ref_src_p,  0,
169570a114daSNicolas Frattaroli 			RK3576_PMU0_GRF_OSC_CON6, 1, 1, MFLAGS, grf_type_pmu0),
1696cc40f5baSElaine Zhang 	MUXGRF(CLK_AUPLL_REF_SRC, "clk_aupll_ref_src", clk_aupll_ref_src_p,  0,
169770a114daSNicolas Frattaroli 			RK3576_PMU0_GRF_OSC_CON6, 0, 1, MFLAGS, grf_type_pmu0),
1698cc40f5baSElaine Zhang 
1699cc40f5baSElaine Zhang 	/* secure ns */
1700cc40f5baSElaine Zhang 	COMPOSITE_NODIV(ACLK_SECURE_NS, "aclk_secure_ns", mux_350m_175m_116m_24m_p, CLK_IS_CRITICAL,
1701cc40f5baSElaine Zhang 			RK3576_SECURE_NS_CLKSEL_CON(0), 0, 2, MFLAGS,
1702cc40f5baSElaine Zhang 			RK3576_SECURE_NS_CLKGATE_CON(0), 0, GFLAGS),
1703cc40f5baSElaine Zhang 	COMPOSITE_NODIV(HCLK_SECURE_NS, "hclk_secure_ns", mux_175m_116m_58m_24m_p, CLK_IS_CRITICAL,
1704cc40f5baSElaine Zhang 			RK3576_SECURE_NS_CLKSEL_CON(0), 2, 2, MFLAGS,
1705cc40f5baSElaine Zhang 			RK3576_SECURE_NS_CLKGATE_CON(0), 1, GFLAGS),
1706cc40f5baSElaine Zhang 	COMPOSITE_NODIV(PCLK_SECURE_NS, "pclk_secure_ns", mux_116m_58m_24m_p, CLK_IS_CRITICAL,
1707cc40f5baSElaine Zhang 			RK3576_SECURE_NS_CLKSEL_CON(0), 4, 2, MFLAGS,
1708cc40f5baSElaine Zhang 			RK3576_SECURE_NS_CLKGATE_CON(0), 2, GFLAGS),
1709cc40f5baSElaine Zhang 	GATE(HCLK_CRYPTO_NS, "hclk_crypto_ns", "hclk_secure_ns", 0,
1710cc40f5baSElaine Zhang 			RK3576_SECURE_NS_CLKGATE_CON(0), 3, GFLAGS),
1711cc40f5baSElaine Zhang 	GATE(PCLK_OTPC_NS, "pclk_otpc_ns", "pclk_secure_ns", 0,
1712cc40f5baSElaine Zhang 			RK3576_SECURE_NS_CLKGATE_CON(0), 8, GFLAGS),
1713cc40f5baSElaine Zhang 	GATE(CLK_OTPC_NS, "clk_otpc_ns", "xin24m", 0,
1714cc40f5baSElaine Zhang 			RK3576_SECURE_NS_CLKGATE_CON(0), 9, GFLAGS),
1715cc40f5baSElaine Zhang 	GATE(ACLK_CRYPTO_NS, "aclk_crypto_ns", "aclk_secure_s", 0,
1716cc40f5baSElaine Zhang 			RK3576_NON_SECURE_GATING_CON00, 14, GFLAGS),
1717cc40f5baSElaine Zhang 	GATE(HCLK_TRNG_NS, "hclk_trng_ns", "hclk_secure_s", 0,
1718cc40f5baSElaine Zhang 			RK3576_NON_SECURE_GATING_CON00, 13, GFLAGS),
1719cc40f5baSElaine Zhang 	GATE(CLK_PKA_CRYPTO_NS, "clk_pka_crypto_ns", "clk_pka_crypto_s", 0,
1720cc40f5baSElaine Zhang 			RK3576_NON_SECURE_GATING_CON00, 1, GFLAGS),
1721cc40f5baSElaine Zhang 
1722cc40f5baSElaine Zhang 	/* io */
1723cc40f5baSElaine Zhang 	GATE(CLK_VICAP_I0CLK, "clk_vicap_i0clk", "clk_csihost0_clkdata_i", 0,
1724cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(59), 1, GFLAGS),
1725cc40f5baSElaine Zhang 	GATE(CLK_VICAP_I1CLK, "clk_vicap_i1clk", "clk_csihost1_clkdata_i", 0,
1726cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(59), 2, GFLAGS),
1727cc40f5baSElaine Zhang 	GATE(CLK_VICAP_I2CLK, "clk_vicap_i2clk", "clk_csihost2_clkdata_i", 0,
1728cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(59), 3, GFLAGS),
1729cc40f5baSElaine Zhang 	GATE(CLK_VICAP_I3CLK, "clk_vicap_i3clk", "clk_csihost3_clkdata_i", 0,
1730cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(59), 4, GFLAGS),
1731cc40f5baSElaine Zhang 	GATE(CLK_VICAP_I4CLK, "clk_vicap_i4clk", "clk_csihost4_clkdata_i", 0,
1732cc40f5baSElaine Zhang 			RK3576_CLKGATE_CON(59), 5, GFLAGS),
1733cc40f5baSElaine Zhang };
1734cc40f5baSElaine Zhang 
rk3576_clk_init(struct device_node * np)1735cc40f5baSElaine Zhang static void __init rk3576_clk_init(struct device_node *np)
1736cc40f5baSElaine Zhang {
1737cc40f5baSElaine Zhang 	struct rockchip_clk_provider *ctx;
1738cc40f5baSElaine Zhang 	unsigned long clk_nr_clks;
1739cc40f5baSElaine Zhang 	void __iomem *reg_base;
17409199ec29SNicolas Frattaroli 	struct rockchip_aux_grf *ioc_grf_e;
174170a114daSNicolas Frattaroli 	struct rockchip_aux_grf *pmu0_grf_e;
17429199ec29SNicolas Frattaroli 	struct regmap *ioc_grf;
174370a114daSNicolas Frattaroli 	struct regmap *pmu0_grf;
1744cc40f5baSElaine Zhang 
1745cc40f5baSElaine Zhang 	clk_nr_clks = rockchip_clk_find_max_clk_id(rk3576_clk_branches,
1746cc40f5baSElaine Zhang 					ARRAY_SIZE(rk3576_clk_branches)) + 1;
1747cc40f5baSElaine Zhang 
174870a114daSNicolas Frattaroli 	pmu0_grf = syscon_regmap_lookup_by_compatible("rockchip,rk3576-pmu0-grf");
174970a114daSNicolas Frattaroli 	if (IS_ERR(pmu0_grf)) {
1750cc40f5baSElaine Zhang 		pr_err("%s: could not get PMU0 GRF syscon\n", __func__);
1751cc40f5baSElaine Zhang 		return;
1752cc40f5baSElaine Zhang 	}
1753cc40f5baSElaine Zhang 
17549199ec29SNicolas Frattaroli 	ioc_grf = syscon_regmap_lookup_by_compatible("rockchip,rk3576-ioc-grf");
17559199ec29SNicolas Frattaroli 	if (IS_ERR(ioc_grf)) {
17569199ec29SNicolas Frattaroli 		pr_err("%s: could not get IOC GRF syscon\n", __func__);
17579199ec29SNicolas Frattaroli 		return;
17589199ec29SNicolas Frattaroli 	}
17599199ec29SNicolas Frattaroli 
1760cc40f5baSElaine Zhang 	reg_base = of_iomap(np, 0);
1761cc40f5baSElaine Zhang 	if (!reg_base) {
1762cc40f5baSElaine Zhang 		pr_err("%s: could not map cru region\n", __func__);
1763cc40f5baSElaine Zhang 		return;
1764cc40f5baSElaine Zhang 	}
1765cc40f5baSElaine Zhang 
1766cc40f5baSElaine Zhang 	ctx = rockchip_clk_init(np, reg_base, clk_nr_clks);
1767cc40f5baSElaine Zhang 	if (IS_ERR(ctx)) {
1768cc40f5baSElaine Zhang 		pr_err("%s: rockchip clk init failed\n", __func__);
176970a114daSNicolas Frattaroli 		goto err_unmap;
1770cc40f5baSElaine Zhang 	}
1771cc40f5baSElaine Zhang 
177270a114daSNicolas Frattaroli 	pmu0_grf_e = kzalloc(sizeof(*pmu0_grf_e), GFP_KERNEL);
177370a114daSNicolas Frattaroli 	if (!pmu0_grf_e)
177470a114daSNicolas Frattaroli 		goto err_unmap;
177570a114daSNicolas Frattaroli 
177670a114daSNicolas Frattaroli 	pmu0_grf_e->grf = pmu0_grf;
177770a114daSNicolas Frattaroli 	pmu0_grf_e->type = grf_type_pmu0;
177870a114daSNicolas Frattaroli 	hash_add(ctx->aux_grf_table, &pmu0_grf_e->node, grf_type_pmu0);
1779cc40f5baSElaine Zhang 
17809199ec29SNicolas Frattaroli 	ioc_grf_e = kzalloc(sizeof(*ioc_grf_e), GFP_KERNEL);
17819199ec29SNicolas Frattaroli 	if (!ioc_grf_e)
17829199ec29SNicolas Frattaroli 		goto err_free_pmu0;
17839199ec29SNicolas Frattaroli 
17849199ec29SNicolas Frattaroli 	ioc_grf_e->grf = ioc_grf;
17859199ec29SNicolas Frattaroli 	ioc_grf_e->type = grf_type_ioc;
17869199ec29SNicolas Frattaroli 	hash_add(ctx->aux_grf_table, &ioc_grf_e->node, grf_type_ioc);
1787cc40f5baSElaine Zhang 
1788cc40f5baSElaine Zhang 	rockchip_clk_register_plls(ctx, rk3576_pll_clks,
1789cc40f5baSElaine Zhang 				   ARRAY_SIZE(rk3576_pll_clks),
1790cc40f5baSElaine Zhang 				   RK3576_GRF_SOC_STATUS0);
1791cc40f5baSElaine Zhang 
1792cc40f5baSElaine Zhang 	rockchip_clk_register_armclk(ctx, ARMCLK_L, "armclk_l",
1793cc40f5baSElaine Zhang 			mux_armclkl_p, ARRAY_SIZE(mux_armclkl_p),
1794cc40f5baSElaine Zhang 			&rk3576_cpulclk_data, rk3576_cpulclk_rates,
1795cc40f5baSElaine Zhang 			ARRAY_SIZE(rk3576_cpulclk_rates));
1796cc40f5baSElaine Zhang 	rockchip_clk_register_armclk(ctx, ARMCLK_B, "armclk_b",
1797cc40f5baSElaine Zhang 			mux_armclkb_p, ARRAY_SIZE(mux_armclkb_p),
1798cc40f5baSElaine Zhang 			&rk3576_cpubclk_data, rk3576_cpubclk_rates,
1799cc40f5baSElaine Zhang 			ARRAY_SIZE(rk3576_cpubclk_rates));
1800cc40f5baSElaine Zhang 
1801cc40f5baSElaine Zhang 	rockchip_clk_register_branches(ctx, rk3576_clk_branches,
1802cc40f5baSElaine Zhang 				       ARRAY_SIZE(rk3576_clk_branches));
1803cc40f5baSElaine Zhang 
1804cc40f5baSElaine Zhang 	rk3576_rst_init(np, reg_base);
1805cc40f5baSElaine Zhang 
1806cc40f5baSElaine Zhang 	rockchip_register_restart_notifier(ctx, RK3576_GLB_SRST_FST, NULL);
1807cc40f5baSElaine Zhang 
1808cc40f5baSElaine Zhang 	rockchip_clk_of_add_provider(np, ctx);
180970a114daSNicolas Frattaroli 
181070a114daSNicolas Frattaroli 	return;
181170a114daSNicolas Frattaroli 
18129199ec29SNicolas Frattaroli err_free_pmu0:
18139199ec29SNicolas Frattaroli 	kfree(pmu0_grf_e);
181470a114daSNicolas Frattaroli err_unmap:
181570a114daSNicolas Frattaroli 	iounmap(reg_base);
181670a114daSNicolas Frattaroli 	return;
1817cc40f5baSElaine Zhang }
1818cc40f5baSElaine Zhang 
1819cc40f5baSElaine Zhang CLK_OF_DECLARE(rk3576_cru, "rockchip,rk3576-cru", rk3576_clk_init);
1820cc40f5baSElaine Zhang 
1821cc40f5baSElaine Zhang struct clk_rk3576_inits {
1822cc40f5baSElaine Zhang 	void (*inits)(struct device_node *np);
1823cc40f5baSElaine Zhang };
1824cc40f5baSElaine Zhang 
1825cc40f5baSElaine Zhang static const struct clk_rk3576_inits clk_rk3576_cru_init = {
1826cc40f5baSElaine Zhang 	.inits = rk3576_clk_init,
1827cc40f5baSElaine Zhang };
1828cc40f5baSElaine Zhang 
1829cc40f5baSElaine Zhang static const struct of_device_id clk_rk3576_match_table[] = {
1830cc40f5baSElaine Zhang 	{
1831cc40f5baSElaine Zhang 		.compatible = "rockchip,rk3576-cru",
1832cc40f5baSElaine Zhang 		.data = &clk_rk3576_cru_init,
1833cc40f5baSElaine Zhang 	},
1834cc40f5baSElaine Zhang 	{ }
1835cc40f5baSElaine Zhang };
1836cc40f5baSElaine Zhang 
clk_rk3576_probe(struct platform_device * pdev)1837cc40f5baSElaine Zhang static int clk_rk3576_probe(struct platform_device *pdev)
1838cc40f5baSElaine Zhang {
1839cc40f5baSElaine Zhang 	const struct clk_rk3576_inits *init_data;
1840cc40f5baSElaine Zhang 	struct device *dev = &pdev->dev;
1841cc40f5baSElaine Zhang 
1842cc40f5baSElaine Zhang 	init_data = device_get_match_data(dev);
1843cc40f5baSElaine Zhang 	if (!init_data)
1844cc40f5baSElaine Zhang 		return -EINVAL;
1845cc40f5baSElaine Zhang 
1846cc40f5baSElaine Zhang 	if (init_data->inits)
1847cc40f5baSElaine Zhang 		init_data->inits(dev->of_node);
1848cc40f5baSElaine Zhang 
1849cc40f5baSElaine Zhang 	return 0;
1850cc40f5baSElaine Zhang }
1851cc40f5baSElaine Zhang 
1852cc40f5baSElaine Zhang static struct platform_driver clk_rk3576_driver = {
1853cc40f5baSElaine Zhang 	.probe		= clk_rk3576_probe,
1854cc40f5baSElaine Zhang 	.driver		= {
1855cc40f5baSElaine Zhang 		.name	= "clk-rk3576",
1856cc40f5baSElaine Zhang 		.of_match_table = clk_rk3576_match_table,
1857cc40f5baSElaine Zhang 		.suppress_bind_attrs = true,
1858cc40f5baSElaine Zhang 	},
1859cc40f5baSElaine Zhang };
1860cc40f5baSElaine Zhang builtin_platform_driver_probe(clk_rk3576_driver, clk_rk3576_probe);
1861