xref: /linux/drivers/clk/samsung/clk-exynos990.c (revision 641b0c64b85a9b21110268f511f20d6887406117)
1*bdd03ebfSIgor Belwon // SPDX-License-Identifier: GPL-2.0-only
2*bdd03ebfSIgor Belwon /*
3*bdd03ebfSIgor Belwon  * Copyright (C) 2024 Igor Belwon <igor.belwon@mentallysanemainliners.org>
4*bdd03ebfSIgor Belwon  *
5*bdd03ebfSIgor Belwon  * Common Clock Framework support for Exynos990.
6*bdd03ebfSIgor Belwon  */
7*bdd03ebfSIgor Belwon 
8*bdd03ebfSIgor Belwon #include <linux/clk.h>
9*bdd03ebfSIgor Belwon #include <linux/clk-provider.h>
10*bdd03ebfSIgor Belwon #include <linux/of.h>
11*bdd03ebfSIgor Belwon #include <linux/platform_device.h>
12*bdd03ebfSIgor Belwon 
13*bdd03ebfSIgor Belwon #include <dt-bindings/clock/samsung,exynos990.h>
14*bdd03ebfSIgor Belwon 
15*bdd03ebfSIgor Belwon #include "clk.h"
16*bdd03ebfSIgor Belwon #include "clk-exynos-arm64.h"
17*bdd03ebfSIgor Belwon #include "clk-pll.h"
18*bdd03ebfSIgor Belwon 
19*bdd03ebfSIgor Belwon /* NOTE: Must be equal to the last clock ID increased by one */
20*bdd03ebfSIgor Belwon #define CLKS_NR_TOP (CLK_GOUT_CMU_VRA_BUS + 1)
21*bdd03ebfSIgor Belwon #define CLKS_NR_HSI0 (CLK_GOUT_HSI0_XIU_D_HSI0_ACLK + 1)
22*bdd03ebfSIgor Belwon 
23*bdd03ebfSIgor Belwon /* ---- CMU_TOP ------------------------------------------------------------- */
24*bdd03ebfSIgor Belwon 
25*bdd03ebfSIgor Belwon /* Register Offset definitions for CMU_TOP (0x1a330000) */
26*bdd03ebfSIgor Belwon #define PLL_LOCKTIME_PLL_G3D				0x0000
27*bdd03ebfSIgor Belwon #define PLL_LOCKTIME_PLL_MMC				0x0004
28*bdd03ebfSIgor Belwon #define PLL_LOCKTIME_PLL_SHARED0			0x0008
29*bdd03ebfSIgor Belwon #define PLL_LOCKTIME_PLL_SHARED1			0x000c
30*bdd03ebfSIgor Belwon #define PLL_LOCKTIME_PLL_SHARED2			0x0010
31*bdd03ebfSIgor Belwon #define PLL_LOCKTIME_PLL_SHARED3			0x0014
32*bdd03ebfSIgor Belwon #define PLL_LOCKTIME_PLL_SHARED4			0x0018
33*bdd03ebfSIgor Belwon #define PLL_CON0_PLL_G3D				0x0100
34*bdd03ebfSIgor Belwon #define PLL_CON3_PLL_G3D				0x010c
35*bdd03ebfSIgor Belwon #define PLL_CON0_PLL_MMC				0x0140
36*bdd03ebfSIgor Belwon #define PLL_CON3_PLL_MMC				0x014c
37*bdd03ebfSIgor Belwon #define PLL_CON0_PLL_SHARED0				0x0180
38*bdd03ebfSIgor Belwon #define PLL_CON3_PLL_SHARED0				0x018c
39*bdd03ebfSIgor Belwon #define PLL_CON0_PLL_SHARED1				0x01c0
40*bdd03ebfSIgor Belwon #define PLL_CON3_PLL_SHARED1				0x01cc
41*bdd03ebfSIgor Belwon #define PLL_CON0_PLL_SHARED2				0x0200
42*bdd03ebfSIgor Belwon #define PLL_CON3_PLL_SHARED2				0x020c
43*bdd03ebfSIgor Belwon #define PLL_CON0_PLL_SHARED3				0x0240
44*bdd03ebfSIgor Belwon #define PLL_CON3_PLL_SHARED3				0x024c
45*bdd03ebfSIgor Belwon #define PLL_CON0_PLL_SHARED4				0x0280
46*bdd03ebfSIgor Belwon #define PLL_CON3_PLL_SHARED4				0x028c
47*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_APM_BUS			0x1004
48*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_AUD_CPU			0x1008
49*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_BUS0_BUS			0x100c
50*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_BUS1_BUS			0x1010
51*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_BUS1_SSS			0x1014
52*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK0			0x1018
53*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK1			0x101c
54*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK2			0x1020
55*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK3			0x1024
56*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK4			0x1028
57*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK5			0x102c
58*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST		0x1030
59*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CORE_BUS			0x1034
60*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CPUCL0_DBG_BUS		0x1038
61*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CPUCL0_SWITCH		0x103c
62*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CPUCL1_SWITCH		0x1040
63*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CPUCL2_BUSP		0x1044
64*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CPUCL2_SWITCH		0x1048
65*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CSIS_BUS			0x104c
66*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CSIS_OIS_MCU		0x1050
67*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_DNC_BUS			0x1054
68*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_DNC_BUSM			0x1058
69*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_DNS_BUS			0x105c
70*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_DPU			0x1060
71*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_DPU_ALT			0x1064
72*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_DSP_BUS			0x1068
73*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_G2D_G2D			0x106c
74*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_G2D_MSCL			0x1070
75*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HPM			0x1074
76*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HSI0_BUS			0x1078
77*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HSI0_DPGTC		0x107c
78*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HSI0_USB31DRD		0x1080
79*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HSI0_USBDP_DEBUG		0x1084
80*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HSI1_BUS			0x1088
81*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HSI1_MMC_CARD		0x108c
82*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HSI1_PCIE		0x1090
83*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HSI1_UFS_CARD		0x1094
84*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HSI1_UFS_EMBD		0x1098
85*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HSI2_BUS			0x109c
86*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_HSI2_PCIE		0x10a0
87*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_IPP_BUS			0x10a4
88*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_ITP_BUS			0x10a8
89*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_MCSC_BUS			0x10ac
90*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_MCSC_GDC			0x10b0
91*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST_CPU		0x10b4
92*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_MFC0_MFC0		0x10b8
93*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_MFC0_WFD			0x10bc
94*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_MIF_BUSP			0x10c0
95*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_MIF_SWITCH		0x10c4
96*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_NPU_BUS			0x10c8
97*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_PERIC0_BUS		0x10cc
98*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_PERIC0_IP		0x10d0
99*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_PERIC1_BUS		0x10d4
100*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_PERIC1_IP		0x10d8
101*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_PERIS_BUS		0x10dc
102*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_SSP_BUS			0x10e0
103*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_TNR_BUS			0x10e4
104*bdd03ebfSIgor Belwon #define CLK_CON_MUX_MUX_CLKCMU_VRA_BUS			0x10e8
105*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_APM_BUS			0x1800
106*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_AUD_CPU			0x1804
107*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_BUS0_BUS			0x1808
108*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_BUS1_BUS			0x180c
109*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_BUS1_SSS			0x1810
110*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CIS_CLK0			0x1814
111*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CIS_CLK1			0x1818
112*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CIS_CLK2			0x181c
113*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CIS_CLK3			0x1820
114*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CIS_CLK4			0x1824
115*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CIS_CLK5			0x1828
116*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CMU_BOOST			0x182c
117*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CORE_BUS			0x1830
118*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CPUCL0_DBG_BUS		0x1834
119*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CPUCL0_SWITCH		0x1838
120*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CPUCL1_SWITCH		0x183c
121*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CPUCL2_BUSP			0x1840
122*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CPUCL2_SWITCH		0x1844
123*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CSIS_BUS			0x1848
124*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CSIS_OIS_MCU			0x184c
125*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_DNC_BUS			0x1850
126*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_DNC_BUSM			0x1854
127*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_DNS_BUS			0x1858
128*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_DSP_BUS			0x185c
129*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_G2D_G2D			0x1860
130*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_G2D_MSCL			0x1864
131*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_G3D_SWITCH			0x1868
132*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HPM				0x186c
133*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HSI0_BUS			0x1870
134*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HSI0_DPGTC			0x1874
135*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HSI0_USB31DRD		0x1878
136*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HSI0_USBDP_DEBUG		0x187c
137*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HSI1_BUS			0x1880
138*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HSI1_MMC_CARD		0x1884
139*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HSI1_PCIE			0x1888
140*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HSI1_UFS_CARD		0x188c
141*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HSI1_UFS_EMBD		0x1890
142*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HSI2_BUS			0x1894
143*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_HSI2_PCIE			0x1898
144*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_IPP_BUS			0x189c
145*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_ITP_BUS			0x18a0
146*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_MCSC_BUS			0x18a4
147*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_MCSC_GDC			0x18a8
148*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_CMU_BOOST_CPU		0x18ac
149*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_MFC0_MFC0			0x18b0
150*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_MFC0_WFD			0x18b4
151*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_MIF_BUSP			0x18b8
152*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_NPU_BUS			0x18bc
153*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_OTP				0x18c0
154*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_PERIC0_BUS			0x18c4
155*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_PERIC0_IP			0x18c8
156*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_PERIC1_BUS			0x18cc
157*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_PERIC1_IP			0x18d0
158*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_PERIS_BUS			0x18d4
159*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_SSP_BUS			0x18d8
160*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_TNR_BUS			0x18dc
161*bdd03ebfSIgor Belwon #define CLK_CON_DIV_CLKCMU_VRA_BUS			0x18e0
162*bdd03ebfSIgor Belwon #define CLK_CON_DIV_DIV_CLKCMU_DPU			0x18e8
163*bdd03ebfSIgor Belwon #define CLK_CON_DIV_DIV_CLKCMU_DPU_ALT			0x18ec
164*bdd03ebfSIgor Belwon #define CLK_CON_DIV_PLL_SHARED0_DIV2			0x18f4
165*bdd03ebfSIgor Belwon #define CLK_CON_DIV_PLL_SHARED0_DIV3			0x18f8
166*bdd03ebfSIgor Belwon #define CLK_CON_DIV_PLL_SHARED0_DIV4			0x18fc
167*bdd03ebfSIgor Belwon #define CLK_CON_DIV_PLL_SHARED1_DIV2			0x1900
168*bdd03ebfSIgor Belwon #define CLK_CON_DIV_PLL_SHARED1_DIV3			0x1904
169*bdd03ebfSIgor Belwon #define CLK_CON_DIV_PLL_SHARED1_DIV4			0x1908
170*bdd03ebfSIgor Belwon #define CLK_CON_DIV_PLL_SHARED2_DIV2			0x190c
171*bdd03ebfSIgor Belwon #define CLK_CON_DIV_PLL_SHARED4_DIV2			0x1910
172*bdd03ebfSIgor Belwon #define CLK_CON_DIV_PLL_SHARED4_DIV3			0x1914
173*bdd03ebfSIgor Belwon #define CLK_CON_DIV_PLL_SHARED4_DIV4			0x1918
174*bdd03ebfSIgor Belwon #define CLK_CON_GAT_CLKCMU_G3D_BUS			0x2000
175*bdd03ebfSIgor Belwon #define CLK_CON_GAT_CLKCMU_MIF_SWITCH			0x2004
176*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_APM_BUS			0x2008
177*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_AUD_CPU			0x200c
178*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_BUS0_BUS		0x2010
179*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_BUS1_BUS		0x2014
180*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_BUS1_SSS		0x2018
181*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK0		0x201c
182*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK1		0x2020
183*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK2		0x2024
184*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK3		0x2028
185*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK4		0x202c
186*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK5		0x2030
187*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CORE_BUS		0x2034
188*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CPUCL0_DBG_BUS		0x2038
189*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CPUCL0_SWITCH		0x203c
190*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CPUCL1_SWITCH		0x2040
191*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CPUCL2_BUSP		0x2044
192*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CPUCL2_SWITCH		0x2048
193*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CSIS_BUS		0x204c
194*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_CSIS_OIS_MCU		0x2050
195*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_DNC_BUS			0x2054
196*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_DNC_BUSM		0x2058
197*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_DNS_BUS			0x205c
198*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_DPU			0x2060
199*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_DPU_BUS			0x2064
200*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_DSP_BUS			0x2068
201*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_G2D_G2D			0x206c
202*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_G2D_MSCL		0x2070
203*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_G3D_SWITCH		0x2074
204*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HPM			0x2078
205*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HSI0_BUS		0x207c
206*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HSI0_DPGTC		0x2080
207*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HSI0_USB31DRD		0x2084
208*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HSI0_USBDP_DEBUG	0x2088
209*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HSI1_BUS		0x208c
210*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HSI1_MMC_CARD		0x2090
211*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HSI1_PCIE		0x2094
212*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HSI1_UFS_CARD		0x2098
213*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HSI1_UFS_EMBD		0x209c
214*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HSI2_BUS		0x20a0
215*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_HSI2_PCIE		0x20a4
216*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_IPP_BUS			0x20a8
217*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_ITP_BUS			0x20ac
218*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_MCSC_BUS		0x20b0
219*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_MCSC_GDC		0x20b4
220*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_MFC0_MFC0		0x20bc
221*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_MFC0_WFD		0x20c0
222*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_MIF_BUSP		0x20c4
223*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_NPU_BUS			0x20c8
224*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_PERIC0_BUS		0x20cc
225*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_PERIC0_IP		0x20d0
226*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_PERIC1_BUS		0x20d4
227*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_PERIC1_IP		0x20d8
228*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_PERIS_BUS		0x20dc
229*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_SSP_BUS			0x20e0
230*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_TNR_BUS			0x20e4
231*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GATE_CLKCMU_VRA_BUS			0x20e8
232*bdd03ebfSIgor Belwon 
233*bdd03ebfSIgor Belwon static const unsigned long top_clk_regs[] __initconst = {
234*bdd03ebfSIgor Belwon 	PLL_LOCKTIME_PLL_G3D,
235*bdd03ebfSIgor Belwon 	PLL_LOCKTIME_PLL_MMC,
236*bdd03ebfSIgor Belwon 	PLL_LOCKTIME_PLL_SHARED0,
237*bdd03ebfSIgor Belwon 	PLL_LOCKTIME_PLL_SHARED1,
238*bdd03ebfSIgor Belwon 	PLL_LOCKTIME_PLL_SHARED2,
239*bdd03ebfSIgor Belwon 	PLL_LOCKTIME_PLL_SHARED3,
240*bdd03ebfSIgor Belwon 	PLL_LOCKTIME_PLL_SHARED4,
241*bdd03ebfSIgor Belwon 	PLL_CON3_PLL_G3D,
242*bdd03ebfSIgor Belwon 	PLL_CON3_PLL_MMC,
243*bdd03ebfSIgor Belwon 	PLL_CON3_PLL_SHARED0,
244*bdd03ebfSIgor Belwon 	PLL_CON3_PLL_SHARED1,
245*bdd03ebfSIgor Belwon 	PLL_CON3_PLL_SHARED2,
246*bdd03ebfSIgor Belwon 	PLL_CON3_PLL_SHARED3,
247*bdd03ebfSIgor Belwon 	PLL_CON3_PLL_SHARED4,
248*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_APM_BUS,
249*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_AUD_CPU,
250*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_BUS0_BUS,
251*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_BUS1_BUS,
252*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_BUS1_SSS,
253*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CIS_CLK0,
254*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CIS_CLK1,
255*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CIS_CLK2,
256*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CIS_CLK3,
257*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CIS_CLK4,
258*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CIS_CLK5,
259*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST,
260*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CORE_BUS,
261*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CPUCL0_DBG_BUS,
262*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CPUCL0_SWITCH,
263*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CPUCL1_SWITCH,
264*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CPUCL2_BUSP,
265*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CPUCL2_SWITCH,
266*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CSIS_BUS,
267*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CSIS_OIS_MCU,
268*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_DNC_BUS,
269*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_DNC_BUSM,
270*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_DNS_BUS,
271*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_DPU,
272*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_DPU_ALT,
273*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_DSP_BUS,
274*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_G2D_G2D,
275*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_G2D_MSCL,
276*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HPM,
277*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HSI0_BUS,
278*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HSI0_DPGTC,
279*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HSI0_USB31DRD,
280*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HSI0_USBDP_DEBUG,
281*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HSI1_BUS,
282*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HSI1_MMC_CARD,
283*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HSI1_PCIE,
284*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HSI1_UFS_CARD,
285*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HSI1_UFS_EMBD,
286*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HSI2_BUS,
287*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_HSI2_PCIE,
288*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_IPP_BUS,
289*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_ITP_BUS,
290*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_MCSC_BUS,
291*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_MCSC_GDC,
292*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST_CPU,
293*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_MFC0_MFC0,
294*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_MFC0_WFD,
295*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_MIF_BUSP,
296*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_MIF_SWITCH,
297*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_NPU_BUS,
298*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_PERIC0_BUS,
299*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_PERIC0_IP,
300*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_PERIC1_BUS,
301*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_PERIC1_IP,
302*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_PERIS_BUS,
303*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_SSP_BUS,
304*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_TNR_BUS,
305*bdd03ebfSIgor Belwon 	CLK_CON_MUX_MUX_CLKCMU_VRA_BUS,
306*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_APM_BUS,
307*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_AUD_CPU,
308*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_BUS0_BUS,
309*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_BUS1_BUS,
310*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_BUS1_SSS,
311*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CIS_CLK0,
312*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CIS_CLK1,
313*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CIS_CLK2,
314*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CIS_CLK3,
315*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CIS_CLK4,
316*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CIS_CLK5,
317*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CMU_BOOST,
318*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CORE_BUS,
319*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CPUCL0_DBG_BUS,
320*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CPUCL0_SWITCH,
321*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CPUCL1_SWITCH,
322*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CPUCL2_BUSP,
323*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CPUCL2_SWITCH,
324*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CSIS_BUS,
325*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CSIS_OIS_MCU,
326*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_DNC_BUS,
327*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_DNC_BUSM,
328*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_DNS_BUS,
329*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_DSP_BUS,
330*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_G2D_G2D,
331*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_G2D_MSCL,
332*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_G3D_SWITCH,
333*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HPM,
334*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HSI0_BUS,
335*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HSI0_DPGTC,
336*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HSI0_USB31DRD,
337*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HSI0_USBDP_DEBUG,
338*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HSI1_BUS,
339*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HSI1_MMC_CARD,
340*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HSI1_PCIE,
341*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HSI1_UFS_CARD,
342*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HSI1_UFS_EMBD,
343*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HSI2_BUS,
344*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_HSI2_PCIE,
345*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_IPP_BUS,
346*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_ITP_BUS,
347*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_MCSC_BUS,
348*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_MCSC_GDC,
349*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_CMU_BOOST_CPU,
350*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_MFC0_MFC0,
351*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_MFC0_WFD,
352*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_MIF_BUSP,
353*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_NPU_BUS,
354*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_OTP,
355*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_PERIC0_BUS,
356*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_PERIC0_IP,
357*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_PERIC1_BUS,
358*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_PERIC1_IP,
359*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_PERIS_BUS,
360*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_SSP_BUS,
361*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_TNR_BUS,
362*bdd03ebfSIgor Belwon 	CLK_CON_DIV_CLKCMU_VRA_BUS,
363*bdd03ebfSIgor Belwon 	CLK_CON_DIV_DIV_CLKCMU_DPU,
364*bdd03ebfSIgor Belwon 	CLK_CON_DIV_DIV_CLKCMU_DPU_ALT,
365*bdd03ebfSIgor Belwon 	CLK_CON_DIV_PLL_SHARED0_DIV2,
366*bdd03ebfSIgor Belwon 	CLK_CON_DIV_PLL_SHARED0_DIV3,
367*bdd03ebfSIgor Belwon 	CLK_CON_DIV_PLL_SHARED0_DIV4,
368*bdd03ebfSIgor Belwon 	CLK_CON_DIV_PLL_SHARED1_DIV2,
369*bdd03ebfSIgor Belwon 	CLK_CON_DIV_PLL_SHARED1_DIV3,
370*bdd03ebfSIgor Belwon 	CLK_CON_DIV_PLL_SHARED1_DIV4,
371*bdd03ebfSIgor Belwon 	CLK_CON_DIV_PLL_SHARED2_DIV2,
372*bdd03ebfSIgor Belwon 	CLK_CON_DIV_PLL_SHARED4_DIV2,
373*bdd03ebfSIgor Belwon 	CLK_CON_DIV_PLL_SHARED4_DIV3,
374*bdd03ebfSIgor Belwon 	CLK_CON_DIV_PLL_SHARED4_DIV4,
375*bdd03ebfSIgor Belwon 	CLK_CON_GAT_CLKCMU_G3D_BUS,
376*bdd03ebfSIgor Belwon 	CLK_CON_GAT_CLKCMU_MIF_SWITCH,
377*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_APM_BUS,
378*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_AUD_CPU,
379*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_BUS0_BUS,
380*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_BUS1_BUS,
381*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_BUS1_SSS,
382*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CIS_CLK0,
383*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CIS_CLK1,
384*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CIS_CLK2,
385*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CIS_CLK3,
386*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CIS_CLK4,
387*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CIS_CLK5,
388*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CORE_BUS,
389*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CPUCL0_DBG_BUS,
390*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CPUCL0_SWITCH,
391*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CPUCL1_SWITCH,
392*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CPUCL2_BUSP,
393*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CPUCL2_SWITCH,
394*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CSIS_BUS,
395*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_CSIS_OIS_MCU,
396*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_DNC_BUS,
397*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_DNC_BUSM,
398*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_DNS_BUS,
399*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_DPU,
400*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_DPU_BUS,
401*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_DSP_BUS,
402*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_G2D_G2D,
403*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_G2D_MSCL,
404*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_G3D_SWITCH,
405*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HPM,
406*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HSI0_BUS,
407*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HSI0_DPGTC,
408*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HSI0_USB31DRD,
409*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HSI0_USBDP_DEBUG,
410*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HSI1_BUS,
411*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HSI1_MMC_CARD,
412*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HSI1_PCIE,
413*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HSI1_UFS_CARD,
414*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HSI1_UFS_EMBD,
415*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HSI2_BUS,
416*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_HSI2_PCIE,
417*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_IPP_BUS,
418*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_ITP_BUS,
419*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_MCSC_BUS,
420*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_MCSC_GDC,
421*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_MFC0_MFC0,
422*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_MFC0_WFD,
423*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_MIF_BUSP,
424*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_NPU_BUS,
425*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_PERIC0_BUS,
426*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_PERIC0_IP,
427*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_PERIC1_BUS,
428*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_PERIC1_IP,
429*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_PERIS_BUS,
430*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_SSP_BUS,
431*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_TNR_BUS,
432*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GATE_CLKCMU_VRA_BUS,
433*bdd03ebfSIgor Belwon };
434*bdd03ebfSIgor Belwon 
435*bdd03ebfSIgor Belwon static const struct samsung_pll_clock top_pll_clks[] __initconst = {
436*bdd03ebfSIgor Belwon 	PLL(pll_0717x, CLK_FOUT_SHARED0_PLL, "fout_shared0_pll", "oscclk",
437*bdd03ebfSIgor Belwon 	    PLL_LOCKTIME_PLL_SHARED0, PLL_CON3_PLL_SHARED0, NULL),
438*bdd03ebfSIgor Belwon 	PLL(pll_0717x, CLK_FOUT_SHARED1_PLL, "fout_shared1_pll", "oscclk",
439*bdd03ebfSIgor Belwon 	    PLL_LOCKTIME_PLL_SHARED1, PLL_CON3_PLL_SHARED1, NULL),
440*bdd03ebfSIgor Belwon 	PLL(pll_0718x, CLK_FOUT_SHARED2_PLL, "fout_shared2_pll", "oscclk",
441*bdd03ebfSIgor Belwon 	    PLL_LOCKTIME_PLL_SHARED2, PLL_CON3_PLL_SHARED2, NULL),
442*bdd03ebfSIgor Belwon 	PLL(pll_0718x, CLK_FOUT_SHARED3_PLL, "fout_shared3_pll", "oscclk",
443*bdd03ebfSIgor Belwon 	    PLL_LOCKTIME_PLL_SHARED3, PLL_CON3_PLL_SHARED3, NULL),
444*bdd03ebfSIgor Belwon 	PLL(pll_0717x, CLK_FOUT_SHARED4_PLL, "fout_shared4_pll", "oscclk",
445*bdd03ebfSIgor Belwon 	    PLL_LOCKTIME_PLL_SHARED4, PLL_CON3_PLL_SHARED4, NULL),
446*bdd03ebfSIgor Belwon 	PLL(pll_0732x, CLK_FOUT_MMC_PLL, "fout_mmc_pll", "oscclk",
447*bdd03ebfSIgor Belwon 	    PLL_LOCKTIME_PLL_MMC, PLL_CON3_PLL_MMC, NULL),
448*bdd03ebfSIgor Belwon 	PLL(pll_0718x, CLK_FOUT_G3D_PLL, "fout_g3d_pll", "oscclk",
449*bdd03ebfSIgor Belwon 	    PLL_LOCKTIME_PLL_G3D, PLL_CON3_PLL_G3D, NULL),
450*bdd03ebfSIgor Belwon };
451*bdd03ebfSIgor Belwon 
452*bdd03ebfSIgor Belwon /* Parent clock list for CMU_TOP muxes*/
453*bdd03ebfSIgor Belwon PNAME(mout_pll_shared0_p)		= { "oscclk", "fout_shared0_pll" };
454*bdd03ebfSIgor Belwon PNAME(mout_pll_shared1_p)		= { "oscclk", "fout_shared1_pll" };
455*bdd03ebfSIgor Belwon PNAME(mout_pll_shared2_p)		= { "oscclk", "fout_shared2_pll" };
456*bdd03ebfSIgor Belwon PNAME(mout_pll_shared3_p)		= { "oscclk", "fout_shared3_pll" };
457*bdd03ebfSIgor Belwon PNAME(mout_pll_shared4_p)		= { "oscclk", "fout_shared4_pll" };
458*bdd03ebfSIgor Belwon PNAME(mout_pll_mmc_p)			= { "oscclk", "fout_mmc_pll" };
459*bdd03ebfSIgor Belwon PNAME(mout_pll_g3d_p)			= { "oscclk", "fout_g3d_pll" };
460*bdd03ebfSIgor Belwon PNAME(mout_cmu_apm_bus_p)		= { "dout_cmu_shared0_div2",
461*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
462*bdd03ebfSIgor Belwon PNAME(mout_cmu_aud_cpu_p)		= { "dout_cmu_shared0_div2",
463*bdd03ebfSIgor Belwon 					    "fout_shared2_pll",
464*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
465*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4" };
466*bdd03ebfSIgor Belwon PNAME(mout_cmu_bus0_bus_p)		= { "dout_cmu_shared0_div4",
467*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
468*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
469*bdd03ebfSIgor Belwon 					    "oscclk" };
470*bdd03ebfSIgor Belwon PNAME(mout_cmu_bus1_bus_p)		= { "dout_cmu_shared0_div4",
471*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
472*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
473*bdd03ebfSIgor Belwon 					    "oscclk" };
474*bdd03ebfSIgor Belwon PNAME(mout_cmu_bus1_sss_p)		= { "dout_cmu_shared0_div4",
475*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
476*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
477*bdd03ebfSIgor Belwon 					    "oscclk" };
478*bdd03ebfSIgor Belwon PNAME(mout_cmu_cis_clk0_p)		= { "oscclk",
479*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
480*bdd03ebfSIgor Belwon PNAME(mout_cmu_cis_clk1_p)		= { "oscclk",
481*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
482*bdd03ebfSIgor Belwon PNAME(mout_cmu_cis_clk2_p)		= { "oscclk",
483*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
484*bdd03ebfSIgor Belwon PNAME(mout_cmu_cis_clk3_p)		= { "oscclk",
485*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
486*bdd03ebfSIgor Belwon PNAME(mout_cmu_cis_clk4_p)		= { "oscclk",
487*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
488*bdd03ebfSIgor Belwon PNAME(mout_cmu_cis_clk5_p)		= { "oscclk",
489*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
490*bdd03ebfSIgor Belwon PNAME(mout_cmu_cmu_boost_p)		= { "dout_cmu_shared0_div4",
491*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
492*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
493*bdd03ebfSIgor Belwon 					    "oscclk" };
494*bdd03ebfSIgor Belwon PNAME(mout_cmu_core_bus_p)		= { "dout_cmu_shared0_div2",
495*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div2",
496*bdd03ebfSIgor Belwon 					    "fout_shared2_pll",
497*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div3",
498*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div3",
499*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
500*bdd03ebfSIgor Belwon 					    "fout_shared3_pll", "oscclk" };
501*bdd03ebfSIgor Belwon PNAME(mout_cmu_cpucl0_dbg_bus_p)	= { "fout_shared2_pll",
502*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div3",
503*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
504*bdd03ebfSIgor Belwon 					    "oscclk" };
505*bdd03ebfSIgor Belwon PNAME(mout_cmu_cpucl0_switch_p)		= { "fout_shared4_pll",
506*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div2",
507*bdd03ebfSIgor Belwon 					    "fout_shared2_pll",
508*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4" };
509*bdd03ebfSIgor Belwon PNAME(mout_cmu_cpucl1_switch_p)	= { "fout_shared4_pll",
510*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div2",
511*bdd03ebfSIgor Belwon 					    "fout_shared2_pll",
512*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4" };
513*bdd03ebfSIgor Belwon PNAME(mout_cmu_cpucl2_busp_p)		= { "dout_cmu_shared0_div4",
514*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
515*bdd03ebfSIgor Belwon PNAME(mout_cmu_cpucl2_switch_p)		= { "fout_shared4_pll",
516*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div2",
517*bdd03ebfSIgor Belwon 					    "fout_shared2_pll",
518*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4" };
519*bdd03ebfSIgor Belwon PNAME(mout_cmu_csis_bus_p)		= { "dout_cmu_shared0_div3",
520*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
521*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
522*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3" };
523*bdd03ebfSIgor Belwon PNAME(mout_cmu_csis_ois_mcu_p)		= { "dout_cmu_shared0_div4",
524*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
525*bdd03ebfSIgor Belwon PNAME(mout_cmu_dnc_bus_p)		= { "dout_cmu_shared1_div2",
526*bdd03ebfSIgor Belwon 					    "fout_shared2_pll",
527*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
528*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4" };
529*bdd03ebfSIgor Belwon PNAME(mout_cmu_dnc_busm_p)		= { "dout_cmu_shared0_div4",
530*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
531*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
532*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div4" };
533*bdd03ebfSIgor Belwon PNAME(mout_cmu_dns_bus_p)		= { "dout_cmu_shared0_div3",
534*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
535*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
536*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
537*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3",
538*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
539*bdd03ebfSIgor Belwon 					    "oscclk", "oscclk" };
540*bdd03ebfSIgor Belwon PNAME(mout_cmu_dpu_p)			= { "dout_cmu_shared0_div3",
541*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4" };
542*bdd03ebfSIgor Belwon PNAME(mout_cmu_dpu_alt_p)		= { "dout_cmu_shared4_div2",
543*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3",
544*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
545*bdd03ebfSIgor Belwon 					    "oscclk" };
546*bdd03ebfSIgor Belwon PNAME(mout_cmu_dsp_bus_p)		= { "dout_cmu_shared0_div2",
547*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div2",
548*bdd03ebfSIgor Belwon 					    "fout_shared2_pll",
549*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
550*bdd03ebfSIgor Belwon 					    "fout_shared3_pll", "oscclk",
551*bdd03ebfSIgor Belwon 					    "oscclk", "oscclk" };
552*bdd03ebfSIgor Belwon PNAME(mout_cmu_g2d_g2d_p)		= { "dout_cmu_shared0_div3",
553*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
554*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
555*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
556*bdd03ebfSIgor Belwon PNAME(mout_cmu_g2d_mscl_p)		= { "dout_cmu_shared0_div4",
557*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
558*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div4",
559*bdd03ebfSIgor Belwon 					    "oscclk" };
560*bdd03ebfSIgor Belwon PNAME(mout_cmu_hpm_p)			= { "oscclk",
561*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
562*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
563*bdd03ebfSIgor Belwon 					    "oscclk" };
564*bdd03ebfSIgor Belwon PNAME(mout_cmu_hsi0_bus_p)		= { "dout_cmu_shared0_div4",
565*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
566*bdd03ebfSIgor Belwon PNAME(mout_cmu_hsi0_dpgtc_p)		= { "oscclk", "dout_cmu_shared0_div4",
567*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
568*bdd03ebfSIgor Belwon 					    "oscclk" };
569*bdd03ebfSIgor Belwon PNAME(mout_cmu_hsi0_usb31drd_p)		= { "oscclk", "dout_cmu_shared0_div4",
570*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
571*bdd03ebfSIgor Belwon 					    "oscclk" };
572*bdd03ebfSIgor Belwon PNAME(mout_cmu_hsi0_usbdp_debug_p)	= { "oscclk", "fout_shared2_pll" };
573*bdd03ebfSIgor Belwon PNAME(mout_cmu_hsi1_bus_p)		= { "dout_cmu_shared0_div3",
574*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
575*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
576*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3",
577*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
578*bdd03ebfSIgor Belwon 					    "fout_mmc_pll", "oscclk", "oscclk" };
579*bdd03ebfSIgor Belwon PNAME(mout_cmu_hsi1_mmc_card_p)	= { "oscclk", "fout_shared2_pll",
580*bdd03ebfSIgor Belwon 					    "fout_mmc_pll",
581*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4" };
582*bdd03ebfSIgor Belwon PNAME(mout_cmu_hsi1_pcie_p)		= { "oscclk", "fout_shared2_pll" };
583*bdd03ebfSIgor Belwon PNAME(mout_cmu_hsi1_ufs_card_p)		= { "oscclk", "dout_cmu_shared0_div4",
584*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
585*bdd03ebfSIgor Belwon 					    "oscclk" };
586*bdd03ebfSIgor Belwon PNAME(mout_cmu_hsi1_ufs_embd_p)		= { "oscclk", "dout_cmu_shared0_div4",
587*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
588*bdd03ebfSIgor Belwon 					    "oscclk" };
589*bdd03ebfSIgor Belwon PNAME(mout_cmu_hsi2_bus_p)		= { "dout_cmu_shared0_div3",
590*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
591*bdd03ebfSIgor Belwon PNAME(mout_cmu_hsi2_pcie_p)		= { "oscclk", "fout_shared2_pll" };
592*bdd03ebfSIgor Belwon PNAME(mout_cmu_ipp_bus_p)		= { "dout_cmu_shared0_div3",
593*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
594*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
595*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
596*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3",
597*bdd03ebfSIgor Belwon 					    "oscclk", "oscclk", "oscclk" };
598*bdd03ebfSIgor Belwon PNAME(mout_cmu_itp_bus_p)		= { "dout_cmu_shared0_div3",
599*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
600*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
601*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
602*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3",
603*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
604*bdd03ebfSIgor Belwon 					    "oscclk", "oscclk" };
605*bdd03ebfSIgor Belwon PNAME(mout_cmu_mcsc_bus_p)		= { "dout_cmu_shared0_div3",
606*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
607*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
608*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
609*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3",
610*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
611*bdd03ebfSIgor Belwon 					    "oscclk", "oscclk" };
612*bdd03ebfSIgor Belwon PNAME(mout_cmu_mcsc_gdc_p)		= { "dout_cmu_shared0_div3",
613*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
614*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
615*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
616*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3",
617*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
618*bdd03ebfSIgor Belwon 					    "oscclk", "oscclk" };
619*bdd03ebfSIgor Belwon PNAME(mout_cmu_cmu_boost_cpu_p)		= { "dout_cmu_shared0_div4",
620*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
621*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
622*bdd03ebfSIgor Belwon 					    "oscclk" };
623*bdd03ebfSIgor Belwon PNAME(mout_cmu_mfc0_mfc0_p)		= { "dout_cmu_shared4_div2",
624*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
625*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3",
626*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
627*bdd03ebfSIgor Belwon PNAME(mout_cmu_mfc0_wfd_p)		= { "dout_cmu_shared4_div2",
628*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
629*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3",
630*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
631*bdd03ebfSIgor Belwon PNAME(mout_cmu_mif_busp_p)		= { "dout_cmu_shared0_div4",
632*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
633*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
634*bdd03ebfSIgor Belwon 					    "oscclk" };
635*bdd03ebfSIgor Belwon PNAME(mout_cmu_mif_switch_p)		= { "fout_shared0_pll",
636*bdd03ebfSIgor Belwon 					    "fout_shared1_pll",
637*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div2",
638*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div2",
639*bdd03ebfSIgor Belwon 					    "fout_shared2_pll",
640*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
641*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
642*bdd03ebfSIgor Belwon 					    "oscclk" };
643*bdd03ebfSIgor Belwon PNAME(mout_cmu_npu_bus_p)		= { "dout_cmu_shared0_div2",
644*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div2",
645*bdd03ebfSIgor Belwon 					    "fout_shared2_pll",
646*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
647*bdd03ebfSIgor Belwon 					    "fout_shared3_pll", "oscclk",
648*bdd03ebfSIgor Belwon 					    "oscclk", "oscclk" };
649*bdd03ebfSIgor Belwon PNAME(mout_cmu_peric0_bus_p)		= { "dout_cmu_shared0_div4",
650*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
651*bdd03ebfSIgor Belwon PNAME(mout_cmu_peric0_ip_p)		= { "dout_cmu_shared0_div4",
652*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
653*bdd03ebfSIgor Belwon PNAME(mout_cmu_peric1_bus_p)		= { "dout_cmu_shared0_div4",
654*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
655*bdd03ebfSIgor Belwon PNAME(mout_cmu_peric1_ip_p)		= { "dout_cmu_shared0_div4",
656*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
657*bdd03ebfSIgor Belwon PNAME(mout_cmu_peris_bus_p)		= { "dout_cmu_shared0_div4",
658*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
659*bdd03ebfSIgor Belwon PNAME(mout_cmu_ssp_bus_p)		= { "dout_cmu_shared4_div2",
660*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
661*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3",
662*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2" };
663*bdd03ebfSIgor Belwon PNAME(mout_cmu_tnr_bus_p)		= { "dout_cmu_shared0_div3",
664*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
665*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
666*bdd03ebfSIgor Belwon 					    "dout_cmu_shared1_div4",
667*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3",
668*bdd03ebfSIgor Belwon 					    "dout_cmu_shared2_div2",
669*bdd03ebfSIgor Belwon 					    "oscclk", "oscclk" };
670*bdd03ebfSIgor Belwon PNAME(mout_cmu_vra_bus_p)		= { "dout_cmu_shared0_div3",
671*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div2",
672*bdd03ebfSIgor Belwon 					    "dout_cmu_shared0_div4",
673*bdd03ebfSIgor Belwon 					    "dout_cmu_shared4_div3" };
674*bdd03ebfSIgor Belwon 
675*bdd03ebfSIgor Belwon /*
676*bdd03ebfSIgor Belwon  * Register name to clock name mangling strategy used in this file
677*bdd03ebfSIgor Belwon  *
678*bdd03ebfSIgor Belwon  * Replace PLL_CON{0,3}_PLL	   with CLK_MOUT_PLL and mout_pll
679*bdd03ebfSIgor Belwon  * Replace CLK_CON_MUX_MUX_CLKCMU  with CLK_MOUT_CMU and mout_cmu
680*bdd03ebfSIgor Belwon  * Replace CLK_CON_DIV_CLKCMU      with CLK_DOUT_CMU_CMU and dout_cmu_cmu
681*bdd03ebfSIgor Belwon  * Replace CLK_CON_DIV_DIV_CLKCMU  with CLK_DOUT_CMU_CMU and dout_cmu_cmu
682*bdd03ebfSIgor Belwon  * Replace CLK_CON_DIV_PLL_CLKCMU  with CLK_DOUT_CMU_CMU and dout_cmu_cmu
683*bdd03ebfSIgor Belwon  * Replace CLK_CON_GAT_CLKCMU      with CLK_GOUT_CMU and gout_cmu
684*bdd03ebfSIgor Belwon  * Replace CLK_CON_GAT_GATE_CLKCMU with CLK_GOUT_CMU and gout_cmu
685*bdd03ebfSIgor Belwon  *
686*bdd03ebfSIgor Belwon  * For gates remove _UID _BLK _IPCLKPORT, _I and _RSTNSYNC
687*bdd03ebfSIgor Belwon  */
688*bdd03ebfSIgor Belwon 
689*bdd03ebfSIgor Belwon static const struct samsung_mux_clock top_mux_clks[] __initconst = {
690*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_PLL_SHARED0, "mout_pll_shared0", mout_pll_shared0_p,
691*bdd03ebfSIgor Belwon 	    PLL_CON3_PLL_SHARED0, 4, 1),
692*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_PLL_SHARED1, "mout_pll_shared1", mout_pll_shared1_p,
693*bdd03ebfSIgor Belwon 	    PLL_CON3_PLL_SHARED1, 4, 1),
694*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_PLL_SHARED2, "mout_pll_shared2", mout_pll_shared2_p,
695*bdd03ebfSIgor Belwon 	    PLL_CON3_PLL_SHARED2, 4, 1),
696*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_PLL_SHARED3, "mout_pll_shared3", mout_pll_shared3_p,
697*bdd03ebfSIgor Belwon 	    PLL_CON3_PLL_SHARED3, 4, 1),
698*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_PLL_SHARED4, "mout_pll_shared4", mout_pll_shared4_p,
699*bdd03ebfSIgor Belwon 	    PLL_CON0_PLL_SHARED4, 4, 1),
700*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_PLL_MMC, "mout_pll_mmc", mout_pll_mmc_p,
701*bdd03ebfSIgor Belwon 	    PLL_CON0_PLL_MMC, 4, 1),
702*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_PLL_G3D, "mout_pll_g3d", mout_pll_g3d_p,
703*bdd03ebfSIgor Belwon 	    PLL_CON0_PLL_G3D, 4, 1),
704*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_APM_BUS, "mout_cmu_apm_bus",
705*bdd03ebfSIgor Belwon 	    mout_cmu_apm_bus_p, CLK_CON_MUX_MUX_CLKCMU_APM_BUS, 0, 1),
706*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_AUD_CPU, "mout_cmu_aud_cpu",
707*bdd03ebfSIgor Belwon 	    mout_cmu_aud_cpu_p, CLK_CON_MUX_MUX_CLKCMU_AUD_CPU, 0, 2),
708*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_BUS0_BUS, "mout_cmu_bus0_bus",
709*bdd03ebfSIgor Belwon 	    mout_cmu_bus0_bus_p, CLK_CON_MUX_MUX_CLKCMU_BUS0_BUS, 0, 2),
710*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_BUS1_BUS, "mout_cmu_bus1_bus",
711*bdd03ebfSIgor Belwon 	    mout_cmu_bus1_bus_p, CLK_CON_MUX_MUX_CLKCMU_BUS1_BUS, 0, 2),
712*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_BUS1_SSS, "mout_cmu_bus1_sss",
713*bdd03ebfSIgor Belwon 	    mout_cmu_bus1_sss_p, CLK_CON_MUX_MUX_CLKCMU_BUS1_SSS, 0, 2),
714*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CIS_CLK0, "mout_cmu_cis_clk0",
715*bdd03ebfSIgor Belwon 	    mout_cmu_cis_clk0_p, CLK_CON_MUX_MUX_CLKCMU_CIS_CLK0, 0, 1),
716*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CIS_CLK1, "mout_cmu_cis_clk1",
717*bdd03ebfSIgor Belwon 	    mout_cmu_cis_clk1_p, CLK_CON_MUX_MUX_CLKCMU_CIS_CLK1, 0, 1),
718*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CIS_CLK2, "mout_cmu_cis_clk2",
719*bdd03ebfSIgor Belwon 	    mout_cmu_cis_clk2_p, CLK_CON_MUX_MUX_CLKCMU_CIS_CLK2, 0, 1),
720*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CIS_CLK3, "mout_cmu_cis_clk3",
721*bdd03ebfSIgor Belwon 	    mout_cmu_cis_clk3_p, CLK_CON_MUX_MUX_CLKCMU_CIS_CLK3, 0, 1),
722*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CIS_CLK4, "mout_cmu_cis_clk4",
723*bdd03ebfSIgor Belwon 	    mout_cmu_cis_clk4_p, CLK_CON_MUX_MUX_CLKCMU_CIS_CLK4, 0, 1),
724*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CIS_CLK5, "mout_cmu_cis_clk5",
725*bdd03ebfSIgor Belwon 	    mout_cmu_cis_clk5_p, CLK_CON_MUX_MUX_CLKCMU_CIS_CLK5, 0, 1),
726*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CMU_BOOST, "mout_cmu_cmu_boost",
727*bdd03ebfSIgor Belwon 	    mout_cmu_cmu_boost_p, CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST, 0, 2),
728*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CORE_BUS, "mout_cmu_core_bus",
729*bdd03ebfSIgor Belwon 	    mout_cmu_core_bus_p, CLK_CON_MUX_MUX_CLKCMU_CORE_BUS, 0, 3),
730*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CPUCL0_DBG_BUS, "mout_cmu_cpucl0_dbg_bus",
731*bdd03ebfSIgor Belwon 	    mout_cmu_cpucl0_dbg_bus_p, CLK_CON_MUX_MUX_CLKCMU_CPUCL0_DBG_BUS,
732*bdd03ebfSIgor Belwon 	    0, 2),
733*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CPUCL0_SWITCH, "mout_cmu_cpucl0_switch",
734*bdd03ebfSIgor Belwon 	    mout_cmu_cpucl0_switch_p, CLK_CON_MUX_MUX_CLKCMU_CPUCL0_SWITCH,
735*bdd03ebfSIgor Belwon 	    0, 2),
736*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CPUCL1_SWITCH, "mout_cmu_cpucl1_switch",
737*bdd03ebfSIgor Belwon 	    mout_cmu_cpucl1_switch_p, CLK_CON_MUX_MUX_CLKCMU_CPUCL1_SWITCH,
738*bdd03ebfSIgor Belwon 	    0, 2),
739*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CPUCL2_BUSP, "mout_cmu_cpucl2_busp",
740*bdd03ebfSIgor Belwon 	    mout_cmu_cpucl2_busp_p, CLK_CON_MUX_MUX_CLKCMU_CPUCL2_BUSP,
741*bdd03ebfSIgor Belwon 	    0, 1),
742*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CPUCL2_SWITCH, "mout_cmu_cpucl2_switch",
743*bdd03ebfSIgor Belwon 	    mout_cmu_cpucl2_switch_p, CLK_CON_MUX_MUX_CLKCMU_CPUCL2_SWITCH,
744*bdd03ebfSIgor Belwon 	    0, 2),
745*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CSIS_BUS, "mout_cmu_csis_bus",
746*bdd03ebfSIgor Belwon 	    mout_cmu_csis_bus_p, CLK_CON_MUX_MUX_CLKCMU_CSIS_BUS, 0, 2),
747*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CSIS_OIS_MCU, "mout_cmu_csis_ois_mcu",
748*bdd03ebfSIgor Belwon 	    mout_cmu_csis_ois_mcu_p, CLK_CON_MUX_MUX_CLKCMU_CSIS_OIS_MCU,
749*bdd03ebfSIgor Belwon 	    0, 1),
750*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_DNC_BUS, "mout_cmu_dnc_bus",
751*bdd03ebfSIgor Belwon 	    mout_cmu_dnc_bus_p, CLK_CON_MUX_MUX_CLKCMU_DNC_BUS, 0, 2),
752*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_DNC_BUSM, "mout_cmu_dnc_busm",
753*bdd03ebfSIgor Belwon 	    mout_cmu_dnc_busm_p, CLK_CON_MUX_MUX_CLKCMU_DNC_BUSM, 0, 2),
754*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_DNS_BUS, "mout_cmu_dns_bus",
755*bdd03ebfSIgor Belwon 	    mout_cmu_dns_bus_p, CLK_CON_MUX_MUX_CLKCMU_DNS_BUS, 0, 3),
756*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_DPU, "mout_cmu_dpu",
757*bdd03ebfSIgor Belwon 	    mout_cmu_dpu_p, CLK_CON_MUX_MUX_CLKCMU_DPU, 0, 1),
758*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_DPU_ALT, "mout_cmu_dpu_alt",
759*bdd03ebfSIgor Belwon 	    mout_cmu_dpu_alt_p, CLK_CON_MUX_MUX_CLKCMU_DPU_ALT, 0, 2),
760*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_DSP_BUS, "mout_cmu_dsp_bus",
761*bdd03ebfSIgor Belwon 	    mout_cmu_dsp_bus_p, CLK_CON_MUX_MUX_CLKCMU_DSP_BUS, 0, 2),
762*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_G2D_G2D, "mout_cmu_g2d_g2d",
763*bdd03ebfSIgor Belwon 	    mout_cmu_g2d_g2d_p, CLK_CON_MUX_MUX_CLKCMU_G2D_G2D, 0, 2),
764*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_G2D_MSCL, "mout_cmu_g2d_mscl",
765*bdd03ebfSIgor Belwon 	    mout_cmu_g2d_mscl_p, CLK_CON_MUX_MUX_CLKCMU_G2D_MSCL, 0, 1),
766*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HPM, "mout_cmu_hpm",
767*bdd03ebfSIgor Belwon 	    mout_cmu_hpm_p, CLK_CON_MUX_MUX_CLKCMU_HPM, 0, 2),
768*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HSI0_BUS, "mout_cmu_hsi0_bus",
769*bdd03ebfSIgor Belwon 	    mout_cmu_hsi0_bus_p, CLK_CON_MUX_MUX_CLKCMU_HSI0_BUS, 0, 1),
770*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HSI0_DPGTC, "mout_cmu_hsi0_dpgtc",
771*bdd03ebfSIgor Belwon 	    mout_cmu_hsi0_dpgtc_p, CLK_CON_MUX_MUX_CLKCMU_HSI0_DPGTC, 0, 2),
772*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HSI0_USB31DRD, "mout_cmu_hsi0_usb31drd",
773*bdd03ebfSIgor Belwon 	    mout_cmu_hsi0_usb31drd_p, CLK_CON_MUX_MUX_CLKCMU_HSI0_USB31DRD,
774*bdd03ebfSIgor Belwon 	    0, 2),
775*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HSI0_USBDP_DEBUG, "mout_cmu_hsi0_usbdp_debug",
776*bdd03ebfSIgor Belwon 	    mout_cmu_hsi0_usbdp_debug_p,
777*bdd03ebfSIgor Belwon 	    CLK_CON_MUX_MUX_CLKCMU_HSI0_USBDP_DEBUG, 0, 2),
778*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HSI1_BUS, "mout_cmu_hsi1_bus",
779*bdd03ebfSIgor Belwon 	    mout_cmu_hsi1_bus_p, CLK_CON_MUX_MUX_CLKCMU_HSI1_BUS, 0, 3),
780*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HSI1_MMC_CARD, "mout_cmu_hsi1_mmc_card",
781*bdd03ebfSIgor Belwon 	    mout_cmu_hsi1_mmc_card_p, CLK_CON_MUX_MUX_CLKCMU_HSI1_MMC_CARD,
782*bdd03ebfSIgor Belwon 	    0, 2),
783*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HSI1_PCIE, "mout_cmu_hsi1_pcie",
784*bdd03ebfSIgor Belwon 	    mout_cmu_hsi1_pcie_p, CLK_CON_MUX_MUX_CLKCMU_HSI1_PCIE, 0, 1),
785*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HSI1_UFS_CARD, "mout_cmu_hsi1_ufs_card",
786*bdd03ebfSIgor Belwon 	    mout_cmu_hsi1_ufs_card_p, CLK_CON_MUX_MUX_CLKCMU_HSI1_UFS_CARD,
787*bdd03ebfSIgor Belwon 	    0, 2),
788*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HSI1_UFS_EMBD, "mout_cmu_hsi1_ufs_embd",
789*bdd03ebfSIgor Belwon 	    mout_cmu_hsi1_ufs_embd_p, CLK_CON_MUX_MUX_CLKCMU_HSI1_UFS_EMBD,
790*bdd03ebfSIgor Belwon 	    0, 1),
791*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HSI2_BUS, "mout_cmu_hsi2_bus",
792*bdd03ebfSIgor Belwon 	    mout_cmu_hsi2_bus_p, CLK_CON_MUX_MUX_CLKCMU_HSI2_BUS, 0, 1),
793*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_HSI2_PCIE, "mout_cmu_hsi2_pcie",
794*bdd03ebfSIgor Belwon 	    mout_cmu_hsi2_pcie_p, CLK_CON_MUX_MUX_CLKCMU_HSI2_PCIE, 0, 1),
795*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_IPP_BUS, "mout_cmu_ipp_bus",
796*bdd03ebfSIgor Belwon 	    mout_cmu_ipp_bus_p, CLK_CON_MUX_MUX_CLKCMU_IPP_BUS, 0, 3),
797*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_ITP_BUS, "mout_cmu_itp_bus",
798*bdd03ebfSIgor Belwon 	    mout_cmu_itp_bus_p, CLK_CON_MUX_MUX_CLKCMU_ITP_BUS, 0, 3),
799*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_MCSC_BUS, "mout_cmu_mcsc_bus",
800*bdd03ebfSIgor Belwon 	    mout_cmu_mcsc_bus_p, CLK_CON_MUX_MUX_CLKCMU_MCSC_BUS, 0, 3),
801*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_MCSC_GDC, "mout_cmu_mcsc_gdc",
802*bdd03ebfSIgor Belwon 	    mout_cmu_mcsc_gdc_p, CLK_CON_MUX_MUX_CLKCMU_MCSC_GDC, 0, 3),
803*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_CMU_BOOST_CPU, "mout_cmu_cmu_boost_cpu",
804*bdd03ebfSIgor Belwon 	    mout_cmu_cmu_boost_cpu_p, CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST_CPU,
805*bdd03ebfSIgor Belwon 	    0, 2),
806*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_MFC0_MFC0, "mout_cmu_mfc0_mfc0",
807*bdd03ebfSIgor Belwon 	    mout_cmu_mfc0_mfc0_p, CLK_CON_MUX_MUX_CLKCMU_MFC0_MFC0, 0, 2),
808*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_MFC0_WFD, "mout_cmu_mfc0_wfd",
809*bdd03ebfSIgor Belwon 	    mout_cmu_mfc0_wfd_p, CLK_CON_MUX_MUX_CLKCMU_MFC0_WFD, 0, 2),
810*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_MIF_BUSP, "mout_cmu_mif_busp",
811*bdd03ebfSIgor Belwon 	    mout_cmu_mif_busp_p, CLK_CON_MUX_MUX_CLKCMU_MIF_BUSP, 0, 2),
812*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_MIF_SWITCH, "mout_cmu_mif_switch",
813*bdd03ebfSIgor Belwon 	    mout_cmu_mif_switch_p, CLK_CON_MUX_MUX_CLKCMU_MIF_SWITCH, 0, 3),
814*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_NPU_BUS, "mout_cmu_npu_bus",
815*bdd03ebfSIgor Belwon 	    mout_cmu_npu_bus_p, CLK_CON_MUX_MUX_CLKCMU_NPU_BUS, 0, 3),
816*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_PERIC0_BUS, "mout_cmu_peric0_bus",
817*bdd03ebfSIgor Belwon 	    mout_cmu_peric0_bus_p, CLK_CON_MUX_MUX_CLKCMU_PERIC0_BUS, 0, 1),
818*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_PERIC0_IP, "mout_cmu_peric0_ip",
819*bdd03ebfSIgor Belwon 	    mout_cmu_peric0_ip_p, CLK_CON_MUX_MUX_CLKCMU_PERIC0_IP, 0, 1),
820*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_PERIC1_BUS, "mout_cmu_peric1_bus",
821*bdd03ebfSIgor Belwon 	    mout_cmu_peric1_bus_p, CLK_CON_MUX_MUX_CLKCMU_PERIC1_BUS, 0, 1),
822*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_PERIC1_IP, "mout_cmu_peric1_ip",
823*bdd03ebfSIgor Belwon 	    mout_cmu_peric1_ip_p, CLK_CON_MUX_MUX_CLKCMU_PERIC1_IP, 0, 1),
824*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_PERIS_BUS, "mout_cmu_peris_bus",
825*bdd03ebfSIgor Belwon 	    mout_cmu_peris_bus_p, CLK_CON_MUX_MUX_CLKCMU_PERIS_BUS, 0, 1),
826*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_SSP_BUS, "mout_cmu_ssp_bus",
827*bdd03ebfSIgor Belwon 	    mout_cmu_ssp_bus_p, CLK_CON_MUX_MUX_CLKCMU_SSP_BUS, 0, 2),
828*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_TNR_BUS, "mout_cmu_tnr_bus",
829*bdd03ebfSIgor Belwon 	    mout_cmu_tnr_bus_p, CLK_CON_MUX_MUX_CLKCMU_TNR_BUS, 0, 3),
830*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_CMU_VRA_BUS, "mout_cmu_vra_bus",
831*bdd03ebfSIgor Belwon 	    mout_cmu_vra_bus_p, CLK_CON_MUX_MUX_CLKCMU_VRA_BUS, 0, 2),
832*bdd03ebfSIgor Belwon };
833*bdd03ebfSIgor Belwon 
834*bdd03ebfSIgor Belwon static const struct samsung_div_clock top_div_clks[] __initconst = {
835*bdd03ebfSIgor Belwon 	/* SHARED0 region*/
836*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_SHARED0_DIV2, "dout_cmu_shared0_div2", "mout_pll_shared0",
837*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_PLL_SHARED0_DIV2, 0, 1),
838*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_SHARED0_DIV3, "dout_cmu_shared0_div3", "mout_pll_shared0",
839*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_PLL_SHARED0_DIV3, 0, 2),
840*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_SHARED0_DIV4, "dout_cmu_shared0_div4", "dout_cmu_shared0_div2",
841*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_PLL_SHARED0_DIV4, 0, 1),
842*bdd03ebfSIgor Belwon 
843*bdd03ebfSIgor Belwon 	/* SHARED1 region*/
844*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_SHARED1_DIV2, "dout_cmu_shared1_div2", "mout_pll_shared1",
845*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_PLL_SHARED1_DIV2, 0, 1),
846*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_SHARED1_DIV3, "dout_cmu_shared1_div3", "mout_pll_shared1",
847*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_PLL_SHARED1_DIV3, 0, 2),
848*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_SHARED1_DIV4, "dout_cmu_shared1_div4", "dout_cmu_shared1_div2",
849*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_PLL_SHARED1_DIV4, 0, 1),
850*bdd03ebfSIgor Belwon 
851*bdd03ebfSIgor Belwon 	/* SHARED2 region */
852*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_SHARED2_DIV2, "dout_cmu_shared2_div2", "mout_pll_shared2",
853*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_PLL_SHARED2_DIV2, 0, 1),
854*bdd03ebfSIgor Belwon 
855*bdd03ebfSIgor Belwon 	/* SHARED4 region*/
856*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_SHARED4_DIV2, "dout_cmu_shared4_div2", "mout_pll_shared4",
857*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_PLL_SHARED4_DIV2, 0, 1),
858*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_SHARED4_DIV3, "dout_cmu_shared4_div3", "mout_pll_shared4",
859*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_PLL_SHARED4_DIV3, 0, 2),
860*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_SHARED4_DIV4, "dout_cmu_shared4_div4", "mout_pll_shared4",
861*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_PLL_SHARED4_DIV4, 0, 1),
862*bdd03ebfSIgor Belwon 
863*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_APM_BUS, "dout_cmu_apm_bus", "gout_cmu_apm_bus",
864*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_APM_BUS, 0, 3),
865*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_AUD_CPU, "dout_cmu_aud_cpu", "gout_cmu_aud_cpu",
866*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_AUD_CPU, 0, 3),
867*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_BUS0_BUS, "dout_cmu_bus0_bus", "gout_cmu_bus0_bus",
868*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_BUS0_BUS, 0, 4),
869*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_BUS1_BUS, "dout_cmu_bus1_bus", "gout_cmu_bus1_bus",
870*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_BUS1_BUS, 0, 4),
871*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_BUS1_SSS, "dout_cmu_bus1_sss", "gout_cmu_bus1_sss",
872*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_BUS1_SSS, 0, 4),
873*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CIS_CLK0, "dout_cmu_cis_clk0", "gout_cmu_cis_clk0",
874*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_CIS_CLK0, 0, 5),
875*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CIS_CLK1, "dout_cmu_cis_clk1", "gout_cmu_cis_clk1",
876*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_CIS_CLK1, 0, 5),
877*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CIS_CLK2, "dout_cmu_cis_clk2", "gout_cmu_cis_clk2",
878*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_CIS_CLK2, 0, 5),
879*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CIS_CLK3, "dout_cmu_cis_clk3", "gout_cmu_cis_clk3",
880*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_CIS_CLK3, 0, 5),
881*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CIS_CLK4, "dout_cmu_cis_clk4", "gout_cmu_cis_clk4",
882*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_CIS_CLK4, 0, 5),
883*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CIS_CLK5, "dout_cmu_cis_clk5", "gout_cmu_cis_clk5",
884*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_CIS_CLK5, 0, 5),
885*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CMU_BOOST, "dout_cmu_cmu_boost", "mout_cmu_cmu_boost",
886*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_CMU_BOOST, 0, 2),
887*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CORE_BUS, "dout_cmu_core_bus", "gout_cmu_core_bus",
888*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_CORE_BUS, 0, 4),
889*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CPUCL0_DBG_BUS, "dout_cmu_cpucl0_debug",
890*bdd03ebfSIgor Belwon 	    "gout_cmu_cpucl0_dbg_bus", CLK_CON_DIV_CLKCMU_CPUCL0_DBG_BUS,
891*bdd03ebfSIgor Belwon 	    0, 3),
892*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CPUCL0_SWITCH, "dout_cmu_cpucl0_switch",
893*bdd03ebfSIgor Belwon 	    "gout_cmu_cpucl0_switch", CLK_CON_DIV_CLKCMU_CPUCL0_SWITCH, 0, 3),
894*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CPUCL1_SWITCH, "dout_cmu_cpucl1_switch",
895*bdd03ebfSIgor Belwon 	    "gout_cmu_cpucl1_switch", CLK_CON_DIV_CLKCMU_CPUCL1_SWITCH, 0, 3),
896*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CPUCL2_BUSP, "dout_cmu_cpucl2_busp",
897*bdd03ebfSIgor Belwon 	    "gout_cmu_cpucl2_busp", CLK_CON_DIV_CLKCMU_CPUCL2_BUSP, 0, 4),
898*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CPUCL2_SWITCH, "dout_cmu_cpucl2_switch",
899*bdd03ebfSIgor Belwon 	    "gout_cmu_cpucl2_switch", CLK_CON_DIV_CLKCMU_CPUCL2_SWITCH, 0, 3),
900*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CSIS_BUS, "dout_cmu_csis_bus", "gout_cmu_csis_bus",
901*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_CSIS_BUS, 0, 4),
902*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CSIS_OIS_MCU, "dout_cmu_csis_ois_mcu",
903*bdd03ebfSIgor Belwon 	    "gout_cmu_csis_ois_mcu", CLK_CON_DIV_CLKCMU_CSIS_OIS_MCU, 0, 4),
904*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_DNC_BUS, "dout_cmu_dnc_bus", "gout_cmu_dnc_bus",
905*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_DNC_BUS, 0, 4),
906*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_DNC_BUSM, "dout_cmu_dnc_busm", "gout_cmu_dnc_busm",
907*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_DNC_BUSM, 0, 4),
908*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_DNS_BUS, "dout_cmu_dns_bus", "gout_cmu_dns_bus",
909*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_DNS_BUS, 0, 4),
910*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_DSP_BUS, "dout_cmu_dsp_bus", "gout_cmu_dsp_bus",
911*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_DSP_BUS, 0, 4),
912*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_G2D_G2D, "dout_cmu_g2d_g2d", "gout_cmu_g2d_g2d",
913*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_G2D_G2D, 0, 4),
914*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_G2D_MSCL, "dout_cmu_g2d_mscl", "gout_cmu_g2d_mscl",
915*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_G2D_MSCL, 0, 4),
916*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_G3D_SWITCH, "dout_cmu_g3d_switch",
917*bdd03ebfSIgor Belwon 	    "gout_cmu_g3d_switch", CLK_CON_DIV_CLKCMU_G3D_SWITCH, 0, 3),
918*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HPM, "dout_cmu_hpm", "gout_cmu_hpm",
919*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_HPM, 0, 2),
920*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HSI0_BUS, "dout_cmu_hsi0_bus", "gout_cmu_hsi0_bus",
921*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_HSI0_BUS, 0, 4),
922*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HSI0_DPGTC, "dout_cmu_hsi0_dpgtc", "gout_cmu_hsi0_dpgtc",
923*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_HSI0_DPGTC, 0, 3),
924*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HSI0_USB31DRD, "dout_cmu_hsi0_usb31drd",
925*bdd03ebfSIgor Belwon 	    "gout_cmu_hsi0_usb31drd", CLK_CON_DIV_CLKCMU_HSI0_USB31DRD, 0, 4),
926*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HSI0_USBDP_DEBUG, "dout_cmu_hsi0_usbdp_debug",
927*bdd03ebfSIgor Belwon 	    "gout_cmu_hsi0_usbdp_debug", CLK_CON_DIV_CLKCMU_HSI0_USBDP_DEBUG,
928*bdd03ebfSIgor Belwon 	    0, 4),
929*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HSI1_BUS, "dout_cmu_hsi1_bus", "gout_cmu_hsi1_bus",
930*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_HSI1_BUS, 0, 3),
931*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HSI1_MMC_CARD, "dout_cmu_hsi1_mmc_card",
932*bdd03ebfSIgor Belwon 	    "gout_cmu_hsi1_mmc_card", CLK_CON_DIV_CLKCMU_HSI1_MMC_CARD,
933*bdd03ebfSIgor Belwon 	    0, 9),
934*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HSI1_PCIE, "dout_cmu_hsi1_pcie", "gout_cmu_hsi1_pcie",
935*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_HSI1_PCIE, 0, 7),
936*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HSI1_UFS_CARD, "dout_cmu_hsi1_ufs_card",
937*bdd03ebfSIgor Belwon 	    "gout_cmu_hsi1_ufs_card", CLK_CON_DIV_CLKCMU_HSI1_UFS_CARD,
938*bdd03ebfSIgor Belwon 	    0, 3),
939*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HSI1_UFS_EMBD, "dout_cmu_hsi1_ufs_embd",
940*bdd03ebfSIgor Belwon 	    "gout_cmu_hsi1_ufs_embd", CLK_CON_DIV_CLKCMU_HSI1_UFS_EMBD,
941*bdd03ebfSIgor Belwon 	    0, 3),
942*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HSI2_BUS, "dout_cmu_hsi2_bus", "gout_cmu_hsi2_bus",
943*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_HSI2_BUS, 0, 4),
944*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_HSI2_PCIE, "dout_cmu_hsi2_pcie", "gout_cmu_hsi2_pcie",
945*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_HSI2_PCIE, 0, 7),
946*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_IPP_BUS, "dout_cmu_ipp_bus", "gout_cmu_ipp_bus",
947*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_IPP_BUS, 0, 4),
948*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_ITP_BUS, "dout_cmu_itp_bus", "gout_cmu_itp_bus",
949*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_ITP_BUS, 0, 4),
950*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_MCSC_BUS, "dout_cmu_mcsc_bus", "gout_cmu_mcsc_bus",
951*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_MCSC_BUS, 0, 4),
952*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_MCSC_GDC, "dout_cmu_mcsc_gdc", "gout_cmu_mcsc_gdc",
953*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_MCSC_GDC, 0, 4),
954*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_CMU_BOOST_CPU, "dout_cmu_cmu_boost_cpu",
955*bdd03ebfSIgor Belwon 	    "mout_cmu_cmu_boost_cpu", CLK_CON_DIV_CLKCMU_CMU_BOOST_CPU,
956*bdd03ebfSIgor Belwon 	    0, 2),
957*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_MFC0_MFC0, "dout_cmu_mfc0_mfc0", "gout_cmu_mfc0_mfc0",
958*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_MFC0_MFC0, 0, 4),
959*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_MFC0_WFD, "dout_cmu_mfc0_wfd", "gout_cmu_mfc0_wfd",
960*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_MFC0_WFD, 0, 4),
961*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_MIF_BUSP, "dout_cmu_mif_busp", "gout_cmu_mif_busp",
962*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_MIF_BUSP, 0, 4),
963*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_NPU_BUS, "dout_cmu_npu_bus", "gout_cmu_npu_bus",
964*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_NPU_BUS, 0, 4),
965*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_PERIC0_BUS, "dout_cmu_peric0_bus", "gout_cmu_peric0_bus",
966*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_PERIC0_BUS, 0, 4),
967*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_PERIC0_IP, "dout_cmu_peric0_ip", "gout_cmu_peric0_ip",
968*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_PERIC0_IP, 0, 4),
969*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_PERIC1_BUS, "dout_cmu_peric1_bus", "gout_cmu_peric1_bus",
970*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_PERIC1_BUS, 0, 4),
971*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_PERIC1_IP, "dout_cmu_peric1_ip", "gout_cmu_peric1_ip",
972*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_PERIC1_IP, 0, 4),
973*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_PERIS_BUS, "dout_cmu_peris_bus", "gout_cmu_peris_bus",
974*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_PERIS_BUS, 0, 4),
975*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_SSP_BUS, "dout_cmu_ssp_bus", "gout_cmu_ssp_bus",
976*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_SSP_BUS, 0, 4),
977*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_TNR_BUS, "dout_cmu_tnr_bus", "gout_cmu_tnr_bus",
978*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_TNR_BUS, 0, 4),
979*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_VRA_BUS, "dout_cmu_vra_bus", "gout_cmu_vra_bus",
980*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_CLKCMU_VRA_BUS, 0, 4),
981*bdd03ebfSIgor Belwon 	DIV(CLK_DOUT_CMU_DPU, "dout_cmu_clkcmu_dpu", "gout_cmu_dpu",
982*bdd03ebfSIgor Belwon 	    CLK_CON_DIV_DIV_CLKCMU_DPU, 0, 4),
983*bdd03ebfSIgor Belwon };
984*bdd03ebfSIgor Belwon 
985*bdd03ebfSIgor Belwon static const struct samsung_gate_clock top_gate_clks[] __initconst = {
986*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_APM_BUS, "gout_cmu_apm_bus", "mout_cmu_apm_bus",
987*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_APM_BUS, 21, CLK_IGNORE_UNUSED, 0),
988*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_AUD_CPU, "gout_cmu_aud_cpu", "mout_cmu_aud_cpu",
989*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_AUD_CPU, 21, 0, 0),
990*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_BUS0_BUS, "gout_cmu_bus0_bus", "mout_cmu_bus0_bus",
991*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_BUS0_BUS, 21, CLK_IGNORE_UNUSED, 0),
992*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_BUS1_BUS, "gout_cmu_bus1_bus", "mout_cmu_bus1_bus",
993*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_BUS1_BUS, 21, CLK_IGNORE_UNUSED, 0),
994*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_BUS1_SSS, "gout_cmu_bus1_sss", "mout_cmu_bus1_sss",
995*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_BUS1_SSS, 21, CLK_IGNORE_UNUSED, 0),
996*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CIS_CLK0, "gout_cmu_cis_clk0", "mout_cmu_cis_clk0",
997*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_CIS_CLK0, 21, 0, 0),
998*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CIS_CLK1, "gout_cmu_cis_clk1", "mout_cmu_cis_clk1",
999*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_CIS_CLK1, 21, 0, 0),
1000*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CIS_CLK2, "gout_cmu_cis_clk2", "mout_cmu_cis_clk2",
1001*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_CIS_CLK2, 21, 0, 0),
1002*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CIS_CLK3, "gout_cmu_cis_clk3", "mout_cmu_cis_clk3",
1003*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_CIS_CLK3, 21, 0, 0),
1004*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CIS_CLK4, "gout_cmu_cis_clk4", "mout_cmu_cis_clk4",
1005*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_CIS_CLK4, 21, 0, 0),
1006*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CIS_CLK5, "gout_cmu_cis_clk5", "mout_cmu_cis_clk5",
1007*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_CIS_CLK5, 21, 0, 0),
1008*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CORE_BUS, "gout_cmu_core_bus", "mout_cmu_core_bus",
1009*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_CORE_BUS, 21, CLK_IGNORE_UNUSED, 0),
1010*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CPUCL0_DBG_BUS, "gout_cmu_cpucl0_dbg_bus",
1011*bdd03ebfSIgor Belwon 	     "mout_cmu_cpucl0_dbg_bus", CLK_CON_GAT_GATE_CLKCMU_CPUCL0_DBG_BUS,
1012*bdd03ebfSIgor Belwon 	     21, 0, 0),
1013*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CPUCL0_SWITCH, "gout_cmu_cpucl0_switch",
1014*bdd03ebfSIgor Belwon 	     "mout_cmu_cpucl0_switch", CLK_CON_GAT_GATE_CLKCMU_CPUCL0_SWITCH,
1015*bdd03ebfSIgor Belwon 	     21, CLK_IGNORE_UNUSED, 0),
1016*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CPUCL1_SWITCH, "gout_cmu_cpucl1_switch",
1017*bdd03ebfSIgor Belwon 	     "mout_cmu_cpucl1_switch", CLK_CON_GAT_GATE_CLKCMU_CPUCL1_SWITCH,
1018*bdd03ebfSIgor Belwon 	     21, CLK_IGNORE_UNUSED, 0),
1019*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CPUCL2_BUSP, "gout_cmu_cpucl2_busp",
1020*bdd03ebfSIgor Belwon 	     "mout_cmu_cpucl2_busp", CLK_CON_GAT_GATE_CLKCMU_CPUCL2_BUSP,
1021*bdd03ebfSIgor Belwon 	     21, CLK_IGNORE_UNUSED, 0),
1022*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CPUCL2_SWITCH, "gout_cmu_cpucl2_switch",
1023*bdd03ebfSIgor Belwon 	     "mout_cmu_cpucl2_switch", CLK_CON_GAT_GATE_CLKCMU_CPUCL2_SWITCH,
1024*bdd03ebfSIgor Belwon 	     21, CLK_IGNORE_UNUSED, 0),
1025*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CSIS_BUS, "gout_cmu_csis_bus", "mout_cmu_csis_bus",
1026*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_CSIS_BUS, 21, 0, 0),
1027*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_CSIS_OIS_MCU, "gout_cmu_csis_ois_mcu",
1028*bdd03ebfSIgor Belwon 	     "mout_cmu_csis_ois_mcu", CLK_CON_GAT_GATE_CLKCMU_CSIS_OIS_MCU,
1029*bdd03ebfSIgor Belwon 	     21, 0, 0),
1030*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_DNC_BUS, "gout_cmu_dnc_bus", "mout_cmu_dnc_bus",
1031*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_DNC_BUS, 21, 0, 0),
1032*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_DNC_BUSM, "gout_cmu_dnc_busm", "mout_cmu_dnc_busm",
1033*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_DNC_BUSM, 21, 0, 0),
1034*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_DNS_BUS, "gout_cmu_dns_bus", "mout_cmu_dns_bus",
1035*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_DNS_BUS, 21, 0, 0),
1036*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_DPU, "gout_cmu_dpu", "mout_cmu_dpu",
1037*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_DPU, 21, 0, 0),
1038*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_DPU_BUS, "gout_cmu_dpu_bus", "mout_cmu_dpu_alt",
1039*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_DPU_BUS, 21, CLK_IGNORE_UNUSED, 0),
1040*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_DSP_BUS, "gout_cmu_dsp_bus", "mout_cmu_dsp_bus",
1041*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_DSP_BUS, 21, 0, 0),
1042*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_G2D_G2D, "gout_cmu_g2d_g2d", "mout_cmu_g2d_g2d",
1043*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_G2D_G2D, 21, 0, 0),
1044*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_G2D_MSCL, "gout_cmu_g2d_mscl", "mout_cmu_g2d_mscl",
1045*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_G2D_MSCL, 21, 0, 0),
1046*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_G3D_SWITCH, "gout_cmu_g3d_switch",
1047*bdd03ebfSIgor Belwon 	     "fout_shared2_pll", CLK_CON_GAT_GATE_CLKCMU_G3D_SWITCH,
1048*bdd03ebfSIgor Belwon 	     21, 0, 0),
1049*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HPM, "gout_cmu_hpm", "mout_cmu_hpm",
1050*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_HPM, 21, 0, 0),
1051*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HSI0_BUS, "gout_cmu_hsi0_bus",
1052*bdd03ebfSIgor Belwon 	     "mout_cmu_hsi0_bus", CLK_CON_GAT_GATE_CLKCMU_HSI0_BUS, 21, 0, 0),
1053*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HSI0_DPGTC, "gout_cmu_hsi0_dpgtc",
1054*bdd03ebfSIgor Belwon 	     "mout_cmu_hsi0_dpgtc", CLK_CON_GAT_GATE_CLKCMU_HSI0_DPGTC,
1055*bdd03ebfSIgor Belwon 	     21, 0, 0),
1056*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HSI0_USB31DRD, "gout_cmu_hsi0_usb31drd",
1057*bdd03ebfSIgor Belwon 	     "mout_cmu_hsi0_usb31drd", CLK_CON_GAT_GATE_CLKCMU_HSI0_USB31DRD,
1058*bdd03ebfSIgor Belwon 	     21, 0, 0),
1059*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HSI0_USBDP_DEBUG, "gout_cmu_hsi0_usbdp_debug",
1060*bdd03ebfSIgor Belwon 	     "mout_cmu_hsi0_usbdp_debug", CLK_CON_GAT_GATE_CLKCMU_HSI0_USBDP_DEBUG,
1061*bdd03ebfSIgor Belwon 	     21, 0, 0),
1062*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HSI1_BUS, "gout_cmu_hsi1_bus", "mout_cmu_hsi1_bus",
1063*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_HSI1_BUS, 21, 0, 0),
1064*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HSI1_MMC_CARD, "gout_cmu_hsi1_mmc_card",
1065*bdd03ebfSIgor Belwon 	     "mout_cmu_hsi1_mmc_card", CLK_CON_GAT_GATE_CLKCMU_HSI1_MMC_CARD,
1066*bdd03ebfSIgor Belwon 	     21, 0, 0),
1067*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HSI1_PCIE, "gout_cmu_hsi1_pcie",
1068*bdd03ebfSIgor Belwon 	     "mout_cmu_hsi1_pcie", CLK_CON_GAT_GATE_CLKCMU_HSI1_PCIE,
1069*bdd03ebfSIgor Belwon 	     21, 0, 0),
1070*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HSI1_UFS_CARD, "gout_cmu_hsi1_ufs_card",
1071*bdd03ebfSIgor Belwon 	     "mout_cmu_hsi1_ufs_card", CLK_CON_GAT_GATE_CLKCMU_HSI1_UFS_CARD,
1072*bdd03ebfSIgor Belwon 	     21, 0, 0),
1073*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HSI1_UFS_EMBD, "gout_cmu_hsi1_ufs_embd",
1074*bdd03ebfSIgor Belwon 	     "mout_cmu_hsi1_ufs_embd", CLK_CON_GAT_GATE_CLKCMU_HSI1_UFS_EMBD,
1075*bdd03ebfSIgor Belwon 	     21, 0, 0),
1076*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HSI2_BUS, "gout_cmu_hsi2_bus", "mout_cmu_hsi2_bus",
1077*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_HSI2_BUS, 21, 0, 0),
1078*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_HSI2_PCIE, "gout_cmu_hsi2_pcie",
1079*bdd03ebfSIgor Belwon 	     "mout_cmu_hsi2_pcie", CLK_CON_GAT_GATE_CLKCMU_HSI2_PCIE,
1080*bdd03ebfSIgor Belwon 	     21, 0, 0),
1081*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_IPP_BUS, "gout_cmu_ipp_bus", "mout_cmu_ipp_bus",
1082*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_IPP_BUS, 21, 0, 0),
1083*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_ITP_BUS, "gout_cmu_itp_bus", "mout_cmu_itp_bus",
1084*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_ITP_BUS, 21, 0, 0),
1085*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_MCSC_BUS, "gout_cmu_mcsc_bus", "mout_cmu_mcsc_bus",
1086*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_MCSC_BUS, 21, 0, 0),
1087*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_MCSC_GDC, "gout_cmu_mcsc_gdc", "mout_cmu_mcsc_gdc",
1088*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_MCSC_GDC, 21, 0, 0),
1089*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_MFC0_MFC0, "gout_cmu_mfc0_mfc0",
1090*bdd03ebfSIgor Belwon 	     "mout_cmu_mfc0_mfc0", CLK_CON_GAT_GATE_CLKCMU_MFC0_MFC0,
1091*bdd03ebfSIgor Belwon 	     21, 0, 0),
1092*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_MFC0_WFD, "gout_cmu_mfc0_wfd", "mout_cmu_mfc0_wfd",
1093*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_MFC0_WFD, 21, 0, 0),
1094*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_MIF_BUSP, "gout_cmu_mif_busp", "mout_cmu_mif_busp",
1095*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_MIF_BUSP, 21, 0, 0),
1096*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_NPU_BUS, "gout_cmu_npu_bus", "mout_cmu_npu_bus",
1097*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_NPU_BUS, 21, 0, 0),
1098*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_PERIC0_BUS, "gout_cmu_peric0_bus",
1099*bdd03ebfSIgor Belwon 	     "mout_cmu_peric0_bus", CLK_CON_GAT_GATE_CLKCMU_PERIC0_BUS,
1100*bdd03ebfSIgor Belwon 	     21, 0, 0),
1101*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_PERIC0_IP, "gout_cmu_peric0_ip",
1102*bdd03ebfSIgor Belwon 	     "mout_cmu_peric0_ip", CLK_CON_GAT_GATE_CLKCMU_PERIC0_IP,
1103*bdd03ebfSIgor Belwon 	     21, 0, 0),
1104*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_PERIC1_BUS, "gout_cmu_peric1_bus",
1105*bdd03ebfSIgor Belwon 	     "mout_cmu_peric1_bus", CLK_CON_GAT_GATE_CLKCMU_PERIC1_BUS,
1106*bdd03ebfSIgor Belwon 	     21, 0, 0),
1107*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_PERIC1_IP, "gout_cmu_peric1_ip",
1108*bdd03ebfSIgor Belwon 	     "mout_cmu_peric1_ip", CLK_CON_GAT_GATE_CLKCMU_PERIC1_IP,
1109*bdd03ebfSIgor Belwon 	     21, 0, 0),
1110*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_PERIS_BUS, "gout_cmu_peris_bus",
1111*bdd03ebfSIgor Belwon 	     "mout_cmu_peris_bus", CLK_CON_GAT_GATE_CLKCMU_PERIS_BUS,
1112*bdd03ebfSIgor Belwon 	     21, CLK_IGNORE_UNUSED, 0),
1113*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_SSP_BUS, "gout_cmu_ssp_bus", "mout_cmu_ssp_bus",
1114*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_SSP_BUS, 21, 0, 0),
1115*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_TNR_BUS, "gout_cmu_tnr_bus", "mout_cmu_tnr_bus",
1116*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_TNR_BUS, 21, 0, 0),
1117*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_CMU_VRA_BUS, "gout_cmu_vra_bus", "mout_cmu_vra_bus",
1118*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GATE_CLKCMU_VRA_BUS, 21, 0, 0),
1119*bdd03ebfSIgor Belwon };
1120*bdd03ebfSIgor Belwon 
1121*bdd03ebfSIgor Belwon static const struct samsung_cmu_info top_cmu_info __initconst = {
1122*bdd03ebfSIgor Belwon 	.pll_clks = top_pll_clks,
1123*bdd03ebfSIgor Belwon 	.nr_pll_clks = ARRAY_SIZE(top_pll_clks),
1124*bdd03ebfSIgor Belwon 	.mux_clks = top_mux_clks,
1125*bdd03ebfSIgor Belwon 	.nr_mux_clks = ARRAY_SIZE(top_mux_clks),
1126*bdd03ebfSIgor Belwon 	.div_clks = top_div_clks,
1127*bdd03ebfSIgor Belwon 	.nr_div_clks = ARRAY_SIZE(top_div_clks),
1128*bdd03ebfSIgor Belwon 	.gate_clks = top_gate_clks,
1129*bdd03ebfSIgor Belwon 	.nr_gate_clks = ARRAY_SIZE(top_gate_clks),
1130*bdd03ebfSIgor Belwon 	.nr_clk_ids = CLKS_NR_TOP,
1131*bdd03ebfSIgor Belwon 	.clk_regs = top_clk_regs,
1132*bdd03ebfSIgor Belwon 	.nr_clk_regs = ARRAY_SIZE(top_clk_regs),
1133*bdd03ebfSIgor Belwon };
1134*bdd03ebfSIgor Belwon 
1135*bdd03ebfSIgor Belwon static void __init exynos990_cmu_top_init(struct device_node *np)
1136*bdd03ebfSIgor Belwon {
1137*bdd03ebfSIgor Belwon 	exynos_arm64_register_cmu(NULL, np, &top_cmu_info);
1138*bdd03ebfSIgor Belwon }
1139*bdd03ebfSIgor Belwon 
1140*bdd03ebfSIgor Belwon /* Register CMU_TOP early, as it's a dependency for other early domains */
1141*bdd03ebfSIgor Belwon CLK_OF_DECLARE(exynos990_cmu_top, "samsung,exynos990-cmu-top",
1142*bdd03ebfSIgor Belwon 	       exynos990_cmu_top_init);
1143*bdd03ebfSIgor Belwon 
1144*bdd03ebfSIgor Belwon /* ---- CMU_HSI0 ------------------------------------------------------------ */
1145*bdd03ebfSIgor Belwon 
1146*bdd03ebfSIgor Belwon /* Register Offset definitions for CMU_HSI0 (0x10a00000) */
1147*bdd03ebfSIgor Belwon #define PLL_CON0_MUX_CLKCMU_HSI0_BUS_USER						0x0600
1148*bdd03ebfSIgor Belwon #define PLL_CON0_MUX_CLKCMU_HSI0_USB31DRD_USER						0x0620
1149*bdd03ebfSIgor Belwon #define PLL_CON0_MUX_CLKCMU_HSI0_USBDP_DEBUG_USER					0x0630
1150*bdd03ebfSIgor Belwon #define PLL_CON0_MUX_CLKCMU_HSI0_DPGTC_USER						0x0610
1151*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_DP_LINK_IPCLKPORT_I_DP_GTC_CLK			0x2004
1152*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_PPMU_HSI0_BUS1_IPCLKPORT_ACLK			0x2018
1153*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_LHS_ACEL_D_HSI0_IPCLKPORT_I_CLK			0x2014
1154*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_RSTNSYNC_CLK_HSI0_BUS_IPCLKPORT_CLK		0x2020
1155*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_VGEN_LITE_HSI0_IPCLKPORT_CLK			0x2044
1156*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_DP_LINK_IPCLKPORT_I_PCLK				0x2008
1157*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_D_TZPC_HSI0_IPCLKPORT_PCLK			0x200c
1158*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_LHM_AXI_P_HSI0_IPCLKPORT_I_CLK			0x2010
1159*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_PPMU_HSI0_BUS1_IPCLKPORT_PCLK			0x201c
1160*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_SYSMMU_USB_IPCLKPORT_CLK_S2			0x2024
1161*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_SYSREG_HSI0_IPCLKPORT_PCLK			0x2028
1162*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_ACLK_PHYCTRL			0x202c
1163*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_I_USB31DRD_REF_CLK_40		0x2034
1164*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_I_USBDPPHY_SCL_APB_PCLK	0x203c
1165*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_I_USBPCS_APB_CLK		0x2040
1166*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_BUS_CLK_EARLY			0x2030
1167*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_HSI0_CMU_HSI0_IPCLKPORT_PCLK			0x2000
1168*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_XIU_D_HSI0_IPCLKPORT_ACLK				0x2048
1169*bdd03ebfSIgor Belwon #define CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_I_USBDPPHY_REF_SOC_PLL		0x2038
1170*bdd03ebfSIgor Belwon 
1171*bdd03ebfSIgor Belwon static const unsigned long hsi0_clk_regs[] __initconst = {
1172*bdd03ebfSIgor Belwon 	PLL_CON0_MUX_CLKCMU_HSI0_BUS_USER,
1173*bdd03ebfSIgor Belwon 	PLL_CON0_MUX_CLKCMU_HSI0_USB31DRD_USER,
1174*bdd03ebfSIgor Belwon 	PLL_CON0_MUX_CLKCMU_HSI0_USBDP_DEBUG_USER,
1175*bdd03ebfSIgor Belwon 	PLL_CON0_MUX_CLKCMU_HSI0_DPGTC_USER,
1176*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_DP_LINK_IPCLKPORT_I_DP_GTC_CLK,
1177*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_DP_LINK_IPCLKPORT_I_PCLK,
1178*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_PPMU_HSI0_BUS1_IPCLKPORT_ACLK,
1179*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_LHS_ACEL_D_HSI0_IPCLKPORT_I_CLK,
1180*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_RSTNSYNC_CLK_HSI0_BUS_IPCLKPORT_CLK,
1181*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_VGEN_LITE_HSI0_IPCLKPORT_CLK,
1182*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_D_TZPC_HSI0_IPCLKPORT_PCLK,
1183*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_LHM_AXI_P_HSI0_IPCLKPORT_I_CLK,
1184*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_PPMU_HSI0_BUS1_IPCLKPORT_PCLK,
1185*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_SYSMMU_USB_IPCLKPORT_CLK_S2,
1186*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_SYSREG_HSI0_IPCLKPORT_PCLK,
1187*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_ACLK_PHYCTRL,
1188*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_I_USBDPPHY_SCL_APB_PCLK,
1189*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_I_USBPCS_APB_CLK,
1190*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_BUS_CLK_EARLY,
1191*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_HSI0_CMU_HSI0_IPCLKPORT_PCLK,
1192*bdd03ebfSIgor Belwon 	CLK_CON_GAT_GOUT_BLK_HSI0_UID_XIU_D_HSI0_IPCLKPORT_ACLK,
1193*bdd03ebfSIgor Belwon };
1194*bdd03ebfSIgor Belwon 
1195*bdd03ebfSIgor Belwon PNAME(mout_hsi0_bus_user_p)		= { "oscclk", "dout_cmu_hsi0_bus" };
1196*bdd03ebfSIgor Belwon PNAME(mout_hsi0_usb31drd_user_p)	= { "oscclk", "dout_cmu_hsi0_usb31drd" };
1197*bdd03ebfSIgor Belwon PNAME(mout_hsi0_usbdp_debug_user_p)	= { "oscclk",
1198*bdd03ebfSIgor Belwon 					    "dout_cmu_hsi0_usbdp_debug" };
1199*bdd03ebfSIgor Belwon PNAME(mout_hsi0_dpgtc_user_p)		= { "oscclk", "dout_cmu_hsi0_dpgtc" };
1200*bdd03ebfSIgor Belwon 
1201*bdd03ebfSIgor Belwon static const struct samsung_mux_clock hsi0_mux_clks[] __initconst = {
1202*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_HSI0_BUS_USER, "mout_hsi0_bus_user",
1203*bdd03ebfSIgor Belwon 	    mout_hsi0_bus_user_p, PLL_CON0_MUX_CLKCMU_HSI0_BUS_USER,
1204*bdd03ebfSIgor Belwon 	    4, 1),
1205*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_HSI0_USB31DRD_USER, "mout_hsi0_usb31drd_user",
1206*bdd03ebfSIgor Belwon 	    mout_hsi0_usb31drd_user_p, PLL_CON0_MUX_CLKCMU_HSI0_USB31DRD_USER,
1207*bdd03ebfSIgor Belwon 	    4, 1),
1208*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_HSI0_USBDP_DEBUG_USER, "mout_hsi0_usbdp_debug_user",
1209*bdd03ebfSIgor Belwon 	    mout_hsi0_usbdp_debug_user_p,
1210*bdd03ebfSIgor Belwon 	    PLL_CON0_MUX_CLKCMU_HSI0_USBDP_DEBUG_USER,
1211*bdd03ebfSIgor Belwon 	    4, 1),
1212*bdd03ebfSIgor Belwon 	MUX(CLK_MOUT_HSI0_DPGTC_USER, "mout_hsi0_dpgtc_user",
1213*bdd03ebfSIgor Belwon 	    mout_hsi0_dpgtc_user_p, PLL_CON0_MUX_CLKCMU_HSI0_DPGTC_USER,
1214*bdd03ebfSIgor Belwon 	    4, 1),
1215*bdd03ebfSIgor Belwon };
1216*bdd03ebfSIgor Belwon 
1217*bdd03ebfSIgor Belwon static const struct samsung_gate_clock hsi0_gate_clks[] __initconst = {
1218*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_DP_LINK_DP_GTC_CLK,
1219*bdd03ebfSIgor Belwon 	     "gout_hsi0_dp_link_dp_gtc_clk", "mout_hsi0_dpgtc_user",
1220*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_DP_LINK_IPCLKPORT_I_DP_GTC_CLK,
1221*bdd03ebfSIgor Belwon 	     21, 0, 0),
1222*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_DP_LINK_PCLK,
1223*bdd03ebfSIgor Belwon 	     "gout_hsi0_dp_link_pclk", "mout_hsi0_bus_user",
1224*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_DP_LINK_IPCLKPORT_I_PCLK,
1225*bdd03ebfSIgor Belwon 	     21, 0, 0),
1226*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_D_TZPC_HSI0_PCLK,
1227*bdd03ebfSIgor Belwon 	     "gout_hsi0_d_tzpc_hsi0_pclk", "mout_hsi0_bus_user",
1228*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_D_TZPC_HSI0_IPCLKPORT_PCLK,
1229*bdd03ebfSIgor Belwon 	     21, 0, 0),
1230*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_LHM_AXI_P_HSI0_CLK,
1231*bdd03ebfSIgor Belwon 	     "gout_hsi0_lhm_axi_p_hsi0_clk", "mout_hsi0_bus_user",
1232*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_LHM_AXI_P_HSI0_IPCLKPORT_I_CLK,
1233*bdd03ebfSIgor Belwon 	     21, CLK_IS_CRITICAL, 0),
1234*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_PPMU_HSI0_BUS1_ACLK,
1235*bdd03ebfSIgor Belwon 	     "gout_hsi0_ppmu_hsi0_bus1_aclk", "mout_hsi0_bus_user",
1236*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_PPMU_HSI0_BUS1_IPCLKPORT_ACLK,
1237*bdd03ebfSIgor Belwon 	     21, 0, 0),
1238*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_PPMU_HSI0_BUS1_PCLK,
1239*bdd03ebfSIgor Belwon 	     "gout_hsi0_ppmu_hsi0_bus1_pclk", "mout_hsi0_bus_user",
1240*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_PPMU_HSI0_BUS1_IPCLKPORT_PCLK,
1241*bdd03ebfSIgor Belwon 	     21, 0, 0),
1242*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_CLK_HSI0_BUS_CLK,
1243*bdd03ebfSIgor Belwon 	     "gout_hsi0_clk_hsi0_bus_clk", "mout_hsi0_bus_user",
1244*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_RSTNSYNC_CLK_HSI0_BUS_IPCLKPORT_CLK,
1245*bdd03ebfSIgor Belwon 	     21, 0, 0),
1246*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_SYSMMU_USB_CLK_S2,
1247*bdd03ebfSIgor Belwon 	     "gout_hsi0_sysmmu_usb_clk_s2", "mout_hsi0_bus_user",
1248*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_SYSMMU_USB_IPCLKPORT_CLK_S2,
1249*bdd03ebfSIgor Belwon 	     21, CLK_IGNORE_UNUSED, 0),
1250*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_SYSREG_HSI0_PCLK,
1251*bdd03ebfSIgor Belwon 	     "gout_hsi0_sysreg_hsi0_pclk", "mout_hsi0_bus_user",
1252*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_SYSREG_HSI0_IPCLKPORT_PCLK,
1253*bdd03ebfSIgor Belwon 	     21, 0, 0),
1254*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_USB31DRD_ACLK_PHYCTRL,
1255*bdd03ebfSIgor Belwon 	     "gout_hsi0_usb31drd_aclk_phyctrl", "mout_hsi0_bus_user",
1256*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_ACLK_PHYCTRL,
1257*bdd03ebfSIgor Belwon 	     21, 0, 0),
1258*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_USB31DRD_BUS_CLK_EARLY,
1259*bdd03ebfSIgor Belwon 	     "gout_hsi0_usb31drd_bus_clk_early",
1260*bdd03ebfSIgor Belwon 	     "mout_hsi0_bus_user",
1261*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_BUS_CLK_EARLY,
1262*bdd03ebfSIgor Belwon 	     21, 0, 0),
1263*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_USB31DRD_USB31DRD_REF_CLK_40,
1264*bdd03ebfSIgor Belwon 	     "gout_hsi0_usb31drd_usb31drd_ref_clk_40",
1265*bdd03ebfSIgor Belwon 	     "mout_hsi0_usb31drd_user",
1266*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_I_USB31DRD_REF_CLK_40,
1267*bdd03ebfSIgor Belwon 	     21, 0, 0),
1268*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_USB31DRD_USBDPPHY_REF_SOC_PLL,
1269*bdd03ebfSIgor Belwon 	     "gout_hsi0_usb31drd_usbdpphy_ref_soc_pll",
1270*bdd03ebfSIgor Belwon 	     "mout_hsi0_usbdp_debug_user",
1271*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_I_USBDPPHY_REF_SOC_PLL,
1272*bdd03ebfSIgor Belwon 	     21, 0, 0),
1273*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_USB31DRD_USBDPPHY_SCL_APB,
1274*bdd03ebfSIgor Belwon 	     "gout_hsi0_usb31drd_ipclkport_i_usbdpphy_scl_apb_pclk",
1275*bdd03ebfSIgor Belwon 	     "mout_hsi0_bus_user",
1276*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_I_USBDPPHY_SCL_APB_PCLK,
1277*bdd03ebfSIgor Belwon 	     21, 0, 0),
1278*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_USB31DRD_USBPCS_APB_CLK,
1279*bdd03ebfSIgor Belwon 	     "gout_hsi0_usb31drd_usbpcs_apb_clk",
1280*bdd03ebfSIgor Belwon 	     "mout_hsi0_bus_user",
1281*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_USB31DRD_IPCLKPORT_I_USBPCS_APB_CLK,
1282*bdd03ebfSIgor Belwon 	     21, 0, 0),
1283*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_VGEN_LITE_HSI0_CLK,
1284*bdd03ebfSIgor Belwon 	     "gout_hsi0_vgen_lite_ipclkport_clk", "mout_hsi0_bus_user",
1285*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_VGEN_LITE_HSI0_IPCLKPORT_CLK,
1286*bdd03ebfSIgor Belwon 	     21, 0, 0),
1287*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_CMU_HSI0_PCLK,
1288*bdd03ebfSIgor Belwon 	     "gout_hsi0_cmu_hsi0_pclk", "mout_hsi0_bus_user",
1289*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_HSI0_CMU_HSI0_IPCLKPORT_PCLK,
1290*bdd03ebfSIgor Belwon 	     21, CLK_IGNORE_UNUSED, 0),
1291*bdd03ebfSIgor Belwon 	GATE(CLK_GOUT_HSI0_XIU_D_HSI0_ACLK,
1292*bdd03ebfSIgor Belwon 	     "gout_hsi0_xiu_d_hsi0_aclk", "mout_hsi0_bus_user",
1293*bdd03ebfSIgor Belwon 	     CLK_CON_GAT_GOUT_BLK_HSI0_UID_XIU_D_HSI0_IPCLKPORT_ACLK,
1294*bdd03ebfSIgor Belwon 	     21, CLK_IGNORE_UNUSED, 0),
1295*bdd03ebfSIgor Belwon };
1296*bdd03ebfSIgor Belwon 
1297*bdd03ebfSIgor Belwon static const struct samsung_cmu_info hsi0_cmu_info __initconst = {
1298*bdd03ebfSIgor Belwon 	.mux_clks = hsi0_mux_clks,
1299*bdd03ebfSIgor Belwon 	.nr_mux_clks = ARRAY_SIZE(hsi0_mux_clks),
1300*bdd03ebfSIgor Belwon 	.gate_clks = hsi0_gate_clks,
1301*bdd03ebfSIgor Belwon 	.nr_gate_clks = ARRAY_SIZE(hsi0_gate_clks),
1302*bdd03ebfSIgor Belwon 	.nr_clk_ids = CLKS_NR_HSI0,
1303*bdd03ebfSIgor Belwon 	.clk_regs = hsi0_clk_regs,
1304*bdd03ebfSIgor Belwon 	.nr_clk_regs = ARRAY_SIZE(hsi0_clk_regs),
1305*bdd03ebfSIgor Belwon 	.clk_name		= "bus",
1306*bdd03ebfSIgor Belwon };
1307*bdd03ebfSIgor Belwon 
1308*bdd03ebfSIgor Belwon /* ----- platform_driver ----- */
1309*bdd03ebfSIgor Belwon 
1310*bdd03ebfSIgor Belwon static int __init exynos990_cmu_probe(struct platform_device *pdev)
1311*bdd03ebfSIgor Belwon {
1312*bdd03ebfSIgor Belwon 	const struct samsung_cmu_info *info;
1313*bdd03ebfSIgor Belwon 	struct device *dev = &pdev->dev;
1314*bdd03ebfSIgor Belwon 
1315*bdd03ebfSIgor Belwon 	info = of_device_get_match_data(dev);
1316*bdd03ebfSIgor Belwon 	exynos_arm64_register_cmu(dev, dev->of_node, info);
1317*bdd03ebfSIgor Belwon 
1318*bdd03ebfSIgor Belwon 	return 0;
1319*bdd03ebfSIgor Belwon }
1320*bdd03ebfSIgor Belwon 
1321*bdd03ebfSIgor Belwon static const struct of_device_id exynos990_cmu_of_match[] = {
1322*bdd03ebfSIgor Belwon 	{
1323*bdd03ebfSIgor Belwon 		.compatible = "samsung,exynos990-cmu-hsi0",
1324*bdd03ebfSIgor Belwon 		.data = &hsi0_cmu_info,
1325*bdd03ebfSIgor Belwon 	},
1326*bdd03ebfSIgor Belwon 	{ },
1327*bdd03ebfSIgor Belwon };
1328*bdd03ebfSIgor Belwon 
1329*bdd03ebfSIgor Belwon static struct platform_driver exynos990_cmu_driver __refdata = {
1330*bdd03ebfSIgor Belwon 	.driver	= {
1331*bdd03ebfSIgor Belwon 		.name = "exynos990-cmu",
1332*bdd03ebfSIgor Belwon 		.of_match_table = exynos990_cmu_of_match,
1333*bdd03ebfSIgor Belwon 		.suppress_bind_attrs = true,
1334*bdd03ebfSIgor Belwon 	},
1335*bdd03ebfSIgor Belwon 	.probe = exynos990_cmu_probe,
1336*bdd03ebfSIgor Belwon };
1337*bdd03ebfSIgor Belwon 
1338*bdd03ebfSIgor Belwon static int __init exynos990_cmu_init(void)
1339*bdd03ebfSIgor Belwon {
1340*bdd03ebfSIgor Belwon 	return platform_driver_register(&exynos990_cmu_driver);
1341*bdd03ebfSIgor Belwon }
1342*bdd03ebfSIgor Belwon 
1343*bdd03ebfSIgor Belwon core_initcall(exynos990_cmu_init);
1344