tracing: Add __string_src() helper to help compilers not to get confused
[sfrench/cifs-2.6.git] / drivers / clk / samsung / clk-gs101.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (C) 2023 Linaro Ltd.
4  * Author: Peter Griffin <peter.griffin@linaro.org>
5  *
6  * Common Clock Framework support for GS101.
7  */
8
9 #include <linux/clk.h>
10 #include <linux/clk-provider.h>
11 #include <linux/of.h>
12 #include <linux/platform_device.h>
13
14 #include <dt-bindings/clock/google,gs101.h>
15
16 #include "clk.h"
17 #include "clk-exynos-arm64.h"
18
19 /* NOTE: Must be equal to the last clock ID increased by one */
20 #define CLKS_NR_TOP     (CLK_GOUT_CMU_TPU_UART + 1)
21 #define CLKS_NR_APM     (CLK_APM_PLL_DIV16_APM + 1)
22 #define CLKS_NR_MISC    (CLK_GOUT_MISC_XIU_D_MISC_ACLK + 1)
23
24 /* ---- CMU_TOP ------------------------------------------------------------- */
25
26 /* Register Offset definitions for CMU_TOP (0x1e080000) */
27
28 #define PLL_LOCKTIME_PLL_SHARED0                        0x0000
29 #define PLL_LOCKTIME_PLL_SHARED1                        0x0004
30 #define PLL_LOCKTIME_PLL_SHARED2                        0x0008
31 #define PLL_LOCKTIME_PLL_SHARED3                        0x000c
32 #define PLL_LOCKTIME_PLL_SPARE                          0x0010
33 #define PLL_CON0_PLL_SHARED0                            0x0100
34 #define PLL_CON1_PLL_SHARED0                            0x0104
35 #define PLL_CON2_PLL_SHARED0                            0x0108
36 #define PLL_CON3_PLL_SHARED0                            0x010c
37 #define PLL_CON4_PLL_SHARED0                            0x0110
38 #define PLL_CON0_PLL_SHARED1                            0x0140
39 #define PLL_CON1_PLL_SHARED1                            0x0144
40 #define PLL_CON2_PLL_SHARED1                            0x0148
41 #define PLL_CON3_PLL_SHARED1                            0x014c
42 #define PLL_CON4_PLL_SHARED1                            0x0150
43 #define PLL_CON0_PLL_SHARED2                            0x0180
44 #define PLL_CON1_PLL_SHARED2                            0x0184
45 #define PLL_CON2_PLL_SHARED2                            0x0188
46 #define PLL_CON3_PLL_SHARED2                            0x018c
47 #define PLL_CON4_PLL_SHARED2                            0x0190
48 #define PLL_CON0_PLL_SHARED3                            0x01c0
49 #define PLL_CON1_PLL_SHARED3                            0x01c4
50 #define PLL_CON2_PLL_SHARED3                            0x01c8
51 #define PLL_CON3_PLL_SHARED3                            0x01cc
52 #define PLL_CON4_PLL_SHARED3                            0x01d0
53 #define PLL_CON0_PLL_SPARE                              0x0200
54 #define PLL_CON1_PLL_SPARE                              0x0204
55 #define PLL_CON2_PLL_SPARE                              0x0208
56 #define PLL_CON3_PLL_SPARE                              0x020c
57 #define PLL_CON4_PLL_SPARE                              0x0210
58 #define CMU_CMU_TOP_CONTROLLER_OPTION                   0x0800
59 #define CLKOUT_CON_BLK_CMU_CMU_TOP_CLKOUT0              0x0810
60 #define CMU_HCHGEN_CLKMUX_CMU_BOOST                     0x0840
61 #define CMU_HCHGEN_CLKMUX_TOP_BOOST                     0x0844
62 #define CMU_HCHGEN_CLKMUX                               0x0850
63 #define POWER_FAIL_DETECT_PLL                           0x0864
64 #define EARLY_WAKEUP_FORCED_0_ENABLE                    0x0870
65 #define EARLY_WAKEUP_FORCED_1_ENABLE                    0x0874
66 #define EARLY_WAKEUP_APM_CTRL                           0x0878
67 #define EARLY_WAKEUP_CLUSTER0_CTRL                      0x087c
68 #define EARLY_WAKEUP_DPU_CTRL                           0x0880
69 #define EARLY_WAKEUP_CSIS_CTRL                          0x0884
70 #define EARLY_WAKEUP_APM_DEST                           0x0890
71 #define EARLY_WAKEUP_CLUSTER0_DEST                      0x0894
72 #define EARLY_WAKEUP_DPU_DEST                           0x0898
73 #define EARLY_WAKEUP_CSIS_DEST                          0x089c
74 #define EARLY_WAKEUP_SW_TRIG_APM                        0x08c0
75 #define EARLY_WAKEUP_SW_TRIG_APM_SET                    0x08c4
76 #define EARLY_WAKEUP_SW_TRIG_APM_CLEAR                  0x08c8
77 #define EARLY_WAKEUP_SW_TRIG_CLUSTER0                   0x08d0
78 #define EARLY_WAKEUP_SW_TRIG_CLUSTER0_SET               0x08d4
79 #define EARLY_WAKEUP_SW_TRIG_CLUSTER0_CLEAR             0x08d8
80 #define EARLY_WAKEUP_SW_TRIG_DPU                        0x08e0
81 #define EARLY_WAKEUP_SW_TRIG_DPU_SET                    0x08e4
82 #define EARLY_WAKEUP_SW_TRIG_DPU_CLEAR                  0x08e8
83 #define EARLY_WAKEUP_SW_TRIG_CSIS                       0x08f0
84 #define EARLY_WAKEUP_SW_TRIG_CSIS_SET                   0x08f4
85 #define EARLY_WAKEUP_SW_TRIG_CSIS_CLEAR                 0x08f8
86 #define CLK_CON_MUX_MUX_CLKCMU_BO_BUS                   0x1000
87 #define CLK_CON_MUX_MUX_CLKCMU_BUS0_BUS                 0x1004
88 #define CLK_CON_MUX_MUX_CLKCMU_BUS1_BUS                 0x1008
89 #define CLK_CON_MUX_MUX_CLKCMU_BUS2_BUS                 0x100c
90 #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK0                 0x1010
91 #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK1                 0x1014
92 #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK2                 0x1018
93 #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK3                 0x101c
94 #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK4                 0x1020
95 #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK5                 0x1024
96 #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK6                 0x1028
97 #define CLK_CON_MUX_MUX_CLKCMU_CIS_CLK7                 0x102c
98 #define CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST                0x1030
99 #define CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST_OPTION1        0x1034
100 #define CLK_CON_MUX_MUX_CLKCMU_CORE_BUS                 0x1038
101 #define CLK_CON_MUX_MUX_CLKCMU_CPUCL0_DBG               0x103c
102 #define CLK_CON_MUX_MUX_CLKCMU_CPUCL0_SWITCH            0x1040
103 #define CLK_CON_MUX_MUX_CLKCMU_CPUCL1_SWITCH            0x1044
104 #define CLK_CON_MUX_MUX_CLKCMU_CPUCL2_SWITCH            0x1048
105 #define CLK_CON_MUX_MUX_CLKCMU_CSIS_BUS                 0x104c
106 #define CLK_CON_MUX_MUX_CLKCMU_DISP_BUS                 0x1050
107 #define CLK_CON_MUX_MUX_CLKCMU_DNS_BUS                  0x1054
108 #define CLK_CON_MUX_MUX_CLKCMU_DPU_BUS                  0x1058
109 #define CLK_CON_MUX_MUX_CLKCMU_EH_BUS                   0x105c
110 #define CLK_CON_MUX_MUX_CLKCMU_G2D_G2D                  0x1060
111 #define CLK_CON_MUX_MUX_CLKCMU_G2D_MSCL                 0x1064
112 #define CLK_CON_MUX_MUX_CLKCMU_G3AA_G3AA                0x1068
113 #define CLK_CON_MUX_MUX_CLKCMU_G3D_BUSD                 0x106c
114 #define CLK_CON_MUX_MUX_CLKCMU_G3D_GLB                  0x1070
115 #define CLK_CON_MUX_MUX_CLKCMU_G3D_SWITCH               0x1074
116 #define CLK_CON_MUX_MUX_CLKCMU_GDC_GDC0                 0x1078
117 #define CLK_CON_MUX_MUX_CLKCMU_GDC_GDC1                 0x107c
118 #define CLK_CON_MUX_MUX_CLKCMU_GDC_SCSC                 0x1080
119 #define CLK_CON_MUX_MUX_CLKCMU_HPM                      0x1084
120 #define CLK_CON_MUX_MUX_CLKCMU_HSI0_BUS                 0x1088
121 #define CLK_CON_MUX_MUX_CLKCMU_HSI0_DPGTC               0x108c
122 #define CLK_CON_MUX_MUX_CLKCMU_HSI0_USB31DRD            0x1090
123 #define CLK_CON_MUX_MUX_CLKCMU_HSI0_USBDPDBG            0x1094
124 #define CLK_CON_MUX_MUX_CLKCMU_HSI1_BUS                 0x1098
125 #define CLK_CON_MUX_MUX_CLKCMU_HSI1_PCIE                0x109c
126 #define CLK_CON_MUX_MUX_CLKCMU_HSI2_BUS                 0x10a0
127 #define CLK_CON_MUX_MUX_CLKCMU_HSI2_MMC_CARD            0x10a4
128 #define CLK_CON_MUX_MUX_CLKCMU_HSI2_PCIE                0x10a8
129 #define CLK_CON_MUX_MUX_CLKCMU_HSI2_UFS_EMBD            0x10ac
130 #define CLK_CON_MUX_MUX_CLKCMU_IPP_BUS                  0x10b0
131 #define CLK_CON_MUX_MUX_CLKCMU_ITP_BUS                  0x10b4
132 #define CLK_CON_MUX_MUX_CLKCMU_MCSC_ITSC                0x10b8
133 #define CLK_CON_MUX_MUX_CLKCMU_MCSC_MCSC                0x10bc
134 #define CLK_CON_MUX_MUX_CLKCMU_MFC_MFC                  0x10c0
135 #define CLK_CON_MUX_MUX_CLKCMU_MIF_BUSP                 0x10c4
136 #define CLK_CON_MUX_MUX_CLKCMU_MIF_SWITCH               0x10c8
137 #define CLK_CON_MUX_MUX_CLKCMU_MISC_BUS                 0x10cc
138 #define CLK_CON_MUX_MUX_CLKCMU_MISC_SSS                 0x10d0
139 #define CLK_CON_MUX_MUX_CLKCMU_PDP_BUS                  0x10d4
140 #define CLK_CON_MUX_MUX_CLKCMU_PDP_VRA                  0x10d8
141 #define CLK_CON_MUX_MUX_CLKCMU_PERIC0_BUS               0x10dc
142 #define CLK_CON_MUX_MUX_CLKCMU_PERIC0_IP                0x10e0
143 #define CLK_CON_MUX_MUX_CLKCMU_PERIC1_BUS               0x10e4
144 #define CLK_CON_MUX_MUX_CLKCMU_PERIC1_IP                0x10e8
145 #define CLK_CON_MUX_MUX_CLKCMU_TNR_BUS                  0x10ec
146 #define CLK_CON_MUX_MUX_CLKCMU_TOP_BOOST_OPTION1        0x10f0
147 #define CLK_CON_MUX_MUX_CLKCMU_TOP_CMUREF               0x10f4
148 #define CLK_CON_MUX_MUX_CLKCMU_TPU_BUS                  0x10f8
149 #define CLK_CON_MUX_MUX_CLKCMU_TPU_TPU                  0x10fc
150 #define CLK_CON_MUX_MUX_CLKCMU_TPU_TPUCTL               0x1100
151 #define CLK_CON_MUX_MUX_CLKCMU_TPU_UART                 0x1104
152 #define CLK_CON_MUX_MUX_CMU_CMUREF                      0x1108
153 #define CLK_CON_DIV_CLKCMU_BO_BUS                       0x1800
154 #define CLK_CON_DIV_CLKCMU_BUS0_BUS                     0x1804
155 #define CLK_CON_DIV_CLKCMU_BUS1_BUS                     0x1808
156 #define CLK_CON_DIV_CLKCMU_BUS2_BUS                     0x180c
157 #define CLK_CON_DIV_CLKCMU_CIS_CLK0                     0x1810
158 #define CLK_CON_DIV_CLKCMU_CIS_CLK1                     0x1814
159 #define CLK_CON_DIV_CLKCMU_CIS_CLK2                     0x1818
160 #define CLK_CON_DIV_CLKCMU_CIS_CLK3                     0x181c
161 #define CLK_CON_DIV_CLKCMU_CIS_CLK4                     0x1820
162 #define CLK_CON_DIV_CLKCMU_CIS_CLK5                     0x1824
163 #define CLK_CON_DIV_CLKCMU_CIS_CLK6                     0x1828
164 #define CLK_CON_DIV_CLKCMU_CIS_CLK7                     0x182c
165 #define CLK_CON_DIV_CLKCMU_CORE_BUS                     0x1830
166 #define CLK_CON_DIV_CLKCMU_CPUCL0_DBG                   0x1834
167 #define CLK_CON_DIV_CLKCMU_CPUCL0_SWITCH                0x1838
168 #define CLK_CON_DIV_CLKCMU_CPUCL1_SWITCH                0x183c
169 #define CLK_CON_DIV_CLKCMU_CPUCL2_SWITCH                0x1840
170 #define CLK_CON_DIV_CLKCMU_CSIS_BUS                     0x1844
171 #define CLK_CON_DIV_CLKCMU_DISP_BUS                     0x1848
172 #define CLK_CON_DIV_CLKCMU_DNS_BUS                      0x184c
173 #define CLK_CON_DIV_CLKCMU_DPU_BUS                      0x1850
174 #define CLK_CON_DIV_CLKCMU_EH_BUS                       0x1854
175 #define CLK_CON_DIV_CLKCMU_G2D_G2D                      0x1858
176 #define CLK_CON_DIV_CLKCMU_G2D_MSCL                     0x185c
177 #define CLK_CON_DIV_CLKCMU_G3AA_G3AA                    0x1860
178 #define CLK_CON_DIV_CLKCMU_G3D_BUSD                     0x1864
179 #define CLK_CON_DIV_CLKCMU_G3D_GLB                      0x1868
180 #define CLK_CON_DIV_CLKCMU_G3D_SWITCH                   0x186c
181 #define CLK_CON_DIV_CLKCMU_GDC_GDC0                     0x1870
182 #define CLK_CON_DIV_CLKCMU_GDC_GDC1                     0x1874
183 #define CLK_CON_DIV_CLKCMU_GDC_SCSC                     0x1878
184 #define CLK_CON_DIV_CLKCMU_HPM                          0x187c
185 #define CLK_CON_DIV_CLKCMU_HSI0_BUS                     0x1880
186 #define CLK_CON_DIV_CLKCMU_HSI0_DPGTC                   0x1884
187 #define CLK_CON_DIV_CLKCMU_HSI0_USB31DRD                0x1888
188 #define CLK_CON_DIV_CLKCMU_HSI0_USBDPDBG                0x188c
189 #define CLK_CON_DIV_CLKCMU_HSI1_BUS                     0x1890
190 #define CLK_CON_DIV_CLKCMU_HSI1_PCIE                    0x1894
191 #define CLK_CON_DIV_CLKCMU_HSI2_BUS                     0x1898
192 #define CLK_CON_DIV_CLKCMU_HSI2_MMC_CARD                0x189c
193 #define CLK_CON_DIV_CLKCMU_HSI2_PCIE                    0x18a0
194 #define CLK_CON_DIV_CLKCMU_HSI2_UFS_EMBD                0x18a4
195 #define CLK_CON_DIV_CLKCMU_IPP_BUS                      0x18a8
196 #define CLK_CON_DIV_CLKCMU_ITP_BUS                      0x18ac
197 #define CLK_CON_DIV_CLKCMU_MCSC_ITSC                    0x18b0
198 #define CLK_CON_DIV_CLKCMU_MCSC_MCSC                    0x18b4
199 #define CLK_CON_DIV_CLKCMU_MFC_MFC                      0x18b8
200 #define CLK_CON_DIV_CLKCMU_MIF_BUSP                     0x18bc
201 #define CLK_CON_DIV_CLKCMU_MISC_BUS                     0x18c0
202 #define CLK_CON_DIV_CLKCMU_MISC_SSS                     0x18c4
203 #define CLK_CON_DIV_CLKCMU_OTP                          0x18c8
204 #define CLK_CON_DIV_CLKCMU_PDP_BUS                      0x18cc
205 #define CLK_CON_DIV_CLKCMU_PDP_VRA                      0x18d0
206 #define CLK_CON_DIV_CLKCMU_PERIC0_BUS                   0x18d4
207 #define CLK_CON_DIV_CLKCMU_PERIC0_IP                    0x18d8
208 #define CLK_CON_DIV_CLKCMU_PERIC1_BUS                   0x18dc
209 #define CLK_CON_DIV_CLKCMU_PERIC1_IP                    0x18e0
210 #define CLK_CON_DIV_CLKCMU_TNR_BUS                      0x18e4
211 #define CLK_CON_DIV_CLKCMU_TPU_BUS                      0x18e8
212 #define CLK_CON_DIV_CLKCMU_TPU_TPU                      0x18ec
213 #define CLK_CON_DIV_CLKCMU_TPU_TPUCTL                   0x18f0
214 #define CLK_CON_DIV_CLKCMU_TPU_UART                     0x18f4
215 #define CLK_CON_DIV_DIV_CLKCMU_CMU_BOOST                0x18f8
216 #define CLK_CON_DIV_DIV_CLK_CMU_CMUREF                  0x18fc
217 #define CLK_CON_DIV_PLL_SHARED0_DIV2                    0x1900
218 #define CLK_CON_DIV_PLL_SHARED0_DIV3                    0x1904
219 #define CLK_CON_DIV_PLL_SHARED0_DIV4                    0x1908
220 #define CLK_CON_DIV_PLL_SHARED0_DIV5                    0x190c
221 #define CLK_CON_DIV_PLL_SHARED1_DIV2                    0x1910
222 #define CLK_CON_DIV_PLL_SHARED1_DIV3                    0x1914
223 #define CLK_CON_DIV_PLL_SHARED1_DIV4                    0x1918
224 #define CLK_CON_DIV_PLL_SHARED2_DIV2                    0x191c
225 #define CLK_CON_DIV_PLL_SHARED3_DIV2                    0x1920
226 #define CLK_CON_GAT_CLKCMU_BUS0_BOOST                   0x2000
227 #define CLK_CON_GAT_CLKCMU_BUS1_BOOST                   0x2004
228 #define CLK_CON_GAT_CLKCMU_BUS2_BOOST                   0x2008
229 #define CLK_CON_GAT_CLKCMU_CORE_BOOST                   0x200c
230 #define CLK_CON_GAT_CLKCMU_CPUCL0_BOOST                 0x2010
231 #define CLK_CON_GAT_CLKCMU_CPUCL1_BOOST                 0x2014
232 #define CLK_CON_GAT_CLKCMU_CPUCL2_BOOST                 0x2018
233 #define CLK_CON_GAT_CLKCMU_MIF_BOOST                    0x201c
234 #define CLK_CON_GAT_CLKCMU_MIF_SWITCH                   0x2020
235 #define CLK_CON_GAT_GATE_CLKCMU_BO_BUS                  0x2024
236 #define CLK_CON_GAT_GATE_CLKCMU_BUS0_BUS                0x2028
237 #define CLK_CON_GAT_GATE_CLKCMU_BUS1_BUS                0x202c
238 #define CLK_CON_GAT_GATE_CLKCMU_BUS2_BUS                0x2030
239 #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK0                0x2034
240 #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK1                0x2038
241 #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK2                0x203c
242 #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK3                0x2040
243 #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK4                0x2044
244 #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK5                0x2048
245 #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK6                0x204c
246 #define CLK_CON_GAT_GATE_CLKCMU_CIS_CLK7                0x2050
247 #define CLK_CON_GAT_GATE_CLKCMU_CMU_BOOST               0x2054
248 #define CLK_CON_GAT_GATE_CLKCMU_CORE_BUS                0x2058
249 #define CLK_CON_GAT_GATE_CLKCMU_CPUCL0_DBG_BUS          0x205c
250 #define CLK_CON_GAT_GATE_CLKCMU_CPUCL0_SWITCH           0x2060
251 #define CLK_CON_GAT_GATE_CLKCMU_CPUCL1_SWITCH           0x2064
252 #define CLK_CON_GAT_GATE_CLKCMU_CPUCL2_SWITCH           0x2068
253 #define CLK_CON_GAT_GATE_CLKCMU_CSIS_BUS                0x206c
254 #define CLK_CON_GAT_GATE_CLKCMU_DISP_BUS                0x2070
255 #define CLK_CON_GAT_GATE_CLKCMU_DNS_BUS                 0x2074
256 #define CLK_CON_GAT_GATE_CLKCMU_DPU_BUS                 0x2078
257 #define CLK_CON_GAT_GATE_CLKCMU_EH_BUS                  0x207c
258 #define CLK_CON_GAT_GATE_CLKCMU_G2D_G2D                 0x2080
259 #define CLK_CON_GAT_GATE_CLKCMU_G2D_MSCL                0x2084
260 #define CLK_CON_GAT_GATE_CLKCMU_G3AA_G3AA               0x2088
261 #define CLK_CON_GAT_GATE_CLKCMU_G3D_BUSD                0x208c
262 #define CLK_CON_GAT_GATE_CLKCMU_G3D_GLB                 0x2090
263 #define CLK_CON_GAT_GATE_CLKCMU_G3D_SWITCH              0x2094
264 #define CLK_CON_GAT_GATE_CLKCMU_GDC_GDC0                0x2098
265 #define CLK_CON_GAT_GATE_CLKCMU_GDC_GDC1                0x209c
266 #define CLK_CON_GAT_GATE_CLKCMU_GDC_SCSC                0x20a0
267 #define CLK_CON_GAT_GATE_CLKCMU_HPM                     0x20a4
268 #define CLK_CON_GAT_GATE_CLKCMU_HSI0_BUS                0x20a8
269 #define CLK_CON_GAT_GATE_CLKCMU_HSI0_DPGTC              0x20ac
270 #define CLK_CON_GAT_GATE_CLKCMU_HSI0_USB31DRD           0x20b0
271 #define CLK_CON_GAT_GATE_CLKCMU_HSI0_USBDPDBG           0x20b4
272 #define CLK_CON_GAT_GATE_CLKCMU_HSI1_BUS                0x20b8
273 #define CLK_CON_GAT_GATE_CLKCMU_HSI1_PCIE               0x20bc
274 #define CLK_CON_GAT_GATE_CLKCMU_HSI2_BUS                0x20c0
275 #define CLK_CON_GAT_GATE_CLKCMU_HSI2_MMCCARD            0x20c4
276 #define CLK_CON_GAT_GATE_CLKCMU_HSI2_PCIE               0x20c8
277 #define CLK_CON_GAT_GATE_CLKCMU_HSI2_UFS_EMBD           0x20cc
278 #define CLK_CON_GAT_GATE_CLKCMU_IPP_BUS                 0x20d0
279 #define CLK_CON_GAT_GATE_CLKCMU_ITP_BUS                 0x20d4
280 #define CLK_CON_GAT_GATE_CLKCMU_MCSC_ITSC               0x20d8
281 #define CLK_CON_GAT_GATE_CLKCMU_MCSC_MCSC               0x20dc
282 #define CLK_CON_GAT_GATE_CLKCMU_MFC_MFC                 0x20e0
283 #define CLK_CON_GAT_GATE_CLKCMU_MIF_BUSP                0x20e4
284 #define CLK_CON_GAT_GATE_CLKCMU_MISC_BUS                0x20e8
285 #define CLK_CON_GAT_GATE_CLKCMU_MISC_SSS                0x20ec
286 #define CLK_CON_GAT_GATE_CLKCMU_PDP_BUS                 0x20f0
287 #define CLK_CON_GAT_GATE_CLKCMU_PDP_VRA                 0x20f4
288 #define CLK_CON_GAT_GATE_CLKCMU_PERIC0_BUS              0x20f8
289 #define CLK_CON_GAT_GATE_CLKCMU_PERIC0_IP               0x20fc
290 #define CLK_CON_GAT_GATE_CLKCMU_PERIC1_BUS              0x2100
291 #define CLK_CON_GAT_GATE_CLKCMU_PERIC1_IP               0x2104
292 #define CLK_CON_GAT_GATE_CLKCMU_TNR_BUS                 0x2108
293 #define CLK_CON_GAT_GATE_CLKCMU_TOP_CMUREF              0x210c
294 #define CLK_CON_GAT_GATE_CLKCMU_TPU_BUS                 0x2110
295 #define CLK_CON_GAT_GATE_CLKCMU_TPU_TPU                 0x2114
296 #define CLK_CON_GAT_GATE_CLKCMU_TPU_TPUCTL              0x2118
297 #define CLK_CON_GAT_GATE_CLKCMU_TPU_UART                0x211c
298 #define DMYQCH_CON_CMU_TOP_CMUREF_QCH                   0x3000
299 #define DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK0              0x3004
300 #define DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK1              0x3008
301 #define DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK2              0x300c
302 #define DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK3              0x3010
303 #define DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK4              0x3014
304 #define DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK5              0x3018
305 #define DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK6              0x301c
306 #define DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK7              0x3020
307 #define DMYQCH_CON_OTP_QCH                              0x3024
308 #define QUEUE_CTRL_REG_BLK_CMU_CMU_TOP                  0x3c00
309 #define QUEUE_ENTRY0_BLK_CMU_CMU_TOP                    0x3c10
310 #define QUEUE_ENTRY1_BLK_CMU_CMU_TOP                    0x3c14
311 #define QUEUE_ENTRY2_BLK_CMU_CMU_TOP                    0x3c18
312 #define QUEUE_ENTRY3_BLK_CMU_CMU_TOP                    0x3c1c
313 #define QUEUE_ENTRY4_BLK_CMU_CMU_TOP                    0x3c20
314 #define QUEUE_ENTRY5_BLK_CMU_CMU_TOP                    0x3c24
315 #define QUEUE_ENTRY6_BLK_CMU_CMU_TOP                    0x3c28
316 #define QUEUE_ENTRY7_BLK_CMU_CMU_TOP                    0x3c2c
317 #define MIFMIRROR_QUEUE_CTRL_REG                        0x3e00
318 #define MIFMIRROR_QUEUE_ENTRY0                          0x3e10
319 #define MIFMIRROR_QUEUE_ENTRY1                          0x3e14
320 #define MIFMIRROR_QUEUE_ENTRY2                          0x3e18
321 #define MIFMIRROR_QUEUE_ENTRY3                          0x3e1c
322 #define MIFMIRROR_QUEUE_ENTRY4                          0x3e20
323 #define MIFMIRROR_QUEUE_ENTRY5                          0x3e24
324 #define MIFMIRROR_QUEUE_ENTRY6                          0x3e28
325 #define MIFMIRROR_QUEUE_ENTRY7                          0x3e2c
326 #define MIFMIRROR_QUEUE_BUSY                            0x3e30
327 #define GENERALIO_ACD_CHANNEL_0                         0x3f00
328 #define GENERALIO_ACD_CHANNEL_1                         0x3f04
329 #define GENERALIO_ACD_CHANNEL_2                         0x3f08
330 #define GENERALIO_ACD_CHANNEL_3                         0x3f0c
331 #define GENERALIO_ACD_MASK                              0x3f14
332
333 static const unsigned long cmu_top_clk_regs[] __initconst = {
334         PLL_LOCKTIME_PLL_SHARED0,
335         PLL_LOCKTIME_PLL_SHARED1,
336         PLL_LOCKTIME_PLL_SHARED2,
337         PLL_LOCKTIME_PLL_SHARED3,
338         PLL_LOCKTIME_PLL_SPARE,
339         PLL_CON0_PLL_SHARED0,
340         PLL_CON1_PLL_SHARED0,
341         PLL_CON2_PLL_SHARED0,
342         PLL_CON3_PLL_SHARED0,
343         PLL_CON4_PLL_SHARED0,
344         PLL_CON0_PLL_SHARED1,
345         PLL_CON1_PLL_SHARED1,
346         PLL_CON2_PLL_SHARED1,
347         PLL_CON3_PLL_SHARED1,
348         PLL_CON4_PLL_SHARED1,
349         PLL_CON0_PLL_SHARED2,
350         PLL_CON1_PLL_SHARED2,
351         PLL_CON2_PLL_SHARED2,
352         PLL_CON3_PLL_SHARED2,
353         PLL_CON4_PLL_SHARED2,
354         PLL_CON0_PLL_SHARED3,
355         PLL_CON1_PLL_SHARED3,
356         PLL_CON2_PLL_SHARED3,
357         PLL_CON3_PLL_SHARED3,
358         PLL_CON4_PLL_SHARED3,
359         PLL_CON0_PLL_SPARE,
360         PLL_CON1_PLL_SPARE,
361         PLL_CON2_PLL_SPARE,
362         PLL_CON3_PLL_SPARE,
363         PLL_CON4_PLL_SPARE,
364         CMU_CMU_TOP_CONTROLLER_OPTION,
365         CLKOUT_CON_BLK_CMU_CMU_TOP_CLKOUT0,
366         CMU_HCHGEN_CLKMUX_CMU_BOOST,
367         CMU_HCHGEN_CLKMUX_TOP_BOOST,
368         CMU_HCHGEN_CLKMUX,
369         POWER_FAIL_DETECT_PLL,
370         EARLY_WAKEUP_FORCED_0_ENABLE,
371         EARLY_WAKEUP_FORCED_1_ENABLE,
372         EARLY_WAKEUP_APM_CTRL,
373         EARLY_WAKEUP_CLUSTER0_CTRL,
374         EARLY_WAKEUP_DPU_CTRL,
375         EARLY_WAKEUP_CSIS_CTRL,
376         EARLY_WAKEUP_APM_DEST,
377         EARLY_WAKEUP_CLUSTER0_DEST,
378         EARLY_WAKEUP_DPU_DEST,
379         EARLY_WAKEUP_CSIS_DEST,
380         EARLY_WAKEUP_SW_TRIG_APM,
381         EARLY_WAKEUP_SW_TRIG_APM_SET,
382         EARLY_WAKEUP_SW_TRIG_APM_CLEAR,
383         EARLY_WAKEUP_SW_TRIG_CLUSTER0,
384         EARLY_WAKEUP_SW_TRIG_CLUSTER0_SET,
385         EARLY_WAKEUP_SW_TRIG_CLUSTER0_CLEAR,
386         EARLY_WAKEUP_SW_TRIG_DPU,
387         EARLY_WAKEUP_SW_TRIG_DPU_SET,
388         EARLY_WAKEUP_SW_TRIG_DPU_CLEAR,
389         EARLY_WAKEUP_SW_TRIG_CSIS,
390         EARLY_WAKEUP_SW_TRIG_CSIS_SET,
391         EARLY_WAKEUP_SW_TRIG_CSIS_CLEAR,
392         CLK_CON_MUX_MUX_CLKCMU_BO_BUS,
393         CLK_CON_MUX_MUX_CLKCMU_BUS0_BUS,
394         CLK_CON_MUX_MUX_CLKCMU_BUS1_BUS,
395         CLK_CON_MUX_MUX_CLKCMU_BUS2_BUS,
396         CLK_CON_MUX_MUX_CLKCMU_CIS_CLK0,
397         CLK_CON_MUX_MUX_CLKCMU_CIS_CLK1,
398         CLK_CON_MUX_MUX_CLKCMU_CIS_CLK2,
399         CLK_CON_MUX_MUX_CLKCMU_CIS_CLK3,
400         CLK_CON_MUX_MUX_CLKCMU_CIS_CLK4,
401         CLK_CON_MUX_MUX_CLKCMU_CIS_CLK5,
402         CLK_CON_MUX_MUX_CLKCMU_CIS_CLK6,
403         CLK_CON_MUX_MUX_CLKCMU_CIS_CLK7,
404         CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST,
405         CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST_OPTION1,
406         CLK_CON_MUX_MUX_CLKCMU_CORE_BUS,
407         CLK_CON_MUX_MUX_CLKCMU_CPUCL0_DBG,
408         CLK_CON_MUX_MUX_CLKCMU_CPUCL0_SWITCH,
409         CLK_CON_MUX_MUX_CLKCMU_CPUCL1_SWITCH,
410         CLK_CON_MUX_MUX_CLKCMU_CPUCL2_SWITCH,
411         CLK_CON_MUX_MUX_CLKCMU_CSIS_BUS,
412         CLK_CON_MUX_MUX_CLKCMU_DISP_BUS,
413         CLK_CON_MUX_MUX_CLKCMU_DNS_BUS,
414         CLK_CON_MUX_MUX_CLKCMU_DPU_BUS,
415         CLK_CON_MUX_MUX_CLKCMU_EH_BUS,
416         CLK_CON_MUX_MUX_CLKCMU_G2D_G2D,
417         CLK_CON_MUX_MUX_CLKCMU_G2D_MSCL,
418         CLK_CON_MUX_MUX_CLKCMU_G3AA_G3AA,
419         CLK_CON_MUX_MUX_CLKCMU_G3D_BUSD,
420         CLK_CON_MUX_MUX_CLKCMU_G3D_GLB,
421         CLK_CON_MUX_MUX_CLKCMU_G3D_SWITCH,
422         CLK_CON_MUX_MUX_CLKCMU_GDC_GDC0,
423         CLK_CON_MUX_MUX_CLKCMU_GDC_GDC1,
424         CLK_CON_MUX_MUX_CLKCMU_GDC_SCSC,
425         CLK_CON_MUX_MUX_CLKCMU_HPM,
426         CLK_CON_MUX_MUX_CLKCMU_HSI0_BUS,
427         CLK_CON_MUX_MUX_CLKCMU_HSI0_DPGTC,
428         CLK_CON_MUX_MUX_CLKCMU_HSI0_USB31DRD,
429         CLK_CON_MUX_MUX_CLKCMU_HSI0_USBDPDBG,
430         CLK_CON_MUX_MUX_CLKCMU_HSI1_BUS,
431         CLK_CON_MUX_MUX_CLKCMU_HSI1_PCIE,
432         CLK_CON_MUX_MUX_CLKCMU_HSI2_BUS,
433         CLK_CON_MUX_MUX_CLKCMU_HSI2_MMC_CARD,
434         CLK_CON_MUX_MUX_CLKCMU_HSI2_PCIE,
435         CLK_CON_MUX_MUX_CLKCMU_HSI2_UFS_EMBD,
436         CLK_CON_MUX_MUX_CLKCMU_IPP_BUS,
437         CLK_CON_MUX_MUX_CLKCMU_ITP_BUS,
438         CLK_CON_MUX_MUX_CLKCMU_MCSC_ITSC,
439         CLK_CON_MUX_MUX_CLKCMU_MCSC_MCSC,
440         CLK_CON_MUX_MUX_CLKCMU_MFC_MFC,
441         CLK_CON_MUX_MUX_CLKCMU_MIF_BUSP,
442         CLK_CON_MUX_MUX_CLKCMU_MIF_SWITCH,
443         CLK_CON_MUX_MUX_CLKCMU_MISC_BUS,
444         CLK_CON_MUX_MUX_CLKCMU_MISC_SSS,
445         CLK_CON_MUX_MUX_CLKCMU_PDP_BUS,
446         CLK_CON_MUX_MUX_CLKCMU_PDP_VRA,
447         CLK_CON_MUX_MUX_CLKCMU_PERIC0_BUS,
448         CLK_CON_MUX_MUX_CLKCMU_PERIC0_IP,
449         CLK_CON_MUX_MUX_CLKCMU_PERIC1_BUS,
450         CLK_CON_MUX_MUX_CLKCMU_PERIC1_IP,
451         CLK_CON_MUX_MUX_CLKCMU_TNR_BUS,
452         CLK_CON_MUX_MUX_CLKCMU_TOP_BOOST_OPTION1,
453         CLK_CON_MUX_MUX_CLKCMU_TOP_CMUREF,
454         CLK_CON_MUX_MUX_CLKCMU_TPU_BUS,
455         CLK_CON_MUX_MUX_CLKCMU_TPU_TPU,
456         CLK_CON_MUX_MUX_CLKCMU_TPU_TPUCTL,
457         CLK_CON_MUX_MUX_CLKCMU_TPU_UART,
458         CLK_CON_MUX_MUX_CMU_CMUREF,
459         CLK_CON_DIV_CLKCMU_BO_BUS,
460         CLK_CON_DIV_CLKCMU_BUS0_BUS,
461         CLK_CON_DIV_CLKCMU_BUS1_BUS,
462         CLK_CON_DIV_CLKCMU_BUS2_BUS,
463         CLK_CON_DIV_CLKCMU_CIS_CLK0,
464         CLK_CON_DIV_CLKCMU_CIS_CLK1,
465         CLK_CON_DIV_CLKCMU_CIS_CLK2,
466         CLK_CON_DIV_CLKCMU_CIS_CLK3,
467         CLK_CON_DIV_CLKCMU_CIS_CLK4,
468         CLK_CON_DIV_CLKCMU_CIS_CLK5,
469         CLK_CON_DIV_CLKCMU_CIS_CLK6,
470         CLK_CON_DIV_CLKCMU_CIS_CLK7,
471         CLK_CON_DIV_CLKCMU_CORE_BUS,
472         CLK_CON_DIV_CLKCMU_CPUCL0_DBG,
473         CLK_CON_DIV_CLKCMU_CPUCL0_SWITCH,
474         CLK_CON_DIV_CLKCMU_CPUCL1_SWITCH,
475         CLK_CON_DIV_CLKCMU_CPUCL2_SWITCH,
476         CLK_CON_DIV_CLKCMU_CSIS_BUS,
477         CLK_CON_DIV_CLKCMU_DISP_BUS,
478         CLK_CON_DIV_CLKCMU_DNS_BUS,
479         CLK_CON_DIV_CLKCMU_DPU_BUS,
480         CLK_CON_DIV_CLKCMU_EH_BUS,
481         CLK_CON_DIV_CLKCMU_G2D_G2D,
482         CLK_CON_DIV_CLKCMU_G2D_MSCL,
483         CLK_CON_DIV_CLKCMU_G3AA_G3AA,
484         CLK_CON_DIV_CLKCMU_G3D_BUSD,
485         CLK_CON_DIV_CLKCMU_G3D_GLB,
486         CLK_CON_DIV_CLKCMU_G3D_SWITCH,
487         CLK_CON_DIV_CLKCMU_GDC_GDC0,
488         CLK_CON_DIV_CLKCMU_GDC_GDC1,
489         CLK_CON_DIV_CLKCMU_GDC_SCSC,
490         CLK_CON_DIV_CLKCMU_HPM,
491         CLK_CON_DIV_CLKCMU_HSI0_BUS,
492         CLK_CON_DIV_CLKCMU_HSI0_DPGTC,
493         CLK_CON_DIV_CLKCMU_HSI0_USB31DRD,
494         CLK_CON_DIV_CLKCMU_HSI0_USBDPDBG,
495         CLK_CON_DIV_CLKCMU_HSI1_BUS,
496         CLK_CON_DIV_CLKCMU_HSI1_PCIE,
497         CLK_CON_DIV_CLKCMU_HSI2_BUS,
498         CLK_CON_DIV_CLKCMU_HSI2_MMC_CARD,
499         CLK_CON_DIV_CLKCMU_HSI2_PCIE,
500         CLK_CON_DIV_CLKCMU_HSI2_UFS_EMBD,
501         CLK_CON_DIV_CLKCMU_IPP_BUS,
502         CLK_CON_DIV_CLKCMU_ITP_BUS,
503         CLK_CON_DIV_CLKCMU_MCSC_ITSC,
504         CLK_CON_DIV_CLKCMU_MCSC_MCSC,
505         CLK_CON_DIV_CLKCMU_MFC_MFC,
506         CLK_CON_DIV_CLKCMU_MIF_BUSP,
507         CLK_CON_DIV_CLKCMU_MISC_BUS,
508         CLK_CON_DIV_CLKCMU_MISC_SSS,
509         CLK_CON_DIV_CLKCMU_OTP,
510         CLK_CON_DIV_CLKCMU_PDP_BUS,
511         CLK_CON_DIV_CLKCMU_PDP_VRA,
512         CLK_CON_DIV_CLKCMU_PERIC0_BUS,
513         CLK_CON_DIV_CLKCMU_PERIC0_IP,
514         CLK_CON_DIV_CLKCMU_PERIC1_BUS,
515         CLK_CON_DIV_CLKCMU_PERIC1_IP,
516         CLK_CON_DIV_CLKCMU_TNR_BUS,
517         CLK_CON_DIV_CLKCMU_TPU_BUS,
518         CLK_CON_DIV_CLKCMU_TPU_TPU,
519         CLK_CON_DIV_CLKCMU_TPU_TPUCTL,
520         CLK_CON_DIV_CLKCMU_TPU_UART,
521         CLK_CON_DIV_DIV_CLKCMU_CMU_BOOST,
522         CLK_CON_DIV_DIV_CLK_CMU_CMUREF,
523         CLK_CON_DIV_PLL_SHARED0_DIV2,
524         CLK_CON_DIV_PLL_SHARED0_DIV3,
525         CLK_CON_DIV_PLL_SHARED0_DIV4,
526         CLK_CON_DIV_PLL_SHARED0_DIV5,
527         CLK_CON_DIV_PLL_SHARED1_DIV2,
528         CLK_CON_DIV_PLL_SHARED1_DIV3,
529         CLK_CON_DIV_PLL_SHARED1_DIV4,
530         CLK_CON_DIV_PLL_SHARED2_DIV2,
531         CLK_CON_DIV_PLL_SHARED3_DIV2,
532         CLK_CON_GAT_CLKCMU_BUS0_BOOST,
533         CLK_CON_GAT_CLKCMU_BUS1_BOOST,
534         CLK_CON_GAT_CLKCMU_BUS2_BOOST,
535         CLK_CON_GAT_CLKCMU_CORE_BOOST,
536         CLK_CON_GAT_CLKCMU_CPUCL0_BOOST,
537         CLK_CON_GAT_CLKCMU_CPUCL1_BOOST,
538         CLK_CON_GAT_CLKCMU_CPUCL2_BOOST,
539         CLK_CON_GAT_CLKCMU_MIF_BOOST,
540         CLK_CON_GAT_CLKCMU_MIF_SWITCH,
541         CLK_CON_GAT_GATE_CLKCMU_BO_BUS,
542         CLK_CON_GAT_GATE_CLKCMU_BUS0_BUS,
543         CLK_CON_GAT_GATE_CLKCMU_BUS1_BUS,
544         CLK_CON_GAT_GATE_CLKCMU_BUS2_BUS,
545         CLK_CON_GAT_GATE_CLKCMU_CIS_CLK0,
546         CLK_CON_GAT_GATE_CLKCMU_CIS_CLK1,
547         CLK_CON_GAT_GATE_CLKCMU_CIS_CLK2,
548         CLK_CON_GAT_GATE_CLKCMU_CIS_CLK3,
549         CLK_CON_GAT_GATE_CLKCMU_CIS_CLK4,
550         CLK_CON_GAT_GATE_CLKCMU_CIS_CLK5,
551         CLK_CON_GAT_GATE_CLKCMU_CIS_CLK6,
552         CLK_CON_GAT_GATE_CLKCMU_CIS_CLK7,
553         CLK_CON_GAT_GATE_CLKCMU_CMU_BOOST,
554         CLK_CON_GAT_GATE_CLKCMU_CORE_BUS,
555         CLK_CON_GAT_GATE_CLKCMU_CPUCL0_DBG_BUS,
556         CLK_CON_GAT_GATE_CLKCMU_CPUCL0_SWITCH,
557         CLK_CON_GAT_GATE_CLKCMU_CPUCL1_SWITCH,
558         CLK_CON_GAT_GATE_CLKCMU_CPUCL2_SWITCH,
559         CLK_CON_GAT_GATE_CLKCMU_CSIS_BUS,
560         CLK_CON_GAT_GATE_CLKCMU_DISP_BUS,
561         CLK_CON_GAT_GATE_CLKCMU_DNS_BUS,
562         CLK_CON_GAT_GATE_CLKCMU_DPU_BUS,
563         CLK_CON_GAT_GATE_CLKCMU_EH_BUS,
564         CLK_CON_GAT_GATE_CLKCMU_G2D_G2D,
565         CLK_CON_GAT_GATE_CLKCMU_G2D_MSCL,
566         CLK_CON_GAT_GATE_CLKCMU_G3AA_G3AA,
567         CLK_CON_GAT_GATE_CLKCMU_G3D_BUSD,
568         CLK_CON_GAT_GATE_CLKCMU_G3D_GLB,
569         CLK_CON_GAT_GATE_CLKCMU_G3D_SWITCH,
570         CLK_CON_GAT_GATE_CLKCMU_GDC_GDC0,
571         CLK_CON_GAT_GATE_CLKCMU_GDC_GDC1,
572         CLK_CON_GAT_GATE_CLKCMU_GDC_SCSC,
573         CLK_CON_GAT_GATE_CLKCMU_HPM,
574         CLK_CON_GAT_GATE_CLKCMU_HSI0_BUS,
575         CLK_CON_GAT_GATE_CLKCMU_HSI0_DPGTC,
576         CLK_CON_GAT_GATE_CLKCMU_HSI0_USB31DRD,
577         CLK_CON_GAT_GATE_CLKCMU_HSI0_USBDPDBG,
578         CLK_CON_GAT_GATE_CLKCMU_HSI1_BUS,
579         CLK_CON_GAT_GATE_CLKCMU_HSI1_PCIE,
580         CLK_CON_GAT_GATE_CLKCMU_HSI2_BUS,
581         CLK_CON_GAT_GATE_CLKCMU_HSI2_MMCCARD,
582         CLK_CON_GAT_GATE_CLKCMU_HSI2_PCIE,
583         CLK_CON_GAT_GATE_CLKCMU_HSI2_UFS_EMBD,
584         CLK_CON_GAT_GATE_CLKCMU_IPP_BUS,
585         CLK_CON_GAT_GATE_CLKCMU_ITP_BUS,
586         CLK_CON_GAT_GATE_CLKCMU_MCSC_ITSC,
587         CLK_CON_GAT_GATE_CLKCMU_MCSC_MCSC,
588         CLK_CON_GAT_GATE_CLKCMU_MFC_MFC,
589         CLK_CON_GAT_GATE_CLKCMU_MIF_BUSP,
590         CLK_CON_GAT_GATE_CLKCMU_MISC_BUS,
591         CLK_CON_GAT_GATE_CLKCMU_MISC_SSS,
592         CLK_CON_GAT_GATE_CLKCMU_PDP_BUS,
593         CLK_CON_GAT_GATE_CLKCMU_PDP_VRA,
594         CLK_CON_GAT_GATE_CLKCMU_PERIC0_BUS,
595         CLK_CON_GAT_GATE_CLKCMU_PERIC0_IP,
596         CLK_CON_GAT_GATE_CLKCMU_PERIC1_BUS,
597         CLK_CON_GAT_GATE_CLKCMU_PERIC1_IP,
598         CLK_CON_GAT_GATE_CLKCMU_TNR_BUS,
599         CLK_CON_GAT_GATE_CLKCMU_TOP_CMUREF,
600         CLK_CON_GAT_GATE_CLKCMU_TPU_BUS,
601         CLK_CON_GAT_GATE_CLKCMU_TPU_TPU,
602         CLK_CON_GAT_GATE_CLKCMU_TPU_TPUCTL,
603         CLK_CON_GAT_GATE_CLKCMU_TPU_UART,
604         DMYQCH_CON_CMU_TOP_CMUREF_QCH,
605         DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK0,
606         DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK1,
607         DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK2,
608         DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK3,
609         DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK4,
610         DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK5,
611         DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK6,
612         DMYQCH_CON_DFTMUX_CMU_QCH_CIS_CLK7,
613         DMYQCH_CON_OTP_QCH,
614         QUEUE_CTRL_REG_BLK_CMU_CMU_TOP,
615         QUEUE_ENTRY0_BLK_CMU_CMU_TOP,
616         QUEUE_ENTRY1_BLK_CMU_CMU_TOP,
617         QUEUE_ENTRY2_BLK_CMU_CMU_TOP,
618         QUEUE_ENTRY3_BLK_CMU_CMU_TOP,
619         QUEUE_ENTRY4_BLK_CMU_CMU_TOP,
620         QUEUE_ENTRY5_BLK_CMU_CMU_TOP,
621         QUEUE_ENTRY6_BLK_CMU_CMU_TOP,
622         QUEUE_ENTRY7_BLK_CMU_CMU_TOP,
623         MIFMIRROR_QUEUE_CTRL_REG,
624         MIFMIRROR_QUEUE_ENTRY0,
625         MIFMIRROR_QUEUE_ENTRY1,
626         MIFMIRROR_QUEUE_ENTRY2,
627         MIFMIRROR_QUEUE_ENTRY3,
628         MIFMIRROR_QUEUE_ENTRY4,
629         MIFMIRROR_QUEUE_ENTRY5,
630         MIFMIRROR_QUEUE_ENTRY6,
631         MIFMIRROR_QUEUE_ENTRY7,
632         MIFMIRROR_QUEUE_BUSY,
633         GENERALIO_ACD_CHANNEL_0,
634         GENERALIO_ACD_CHANNEL_1,
635         GENERALIO_ACD_CHANNEL_2,
636         GENERALIO_ACD_CHANNEL_3,
637         GENERALIO_ACD_MASK,
638 };
639
640 static const struct samsung_pll_clock cmu_top_pll_clks[] __initconst = {
641         /* CMU_TOP_PURECLKCOMP */
642         PLL(pll_0517x, CLK_FOUT_SHARED0_PLL, "fout_shared0_pll", "oscclk",
643             PLL_LOCKTIME_PLL_SHARED0, PLL_CON3_PLL_SHARED0,
644             NULL),
645         PLL(pll_0517x, CLK_FOUT_SHARED1_PLL, "fout_shared1_pll", "oscclk",
646             PLL_LOCKTIME_PLL_SHARED1, PLL_CON3_PLL_SHARED1,
647             NULL),
648         PLL(pll_0518x, CLK_FOUT_SHARED2_PLL, "fout_shared2_pll", "oscclk",
649             PLL_LOCKTIME_PLL_SHARED2, PLL_CON3_PLL_SHARED2,
650             NULL),
651         PLL(pll_0518x, CLK_FOUT_SHARED3_PLL, "fout_shared3_pll", "oscclk",
652             PLL_LOCKTIME_PLL_SHARED3, PLL_CON3_PLL_SHARED3,
653             NULL),
654         PLL(pll_0518x, CLK_FOUT_SPARE_PLL, "fout_spare_pll", "oscclk",
655             PLL_LOCKTIME_PLL_SPARE, PLL_CON3_PLL_SPARE,
656             NULL),
657 };
658
659 /* List of parent clocks for Muxes in CMU_TOP */
660 PNAME(mout_pll_shared0_p)       = { "oscclk", "fout_shared0_pll" };
661 PNAME(mout_pll_shared1_p)       = { "oscclk", "fout_shared1_pll" };
662 PNAME(mout_pll_shared2_p)       = { "oscclk", "fout_shared2_pll" };
663 PNAME(mout_pll_shared3_p)       = { "oscclk", "fout_shared3_pll" };
664 PNAME(mout_pll_spare_p)         = { "oscclk", "fout_spare_pll" };
665 PNAME(mout_cmu_bo_bus_p)        = { "fout_shared2_pll", "dout_cmu_shared0_div3",
666                                     "fout_shared3_pll", "dout_cmu_shared1_div3",
667                                     "dout_cmu_shared0_div4",
668                                     "dout_cmu_shared1_div4",
669                                     "fout_spare_pll", "oscclk" };
670 PNAME(mout_cmu_bus0_bus_p)      = { "dout_cmu_shared0_div4",
671                                     "dout_cmu_shared1_div4",
672                                     "dout_cmu_shared2_div2",
673                                     "dout_cmu_shared3_div2",
674                                     "fout_spare_pll", "oscclk",
675                                     "oscclk", "oscclk" };
676 PNAME(mout_cmu_bus1_bus_p)      = { "dout_cmu_shared0_div3", "fout_shared3_pll",
677                                     "dout_cmu_shared1_div3",
678                                     "dout_cmu_shared0_div4",
679                                     "dout_cmu_shared1_div4",
680                                     "dout_cmu_shared2_div2",
681                                     "fout_spare_pll", "oscclk" };
682 PNAME(mout_cmu_bus2_bus_p)      = { "dout_cmu_shared0_div2",
683                                     "dout_cmu_shared1_div2",
684                                     "fout_shared2_pll", "fout_shared3_pll",
685                                     "dout_cmu_shared0_div3",
686                                     "dout_cmu_shared1_div3",
687                                     "dout_cmu_shared0_div5", "fout_spare_pll" };
688 PNAME(mout_cmu_cis_clk0_7_p)    = { "oscclk", "dout_cmu_shared0_div3",
689                                     "dout_cmu_shared1_div3",
690                                     "dout_cmu_shared2_div2",
691                                     "dout_cmu_shared3_div2", "fout_spare_pll",
692                                     "oscclk", "oscclk" };
693 PNAME(mout_cmu_cmu_boost_p)     = { "dout_cmu_shared0_div4",
694                                     "dout_cmu_shared1_div4",
695                                     "dout_cmu_shared2_div2",
696                                     "dout_cmu_shared3_div2" };
697 PNAME(mout_cmu_cmu_boost_option1_p) = { "dout_cmu_cmu_boost",
698                                         "gout_cmu_boost_option1" };
699 PNAME(mout_cmu_core_bus_p)      = { "dout_cmu_shared0_div2",
700                                     "dout_cmu_shared1_div2",
701                                     "fout_shared2_pll", "fout_shared3_pll",
702                                     "dout_cmu_shared0_div3",
703                                     "dout_cmu_shared1_div3",
704                                     "dout_cmu_shared0_div5", "fout_spare_pll" };
705 PNAME(mout_cmu_cpucl0_dbg_p)    = { "fout_shared2_pll", "fout_shared3_pll",
706                                     "dout_cmu_shared0_div4",
707                                     "dout_cmu_shared1_div4",
708                                     "dout_cmu_shared2_div2", "fout_spare_pll",
709                                     "oscclk", "oscclk" };
710 PNAME(mout_cmu_cpucl0_switch_p) = { "fout_shared1_pll", "dout_cmu_shared0_div2",
711                                     "dout_cmu_shared1_div2", "fout_shared2_pll",
712                                     "fout_shared3_pll", "dout_cmu_shared0_div3",
713                                     "dout_cmu_shared1_div3", "fout_spare_pll" };
714 PNAME(mout_cmu_cpucl1_switch_p) = { "fout_shared1_pll", "dout_cmu_shared0_div2",
715                                     "dout_cmu_shared1_div2", "fout_shared2_pll",
716                                     "fout_shared3_pll", "dout_cmu_shared0_div3",
717                                     "dout_cmu_shared1_div3", "fout_spare_pll" };
718 PNAME(mout_cmu_cpucl2_switch_p) = { "fout_shared1_pll", "dout_cmu_shared0_div2",
719                                     "dout_cmu_shared1_div2", "fout_shared2_pll",
720                                     "fout_shared3_pll", "dout_cmu_shared0_div3",
721                                     "dout_cmu_shared1_div3", "fout_spare_pll" };
722 PNAME(mout_cmu_csis_bus_p)      = { "dout_cmu_shared0_div3", "fout_shared3_pll",
723                                     "dout_cmu_shared1_div3",
724                                     "dout_cmu_shared0_div4",
725                                     "dout_cmu_shared1_div4",
726                                     "dout_cmu_shared2_div2",
727                                     "fout_spare_pll", "oscclk" };
728 PNAME(mout_cmu_disp_bus_p)      = { "dout_cmu_shared0_div3", "fout_shared3_pll",
729                                     "dout_cmu_shared1_div3",
730                                     "dout_cmu_shared0_div4",
731                                     "dout_cmu_shared1_div4",
732                                     "dout_cmu_shared2_div2",
733                                     "fout_spare_pll", "oscclk" };
734 PNAME(mout_cmu_dns_bus_p)       = { "dout_cmu_shared0_div3", "fout_shared3_pll",
735                                     "dout_cmu_shared1_div3",
736                                     "dout_cmu_shared0_div4",
737                                     "dout_cmu_shared1_div4",
738                                     "dout_cmu_shared2_div2",
739                                     "fout_spare_pll", "oscclk" };
740 PNAME(mout_cmu_dpu_p)           = { "dout_cmu_shared0_div3",
741                                     "fout_shared3_pll",
742                                     "dout_cmu_shared1_div3",
743                                     "dout_cmu_shared0_div4",
744                                     "dout_cmu_shared1_div4",
745                                     "dout_cmu_shared2_div2",
746                                     "fout_spare_pll", "oscclk" };
747 PNAME(mout_cmu_eh_bus_p)        = { "dout_cmu_shared0_div2",
748                                     "dout_cmu_shared1_div2",
749                                     "fout_shared2_pll", "fout_shared3_pll",
750                                     "dout_cmu_shared0_div3",
751                                     "dout_cmu_shared1_div3",
752                                     "dout_cmu_shared0_div5", "fout_spare_pll" };
753 PNAME(mout_cmu_g2d_g2d_p)       = { "dout_cmu_shared0_div3", "fout_shared3_pll",
754                                     "dout_cmu_shared1_div3",
755                                     "dout_cmu_shared0_div4",
756                                     "dout_cmu_shared1_div4",
757                                     "dout_cmu_shared2_div2",
758                                     "fout_spare_pll", "oscclk" };
759 PNAME(mout_cmu_g2d_mscl_p)      = { "dout_cmu_shared0_div4",
760                                     "dout_cmu_shared1_div4",
761                                     "dout_cmu_shared2_div2",
762                                     "dout_cmu_shared3_div2",
763                                     "fout_spare_pll", "oscclk",
764                                     "oscclk", "oscclk" };
765 PNAME(mout_cmu_g3aa_g3aa_p)     = { "dout_cmu_shared0_div3", "fout_shared3_pll",
766                                     "dout_cmu_shared1_div3",
767                                     "dout_cmu_shared0_div4",
768                                     "dout_cmu_shared1_div4",
769                                     "dout_cmu_shared2_div2",
770                                     "fout_spare_pll", "oscclk" };
771 PNAME(mout_cmu_g3d_busd_p)      = { "dout_cmu_shared0_div2",
772                                     "dout_cmu_shared1_div2",
773                                     "fout_shared2_pll", "fout_shared3_pll",
774                                     "dout_cmu_shared0_div3",
775                                     "dout_cmu_shared1_div3",
776                                     "dout_cmu_shared0_div4", "fout_spare_pll" };
777 PNAME(mout_cmu_g3d_glb_p)       = { "dout_cmu_shared0_div2",
778                                     "dout_cmu_shared1_div2",
779                                     "fout_shared2_pll", "fout_shared3_pll",
780                                     "dout_cmu_shared0_div3",
781                                     "dout_cmu_shared1_div3",
782                                     "dout_cmu_shared0_div4", "fout_spare_pll" };
783 PNAME(mout_cmu_g3d_switch_p)    = { "fout_shared2_pll", "dout_cmu_shared0_div3",
784                                     "fout_shared3_pll", "dout_cmu_shared1_div3",
785                                     "dout_cmu_shared0_div4",
786                                     "dout_cmu_shared1_div4",
787                                     "fout_spare_pll", "fout_spare_pll"};
788 PNAME(mout_cmu_gdc_gdc0_p)      = { "dout_cmu_shared0_div3", "fout_shared3_pll",
789                                     "dout_cmu_shared1_div3",
790                                     "dout_cmu_shared0_div4",
791                                     "dout_cmu_shared1_div4",
792                                     "dout_cmu_shared2_div2",
793                                     "fout_spare_pll", "oscclk" };
794 PNAME(mout_cmu_gdc_gdc1_p)      = { "dout_cmu_shared0_div3", "fout_shared3_pll",
795                                     "dout_cmu_shared1_div3",
796                                     "dout_cmu_shared0_div4",
797                                     "dout_cmu_shared1_div4",
798                                     "dout_cmu_shared2_div2",
799                                     "fout_spare_pll", "oscclk" };
800 PNAME(mout_cmu_gdc_scsc_p)      = { "dout_cmu_shared0_div3", "fout_shared3_pll",
801                                     "dout_cmu_shared1_div3",
802                                     "dout_cmu_shared0_div4",
803                                     "dout_cmu_shared1_div4",
804                                     "dout_cmu_shared2_div2",
805                                     "fout_spare_pll", "oscclk" };
806 PNAME(mout_cmu_hpm_p)           = { "oscclk", "dout_cmu_shared1_div3",
807                                     "dout_cmu_shared0_div4",
808                                     "dout_cmu_shared2_div2" };
809 PNAME(mout_cmu_hsi0_bus_p)      = { "dout_cmu_shared0_div4",
810                                     "dout_cmu_shared1_div4",
811                                     "dout_cmu_shared2_div2",
812                                     "dout_cmu_shared3_div2",
813                                     "fout_spare_pll", "oscclk",
814                                     "oscclk", "oscclk" };
815 PNAME(mout_cmu_hsi0_dpgtc_p)    = { "oscclk", "dout_cmu_shared0_div4",
816                                     "dout_cmu_shared2_div2", "fout_spare_pll" };
817 PNAME(mout_cmu_hsi0_usb31drd_p) = { "oscclk", "dout_cmu_shared2_div2" };
818 PNAME(mout_cmu_hsi0_usbdpdbg_p) = { "oscclk", "dout_cmu_shared2_div2" };
819 PNAME(mout_cmu_hsi1_bus_p)      = { "dout_cmu_shared0_div4",
820                                     "dout_cmu_shared1_div4",
821                                     "dout_cmu_shared2_div2",
822                                     "dout_cmu_shared3_div2",
823                                     "fout_spare_pll" };
824 PNAME(mout_cmu_hsi1_pcie_p)     = { "oscclk", "dout_cmu_shared2_div2" };
825 PNAME(mout_cmu_hsi2_bus_p)      = { "dout_cmu_shared0_div4",
826                                     "dout_cmu_shared1_div4",
827                                     "dout_cmu_shared2_div2",
828                                     "dout_cmu_shared3_div2",
829                                     "fout_spare_pll", "oscclk",
830                                     "oscclk", "oscclk" };
831 PNAME(mout_cmu_hsi2_mmc_card_p) = { "fout_shared2_pll", "fout_shared3_pll",
832                                     "dout_cmu_shared0_div4", "fout_spare_pll" };
833 PNAME(mout_cmu_hsi2_pcie0_p)    = { "oscclk", "dout_cmu_shared2_div2" };
834 PNAME(mout_cmu_hsi2_ufs_embd_p) = { "oscclk", "dout_cmu_shared0_div4",
835                                     "dout_cmu_shared2_div2", "fout_spare_pll" };
836 PNAME(mout_cmu_ipp_bus_p)       = { "dout_cmu_shared0_div3", "fout_shared3_pll",
837                                     "dout_cmu_shared1_div3",
838                                     "dout_cmu_shared0_div4",
839                                     "dout_cmu_shared1_div4",
840                                     "dout_cmu_shared2_div2",
841                                     "fout_spare_pll", "oscclk" };
842 PNAME(mout_cmu_itp_bus_p)       = { "dout_cmu_shared0_div3", "fout_shared3_pll",
843                                     "dout_cmu_shared1_div3",
844                                     "dout_cmu_shared0_div4",
845                                     "dout_cmu_shared1_div4",
846                                     "dout_cmu_shared2_div2",
847                                     "fout_spare_pll", "oscclk" };
848 PNAME(mout_cmu_mcsc_itsc_p)     = { "dout_cmu_shared0_div3", "fout_shared3_pll",
849                                     "dout_cmu_shared1_div3",
850                                     "dout_cmu_shared0_div4",
851                                     "dout_cmu_shared1_div4",
852                                     "dout_cmu_shared2_div2",
853                                     "fout_spare_pll", "oscclk" };
854 PNAME(mout_cmu_mcsc_mcsc_p)     = { "dout_cmu_shared0_div3", "fout_shared3_pll",
855                                     "dout_cmu_shared1_div3",
856                                     "dout_cmu_shared0_div4",
857                                     "dout_cmu_shared1_div4",
858                                     "dout_cmu_shared2_div2",
859                                     "fout_spare_pll", "oscclk" };
860 PNAME(mout_cmu_mfc_mfc_p)       = { "dout_cmu_shared0_div3", "fout_shared3_pll",
861                                     "dout_cmu_shared0_div4",
862                                     "dout_cmu_shared1_div4",
863                                     "dout_cmu_shared2_div2", "fout_spare_pll",
864                                     "oscclk", "oscclk" };
865 PNAME(mout_cmu_mif_busp_p)      = { "dout_cmu_shared0_div4",
866                                     "dout_cmu_shared1_div4",
867                                     "dout_cmu_shared0_div5", "fout_spare_pll" };
868 PNAME(mout_cmu_mif_switch_p)    = { "fout_shared0_pll", "fout_shared1_pll",
869                                     "dout_cmu_shared0_div2",
870                                     "dout_cmu_shared1_div2",
871                                     "fout_shared2_pll", "dout_cmu_shared0_div3",
872                                     "fout_shared3_pll", "fout_spare_pll" };
873 PNAME(mout_cmu_misc_bus_p)      = { "dout_cmu_shared0_div4",
874                                     "dout_cmu_shared2_div2",
875                                     "dout_cmu_shared3_div2", "fout_spare_pll" };
876 PNAME(mout_cmu_misc_sss_p)      = { "dout_cmu_shared0_div4",
877                                     "dout_cmu_shared2_div2",
878                                     "dout_cmu_shared3_div2", "fout_spare_pll" };
879 PNAME(mout_cmu_pdp_bus_p)       = { "dout_cmu_shared0_div3", "fout_shared3_pll",
880                                     "dout_cmu_shared1_div3",
881                                     "dout_cmu_shared0_div4",
882                                     "dout_cmu_shared1_div4",
883                                     "dout_cmu_shared2_div2",
884                                     "fout_spare_pll", "oscclk" };
885 PNAME(mout_cmu_pdp_vra_p)       = { "fout_shared2_pll", "dout_cmu_shared0_div3",
886                                     "fout_shared3_pll", "dout_cmu_shared1_div3",
887                                     "dout_cmu_shared0_div4",
888                                     "dout_cmu_shared1_div4",
889                                     "fout_spare_pll", "oscclk" };
890 PNAME(mout_cmu_peric0_bus_p)    = { "dout_cmu_shared0_div4",
891                                     "dout_cmu_shared2_div2",
892                                     "dout_cmu_shared3_div2", "fout_spare_pll" };
893 PNAME(mout_cmu_peric0_ip_p)     = { "dout_cmu_shared0_div4",
894                                     "dout_cmu_shared2_div2",
895                                     "dout_cmu_shared3_div2", "fout_spare_pll" };
896 PNAME(mout_cmu_peric1_bus_p)    = { "dout_cmu_shared0_div4",
897                                     "dout_cmu_shared2_div2",
898                                     "dout_cmu_shared3_div2", "fout_spare_pll" };
899 PNAME(mout_cmu_peric1_ip_p)     = { "dout_cmu_shared0_div4",
900                                     "dout_cmu_shared2_div2",
901                                     "dout_cmu_shared3_div2", "fout_spare_pll" };
902 PNAME(mout_cmu_tnr_bus_p)       = { "dout_cmu_shared0_div3", "fout_shared3_pll",
903                                     "dout_cmu_shared1_div3",
904                                     "dout_cmu_shared0_div4",
905                                     "dout_cmu_shared1_div4",
906                                     "dout_cmu_shared2_div2",
907                                     "fout_spare_pll", "oscclk" };
908 PNAME(mout_cmu_top_boost_option1_p) = { "oscclk",
909                                         "gout_cmu_boost_option1" };
910 PNAME(mout_cmu_top_cmuref_p)    = { "dout_cmu_shared0_div4",
911                                     "dout_cmu_shared1_div4",
912                                     "dout_cmu_shared2_div2",
913                                     "dout_cmu_shared3_div2" };
914 PNAME(mout_cmu_tpu_bus_p)       = { "dout_cmu_shared0_div2",
915                                     "dout_cmu_shared1_div2",
916                                     "fout_shared2_pll",
917                                     "fout_shared3_pll",
918                                     "dout_cmu_shared0_div3",
919                                     "dout_cmu_shared1_div3",
920                                     "dout_cmu_shared0_div4",
921                                     "fout_spare_pll" };
922 PNAME(mout_cmu_tpu_tpu_p)       = { "dout_cmu_shared0_div2",
923                                     "dout_cmu_shared1_div2",
924                                     "fout_shared2_pll",
925                                     "fout_shared3_pll",
926                                     "dout_cmu_shared0_div3",
927                                     "dout_cmu_shared1_div3",
928                                     "dout_cmu_shared0_div4", "fout_spare_pll" };
929 PNAME(mout_cmu_tpu_tpuctl_p)    = { "dout_cmu_shared0_div2",
930                                     "dout_cmu_shared1_div2",
931                                     "fout_shared2_pll", "fout_shared3_pll",
932                                     "dout_cmu_shared0_div3",
933                                     "dout_cmu_shared1_div3",
934                                     "dout_cmu_shared0_div4", "fout_spare_pll" };
935 PNAME(mout_cmu_tpu_uart_p)      = { "dout_cmu_shared0_div4",
936                                     "dout_cmu_shared2_div2",
937                                     "dout_cmu_shared3_div2", "fout_spare_pll" };
938 PNAME(mout_cmu_cmuref_p)        = { "mout_cmu_top_boost_option1",
939                                     "dout_cmu_cmuref" };
940
941 /*
942  * Register name to clock name mangling strategy used in this file
943  *
944  * Replace PLL_CON0_PLL            with CLK_MOUT_PLL and mout_pll
945  * Replace CLK_CON_MUX_MUX_CLKCMU  with CLK_MOUT_CMU and mout_cmu
946  * Replace CLK_CON_DIV_CLKCMU      with CLK_DOUT_CMU and dout_cmu
947  * Replace CLK_CON_DIV_DIV_CLKCMU  with CLK_DOUT_CMU and dout_cmu
948  * Replace CLK_CON_GAT_CLKCMU      with CLK_GOUT_CMU and gout_cmu
949  * Replace CLK_CON_GAT_GATE_CLKCMU with CLK_GOUT_CMU and gout_cmu
950  *
951  * For gates remove _UID _BLK _IPCLKPORT and _RSTNSYNC
952  */
953
954 static const struct samsung_mux_clock cmu_top_mux_clks[] __initconst = {
955         MUX(CLK_MOUT_PLL_SHARED0, "mout_pll_shared0", mout_pll_shared0_p,
956             PLL_CON0_PLL_SHARED0, 4, 1),
957         MUX(CLK_MOUT_PLL_SHARED1, "mout_pll_shared1", mout_pll_shared1_p,
958             PLL_CON0_PLL_SHARED1, 4, 1),
959         MUX(CLK_MOUT_PLL_SHARED2, "mout_pll_shared2", mout_pll_shared2_p,
960             PLL_CON0_PLL_SHARED2, 4, 1),
961         MUX(CLK_MOUT_PLL_SHARED3, "mout_pll_shared3", mout_pll_shared3_p,
962             PLL_CON0_PLL_SHARED3, 4, 1),
963         MUX(CLK_MOUT_PLL_SPARE, "mout_pll_spare", mout_pll_spare_p,
964             PLL_CON0_PLL_SPARE, 4, 1),
965         MUX(CLK_MOUT_CMU_BO_BUS, "mout_cmu_bo_bus", mout_cmu_bo_bus_p,
966             CLK_CON_MUX_MUX_CLKCMU_BO_BUS, 0, 3),
967         MUX(CLK_MOUT_CMU_BUS0_BUS, "mout_cmu_bus0_bus", mout_cmu_bus0_bus_p,
968             CLK_CON_MUX_MUX_CLKCMU_BUS0_BUS, 0, 3),
969         MUX(CLK_MOUT_CMU_BUS1_BUS, "mout_cmu_bus1_bus", mout_cmu_bus1_bus_p,
970             CLK_CON_MUX_MUX_CLKCMU_BUS1_BUS, 0, 3),
971         MUX(CLK_MOUT_CMU_BUS2_BUS, "mout_cmu_bus2_bus", mout_cmu_bus2_bus_p,
972             CLK_CON_MUX_MUX_CLKCMU_BUS2_BUS, 0, 3),
973         MUX(CLK_MOUT_CMU_CIS_CLK0, "mout_cmu_cis_clk0", mout_cmu_cis_clk0_7_p,
974             CLK_CON_MUX_MUX_CLKCMU_CIS_CLK0, 0, 3),
975         MUX(CLK_MOUT_CMU_CIS_CLK1, "mout_cmu_cis_clk1", mout_cmu_cis_clk0_7_p,
976             CLK_CON_MUX_MUX_CLKCMU_CIS_CLK1, 0, 3),
977         MUX(CLK_MOUT_CMU_CIS_CLK2, "mout_cmu_cis_clk2", mout_cmu_cis_clk0_7_p,
978             CLK_CON_MUX_MUX_CLKCMU_CIS_CLK2, 0, 3),
979         MUX(CLK_MOUT_CMU_CIS_CLK3, "mout_cmu_cis_clk3", mout_cmu_cis_clk0_7_p,
980             CLK_CON_MUX_MUX_CLKCMU_CIS_CLK3, 0, 3),
981         MUX(CLK_MOUT_CMU_CIS_CLK4, "mout_cmu_cis_clk4", mout_cmu_cis_clk0_7_p,
982             CLK_CON_MUX_MUX_CLKCMU_CIS_CLK4, 0, 3),
983         MUX(CLK_MOUT_CMU_CIS_CLK5, "mout_cmu_cis_clk5", mout_cmu_cis_clk0_7_p,
984             CLK_CON_MUX_MUX_CLKCMU_CIS_CLK5, 0, 3),
985         MUX(CLK_MOUT_CMU_CIS_CLK6, "mout_cmu_cis_clk6", mout_cmu_cis_clk0_7_p,
986             CLK_CON_MUX_MUX_CLKCMU_CIS_CLK6, 0, 3),
987         MUX(CLK_MOUT_CMU_CIS_CLK7, "mout_cmu_cis_clk7", mout_cmu_cis_clk0_7_p,
988             CLK_CON_MUX_MUX_CLKCMU_CIS_CLK7, 0, 3),
989         MUX(CLK_MOUT_CMU_CMU_BOOST, "mout_cmu_cmu_boost", mout_cmu_cmu_boost_p,
990             CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST, 0, 2),
991         MUX(CLK_MOUT_CMU_BOOST_OPTION1, "mout_cmu_boost_option1",
992             mout_cmu_cmu_boost_option1_p,
993             CLK_CON_MUX_MUX_CLKCMU_CMU_BOOST_OPTION1, 0, 1),
994         MUX(CLK_MOUT_CMU_CORE_BUS, "mout_cmu_core_bus", mout_cmu_core_bus_p,
995             CLK_CON_MUX_MUX_CLKCMU_CORE_BUS, 0, 3),
996         MUX(CLK_MOUT_CMU_CPUCL0_DBG, "mout_cmu_cpucl0_dbg",
997             mout_cmu_cpucl0_dbg_p, CLK_CON_DIV_CLKCMU_CPUCL0_DBG, 0, 3),
998         MUX(CLK_MOUT_CMU_CPUCL0_SWITCH, "mout_cmu_cpucl0_switch",
999             mout_cmu_cpucl0_switch_p, CLK_CON_MUX_MUX_CLKCMU_CPUCL0_SWITCH,
1000             0, 3),
1001         MUX(CLK_MOUT_CMU_CPUCL1_SWITCH, "mout_cmu_cpucl1_switch",
1002             mout_cmu_cpucl1_switch_p, CLK_CON_MUX_MUX_CLKCMU_CPUCL1_SWITCH,
1003             0, 3),
1004         MUX(CLK_MOUT_CMU_CPUCL2_SWITCH, "mout_cmu_cpucl2_switch",
1005             mout_cmu_cpucl2_switch_p, CLK_CON_MUX_MUX_CLKCMU_CPUCL2_SWITCH,
1006             0, 3),
1007         MUX(CLK_MOUT_CMU_CSIS_BUS, "mout_cmu_csis_bus", mout_cmu_csis_bus_p,
1008             CLK_CON_MUX_MUX_CLKCMU_CSIS_BUS, 0, 3),
1009         MUX(CLK_MOUT_CMU_DISP_BUS, "mout_cmu_disp_bus", mout_cmu_disp_bus_p,
1010             CLK_CON_MUX_MUX_CLKCMU_DISP_BUS, 0, 3),
1011         MUX(CLK_MOUT_CMU_DNS_BUS, "mout_cmu_dns_bus", mout_cmu_dns_bus_p,
1012             CLK_CON_MUX_MUX_CLKCMU_DNS_BUS, 0, 3),
1013         MUX(CLK_MOUT_CMU_DPU_BUS, "mout_cmu_dpu_bus", mout_cmu_dpu_p,
1014             CLK_CON_MUX_MUX_CLKCMU_DPU_BUS, 0, 3),
1015         MUX(CLK_MOUT_CMU_EH_BUS, "mout_cmu_eh_bus", mout_cmu_eh_bus_p,
1016             CLK_CON_MUX_MUX_CLKCMU_EH_BUS, 0, 3),
1017         MUX(CLK_MOUT_CMU_G2D_G2D, "mout_cmu_g2d_g2d", mout_cmu_g2d_g2d_p,
1018             CLK_CON_MUX_MUX_CLKCMU_G2D_G2D, 0, 3),
1019         MUX(CLK_MOUT_CMU_G2D_MSCL, "mout_cmu_g2d_mscl", mout_cmu_g2d_mscl_p,
1020             CLK_CON_MUX_MUX_CLKCMU_G2D_MSCL, 0, 3),
1021         MUX(CLK_MOUT_CMU_G3AA_G3AA, "mout_cmu_g3aa_g3aa", mout_cmu_g3aa_g3aa_p,
1022             CLK_CON_MUX_MUX_CLKCMU_G3AA_G3AA, 0, 3),
1023         MUX(CLK_MOUT_CMU_G3D_BUSD, "mout_cmu_g3d_busd", mout_cmu_g3d_busd_p,
1024             CLK_CON_MUX_MUX_CLKCMU_G3D_BUSD, 0, 3),
1025         MUX(CLK_MOUT_CMU_G3D_GLB, "mout_cmu_g3d_glb", mout_cmu_g3d_glb_p,
1026             CLK_CON_MUX_MUX_CLKCMU_G3D_GLB, 0, 3),
1027         MUX(CLK_MOUT_CMU_G3D_SWITCH, "mout_cmu_g3d_switch",
1028             mout_cmu_g3d_switch_p, CLK_CON_MUX_MUX_CLKCMU_G3D_SWITCH, 0, 3),
1029         MUX(CLK_MOUT_CMU_GDC_GDC0, "mout_cmu_gdc_gdc0", mout_cmu_gdc_gdc0_p,
1030             CLK_CON_MUX_MUX_CLKCMU_GDC_GDC0, 0, 3),
1031         MUX(CLK_MOUT_CMU_GDC_GDC1, "mout_cmu_gdc_gdc1", mout_cmu_gdc_gdc1_p,
1032             CLK_CON_MUX_MUX_CLKCMU_GDC_GDC1, 0, 3),
1033         MUX(CLK_MOUT_CMU_GDC_SCSC, "mout_cmu_gdc_scsc", mout_cmu_gdc_scsc_p,
1034             CLK_CON_MUX_MUX_CLKCMU_GDC_SCSC, 0, 3),
1035         MUX(CLK_MOUT_CMU_HPM, "mout_cmu_hpm", mout_cmu_hpm_p,
1036             CLK_CON_MUX_MUX_CLKCMU_HPM, 0, 2),
1037         MUX(CLK_MOUT_CMU_HSI0_BUS, "mout_cmu_hsi0_bus", mout_cmu_hsi0_bus_p,
1038             CLK_CON_MUX_MUX_CLKCMU_HSI0_BUS, 0, 3),
1039         MUX(CLK_MOUT_CMU_HSI0_DPGTC, "mout_cmu_hsi0_dpgtc",
1040             mout_cmu_hsi0_dpgtc_p, CLK_CON_MUX_MUX_CLKCMU_HSI0_DPGTC, 0, 2),
1041         MUX(CLK_MOUT_CMU_HSI0_USB31DRD, "mout_cmu_hsi0_usb31drd",
1042             mout_cmu_hsi0_usb31drd_p, CLK_CON_MUX_MUX_CLKCMU_HSI0_USB31DRD,
1043             0, 1),
1044         MUX(CLK_MOUT_CMU_HSI0_USBDPDBG, "mout_cmu_hsi0_usbdpdbg",
1045             mout_cmu_hsi0_usbdpdbg_p, CLK_CON_MUX_MUX_CLKCMU_HSI0_USBDPDBG,
1046             0, 1),
1047         MUX(CLK_MOUT_CMU_HSI1_BUS, "mout_cmu_hsi1_bus", mout_cmu_hsi1_bus_p,
1048             CLK_CON_MUX_MUX_CLKCMU_HSI1_BUS, 0, 3),
1049         MUX(CLK_MOUT_CMU_HSI1_PCIE, "mout_cmu_hsi1_pcie", mout_cmu_hsi1_pcie_p,
1050             CLK_CON_MUX_MUX_CLKCMU_HSI1_PCIE, 0, 1),
1051         MUX(CLK_MOUT_CMU_HSI2_BUS, "mout_cmu_hsi2_bus", mout_cmu_hsi2_bus_p,
1052             CLK_CON_MUX_MUX_CLKCMU_HSI2_BUS, 0, 3),
1053         MUX(CLK_MOUT_CMU_HSI2_MMC_CARD, "mout_cmu_hsi2_mmc_card",
1054             mout_cmu_hsi2_mmc_card_p, CLK_CON_MUX_MUX_CLKCMU_HSI2_MMC_CARD,
1055             0, 2),
1056         MUX(CLK_MOUT_CMU_HSI2_PCIE, "mout_cmu_hsi2_pcie", mout_cmu_hsi2_pcie0_p,
1057             CLK_CON_MUX_MUX_CLKCMU_HSI2_PCIE, 0, 1),
1058         MUX(CLK_MOUT_CMU_HSI2_UFS_EMBD, "mout_cmu_hsi2_ufs_embd",
1059             mout_cmu_hsi2_ufs_embd_p, CLK_CON_MUX_MUX_CLKCMU_HSI2_UFS_EMBD,
1060             0, 2),
1061         MUX(CLK_MOUT_CMU_IPP_BUS, "mout_cmu_ipp_bus", mout_cmu_ipp_bus_p,
1062             CLK_CON_MUX_MUX_CLKCMU_IPP_BUS, 0, 3),
1063         MUX(CLK_MOUT_CMU_ITP_BUS, "mout_cmu_itp_bus", mout_cmu_itp_bus_p,
1064             CLK_CON_MUX_MUX_CLKCMU_ITP_BUS, 0, 3),
1065         MUX(CLK_MOUT_CMU_MCSC_ITSC, "mout_cmu_mcsc_itsc", mout_cmu_mcsc_itsc_p,
1066             CLK_CON_MUX_MUX_CLKCMU_MCSC_ITSC, 0, 3),
1067         MUX(CLK_MOUT_CMU_MCSC_MCSC, "mout_cmu_mcsc_mcsc", mout_cmu_mcsc_mcsc_p,
1068             CLK_CON_MUX_MUX_CLKCMU_MCSC_MCSC, 0, 3),
1069         MUX(CLK_MOUT_CMU_MFC_MFC, "mout_cmu_mfc_mfc", mout_cmu_mfc_mfc_p,
1070             CLK_CON_MUX_MUX_CLKCMU_MFC_MFC, 0, 3),
1071         MUX(CLK_MOUT_CMU_MIF_BUSP, "mout_cmu_mif_busp", mout_cmu_mif_busp_p,
1072             CLK_CON_MUX_MUX_CLKCMU_MIF_BUSP, 0, 2),
1073         MUX(CLK_MOUT_CMU_MIF_SWITCH, "mout_cmu_mif_switch",
1074             mout_cmu_mif_switch_p, CLK_CON_MUX_MUX_CLKCMU_MIF_SWITCH, 0, 3),
1075         MUX(CLK_MOUT_CMU_MISC_BUS, "mout_cmu_misc_bus", mout_cmu_misc_bus_p,
1076             CLK_CON_MUX_MUX_CLKCMU_MISC_BUS, 0, 2),
1077         MUX(CLK_MOUT_CMU_MISC_SSS, "mout_cmu_misc_sss", mout_cmu_misc_sss_p,
1078             CLK_CON_MUX_MUX_CLKCMU_MISC_SSS, 0, 2),
1079         MUX(CLK_MOUT_CMU_PDP_BUS, "mout_cmu_pdp_bus", mout_cmu_pdp_bus_p,
1080             CLK_CON_MUX_MUX_CLKCMU_PDP_BUS, 0, 3),
1081         MUX(CLK_MOUT_CMU_PDP_VRA, "mout_cmu_pdp_vra", mout_cmu_pdp_vra_p,
1082             CLK_CON_MUX_MUX_CLKCMU_PDP_VRA, 0, 3),
1083         MUX(CLK_MOUT_CMU_PERIC0_BUS, "mout_cmu_peric0_bus",
1084             mout_cmu_peric0_bus_p, CLK_CON_MUX_MUX_CLKCMU_PERIC0_BUS, 0, 2),
1085         MUX(CLK_MOUT_CMU_PERIC0_IP, "mout_cmu_peric0_ip", mout_cmu_peric0_ip_p,
1086             CLK_CON_MUX_MUX_CLKCMU_PERIC0_IP, 0, 2),
1087         MUX(CLK_MOUT_CMU_PERIC1_BUS, "mout_cmu_peric1_bus",
1088             mout_cmu_peric1_bus_p, CLK_CON_MUX_MUX_CLKCMU_PERIC1_BUS, 0, 2),
1089         MUX(CLK_MOUT_CMU_PERIC1_IP, "mout_cmu_peric1_ip", mout_cmu_peric1_ip_p,
1090             CLK_CON_MUX_MUX_CLKCMU_PERIC1_IP, 0, 2),
1091         MUX(CLK_MOUT_CMU_TNR_BUS, "mout_cmu_tnr_bus", mout_cmu_tnr_bus_p,
1092             CLK_CON_MUX_MUX_CLKCMU_TNR_BUS, 0, 3),
1093         MUX(CLK_MOUT_CMU_TOP_BOOST_OPTION1, "mout_cmu_top_boost_option1",
1094             mout_cmu_top_boost_option1_p,
1095             CLK_CON_MUX_MUX_CLKCMU_TOP_BOOST_OPTION1, 0, 1),
1096         MUX(CLK_MOUT_CMU_TOP_CMUREF, "mout_cmu_top_cmuref",
1097             mout_cmu_top_cmuref_p, CLK_CON_MUX_MUX_CLKCMU_TOP_CMUREF, 0, 2),
1098         MUX(CLK_MOUT_CMU_TPU_BUS, "mout_cmu_tpu_bus", mout_cmu_tpu_bus_p,
1099             CLK_CON_MUX_MUX_CLKCMU_TPU_BUS, 0, 3),
1100         MUX(CLK_MOUT_CMU_TPU_TPU, "mout_cmu_tpu_tpu", mout_cmu_tpu_tpu_p,
1101             CLK_CON_MUX_MUX_CLKCMU_TPU_TPU, 0, 3),
1102         MUX(CLK_MOUT_CMU_TPU_TPUCTL, "mout_cmu_tpu_tpuctl",
1103             mout_cmu_tpu_tpuctl_p, CLK_CON_MUX_MUX_CLKCMU_TPU_TPUCTL, 0, 3),
1104         MUX(CLK_MOUT_CMU_TPU_UART, "mout_cmu_tpu_uart", mout_cmu_tpu_uart_p,
1105             CLK_CON_MUX_MUX_CLKCMU_TPU_UART, 0, 2),
1106         MUX(CLK_MOUT_CMU_CMUREF, "mout_cmu_cmuref", mout_cmu_cmuref_p,
1107             CLK_CON_MUX_MUX_CMU_CMUREF, 0, 1),
1108 };
1109
1110 static const struct samsung_div_clock cmu_top_div_clks[] __initconst = {
1111         DIV(CLK_DOUT_CMU_BO_BUS, "dout_cmu_bo_bus", "gout_cmu_bo_bus",
1112             CLK_CON_DIV_CLKCMU_BO_BUS, 0, 4),
1113         DIV(CLK_DOUT_CMU_BUS0_BUS, "dout_cmu_bus0_bus", "gout_cmu_bus0_bus",
1114             CLK_CON_DIV_CLKCMU_BUS0_BUS, 0, 4),
1115         DIV(CLK_DOUT_CMU_BUS1_BUS, "dout_cmu_bus1_bus", "gout_cmu_bus1_bus",
1116             CLK_CON_DIV_CLKCMU_BUS1_BUS, 0, 4),
1117         DIV(CLK_DOUT_CMU_BUS2_BUS, "dout_cmu_bus2_bus", "gout_cmu_bus2_bus",
1118             CLK_CON_DIV_CLKCMU_BUS2_BUS, 0, 4),
1119         DIV(CLK_DOUT_CMU_CIS_CLK0, "dout_cmu_cis_clk0", "gout_cmu_cis_clk0",
1120             CLK_CON_DIV_CLKCMU_CIS_CLK0, 0, 5),
1121         DIV(CLK_DOUT_CMU_CIS_CLK1, "dout_cmu_cis_clk1", "gout_cmu_cis_clk1",
1122             CLK_CON_DIV_CLKCMU_CIS_CLK1, 0, 5),
1123         DIV(CLK_DOUT_CMU_CIS_CLK2, "dout_cmu_cis_clk2", "gout_cmu_cis_clk2",
1124             CLK_CON_DIV_CLKCMU_CIS_CLK2, 0, 5),
1125         DIV(CLK_DOUT_CMU_CIS_CLK3, "dout_cmu_cis_clk3", "gout_cmu_cis_clk3",
1126             CLK_CON_DIV_CLKCMU_CIS_CLK3, 0, 5),
1127         DIV(CLK_DOUT_CMU_CIS_CLK4, "dout_cmu_cis_clk4", "gout_cmu_cis_clk4",
1128             CLK_CON_DIV_CLKCMU_CIS_CLK4, 0, 5),
1129         DIV(CLK_DOUT_CMU_CIS_CLK5, "dout_cmu_cis_clk5", "gout_cmu_cis_clk5",
1130             CLK_CON_DIV_CLKCMU_CIS_CLK5, 0, 5),
1131         DIV(CLK_DOUT_CMU_CIS_CLK6, "dout_cmu_cis_clk6", "gout_cmu_cis_clk6",
1132             CLK_CON_DIV_CLKCMU_CIS_CLK6, 0, 5),
1133         DIV(CLK_DOUT_CMU_CIS_CLK7, "dout_cmu_cis_clk7", "gout_cmu_cis_clk7",
1134             CLK_CON_DIV_CLKCMU_CIS_CLK7, 0, 5),
1135         DIV(CLK_DOUT_CMU_CORE_BUS, "dout_cmu_core_bus", "gout_cmu_core_bus",
1136             CLK_CON_DIV_CLKCMU_CORE_BUS, 0, 4),
1137         DIV(CLK_DOUT_CMU_CPUCL0_DBG, "dout_cmu_cpucl0_dbg",
1138             "gout_cmu_cpucl0_dbg", CLK_CON_DIV_CLKCMU_CPUCL0_DBG, 0, 4),
1139         DIV(CLK_DOUT_CMU_CPUCL0_SWITCH, "dout_cmu_cpucl0_switch",
1140             "gout_cmu_cpucl0_switch", CLK_CON_DIV_CLKCMU_CPUCL0_SWITCH, 0, 3),
1141         DIV(CLK_DOUT_CMU_CPUCL1_SWITCH, "dout_cmu_cpucl1_switch",
1142             "gout_cmu_cpucl1_switch", CLK_CON_DIV_CLKCMU_CPUCL1_SWITCH, 0, 3),
1143         DIV(CLK_DOUT_CMU_CPUCL2_SWITCH, "dout_cmu_cpucl2_switch",
1144             "gout_cmu_cpucl2_switch", CLK_CON_DIV_CLKCMU_CPUCL2_SWITCH, 0, 3),
1145         DIV(CLK_DOUT_CMU_CSIS_BUS, "dout_cmu_csis_bus", "gout_cmu_csis_bus",
1146             CLK_CON_DIV_CLKCMU_CSIS_BUS, 0, 4),
1147         DIV(CLK_DOUT_CMU_DISP_BUS, "dout_cmu_disp_bus", "gout_cmu_disp_bus",
1148             CLK_CON_DIV_CLKCMU_DISP_BUS, 0, 4),
1149         DIV(CLK_DOUT_CMU_DNS_BUS, "dout_cmu_dns_bus", "gout_cmu_dns_bus",
1150             CLK_CON_DIV_CLKCMU_DNS_BUS, 0, 4),
1151         DIV(CLK_DOUT_CMU_DPU_BUS, "dout_cmu_dpu_bus", "gout_cmu_dpu_bus",
1152             CLK_CON_DIV_CLKCMU_DPU_BUS, 0, 4),
1153         DIV(CLK_DOUT_CMU_EH_BUS, "dout_cmu_eh_bus", "gout_cmu_eh_bus",
1154             CLK_CON_DIV_CLKCMU_EH_BUS, 0, 4),
1155         DIV(CLK_DOUT_CMU_G2D_G2D, "dout_cmu_g2d_g2d", "gout_cmu_g2d_g2d",
1156             CLK_CON_DIV_CLKCMU_G2D_G2D, 0, 4),
1157         DIV(CLK_DOUT_CMU_G2D_MSCL, "dout_cmu_g2d_mscl", "gout_cmu_g2d_mscl",
1158             CLK_CON_DIV_CLKCMU_G2D_MSCL, 0, 4),
1159         DIV(CLK_DOUT_CMU_G3AA_G3AA, "dout_cmu_g3aa_g3aa", "gout_cmu_g3aa_g3aa",
1160             CLK_CON_DIV_CLKCMU_G3AA_G3AA, 0, 4),
1161         DIV(CLK_DOUT_CMU_G3D_SWITCH, "dout_cmu_g3d_busd", "gout_cmu_g3d_busd",
1162             CLK_CON_DIV_CLKCMU_G3D_BUSD, 0, 4),
1163         DIV(CLK_DOUT_CMU_G3D_GLB, "dout_cmu_g3d_glb", "gout_cmu_g3d_glb",
1164             CLK_CON_DIV_CLKCMU_G3D_GLB, 0, 4),
1165         DIV(CLK_DOUT_CMU_G3D_SWITCH, "dout_cmu_g3d_switch",
1166             "gout_cmu_g3d_switch", CLK_CON_DIV_CLKCMU_G3D_SWITCH, 0, 3),
1167         DIV(CLK_DOUT_CMU_GDC_GDC0, "dout_cmu_gdc_gdc0", "gout_cmu_gdc_gdc0",
1168             CLK_CON_DIV_CLKCMU_GDC_GDC0, 0, 4),
1169         DIV(CLK_DOUT_CMU_GDC_GDC1, "dout_cmu_gdc_gdc1", "gout_cmu_gdc_gdc1",
1170             CLK_CON_DIV_CLKCMU_GDC_GDC1, 0, 4),
1171         DIV(CLK_DOUT_CMU_GDC_SCSC, "dout_cmu_gdc_scsc", "gout_cmu_gdc_scsc",
1172             CLK_CON_DIV_CLKCMU_GDC_SCSC, 0, 4),
1173         DIV(CLK_DOUT_CMU_CMU_HPM, "dout_cmu_hpm", "gout_cmu_hpm",
1174             CLK_CON_DIV_CLKCMU_HPM, 0, 2),
1175         DIV(CLK_DOUT_CMU_HSI0_BUS, "dout_cmu_hsi0_bus", "gout_cmu_hsi0_bus",
1176             CLK_CON_DIV_CLKCMU_HSI0_BUS, 0, 4),
1177         DIV(CLK_DOUT_CMU_HSI0_DPGTC, "dout_cmu_hsi0_dpgtc",
1178             "gout_cmu_hsi0_dpgtc", CLK_CON_DIV_CLKCMU_HSI0_DPGTC, 0, 4),
1179         DIV(CLK_DOUT_CMU_HSI0_USB31DRD, "dout_cmu_hsi0_usb31drd",
1180             "gout_cmu_hsi0_usb31drd", CLK_CON_DIV_CLKCMU_HSI0_USB31DRD, 0, 5),
1181         DIV(CLK_DOUT_CMU_HSI1_BUS, "dout_cmu_hsi1_bus", "gout_cmu_hsi1_bus",
1182             CLK_CON_DIV_CLKCMU_HSI1_BUS, 0, 4),
1183         DIV(CLK_DOUT_CMU_HSI1_PCIE, "dout_cmu_hsi1_pcie", "gout_cmu_hsi1_pcie",
1184             CLK_CON_DIV_CLKCMU_HSI1_PCIE, 0, 3),
1185         DIV(CLK_DOUT_CMU_HSI2_BUS, "dout_cmu_hsi2_bus", "gout_cmu_hsi2_bus",
1186             CLK_CON_DIV_CLKCMU_HSI2_BUS, 0, 4),
1187         DIV(CLK_DOUT_CMU_HSI2_MMC_CARD, "dout_cmu_hsi2_mmc_card",
1188             "gout_cmu_hsi2_mmc_card", CLK_CON_DIV_CLKCMU_HSI2_MMC_CARD, 0, 9),
1189         DIV(CLK_DOUT_CMU_HSI2_PCIE, "dout_cmu_hsi2_pcie", "gout_cmu_hsi2_pcie",
1190             CLK_CON_DIV_CLKCMU_HSI2_PCIE, 0, 3),
1191         DIV(CLK_DOUT_CMU_HSI2_UFS_EMBD, "dout_cmu_hsi2_ufs_embd",
1192             "gout_cmu_hsi2_ufs_embd", CLK_CON_DIV_CLKCMU_HSI2_UFS_EMBD, 0, 4),
1193         DIV(CLK_DOUT_CMU_IPP_BUS, "dout_cmu_ipp_bus", "gout_cmu_ipp_bus",
1194             CLK_CON_DIV_CLKCMU_IPP_BUS, 0, 4),
1195         DIV(CLK_DOUT_CMU_ITP_BUS, "dout_cmu_itp_bus", "gout_cmu_itp_bus",
1196             CLK_CON_DIV_CLKCMU_ITP_BUS, 0, 4),
1197         DIV(CLK_DOUT_CMU_MCSC_ITSC, "dout_cmu_mcsc_itsc", "gout_cmu_mcsc_itsc",
1198             CLK_CON_DIV_CLKCMU_MCSC_ITSC, 0, 4),
1199         DIV(CLK_DOUT_CMU_MCSC_MCSC, "dout_cmu_mcsc_mcsc", "gout_cmu_mcsc_mcsc",
1200             CLK_CON_DIV_CLKCMU_MCSC_MCSC, 0, 4),
1201         DIV(CLK_DOUT_CMU_MFC_MFC, "dout_cmu_mfc_mfc", "gout_cmu_mfc_mfc",
1202             CLK_CON_DIV_CLKCMU_MFC_MFC, 0, 4),
1203         DIV(CLK_DOUT_CMU_MIF_BUSP, "dout_cmu_mif_busp", "gout_cmu_mif_busp",
1204             CLK_CON_DIV_CLKCMU_MIF_BUSP, 0, 4),
1205         DIV(CLK_DOUT_CMU_MISC_BUS, "dout_cmu_misc_bus", "gout_cmu_misc_bus",
1206             CLK_CON_DIV_CLKCMU_MISC_BUS, 0, 4),
1207         DIV(CLK_DOUT_CMU_MISC_SSS, "dout_cmu_misc_sss", "gout_cmu_misc_sss",
1208             CLK_CON_DIV_CLKCMU_MISC_SSS, 0, 4),
1209         DIV(CLK_DOUT_CMU_PDP_BUS, "dout_cmu_pdp_bus", "gout_cmu_pdp_bus",
1210             CLK_CON_DIV_CLKCMU_PDP_BUS, 0, 4),
1211         DIV(CLK_DOUT_CMU_PDP_VRA, "dout_cmu_pdp_vra", "gout_cmu_pdp_vra",
1212             CLK_CON_DIV_CLKCMU_PDP_VRA, 0, 4),
1213         DIV(CLK_DOUT_CMU_PERIC0_BUS, "dout_cmu_peric0_bus",
1214             "gout_cmu_peric0_bus", CLK_CON_DIV_CLKCMU_PERIC0_BUS, 0, 4),
1215         DIV(CLK_DOUT_CMU_PERIC0_IP, "dout_cmu_peric0_ip", "gout_cmu_peric0_ip",
1216             CLK_CON_DIV_CLKCMU_PERIC0_IP, 0, 4),
1217         DIV(CLK_DOUT_CMU_PERIC1_BUS, "dout_cmu_peric1_bus",
1218             "gout_cmu_peric1_bus", CLK_CON_DIV_CLKCMU_PERIC1_BUS, 0, 4),
1219         DIV(CLK_DOUT_CMU_PERIC1_IP, "dout_cmu_peric1_ip", "gout_cmu_peric1_ip",
1220             CLK_CON_DIV_CLKCMU_PERIC1_IP, 0, 4),
1221         DIV(CLK_DOUT_CMU_TNR_BUS, "dout_cmu_tnr_bus", "gout_cmu_tnr_bus",
1222             CLK_CON_DIV_CLKCMU_TNR_BUS, 0, 4),
1223         DIV(CLK_DOUT_CMU_TPU_BUS, "dout_cmu_tpu_bus", "gout_cmu_tpu_bus",
1224             CLK_CON_DIV_CLKCMU_TPU_BUS, 0, 4),
1225         DIV(CLK_DOUT_CMU_TPU_TPU, "dout_cmu_tpu_tpu", "gout_cmu_tpu_tpu",
1226             CLK_CON_DIV_CLKCMU_TPU_TPU, 0, 4),
1227         DIV(CLK_DOUT_CMU_TPU_TPUCTL, "dout_cmu_tpu_tpuctl",
1228             "gout_cmu_tpu_tpuctl", CLK_CON_DIV_CLKCMU_TPU_TPUCTL, 0, 4),
1229         DIV(CLK_DOUT_CMU_TPU_UART, "dout_cmu_tpu_uart", "gout_cmu_tpu_uart",
1230             CLK_CON_DIV_CLKCMU_TPU_UART, 0, 4),
1231         DIV(CLK_DOUT_CMU_CMU_BOOST, "dout_cmu_cmu_boost", "gout_cmu_cmu_boost",
1232             CLK_CON_DIV_DIV_CLKCMU_CMU_BOOST, 0, 2),
1233         DIV(CLK_DOUT_CMU_CMU_CMUREF, "dout_cmu_cmuref", "gout_cmu_cmuref",
1234             CLK_CON_DIV_DIV_CLK_CMU_CMUREF, 0, 2),
1235         DIV(CLK_DOUT_CMU_SHARED0_DIV2, "dout_cmu_shared0_div2",
1236             "mout_pll_shared0", CLK_CON_DIV_PLL_SHARED0_DIV2, 0, 1),
1237         DIV(CLK_DOUT_CMU_SHARED0_DIV3, "dout_cmu_shared0_div3",
1238             "mout_pll_shared0", CLK_CON_DIV_PLL_SHARED0_DIV3, 0, 2),
1239         DIV(CLK_DOUT_CMU_SHARED0_DIV4, "dout_cmu_shared0_div4",
1240             "dout_cmu_shared0_div2", CLK_CON_DIV_PLL_SHARED0_DIV4, 0, 1),
1241         DIV(CLK_DOUT_CMU_SHARED0_DIV5, "dout_cmu_shared0_div5",
1242             "mout_pll_shared0", CLK_CON_DIV_PLL_SHARED0_DIV5, 0, 3),
1243         DIV(CLK_DOUT_CMU_SHARED1_DIV2, "dout_cmu_shared1_div2",
1244             "mout_pll_shared1", CLK_CON_DIV_PLL_SHARED1_DIV2, 0, 1),
1245         DIV(CLK_DOUT_CMU_SHARED1_DIV3, "dout_cmu_shared1_div3",
1246             "mout_pll_shared1", CLK_CON_DIV_PLL_SHARED1_DIV3, 0, 2),
1247         DIV(CLK_DOUT_CMU_SHARED1_DIV4, "dout_cmu_shared1_div4",
1248             "mout_pll_shared1", CLK_CON_DIV_PLL_SHARED1_DIV4, 0, 1),
1249         DIV(CLK_DOUT_CMU_SHARED2_DIV2, "dout_cmu_shared2_div2",
1250             "mout_pll_shared2", CLK_CON_DIV_PLL_SHARED2_DIV2, 0, 1),
1251         DIV(CLK_DOUT_CMU_SHARED3_DIV2, "dout_cmu_shared3_div2",
1252             "mout_pll_shared3", CLK_CON_DIV_PLL_SHARED3_DIV2, 0, 1),
1253 };
1254
1255 static const struct samsung_fixed_factor_clock cmu_top_ffactor[] __initconst = {
1256         FFACTOR(CLK_DOUT_CMU_HSI0_USBDPDBG, "dout_cmu_hsi0_usbdpdbg",
1257                 "gout_cmu_hsi0_usbdpdbg", 1, 4, 0),
1258         FFACTOR(CLK_DOUT_CMU_OTP, "dout_cmu_otp", "oscclk", 1, 8, 0),
1259 };
1260
1261 static const struct samsung_gate_clock cmu_top_gate_clks[] __initconst = {
1262         GATE(CLK_GOUT_CMU_BUS0_BOOST, "gout_cmu_bus0_boost",
1263              "mout_cmu_boost_option1", CLK_CON_GAT_CLKCMU_BUS0_BOOST, 21, 0, 0),
1264         GATE(CLK_GOUT_CMU_BUS1_BOOST, "gout_cmu_bus1_boost",
1265              "mout_cmu_boost_option1", CLK_CON_GAT_CLKCMU_BUS1_BOOST, 21, 0, 0),
1266         GATE(CLK_GOUT_CMU_BUS2_BOOST, "gout_cmu_bus2_boost",
1267              "mout_cmu_boost_option1", CLK_CON_GAT_CLKCMU_BUS2_BOOST, 21, 0, 0),
1268         GATE(CLK_GOUT_CMU_CORE_BOOST, "gout_cmu_core_boost",
1269              "mout_cmu_boost_option1", CLK_CON_GAT_CLKCMU_CORE_BOOST, 21, 0, 0),
1270         GATE(CLK_GOUT_CMU_CPUCL0_BOOST, "gout_cmu_cpucl0_boost",
1271              "mout_cmu_boost_option1", CLK_CON_GAT_CLKCMU_CPUCL0_BOOST,
1272              21, 0, 0),
1273         GATE(CLK_GOUT_CMU_CPUCL1_BOOST, "gout_cmu_cpucl1_boost",
1274              "mout_cmu_boost_option1", CLK_CON_GAT_CLKCMU_CPUCL1_BOOST,
1275              21, 0, 0),
1276         GATE(CLK_GOUT_CMU_CPUCL2_BOOST, "gout_cmu_cpucl2_boost",
1277              "mout_cmu_boost_option1", CLK_CON_GAT_CLKCMU_CPUCL2_BOOST,
1278              21, 0, 0),
1279         GATE(CLK_GOUT_CMU_MIF_BOOST, "gout_cmu_mif_boost",
1280              "mout_cmu_boost_option1", CLK_CON_GAT_CLKCMU_MIF_BOOST,
1281              21, 0, 0),
1282         GATE(CLK_GOUT_CMU_MIF_SWITCH, "gout_cmu_mif_switch",
1283              "mout_cmu_mif_switch", CLK_CON_GAT_CLKCMU_MIF_SWITCH, 21, 0, 0),
1284         GATE(CLK_GOUT_CMU_BO_BUS, "gout_cmu_bo_bus", "mout_cmu_bo_bus",
1285              CLK_CON_GAT_GATE_CLKCMU_BO_BUS, 21, 0, 0),
1286         GATE(CLK_GOUT_CMU_BUS0_BUS, "gout_cmu_bus0_bus", "mout_cmu_bus0_bus",
1287              CLK_CON_GAT_GATE_CLKCMU_BUS0_BUS, 21, 0, 0),
1288         GATE(CLK_GOUT_CMU_BUS1_BUS, "gout_cmu_bus1_bus", "mout_cmu_bus1_bus",
1289              CLK_CON_GAT_GATE_CLKCMU_BUS1_BUS, 21, 0, 0),
1290         GATE(CLK_GOUT_CMU_BUS2_BUS, "gout_cmu_bus2_bus", "mout_cmu_bus2_bus",
1291              CLK_CON_GAT_GATE_CLKCMU_BUS2_BUS, 21, 0, 0),
1292         GATE(CLK_GOUT_CMU_CIS_CLK0, "gout_cmu_cis_clk0", "mout_cmu_cis_clk0",
1293              CLK_CON_GAT_GATE_CLKCMU_CIS_CLK0, 21, 0, 0),
1294         GATE(CLK_GOUT_CMU_CIS_CLK1, "gout_cmu_cis_clk1", "mout_cmu_cis_clk1",
1295              CLK_CON_GAT_GATE_CLKCMU_CIS_CLK1, 21, 0, 0),
1296         GATE(CLK_GOUT_CMU_CIS_CLK2, "gout_cmu_cis_clk2", "mout_cmu_cis_clk2",
1297              CLK_CON_GAT_GATE_CLKCMU_CIS_CLK2, 21, 0, 0),
1298         GATE(CLK_GOUT_CMU_CIS_CLK3, "gout_cmu_cis_clk3", "mout_cmu_cis_clk3",
1299              CLK_CON_GAT_GATE_CLKCMU_CIS_CLK3, 21, 0, 0),
1300         GATE(CLK_GOUT_CMU_CIS_CLK4, "gout_cmu_cis_clk4", "mout_cmu_cis_clk4",
1301              CLK_CON_GAT_GATE_CLKCMU_CIS_CLK4, 21, 0, 0),
1302         GATE(CLK_GOUT_CMU_CIS_CLK5, "gout_cmu_cis_clk5", "mout_cmu_cis_clk5",
1303              CLK_CON_GAT_GATE_CLKCMU_CIS_CLK5, 21, 0, 0),
1304         GATE(CLK_GOUT_CMU_CIS_CLK6, "gout_cmu_cis_clk6", "mout_cmu_cis_clk6",
1305              CLK_CON_GAT_GATE_CLKCMU_CIS_CLK6, 21, 0, 0),
1306         GATE(CLK_GOUT_CMU_CIS_CLK7, "gout_cmu_cis_clk7", "mout_cmu_cis_clk7",
1307              CLK_CON_GAT_GATE_CLKCMU_CIS_CLK7, 21, 0, 0),
1308         GATE(CLK_GOUT_CMU_CMU_BOOST, "gout_cmu_cmu_boost", "mout_cmu_cmu_boost",
1309              CLK_CON_GAT_GATE_CLKCMU_CMU_BOOST, 21, 0, 0),
1310         GATE(CLK_GOUT_CMU_CORE_BUS, "gout_cmu_core_bus", "mout_cmu_core_bus",
1311              CLK_CON_GAT_GATE_CLKCMU_CORE_BUS, 21, 0, 0),
1312         GATE(CLK_GOUT_CMU_CPUCL0_DBG, "gout_cmu_cpucl0_dbg",
1313              "mout_cmu_cpucl0_dbg", CLK_CON_GAT_GATE_CLKCMU_CPUCL0_DBG_BUS,
1314              21, 0, 0),
1315         GATE(CLK_GOUT_CMU_CPUCL0_SWITCH, "gout_cmu_cpucl0_switch",
1316              "mout_cmu_cpucl0_switch", CLK_CON_GAT_GATE_CLKCMU_CPUCL0_SWITCH,
1317              21, 0, 0),
1318         GATE(CLK_GOUT_CMU_CPUCL1_SWITCH, "gout_cmu_cpucl1_switch",
1319              "mout_cmu_cpucl1_switch", CLK_CON_GAT_GATE_CLKCMU_CPUCL1_SWITCH,
1320              21, 0, 0),
1321         GATE(CLK_GOUT_CMU_CPUCL2_SWITCH, "gout_cmu_cpucl2_switch",
1322              "mout_cmu_cpucl2_switch", CLK_CON_GAT_GATE_CLKCMU_CPUCL2_SWITCH,
1323              21, 0, 0),
1324         GATE(CLK_GOUT_CMU_CSIS_BUS, "gout_cmu_csis_bus", "mout_cmu_csis_bus",
1325              CLK_CON_GAT_GATE_CLKCMU_CSIS_BUS, 21, 0, 0),
1326         GATE(CLK_GOUT_CMU_DISP_BUS, "gout_cmu_disp_bus", "mout_cmu_disp_bus",
1327              CLK_CON_GAT_GATE_CLKCMU_DISP_BUS, 21, 0, 0),
1328         GATE(CLK_GOUT_CMU_DNS_BUS, "gout_cmu_dns_bus", "mout_cmu_dns_bus",
1329              CLK_CON_GAT_GATE_CLKCMU_DNS_BUS, 21, 0, 0),
1330         GATE(CLK_GOUT_CMU_DPU_BUS, "gout_cmu_dpu_bus", "mout_cmu_dpu_bus",
1331              CLK_CON_GAT_GATE_CLKCMU_DPU_BUS, 21, 0, 0),
1332         GATE(CLK_GOUT_CMU_EH_BUS, "gout_cmu_eh_bus", "mout_cmu_eh_bus",
1333              CLK_CON_GAT_GATE_CLKCMU_EH_BUS, 21, 0, 0),
1334         GATE(CLK_GOUT_CMU_G2D_G2D, "gout_cmu_g2d_g2d", "mout_cmu_g2d_g2d",
1335              CLK_CON_GAT_GATE_CLKCMU_G2D_G2D, 21, 0, 0),
1336         GATE(CLK_GOUT_CMU_G2D_MSCL, "gout_cmu_g2d_mscl", "mout_cmu_g2d_mscl",
1337              CLK_CON_GAT_GATE_CLKCMU_G2D_MSCL, 21, 0, 0),
1338         GATE(CLK_GOUT_CMU_G3AA_G3AA, "gout_cmu_g3aa_g3aa", "mout_cmu_g3aa_g3aa",
1339              CLK_CON_MUX_MUX_CLKCMU_G3AA_G3AA, 21, 0, 0),
1340         GATE(CLK_GOUT_CMU_G3D_BUSD, "gout_cmu_g3d_busd", "mout_cmu_g3d_busd",
1341              CLK_CON_GAT_GATE_CLKCMU_G3D_BUSD, 21, 0, 0),
1342         GATE(CLK_GOUT_CMU_G3D_GLB, "gout_cmu_g3d_glb", "mout_cmu_g3d_glb",
1343              CLK_CON_GAT_GATE_CLKCMU_G3D_GLB, 21, 0, 0),
1344         GATE(CLK_GOUT_CMU_G3D_SWITCH, "gout_cmu_g3d_switch",
1345              "mout_cmu_g3d_switch", CLK_CON_GAT_GATE_CLKCMU_G3D_SWITCH,
1346              21, 0, 0),
1347         GATE(CLK_GOUT_CMU_GDC_GDC0, "gout_cmu_gdc_gdc0", "mout_cmu_gdc_gdc0",
1348              CLK_CON_GAT_GATE_CLKCMU_GDC_GDC0, 21, 0, 0),
1349         GATE(CLK_GOUT_CMU_GDC_GDC1, "gout_cmu_gdc_gdc1", "mout_cmu_gdc_gdc1",
1350              CLK_CON_GAT_GATE_CLKCMU_GDC_GDC1, 21, 0, 0),
1351         GATE(CLK_GOUT_CMU_GDC_SCSC, "gout_cmu_gdc_scsc", "mout_cmu_gdc_scsc",
1352              CLK_CON_GAT_GATE_CLKCMU_GDC_SCSC, 21, 0, 0),
1353         GATE(CLK_GOUT_CMU_HPM, "gout_cmu_hpm", "mout_cmu_hpm",
1354              CLK_CON_GAT_GATE_CLKCMU_HPM, 21, 0, 0),
1355         GATE(CLK_GOUT_CMU_HSI0_BUS, "gout_cmu_hsi0_bus", "mout_cmu_hsi0_bus",
1356              CLK_CON_GAT_GATE_CLKCMU_HSI0_BUS, 21, 0, 0),
1357         GATE(CLK_GOUT_CMU_HSI0_DPGTC, "gout_cmu_hsi0_dpgtc",
1358              "mout_cmu_hsi0_dpgtc", CLK_CON_GAT_GATE_CLKCMU_HSI0_DPGTC,
1359              21, 0, 0),
1360         GATE(CLK_GOUT_CMU_HSI0_USB31DRD, "gout_cmu_hsi0_usb31drd",
1361              "mout_cmu_hsi0_usb31drd", CLK_CON_GAT_GATE_CLKCMU_HSI0_USB31DRD,
1362              21, 0, 0),
1363         GATE(CLK_GOUT_CMU_HSI0_USBDPDBG, "gout_cmu_hsi0_usbdpdbg",
1364              "mout_cmu_hsi0_usbdpdbg", CLK_CON_GAT_GATE_CLKCMU_HSI0_USBDPDBG,
1365              21, 0, 0),
1366         GATE(CLK_GOUT_CMU_HSI1_BUS, "gout_cmu_hsi1_bus", "mout_cmu_hsi1_bus",
1367              CLK_CON_GAT_GATE_CLKCMU_HSI1_BUS, 21, 0, 0),
1368         GATE(CLK_GOUT_CMU_HSI1_PCIE, "gout_cmu_hsi1_pcie", "mout_cmu_hsi1_pcie",
1369              CLK_CON_GAT_GATE_CLKCMU_HSI1_PCIE, 21, 0, 0),
1370         GATE(CLK_GOUT_CMU_HSI2_BUS, "gout_cmu_hsi2_bus", "mout_cmu_hsi2_bus",
1371              CLK_CON_GAT_GATE_CLKCMU_HSI2_BUS, 21, 0, 0),
1372         GATE(CLK_GOUT_CMU_HSI2_MMC_CARD, "gout_cmu_hsi2_mmc_card",
1373              "mout_cmu_hsi2_mmc_card", CLK_CON_GAT_GATE_CLKCMU_HSI2_MMCCARD,
1374              21, 0, 0),
1375         GATE(CLK_GOUT_CMU_HSI2_PCIE, "gout_cmu_hsi2_pcie", "mout_cmu_hsi2_pcie",
1376              CLK_CON_GAT_GATE_CLKCMU_HSI2_PCIE, 21, 0, 0),
1377         GATE(CLK_GOUT_CMU_HSI2_UFS_EMBD, "gout_cmu_hsi2_ufs_embd",
1378              "mout_cmu_hsi2_ufs_embd", CLK_CON_GAT_GATE_CLKCMU_HSI2_UFS_EMBD,
1379              21, 0, 0),
1380         GATE(CLK_GOUT_CMU_IPP_BUS, "gout_cmu_ipp_bus", "mout_cmu_ipp_bus",
1381              CLK_CON_GAT_GATE_CLKCMU_IPP_BUS, 21, 0, 0),
1382         GATE(CLK_GOUT_CMU_ITP_BUS, "gout_cmu_itp_bus", "mout_cmu_itp_bus",
1383              CLK_CON_GAT_GATE_CLKCMU_ITP_BUS, 21, 0, 0),
1384         GATE(CLK_GOUT_CMU_MCSC_ITSC, "gout_cmu_mcsc_itsc", "mout_cmu_mcsc_itsc",
1385              CLK_CON_GAT_GATE_CLKCMU_MCSC_ITSC, 21, 0, 0),
1386         GATE(CLK_GOUT_CMU_MCSC_MCSC, "gout_cmu_mcsc_mcsc", "mout_cmu_mcsc_mcsc",
1387              CLK_CON_GAT_GATE_CLKCMU_MCSC_MCSC, 21, 0, 0),
1388         GATE(CLK_GOUT_CMU_MFC_MFC, "gout_cmu_mfc_mfc", "mout_cmu_mfc_mfc",
1389              CLK_CON_GAT_GATE_CLKCMU_MFC_MFC, 21, 0, 0),
1390         GATE(CLK_GOUT_CMU_MIF_BUSP, "gout_cmu_mif_busp", "mout_cmu_mif_busp",
1391              CLK_CON_GAT_GATE_CLKCMU_MIF_BUSP, 21, 0, 0),
1392         GATE(CLK_GOUT_CMU_MISC_BUS, "gout_cmu_misc_bus", "mout_cmu_misc_bus",
1393              CLK_CON_GAT_GATE_CLKCMU_MISC_BUS, 21, 0, 0),
1394         GATE(CLK_GOUT_CMU_MISC_SSS, "gout_cmu_misc_sss", "mout_cmu_misc_sss",
1395              CLK_CON_GAT_GATE_CLKCMU_MISC_SSS, 21, 0, 0),
1396         GATE(CLK_GOUT_CMU_PDP_BUS, "gout_cmu_pdp_bus", "mout_cmu_pdp_bus",
1397              CLK_CON_GAT_GATE_CLKCMU_PDP_BUS, 21, 0, 0),
1398         GATE(CLK_GOUT_CMU_PDP_VRA, "gout_cmu_pdp_vra", "mout_cmu_pdp_vra",
1399              CLK_CON_GAT_GATE_CLKCMU_PDP_BUS, 21, 0, 0),
1400         GATE(CLK_GOUT_CMU_PERIC0_BUS, "gout_cmu_peric0_bus",
1401              "mout_cmu_peric0_bus", CLK_CON_GAT_GATE_CLKCMU_PERIC0_BUS,
1402              21, 0, 0),
1403         GATE(CLK_GOUT_CMU_PERIC0_IP, "gout_cmu_peric0_ip", "mout_cmu_peric0_ip",
1404              CLK_CON_GAT_GATE_CLKCMU_PERIC0_IP, 21, 0, 0),
1405         GATE(CLK_GOUT_CMU_PERIC1_BUS, "gout_cmu_peric1_bus",
1406              "mout_cmu_peric1_bus", CLK_CON_GAT_GATE_CLKCMU_PERIC1_BUS,
1407              21, 0, 0),
1408         GATE(CLK_GOUT_CMU_PERIC1_IP, "gout_cmu_peric1_ip", "mout_cmu_peric1_ip",
1409              CLK_CON_GAT_GATE_CLKCMU_PERIC1_IP, 21, 0, 0),
1410         GATE(CLK_GOUT_CMU_TNR_BUS, "gout_cmu_tnr_bus", "mout_cmu_tnr_bus",
1411              CLK_CON_GAT_GATE_CLKCMU_TNR_BUS, 21, 0, 0),
1412         GATE(CLK_GOUT_CMU_TOP_CMUREF, "gout_cmu_top_cmuref",
1413              "mout_cmu_top_cmuref", CLK_CON_GAT_GATE_CLKCMU_TOP_CMUREF,
1414              21, 0, 0),
1415         GATE(CLK_GOUT_CMU_TPU_BUS, "gout_cmu_tpu_bus", "mout_cmu_tpu_bus",
1416              CLK_CON_GAT_GATE_CLKCMU_TPU_BUS, 21, 0, 0),
1417         GATE(CLK_GOUT_CMU_TPU_TPU, "gout_cmu_tpu_tpu", "mout_cmu_tpu_tpu",
1418              CLK_CON_GAT_GATE_CLKCMU_TPU_TPU, 21, 0, 0),
1419         GATE(CLK_GOUT_CMU_TPU_TPUCTL, "gout_cmu_tpu_tpuctl",
1420              "mout_cmu_tpu_tpuctl", CLK_CON_GAT_GATE_CLKCMU_TPU_TPUCTL,
1421              21, 0, 0),
1422         GATE(CLK_GOUT_CMU_TPU_UART, "gout_cmu_tpu_uart", "mout_cmu_tpu_uart",
1423              CLK_CON_GAT_GATE_CLKCMU_TPU_UART, 21, 0, 0),
1424 };
1425
1426 static const struct samsung_cmu_info top_cmu_info __initconst = {
1427         .pll_clks               = cmu_top_pll_clks,
1428         .nr_pll_clks            = ARRAY_SIZE(cmu_top_pll_clks),
1429         .mux_clks               = cmu_top_mux_clks,
1430         .nr_mux_clks            = ARRAY_SIZE(cmu_top_mux_clks),
1431         .div_clks               = cmu_top_div_clks,
1432         .nr_div_clks            = ARRAY_SIZE(cmu_top_div_clks),
1433         .fixed_factor_clks      = cmu_top_ffactor,
1434         .nr_fixed_factor_clks   = ARRAY_SIZE(cmu_top_ffactor),
1435         .gate_clks              = cmu_top_gate_clks,
1436         .nr_gate_clks           = ARRAY_SIZE(cmu_top_gate_clks),
1437         .nr_clk_ids             = CLKS_NR_TOP,
1438         .clk_regs               = cmu_top_clk_regs,
1439         .nr_clk_regs            = ARRAY_SIZE(cmu_top_clk_regs),
1440 };
1441
1442 static void __init gs101_cmu_top_init(struct device_node *np)
1443 {
1444         exynos_arm64_register_cmu(NULL, np, &top_cmu_info);
1445 }
1446
1447 /* Register CMU_TOP early, as it's a dependency for other early domains */
1448 CLK_OF_DECLARE(gs101_cmu_top, "google,gs101-cmu-top",
1449                gs101_cmu_top_init);
1450
1451 /* ---- CMU_APM ------------------------------------------------------------- */
1452
1453 /* Register Offset definitions for CMU_APM (0x17400000) */
1454 #define APM_CMU_APM_CONTROLLER_OPTION                                                   0x0800
1455 #define CLKOUT_CON_BLK_APM_CMU_APM_CLKOUT0                                              0x0810
1456 #define CLK_CON_MUX_MUX_CLKCMU_APM_FUNC                                                 0x1000
1457 #define CLK_CON_MUX_MUX_CLKCMU_APM_FUNCSRC                                              0x1004
1458 #define CLK_CON_DIV_DIV_CLK_APM_BOOST                                                   0x1800
1459 #define CLK_CON_DIV_DIV_CLK_APM_USI0_UART                                               0x1804
1460 #define CLK_CON_DIV_DIV_CLK_APM_USI0_USI                                                0x1808
1461 #define CLK_CON_DIV_DIV_CLK_APM_USI1_UART                                               0x180c
1462 #define CLK_CON_GAT_CLK_BLK_APM_UID_APM_CMU_APM_IPCLKPORT_PCLK                          0x2000
1463 #define CLK_CON_GAT_CLK_BUS0_BOOST_OPTION1                                              0x2004
1464 #define CLK_CON_GAT_CLK_CMU_BOOST_OPTION1                                               0x2008
1465 #define CLK_CON_GAT_CLK_CORE_BOOST_OPTION1                                              0x200c
1466 #define CLK_CON_GAT_GATE_CLKCMU_APM_FUNC                                                0x2010
1467 #define CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_GPIO_ALIVE_IPCLKPORT_PCLK                    0x2014
1468 #define CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_GPIO_FAR_ALIVE_IPCLKPORT_PCLK                0x2018
1469 #define CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_PMU_ALIVE_IPCLKPORT_PCLK                     0x201c
1470 #define CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_RTC_IPCLKPORT_PCLK                           0x2020
1471 #define CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_TRTC_IPCLKPORT_PCLK                          0x2024
1472 #define CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_UART_IPCLKPORT_IPCLK                      0x2028
1473 #define CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_UART_IPCLKPORT_PCLK                       0x202c
1474 #define CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_USI_IPCLKPORT_IPCLK                       0x2030
1475 #define CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_USI_IPCLKPORT_PCLK                        0x2034
1476 #define CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI1_UART_IPCLKPORT_IPCLK                      0x2038
1477 #define CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI1_UART_IPCLKPORT_PCLK                       0x203c
1478 #define CLK_CON_GAT_GOUT_BLK_APM_UID_D_TZPC_APM_IPCLKPORT_PCLK                          0x2040
1479 #define CLK_CON_GAT_GOUT_BLK_APM_UID_GPC_APM_IPCLKPORT_PCLK                             0x2044
1480 #define CLK_CON_GAT_GOUT_BLK_APM_UID_GREBEINTEGRATION_IPCLKPORT_HCLK                    0x2048
1481 #define CLK_CON_GAT_GOUT_BLK_APM_UID_INTMEM_IPCLKPORT_ACLK                              0x204c
1482 #define CLK_CON_GAT_GOUT_BLK_APM_UID_INTMEM_IPCLKPORT_PCLK                              0x2050
1483 #define CLK_CON_GAT_GOUT_BLK_APM_UID_LHM_AXI_G_SWD_IPCLKPORT_I_CLK                      0x2054
1484 #define CLK_CON_GAT_GOUT_BLK_APM_UID_LHM_AXI_P_AOCAPM_IPCLKPORT_I_CLK                   0x2058
1485 #define CLK_CON_GAT_GOUT_BLK_APM_UID_LHM_AXI_P_APM_IPCLKPORT_I_CLK                      0x205c
1486 #define CLK_CON_GAT_GOUT_BLK_APM_UID_LHS_AXI_D_APM_IPCLKPORT_I_CLK                      0x2060
1487 #define CLK_CON_GAT_GOUT_BLK_APM_UID_LHS_AXI_G_DBGCORE_IPCLKPORT_I_CLK                  0x2064
1488 #define CLK_CON_GAT_GOUT_BLK_APM_UID_LHS_AXI_G_SCAN2DRAM_IPCLKPORT_I_CLK                0x2068
1489 #define CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_AOC_IPCLKPORT_PCLK                     0x206c
1490 #define CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_AP_IPCLKPORT_PCLK                      0x2070
1491 #define CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_GSA_IPCLKPORT_PCLK                     0x2074
1492 #define CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_SWD_IPCLKPORT_PCLK                     0x207c
1493 #define CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_TPU_IPCLKPORT_PCLK                     0x2080
1494 #define CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_AP_AOC_IPCLKPORT_PCLK                      0x2084
1495 #define CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_AP_DBGCORE_IPCLKPORT_PCLK                  0x2088
1496 #define CLK_CON_GAT_GOUT_BLK_APM_UID_PMU_INTR_GEN_IPCLKPORT_PCLK                        0x208c
1497 #define CLK_CON_GAT_GOUT_BLK_APM_UID_ROM_CRC32_HOST_IPCLKPORT_ACLK                      0x2090
1498 #define CLK_CON_GAT_GOUT_BLK_APM_UID_ROM_CRC32_HOST_IPCLKPORT_PCLK                      0x2094
1499 #define CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_BUS_IPCLKPORT_CLK                 0x2098
1500 #define CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_USI0_UART_IPCLKPORT_CLK           0x209c
1501 #define CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_USI0_USI_IPCLKPORT_CLK            0x20a0
1502 #define CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_USI1_UART_IPCLKPORT_CLK           0x20a4
1503 #define CLK_CON_GAT_GOUT_BLK_APM_UID_SPEEDY_APM_IPCLKPORT_PCLK                          0x20a8
1504 #define CLK_CON_GAT_GOUT_BLK_APM_UID_SPEEDY_SUB_APM_IPCLKPORT_PCLK                      0x20ac
1505 #define CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_D_APM_IPCLKPORT_ACLK                          0x20b0
1506 #define CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_D_APM_IPCLKPORT_PCLK                          0x20b4
1507 #define CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_G_DBGCORE_IPCLKPORT_ACLK                      0x20b8
1508 #define CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_G_DBGCORE_IPCLKPORT_PCLK                      0x20bc
1509 #define CLK_CON_GAT_GOUT_BLK_APM_UID_SS_DBGCORE_IPCLKPORT_SS_DBGCORE_IPCLKPORT_HCLK     0x20c0
1510 #define CLK_CON_GAT_GOUT_BLK_APM_UID_SYSMMU_D_APM_IPCLKPORT_CLK_S2                      0x20c4
1511 #define CLK_CON_GAT_GOUT_BLK_APM_UID_SYSREG_APM_IPCLKPORT_PCLK                          0x20cc
1512 #define CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_APM_IPCLKPORT_ACLK                            0x20d0
1513 #define CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_APM_IPCLKPORT_PCLK                            0x20d4
1514 #define CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_DBGCORE_IPCLKPORT_ACLK                        0x20d8
1515 #define CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_DBGCORE_IPCLKPORT_PCLK                        0x20dc
1516 #define CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_G_SWD_IPCLKPORT_ACLK                          0x20e0
1517 #define CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_G_SWD_IPCLKPORT_PCLK                          0x20e4
1518 #define CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_P_AOCAPM_IPCLKPORT_ACLK                       0x20e8
1519 #define CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_P_AOCAPM_IPCLKPORT_PCLK                       0x20ec
1520 #define CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_P_APM_IPCLKPORT_ACLK                          0x20f0
1521 #define CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_P_APM_IPCLKPORT_PCLK                          0x20f4
1522 #define CLK_CON_GAT_GOUT_BLK_APM_UID_WDT_APM_IPCLKPORT_PCLK                             0x20f8
1523 #define CLK_CON_GAT_GOUT_BLK_APM_UID_XIU_DP_APM_IPCLKPORT_ACLK                          0x20fc
1524 #define PCH_CON_LHM_AXI_G_SWD_PCH                                                       0x3000
1525 #define PCH_CON_LHM_AXI_P_AOCAPM_PCH                                                    0x3004
1526 #define PCH_CON_LHM_AXI_P_APM_PCH                                                       0x3008
1527 #define PCH_CON_LHS_AXI_D_APM_PCH                                                       0x300c
1528 #define PCH_CON_LHS_AXI_G_DBGCORE_PCH                                                   0x3010
1529 #define PCH_CON_LHS_AXI_G_SCAN2DRAM_PCH                                                 0x3014
1530 #define QCH_CON_APBIF_GPIO_ALIVE_QCH                                                    0x3018
1531 #define QCH_CON_APBIF_GPIO_FAR_ALIVE_QCH                                                0x301c
1532 #define QCH_CON_APBIF_PMU_ALIVE_QCH                                                     0x3020
1533 #define QCH_CON_APBIF_RTC_QCH                                                           0x3024
1534 #define QCH_CON_APBIF_TRTC_QCH                                                          0x3028
1535 #define QCH_CON_APM_CMU_APM_QCH                                                         0x302c
1536 #define QCH_CON_APM_USI0_UART_QCH                                                       0x3030
1537 #define QCH_CON_APM_USI0_USI_QCH                                                        0x3034
1538 #define QCH_CON_APM_USI1_UART_QCH                                                       0x3038
1539 #define QCH_CON_D_TZPC_APM_QCH                                                          0x303c
1540 #define QCH_CON_GPC_APM_QCH                                                             0x3040
1541 #define QCH_CON_GREBEINTEGRATION_QCH_DBG                                                0x3044
1542 #define QCH_CON_GREBEINTEGRATION_QCH_GREBE                                              0x3048
1543 #define QCH_CON_INTMEM_QCH                                                              0x304c
1544 #define QCH_CON_LHM_AXI_G_SWD_QCH                                                       0x3050
1545 #define QCH_CON_LHM_AXI_P_AOCAPM_QCH                                                    0x3054
1546 #define QCH_CON_LHM_AXI_P_APM_QCH                                                       0x3058
1547 #define QCH_CON_LHS_AXI_D_APM_QCH                                                       0x305c
1548 #define QCH_CON_LHS_AXI_G_DBGCORE_QCH                                                   0x3060
1549 #define QCH_CON_LHS_AXI_G_SCAN2DRAM_QCH                                                 0x3064
1550 #define QCH_CON_MAILBOX_APM_AOC_QCH                                                     0x3068
1551 #define QCH_CON_MAILBOX_APM_AP_QCH                                                      0x306c
1552 #define QCH_CON_MAILBOX_APM_GSA_QCH                                                     0x3070
1553 #define QCH_CON_MAILBOX_APM_SWD_QCH                                                     0x3078
1554 #define QCH_CON_MAILBOX_APM_TPU_QCH                                                     0x307c
1555 #define QCH_CON_MAILBOX_AP_AOC_QCH                                                      0x3080
1556 #define QCH_CON_MAILBOX_AP_DBGCORE_QCH                                                  0x3084
1557 #define QCH_CON_PMU_INTR_GEN_QCH                                                        0x3088
1558 #define QCH_CON_ROM_CRC32_HOST_QCH                                                      0x308c
1559 #define QCH_CON_RSTNSYNC_CLK_APM_BUS_QCH_GREBE                                          0x3090
1560 #define QCH_CON_RSTNSYNC_CLK_APM_BUS_QCH_GREBE_DBG                                      0x3094
1561 #define QCH_CON_SPEEDY_APM_QCH                                                          0x3098
1562 #define QCH_CON_SPEEDY_SUB_APM_QCH                                                      0x309c
1563 #define QCH_CON_SSMT_D_APM_QCH                                                          0x30a0
1564 #define QCH_CON_SSMT_G_DBGCORE_QCH                                                      0x30a4
1565 #define QCH_CON_SS_DBGCORE_QCH_DBG                                                      0x30a8
1566 #define QCH_CON_SS_DBGCORE_QCH_GREBE                                                    0x30ac
1567 #define QCH_CON_SYSMMU_D_APM_QCH                                                        0x30b0
1568 #define QCH_CON_SYSREG_APM_QCH                                                          0x30b8
1569 #define QCH_CON_UASC_APM_QCH                                                            0x30bc
1570 #define QCH_CON_UASC_DBGCORE_QCH                                                        0x30c0
1571 #define QCH_CON_UASC_G_SWD_QCH                                                          0x30c4
1572 #define QCH_CON_UASC_P_AOCAPM_QCH                                                       0x30c8
1573 #define QCH_CON_UASC_P_APM_QCH                                                          0x30cc
1574 #define QCH_CON_WDT_APM_QCH                                                             0x30d0
1575 #define QUEUE_CTRL_REG_BLK_APM_CMU_APM                                                  0x3c00
1576
1577 static const unsigned long apm_clk_regs[] __initconst = {
1578         APM_CMU_APM_CONTROLLER_OPTION,
1579         CLKOUT_CON_BLK_APM_CMU_APM_CLKOUT0,
1580         CLK_CON_MUX_MUX_CLKCMU_APM_FUNC,
1581         CLK_CON_MUX_MUX_CLKCMU_APM_FUNCSRC,
1582         CLK_CON_DIV_DIV_CLK_APM_BOOST,
1583         CLK_CON_DIV_DIV_CLK_APM_USI0_UART,
1584         CLK_CON_DIV_DIV_CLK_APM_USI0_USI,
1585         CLK_CON_DIV_DIV_CLK_APM_USI1_UART,
1586         CLK_CON_GAT_CLK_BLK_APM_UID_APM_CMU_APM_IPCLKPORT_PCLK,
1587         CLK_CON_GAT_CLK_BUS0_BOOST_OPTION1,
1588         CLK_CON_GAT_CLK_CMU_BOOST_OPTION1,
1589         CLK_CON_GAT_CLK_CORE_BOOST_OPTION1,
1590         CLK_CON_GAT_GATE_CLKCMU_APM_FUNC,
1591         CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_GPIO_ALIVE_IPCLKPORT_PCLK,
1592         CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_GPIO_FAR_ALIVE_IPCLKPORT_PCLK,
1593         CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_PMU_ALIVE_IPCLKPORT_PCLK,
1594         CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_RTC_IPCLKPORT_PCLK,
1595         CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_TRTC_IPCLKPORT_PCLK,
1596         CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_UART_IPCLKPORT_IPCLK,
1597         CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_UART_IPCLKPORT_PCLK,
1598         CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_USI_IPCLKPORT_IPCLK,
1599         CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_USI_IPCLKPORT_PCLK,
1600         CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI1_UART_IPCLKPORT_IPCLK,
1601         CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI1_UART_IPCLKPORT_PCLK,
1602         CLK_CON_GAT_GOUT_BLK_APM_UID_D_TZPC_APM_IPCLKPORT_PCLK,
1603         CLK_CON_GAT_GOUT_BLK_APM_UID_GPC_APM_IPCLKPORT_PCLK,
1604         CLK_CON_GAT_GOUT_BLK_APM_UID_GREBEINTEGRATION_IPCLKPORT_HCLK,
1605         CLK_CON_GAT_GOUT_BLK_APM_UID_INTMEM_IPCLKPORT_ACLK,
1606         CLK_CON_GAT_GOUT_BLK_APM_UID_INTMEM_IPCLKPORT_PCLK,
1607         CLK_CON_GAT_GOUT_BLK_APM_UID_LHM_AXI_G_SWD_IPCLKPORT_I_CLK,
1608         CLK_CON_GAT_GOUT_BLK_APM_UID_LHM_AXI_P_AOCAPM_IPCLKPORT_I_CLK,
1609         CLK_CON_GAT_GOUT_BLK_APM_UID_LHM_AXI_P_APM_IPCLKPORT_I_CLK,
1610         CLK_CON_GAT_GOUT_BLK_APM_UID_LHS_AXI_D_APM_IPCLKPORT_I_CLK,
1611         CLK_CON_GAT_GOUT_BLK_APM_UID_LHS_AXI_G_DBGCORE_IPCLKPORT_I_CLK,
1612         CLK_CON_GAT_GOUT_BLK_APM_UID_LHS_AXI_G_SCAN2DRAM_IPCLKPORT_I_CLK,
1613         CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_AOC_IPCLKPORT_PCLK,
1614         CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_AP_IPCLKPORT_PCLK,
1615         CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_GSA_IPCLKPORT_PCLK,
1616         CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_SWD_IPCLKPORT_PCLK,
1617         CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_TPU_IPCLKPORT_PCLK,
1618         CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_AP_AOC_IPCLKPORT_PCLK,
1619         CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_AP_DBGCORE_IPCLKPORT_PCLK,
1620         CLK_CON_GAT_GOUT_BLK_APM_UID_PMU_INTR_GEN_IPCLKPORT_PCLK,
1621         CLK_CON_GAT_GOUT_BLK_APM_UID_ROM_CRC32_HOST_IPCLKPORT_ACLK,
1622         CLK_CON_GAT_GOUT_BLK_APM_UID_ROM_CRC32_HOST_IPCLKPORT_PCLK,
1623         CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_BUS_IPCLKPORT_CLK,
1624         CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_USI0_UART_IPCLKPORT_CLK,
1625         CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_USI0_USI_IPCLKPORT_CLK,
1626         CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_USI1_UART_IPCLKPORT_CLK,
1627         CLK_CON_GAT_GOUT_BLK_APM_UID_SPEEDY_APM_IPCLKPORT_PCLK,
1628         CLK_CON_GAT_GOUT_BLK_APM_UID_SPEEDY_SUB_APM_IPCLKPORT_PCLK,
1629         CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_D_APM_IPCLKPORT_ACLK,
1630         CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_D_APM_IPCLKPORT_PCLK,
1631         CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_G_DBGCORE_IPCLKPORT_ACLK,
1632         CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_G_DBGCORE_IPCLKPORT_PCLK,
1633         CLK_CON_GAT_GOUT_BLK_APM_UID_SS_DBGCORE_IPCLKPORT_SS_DBGCORE_IPCLKPORT_HCLK,
1634         CLK_CON_GAT_GOUT_BLK_APM_UID_SYSMMU_D_APM_IPCLKPORT_CLK_S2,
1635         CLK_CON_GAT_GOUT_BLK_APM_UID_SYSREG_APM_IPCLKPORT_PCLK,
1636         CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_APM_IPCLKPORT_ACLK,
1637         CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_APM_IPCLKPORT_PCLK,
1638         CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_DBGCORE_IPCLKPORT_ACLK,
1639         CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_DBGCORE_IPCLKPORT_PCLK,
1640         CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_G_SWD_IPCLKPORT_ACLK,
1641         CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_G_SWD_IPCLKPORT_PCLK,
1642         CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_P_AOCAPM_IPCLKPORT_ACLK,
1643         CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_P_AOCAPM_IPCLKPORT_PCLK,
1644         CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_P_APM_IPCLKPORT_ACLK,
1645         CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_P_APM_IPCLKPORT_PCLK,
1646         CLK_CON_GAT_GOUT_BLK_APM_UID_WDT_APM_IPCLKPORT_PCLK,
1647         CLK_CON_GAT_GOUT_BLK_APM_UID_XIU_DP_APM_IPCLKPORT_ACLK,
1648 };
1649
1650 PNAME(mout_apm_func_p)          = { "oscclk", "mout_apm_funcsrc",
1651                                     "pad_clk_apm", "oscclk" };
1652 PNAME(mout_apm_funcsrc_p)       = { "pll_alv_div2_apm", "pll_alv_div4_apm",
1653                                     "pll_alv_div16_apm" };
1654
1655 static const struct samsung_fixed_rate_clock apm_fixed_clks[] __initconst = {
1656         FRATE(CLK_APM_PLL_DIV2_APM, "pll_alv_div2_apm", NULL, 0, 393216000),
1657         FRATE(CLK_APM_PLL_DIV4_APM, "pll_alv_div4_apm", NULL, 0, 196608000),
1658         FRATE(CLK_APM_PLL_DIV16_APM, "pll_alv_div16_apm", NULL, 0, 49152000),
1659 };
1660
1661 static const struct samsung_mux_clock apm_mux_clks[] __initconst = {
1662         MUX(CLK_MOUT_APM_FUNC, "mout_apm_func", mout_apm_func_p,
1663             CLK_CON_MUX_MUX_CLKCMU_APM_FUNC, 4, 1),
1664         MUX(CLK_MOUT_APM_FUNCSRC, "mout_apm_funcsrc", mout_apm_funcsrc_p,
1665             CLK_CON_MUX_MUX_CLKCMU_APM_FUNCSRC, 3, 1),
1666 };
1667
1668 static const struct samsung_div_clock apm_div_clks[] __initconst = {
1669         DIV(CLK_DOUT_APM_BOOST, "dout_apm_boost", "gout_apm_func",
1670             CLK_CON_DIV_DIV_CLK_APM_BOOST, 0, 1),
1671         DIV(CLK_DOUT_APM_USI0_UART, "dout_apm_usi0_uart", "gout_apm_func",
1672             CLK_CON_DIV_DIV_CLK_APM_USI0_UART, 0, 7),
1673         DIV(CLK_DOUT_APM_USI0_USI, "dout_apm_usi0_usi", "gout_apm_func",
1674             CLK_CON_DIV_DIV_CLK_APM_USI0_USI, 0, 7),
1675         DIV(CLK_DOUT_APM_USI1_UART, "dout_apm_usi1_uart", "gout_apm_func",
1676             CLK_CON_DIV_DIV_CLK_APM_USI1_UART, 0, 7),
1677 };
1678
1679 static const struct samsung_gate_clock apm_gate_clks[] __initconst = {
1680         GATE(CLK_GOUT_APM_APM_CMU_APM_PCLK,
1681              "gout_apm_apm_cmu_apm_pclk", "mout_apm_func",
1682              CLK_CON_GAT_CLK_BLK_APM_UID_APM_CMU_APM_IPCLKPORT_PCLK, 21, 0, 0),
1683         GATE(CLK_GOUT_BUS0_BOOST_OPTION1, "gout_bus0_boost_option1",
1684              "dout_apm_boost", CLK_CON_GAT_CLK_BUS0_BOOST_OPTION1, 21, 0, 0),
1685         GATE(CLK_GOUT_CMU_BOOST_OPTION1, "gout_cmu_boost_option1",
1686              "dout_apm_boost", CLK_CON_GAT_CLK_CMU_BOOST_OPTION1, 21, 0, 0),
1687         GATE(CLK_GOUT_CORE_BOOST_OPTION1, "gout_core_boost_option1",
1688              "dout_apm_boost", CLK_CON_GAT_CLK_CORE_BOOST_OPTION1, 21, 0, 0),
1689         GATE(CLK_GOUT_APM_FUNC, "gout_apm_func", "mout_apm_func",
1690              CLK_CON_GAT_GATE_CLKCMU_APM_FUNC, 21, 0, 0),
1691         GATE(CLK_GOUT_APM_APBIF_GPIO_ALIVE_PCLK,
1692              "gout_apm_apbif_gpio_alive_pclk", "gout_apm_func",
1693              CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_GPIO_ALIVE_IPCLKPORT_PCLK,
1694              21, 0, 0),
1695         GATE(CLK_GOUT_APM_APBIF_GPIO_FAR_ALIVE_PCLK,
1696              "gout_apm_apbif_gpio_far_alive_pclk", "gout_apm_func",
1697              CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_GPIO_FAR_ALIVE_IPCLKPORT_PCLK,
1698              21, 0, 0),
1699         GATE(CLK_GOUT_APM_APBIF_PMU_ALIVE_PCLK,
1700              "gout_apm_apbif_pmu_alive_pclk", "gout_apm_func",
1701              CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_PMU_ALIVE_IPCLKPORT_PCLK,
1702              21, 0, 0),
1703         GATE(CLK_GOUT_APM_APBIF_RTC_PCLK,
1704              "gout_apm_apbif_rtc_pclk", "gout_apm_func",
1705              CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_RTC_IPCLKPORT_PCLK, 21, 0, 0),
1706         GATE(CLK_GOUT_APM_APBIF_TRTC_PCLK,
1707              "gout_apm_apbif_trtc_pclk", "gout_apm_func",
1708              CLK_CON_GAT_GOUT_BLK_APM_UID_APBIF_TRTC_IPCLKPORT_PCLK, 21, 0, 0),
1709         GATE(CLK_GOUT_APM_APM_USI0_UART_IPCLK,
1710              "gout_apm_apm_usi0_uart_ipclk", "dout_apm_usi0_uart",
1711              CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_UART_IPCLKPORT_IPCLK,
1712              21, 0, 0),
1713         GATE(CLK_GOUT_APM_APM_USI0_UART_PCLK,
1714              "gout_apm_apm_usi0_uart_pclk", "gout_apm_func",
1715              CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_UART_IPCLKPORT_PCLK,
1716              21, 0, 0),
1717         GATE(CLK_GOUT_APM_APM_USI0_USI_IPCLK,
1718              "gout_apm_apm_usi0_usi_ipclk", "dout_apm_usi0_usi",
1719              CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_USI_IPCLKPORT_IPCLK,
1720              21, 0, 0),
1721         GATE(CLK_GOUT_APM_APM_USI0_USI_PCLK,
1722              "gout_apm_apm_usi0_usi_pclk", "gout_apm_func",
1723              CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI0_USI_IPCLKPORT_PCLK,
1724              21, 0, 0),
1725         GATE(CLK_GOUT_APM_APM_USI1_UART_IPCLK,
1726              "gout_apm_apm_usi1_uart_ipclk", "dout_apm_usi1_uart",
1727              CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI1_UART_IPCLKPORT_IPCLK,
1728              21, 0, 0),
1729         GATE(CLK_GOUT_APM_APM_USI1_UART_PCLK,
1730              "gout_apm_apm_usi1_uart_pclk", "gout_apm_func",
1731              CLK_CON_GAT_GOUT_BLK_APM_UID_APM_USI1_UART_IPCLKPORT_PCLK,
1732              21, 0, 0),
1733         GATE(CLK_GOUT_APM_D_TZPC_APM_PCLK,
1734              "gout_apm_d_tzpc_apm_pclk", "gout_apm_func",
1735              CLK_CON_GAT_GOUT_BLK_APM_UID_D_TZPC_APM_IPCLKPORT_PCLK, 21, 0, 0),
1736         GATE(CLK_GOUT_APM_GPC_APM_PCLK,
1737              "gout_apm_gpc_apm_pclk", "gout_apm_func",
1738              CLK_CON_GAT_GOUT_BLK_APM_UID_GPC_APM_IPCLKPORT_PCLK, 21, 0, 0),
1739         GATE(CLK_GOUT_APM_GREBEINTEGRATION_HCLK,
1740              "gout_apm_grebeintegration_hclk", "gout_apm_func",
1741              CLK_CON_GAT_GOUT_BLK_APM_UID_GREBEINTEGRATION_IPCLKPORT_HCLK,
1742              21, 0, 0),
1743         GATE(CLK_GOUT_APM_INTMEM_ACLK,
1744              "gout_apm_intmem_aclk", "gout_apm_func",
1745              CLK_CON_GAT_GOUT_BLK_APM_UID_INTMEM_IPCLKPORT_ACLK, 21, 0, 0),
1746         GATE(CLK_GOUT_APM_INTMEM_PCLK,
1747              "gout_apm_intmem_pclk", "gout_apm_func",
1748              CLK_CON_GAT_GOUT_BLK_APM_UID_INTMEM_IPCLKPORT_PCLK, 21, 0, 0),
1749         GATE(CLK_GOUT_APM_LHM_AXI_G_SWD_I_CLK,
1750              "gout_apm_lhm_axi_g_swd_i_clk", "gout_apm_func",
1751              CLK_CON_GAT_GOUT_BLK_APM_UID_LHM_AXI_G_SWD_IPCLKPORT_I_CLK,
1752              21, 0, 0),
1753         GATE(CLK_GOUT_APM_LHM_AXI_P_AOCAPM_I_CLK,
1754              "gout_apm_lhm_axi_p_aocapm_i_clk", "gout_apm_func",
1755              CLK_CON_GAT_GOUT_BLK_APM_UID_LHM_AXI_P_AOCAPM_IPCLKPORT_I_CLK,
1756              21, 0, 0),
1757         GATE(CLK_GOUT_APM_LHM_AXI_P_APM_I_CLK,
1758              "gout_apm_lhm_axi_p_apm_i_clk", "gout_apm_func",
1759              CLK_CON_GAT_GOUT_BLK_APM_UID_LHS_AXI_D_APM_IPCLKPORT_I_CLK,
1760              21, 0, 0),
1761         GATE(CLK_GOUT_APM_LHS_AXI_D_APM_I_CLK,
1762              "gout_apm_lhs_axi_d_apm_i_clk", "gout_apm_func",
1763              CLK_CON_GAT_GOUT_BLK_APM_UID_LHS_AXI_D_APM_IPCLKPORT_I_CLK,
1764              21, 0, 0),
1765         GATE(CLK_GOUT_APM_LHS_AXI_G_DBGCORE_I_CLK,
1766              "gout_apm_lhs_axi_g_dbgcore_i_clk", "gout_apm_func",
1767              CLK_CON_GAT_GOUT_BLK_APM_UID_LHS_AXI_G_DBGCORE_IPCLKPORT_I_CLK,
1768              21, 0, 0),
1769         GATE(CLK_GOUT_APM_LHS_AXI_G_SCAN2DRAM_I_CLK,
1770              "gout_apm_lhs_axi_g_scan2dram_i_clk",
1771              "gout_apm_func",
1772              CLK_CON_GAT_GOUT_BLK_APM_UID_LHS_AXI_G_SCAN2DRAM_IPCLKPORT_I_CLK,
1773              21, 0, 0),
1774         GATE(CLK_GOUT_APM_MAILBOX_APM_AOC_PCLK,
1775              "gout_apm_mailbox_apm_aoc_pclk", "gout_apm_func",
1776              CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_AOC_IPCLKPORT_PCLK,
1777              21, 0, 0),
1778         GATE(CLK_GOUT_APM_MAILBOX_APM_AP_PCLK,
1779              "gout_apm_mailbox_apm_ap_pclk", "gout_apm_func",
1780              CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_AP_IPCLKPORT_PCLK,
1781              21, 0, 0),
1782         GATE(CLK_GOUT_APM_MAILBOX_APM_GSA_PCLK,
1783              "gout_apm_mailbox_apm_gsa_pclk", "gout_apm_func",
1784              CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_GSA_IPCLKPORT_PCLK,
1785              21, 0, 0),
1786         GATE(CLK_GOUT_APM_MAILBOX_APM_SWD_PCLK,
1787              "gout_apm_mailbox_apm_swd_pclk", "gout_apm_func",
1788              CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_SWD_IPCLKPORT_PCLK,
1789              21, 0, 0),
1790         GATE(CLK_GOUT_APM_MAILBOX_APM_TPU_PCLK,
1791              "gout_apm_mailbox_apm_tpu_pclk", "gout_apm_func",
1792              CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_APM_TPU_IPCLKPORT_PCLK,
1793              21, 0, 0),
1794         GATE(CLK_GOUT_APM_MAILBOX_AP_AOC_PCLK,
1795              "gout_apm_mailbox_ap_aoc_pclk", "gout_apm_func",
1796              CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_AP_AOC_IPCLKPORT_PCLK,
1797              21, 0, 0),
1798         GATE(CLK_GOUT_APM_MAILBOX_AP_DBGCORE_PCLK,
1799              "gout_apm_mailbox_ap_dbgcore_pclk", "gout_apm_func",
1800              CLK_CON_GAT_GOUT_BLK_APM_UID_MAILBOX_AP_DBGCORE_IPCLKPORT_PCLK,
1801              21, 0, 0),
1802         GATE(CLK_GOUT_APM_PMU_INTR_GEN_PCLK,
1803              "gout_apm_pmu_intr_gen_pclk", "gout_apm_func",
1804              CLK_CON_GAT_GOUT_BLK_APM_UID_PMU_INTR_GEN_IPCLKPORT_PCLK,
1805              21, 0, 0),
1806         GATE(CLK_GOUT_APM_ROM_CRC32_HOST_ACLK,
1807              "gout_apm_rom_crc32_host_aclk", "gout_apm_func",
1808              CLK_CON_GAT_GOUT_BLK_APM_UID_ROM_CRC32_HOST_IPCLKPORT_ACLK,
1809              21, 0, 0),
1810         GATE(CLK_GOUT_APM_ROM_CRC32_HOST_PCLK,
1811              "gout_apm_rom_crc32_host_pclk", "gout_apm_func",
1812              CLK_CON_GAT_GOUT_BLK_APM_UID_ROM_CRC32_HOST_IPCLKPORT_PCLK,
1813              21, 0, 0),
1814         GATE(CLK_GOUT_APM_CLK_APM_BUS_CLK,
1815              "gout_apm_clk_apm_bus_clk", "gout_apm_func",
1816              CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_BUS_IPCLKPORT_CLK,
1817              21, 0, 0),
1818         GATE(CLK_GOUT_APM_CLK_APM_USI0_UART_CLK,
1819              "gout_apm_clk_apm_usi0_uart_clk",
1820              "dout_apm_usi0_uart",
1821              CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_USI0_UART_IPCLKPORT_CLK,
1822              21, 0, 0),
1823         GATE(CLK_GOUT_APM_CLK_APM_USI0_USI_CLK,
1824              "gout_apm_clk_apm_usi0_usi_clk",
1825              "dout_apm_usi0_usi",
1826              CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_USI0_UART_IPCLKPORT_CLK,
1827              21, 0, 0),
1828         GATE(CLK_GOUT_APM_CLK_APM_USI1_UART_CLK,
1829              "gout_apm_clk_apm_usi1_uart_clk",
1830              "dout_apm_usi1_uart",
1831              CLK_CON_GAT_GOUT_BLK_APM_UID_RSTNSYNC_CLK_APM_USI1_UART_IPCLKPORT_CLK,
1832              21, 0, 0),
1833         GATE(CLK_GOUT_APM_SPEEDY_APM_PCLK,
1834              "gout_apm_speedy_apm_pclk", "gout_apm_func",
1835              CLK_CON_GAT_GOUT_BLK_APM_UID_SPEEDY_APM_IPCLKPORT_PCLK, 21, 0, 0),
1836         GATE(CLK_GOUT_APM_SPEEDY_SUB_APM_PCLK,
1837              "gout_apm_speedy_sub_apm_pclk", "gout_apm_func",
1838              CLK_CON_GAT_GOUT_BLK_APM_UID_SPEEDY_SUB_APM_IPCLKPORT_PCLK,
1839              21, 0, 0),
1840         GATE(CLK_GOUT_APM_SSMT_D_APM_ACLK,
1841              "gout_apm_ssmt_d_apm_aclk", "gout_apm_func",
1842              CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_D_APM_IPCLKPORT_ACLK, 21, 0, 0),
1843         GATE(CLK_GOUT_APM_SSMT_D_APM_PCLK,
1844              "gout_apm_ssmt_d_apm_pclk", "gout_apm_func",
1845              CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_D_APM_IPCLKPORT_PCLK, 21, 0, 0),
1846         GATE(CLK_GOUT_APM_SSMT_G_DBGCORE_ACLK,
1847              "gout_apm_ssmt_g_dbgcore_aclk", "gout_apm_func",
1848              CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_G_DBGCORE_IPCLKPORT_ACLK,
1849              21, 0, 0),
1850         GATE(CLK_GOUT_APM_SSMT_G_DBGCORE_PCLK,
1851              "gout_apm_ssmt_g_dbgcore_pclk", "gout_apm_func",
1852              CLK_CON_GAT_GOUT_BLK_APM_UID_SSMT_G_DBGCORE_IPCLKPORT_PCLK,
1853              21, 0, 0),
1854         GATE(CLK_GOUT_APM_SS_DBGCORE_SS_DBGCORE_HCLK,
1855              "gout_apm_ss_dbgcore_ss_dbgcore_hclk",
1856              "gout_apm_func",
1857              CLK_CON_GAT_GOUT_BLK_APM_UID_SS_DBGCORE_IPCLKPORT_SS_DBGCORE_IPCLKPORT_HCLK,
1858              21, 0, 0),
1859         GATE(CLK_GOUT_APM_SYSMMU_D_APM_CLK_S2,
1860              "gout_apm_sysmmu_d_dpm_clk_s2", "gout_apm_func",
1861              CLK_CON_GAT_GOUT_BLK_APM_UID_SYSMMU_D_APM_IPCLKPORT_CLK_S2,
1862              21, 0, 0),
1863         GATE(CLK_GOUT_APM_SYSREG_APM_PCLK,
1864              "gout_apm_sysreg_apm_pclk", "gout_apm_func",
1865              CLK_CON_GAT_GOUT_BLK_APM_UID_SYSREG_APM_IPCLKPORT_PCLK, 21, 0, 0),
1866         GATE(CLK_GOUT_APM_UASC_APM_ACLK,
1867              "gout_apm_uasc_apm_aclk", "gout_apm_func",
1868              CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_APM_IPCLKPORT_ACLK, 21, 0, 0),
1869         GATE(CLK_GOUT_APM_UASC_APM_PCLK,
1870              "gout_apm_uasc_apm_pclk", "gout_apm_func",
1871              CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_APM_IPCLKPORT_PCLK, 21, 0, 0),
1872         GATE(CLK_GOUT_APM_UASC_DBGCORE_ACLK,
1873              "gout_apm_uasc_dbgcore_aclk", "gout_apm_func",
1874              CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_DBGCORE_IPCLKPORT_ACLK,
1875              21, 0, 0),
1876         GATE(CLK_GOUT_APM_UASC_DBGCORE_PCLK,
1877              "gout_apm_uasc_dbgcore_pclk", "gout_apm_func",
1878              CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_DBGCORE_IPCLKPORT_PCLK,
1879              21, 0, 0),
1880         GATE(CLK_GOUT_APM_UASC_G_SWD_ACLK,
1881              "gout_apm_uasc_g_swd_aclk", "gout_apm_func",
1882              CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_G_SWD_IPCLKPORT_ACLK, 21, 0, 0),
1883         GATE(CLK_GOUT_APM_UASC_G_SWD_PCLK,
1884              "gout_apm_uasc_g_swd_pclk", "gout_apm_func",
1885              CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_G_SWD_IPCLKPORT_PCLK, 21, 0, 0),
1886         GATE(CLK_GOUT_APM_UASC_P_AOCAPM_ACLK,
1887              "gout_apm_uasc_p_aocapm_aclk", "gout_apm_func",
1888              CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_P_AOCAPM_IPCLKPORT_ACLK,
1889              21, 0, 0),
1890         GATE(CLK_GOUT_APM_UASC_P_AOCAPM_PCLK,
1891              "gout_apm_uasc_p_aocapm_pclk", "gout_apm_func",
1892              CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_G_SWD_IPCLKPORT_PCLK, 21, 0, 0),
1893         GATE(CLK_GOUT_APM_UASC_P_APM_ACLK,
1894              "gout_apm_uasc_p_apm_aclk", "gout_apm_func",
1895              CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_P_APM_IPCLKPORT_ACLK, 21, 0, 0),
1896         GATE(CLK_GOUT_APM_UASC_P_APM_PCLK,
1897              "gout_apm_uasc_p_apm_pclk", "gout_apm_func",
1898              CLK_CON_GAT_GOUT_BLK_APM_UID_UASC_P_APM_IPCLKPORT_PCLK, 21, 0, 0),
1899         GATE(CLK_GOUT_APM_WDT_APM_PCLK,
1900              "gout_apm_wdt_apm_pclk", "gout_apm_func",
1901              CLK_CON_GAT_GOUT_BLK_APM_UID_WDT_APM_IPCLKPORT_PCLK, 21, 0, 0),
1902         GATE(CLK_GOUT_APM_XIU_DP_APM_ACLK,
1903              "gout_apm_xiu_dp_apm_aclk", "gout_apm_func",
1904              CLK_CON_GAT_GOUT_BLK_APM_UID_XIU_DP_APM_IPCLKPORT_ACLK, 21, 0, 0),
1905 };
1906
1907 static const struct samsung_cmu_info apm_cmu_info __initconst = {
1908         .mux_clks               = apm_mux_clks,
1909         .nr_mux_clks            = ARRAY_SIZE(apm_mux_clks),
1910         .div_clks               = apm_div_clks,
1911         .nr_div_clks            = ARRAY_SIZE(apm_div_clks),
1912         .gate_clks              = apm_gate_clks,
1913         .nr_gate_clks           = ARRAY_SIZE(apm_gate_clks),
1914         .fixed_clks             = apm_fixed_clks,
1915         .nr_fixed_clks          = ARRAY_SIZE(apm_fixed_clks),
1916         .nr_clk_ids             = CLKS_NR_APM,
1917         .clk_regs               = apm_clk_regs,
1918         .nr_clk_regs            = ARRAY_SIZE(apm_clk_regs),
1919 };
1920
1921 /* ---- CMU_MISC ------------------------------------------------------------ */
1922
1923 /* Register Offset definitions for CMU_MISC (0x10010000) */
1924 #define PLL_CON0_MUX_CLKCMU_MISC_BUS_USER                                       0x0600
1925 #define PLL_CON1_MUX_CLKCMU_MISC_BUS_USER                                       0x0604
1926 #define PLL_CON0_MUX_CLKCMU_MISC_SSS_USER                                       0x0610
1927 #define PLL_CON1_MUX_CLKCMU_MISC_SSS_USER                                       0x0614
1928 #define MISC_CMU_MISC_CONTROLLER_OPTION                                         0x0800
1929 #define CLKOUT_CON_BLK_MISC_CMU_MISC_CLKOUT0                                    0x0810
1930 #define CLK_CON_MUX_MUX_CLK_MISC_GIC                                            0x1000
1931 #define CLK_CON_DIV_DIV_CLK_MISC_BUSP                                           0x1800
1932 #define CLK_CON_DIV_DIV_CLK_MISC_GIC                                            0x1804
1933 #define CLK_CON_GAT_CLK_BLK_MISC_UID_MISC_CMU_MISC_IPCLKPORT_PCLK               0x2000
1934 #define CLK_CON_GAT_CLK_BLK_MISC_UID_OTP_CON_BIRA_IPCLKPORT_I_OSCCLK            0x2004
1935 #define CLK_CON_GAT_CLK_BLK_MISC_UID_OTP_CON_BISR_IPCLKPORT_I_OSCCLK            0x2008
1936 #define CLK_CON_GAT_CLK_BLK_MISC_UID_OTP_CON_TOP_IPCLKPORT_I_OSCCLK             0x200c
1937 #define CLK_CON_GAT_CLK_BLK_MISC_UID_RSTNSYNC_CLK_MISC_OSCCLK_IPCLKPORT_CLK     0x2010
1938 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_ADM_AHB_SSS_IPCLKPORT_HCLKM               0x2014
1939 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_AD_APB_DIT_IPCLKPORT_PCLKM                0x2018
1940 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_AD_APB_PUF_IPCLKPORT_PCLKM                0x201c
1941 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_DIT_IPCLKPORT_ICLKL2A                     0x2020
1942 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_D_TZPC_MISC_IPCLKPORT_PCLK                0x2024
1943 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_GIC_IPCLKPORT_GICCLK                      0x2028
1944 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_GPC_MISC_IPCLKPORT_PCLK                   0x202c
1945 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AST_ICC_CPUGIC_IPCLKPORT_I_CLK        0x2030
1946 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AXI_D_SSS_IPCLKPORT_I_CLK             0x2034
1947 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AXI_P_GIC_IPCLKPORT_I_CLK             0x2038
1948 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AXI_P_MISC_IPCLKPORT_I_CLK            0x203c
1949 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_LHS_ACEL_D_MISC_IPCLKPORT_I_CLK           0x2040
1950 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_LHS_AST_IRI_GICCPU_IPCLKPORT_I_CLK        0x2044
1951 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_LHS_AXI_D_SSS_IPCLKPORT_I_CLK             0x2048
1952 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_MCT_IPCLKPORT_PCLK                        0x204c
1953 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_OTP_CON_BIRA_IPCLKPORT_PCLK               0x2050
1954 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_OTP_CON_BISR_IPCLKPORT_PCLK               0x2054
1955 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_OTP_CON_TOP_IPCLKPORT_PCLK                0x2058
1956 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_PDMA_IPCLKPORT_ACLK                       0x205c
1957 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_PPMU_DMA_IPCLKPORT_ACLK                   0x2060
1958 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_PPMU_MISC_IPCLKPORT_ACLK                  0x2064
1959 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_PPMU_MISC_IPCLKPORT_PCLK                  0x2068
1960 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_PUF_IPCLKPORT_I_CLK                       0x206c
1961 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_DIT_IPCLKPORT_ACLK                     0x2070
1962 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_DIT_IPCLKPORT_PCLK                     0x2074
1963 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PDMA_IPCLKPORT_ACLK                    0x2078
1964 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PDMA_IPCLKPORT_PCLK                    0x207c
1965 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PPMU_DMA_IPCLKPORT_ACLK                0x2080
1966 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PPMU_DMA_IPCLKPORT_PCLK                0x2084
1967 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_RTIC_IPCLKPORT_ACLK                    0x2088
1968 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_RTIC_IPCLKPORT_PCLK                    0x208c
1969 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SPDMA_IPCLKPORT_ACLK                   0x2090
1970 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SPDMA_IPCLKPORT_PCLK                   0x2094
1971 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SSS_IPCLKPORT_ACLK                     0x2098
1972 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SSS_IPCLKPORT_PCLK                     0x209c
1973 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_BUSD_IPCLKPORT_CLK      0x20a0
1974 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_BUSP_IPCLKPORT_CLK      0x20a4
1975 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_GIC_IPCLKPORT_CLK       0x20a8
1976 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_SSS_IPCLKPORT_CLK       0x20ac
1977 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_RTIC_IPCLKPORT_I_ACLK                     0x20b0
1978 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_RTIC_IPCLKPORT_I_PCLK                     0x20b4
1979 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SPDMA_IPCLKPORT_ACLK                      0x20b8
1980 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_DIT_IPCLKPORT_ACLK                   0x20bc
1981 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_DIT_IPCLKPORT_PCLK                   0x20c0
1982 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PDMA_IPCLKPORT_ACLK                  0x20c4
1983 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PDMA_IPCLKPORT_PCLK                  0x20c8
1984 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PPMU_DMA_IPCLKPORT_ACLK              0x20cc
1985 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PPMU_DMA_IPCLKPORT_PCLK              0x20d0
1986 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_RTIC_IPCLKPORT_ACLK                  0x20d4
1987 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_RTIC_IPCLKPORT_PCLK                  0x20d8
1988 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SPDMA_IPCLKPORT_ACLK                 0x20dc
1989 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SPDMA_IPCLKPORT_PCLK                 0x20e0
1990 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SSS_IPCLKPORT_ACLK                   0x20e4
1991 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SSS_IPCLKPORT_PCLK                   0x20e8
1992 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSS_IPCLKPORT_I_ACLK                      0x20ec
1993 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SSS_IPCLKPORT_I_PCLK                      0x20f0
1994 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SYSMMU_MISC_IPCLKPORT_CLK_S2              0x20f4
1995 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SYSMMU_SSS_IPCLKPORT_CLK_S1               0x20f8
1996 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_SYSREG_MISC_IPCLKPORT_PCLK                0x20fc
1997 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_TMU_SUB_IPCLKPORT_PCLK                    0x2100
1998 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_TMU_TOP_IPCLKPORT_PCLK                    0x2104
1999 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_WDT_CLUSTER0_IPCLKPORT_PCLK               0x2108
2000 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_WDT_CLUSTER1_IPCLKPORT_PCLK               0x210c
2001 #define CLK_CON_GAT_GOUT_BLK_MISC_UID_XIU_D_MISC_IPCLKPORT_ACLK                 0x2110
2002 #define DMYQCH_CON_PPMU_DMA_QCH                                                 0x3000
2003 #define DMYQCH_CON_PUF_QCH                                                      0x3004
2004 #define PCH_CON_LHM_AXI_D_SSS_PCH                                               0x300c
2005 #define PCH_CON_LHM_AXI_P_GIC_PCH                                               0x3010
2006 #define PCH_CON_LHM_AXI_P_MISC_PCH                                              0x3014
2007 #define PCH_CON_LHS_ACEL_D_MISC_PCH                                             0x3018
2008 #define PCH_CON_LHS_AST_IRI_GICCPU_PCH                                          0x301c
2009 #define PCH_CON_LHS_AXI_D_SSS_PCH                                               0x3020
2010 #define QCH_CON_ADM_AHB_SSS_QCH                                                 0x3024
2011 #define QCH_CON_DIT_QCH                                                         0x3028
2012 #define QCH_CON_GIC_QCH                                                         0x3030
2013 #define QCH_CON_LHM_AST_ICC_CPUGIC_QCH                                          0x3038
2014 #define QCH_CON_LHM_AXI_D_SSS_QCH                                               0x303c
2015 #define QCH_CON_LHM_AXI_P_GIC_QCH                                               0x3040
2016 #define QCH_CON_LHM_AXI_P_MISC_QCH                                              0x3044
2017 #define QCH_CON_LHS_ACEL_D_MISC_QCH                                             0x3048
2018 #define QCH_CON_LHS_AST_IRI_GICCPU_QCH                                          0x304c
2019 #define QCH_CON_LHS_AXI_D_SSS_QCH                                               0x3050
2020 #define QCH_CON_MCT_QCH                                                         0x3054
2021 #define QCH_CON_MISC_CMU_MISC_QCH                                               0x3058
2022 #define QCH_CON_OTP_CON_BIRA_QCH                                                0x305c
2023 #define QCH_CON_OTP_CON_BISR_QCH                                                0x3060
2024 #define QCH_CON_OTP_CON_TOP_QCH                                                 0x3064
2025 #define QCH_CON_PDMA_QCH                                                        0x3068
2026 #define QCH_CON_PPMU_MISC_QCH                                                   0x306c
2027 #define QCH_CON_QE_DIT_QCH                                                      0x3070
2028 #define QCH_CON_QE_PDMA_QCH                                                     0x3074
2029 #define QCH_CON_QE_PPMU_DMA_QCH                                                 0x3078
2030 #define QCH_CON_QE_RTIC_QCH                                                     0x307c
2031 #define QCH_CON_QE_SPDMA_QCH                                                    0x3080
2032 #define QCH_CON_QE_SSS_QCH                                                      0x3084
2033 #define QCH_CON_RTIC_QCH                                                        0x3088
2034 #define QCH_CON_SPDMA_QCH                                                       0x308c
2035 #define QCH_CON_SSMT_DIT_QCH                                                    0x3090
2036 #define QCH_CON_SSMT_PDMA_QCH                                                   0x3094
2037 #define QCH_CON_SSMT_PPMU_DMA_QCH                                               0x3098
2038 #define QCH_CON_SSMT_RTIC_QCH                                                   0x309c
2039 #define QCH_CON_SSMT_SPDMA_QCH                                                  0x30a0
2040 #define QCH_CON_SSMT_SSS_QCH                                                    0x30a4
2041 #define QCH_CON_SSS_QCH                                                         0x30a8
2042 #define QCH_CON_SYSMMU_MISC_QCH                                                 0x30ac
2043 #define QCH_CON_SYSMMU_SSS_QCH                                                  0x30b0
2044 #define QCH_CON_SYSREG_MISC_QCH                                                 0x30b4
2045 #define QCH_CON_TMU_SUB_QCH                                                     0x30b8
2046 #define QCH_CON_TMU_TOP_QCH                                                     0x30bc
2047 #define QCH_CON_WDT_CLUSTER0_QCH                                                0x30c0
2048 #define QCH_CON_WDT_CLUSTER1_QCH                                                0x30c4
2049 #define QUEUE_CTRL_REG_BLK_MISC_CMU_MISC                                        0x3c00
2050
2051 static const unsigned long misc_clk_regs[] __initconst = {
2052         PLL_CON0_MUX_CLKCMU_MISC_BUS_USER,
2053         PLL_CON1_MUX_CLKCMU_MISC_BUS_USER,
2054         PLL_CON0_MUX_CLKCMU_MISC_SSS_USER,
2055         PLL_CON1_MUX_CLKCMU_MISC_SSS_USER,
2056         MISC_CMU_MISC_CONTROLLER_OPTION,
2057         CLKOUT_CON_BLK_MISC_CMU_MISC_CLKOUT0,
2058         CLK_CON_MUX_MUX_CLK_MISC_GIC,
2059         CLK_CON_DIV_DIV_CLK_MISC_BUSP,
2060         CLK_CON_DIV_DIV_CLK_MISC_GIC,
2061         CLK_CON_GAT_CLK_BLK_MISC_UID_MISC_CMU_MISC_IPCLKPORT_PCLK,
2062         CLK_CON_GAT_CLK_BLK_MISC_UID_OTP_CON_BIRA_IPCLKPORT_I_OSCCLK,
2063         CLK_CON_GAT_CLK_BLK_MISC_UID_OTP_CON_BISR_IPCLKPORT_I_OSCCLK,
2064         CLK_CON_GAT_CLK_BLK_MISC_UID_OTP_CON_TOP_IPCLKPORT_I_OSCCLK,
2065         CLK_CON_GAT_CLK_BLK_MISC_UID_RSTNSYNC_CLK_MISC_OSCCLK_IPCLKPORT_CLK,
2066         CLK_CON_GAT_GOUT_BLK_MISC_UID_ADM_AHB_SSS_IPCLKPORT_HCLKM,
2067         CLK_CON_GAT_GOUT_BLK_MISC_UID_AD_APB_DIT_IPCLKPORT_PCLKM,
2068         CLK_CON_GAT_GOUT_BLK_MISC_UID_AD_APB_PUF_IPCLKPORT_PCLKM,
2069         CLK_CON_GAT_GOUT_BLK_MISC_UID_DIT_IPCLKPORT_ICLKL2A,
2070         CLK_CON_GAT_GOUT_BLK_MISC_UID_D_TZPC_MISC_IPCLKPORT_PCLK,
2071         CLK_CON_GAT_GOUT_BLK_MISC_UID_GIC_IPCLKPORT_GICCLK,
2072         CLK_CON_GAT_GOUT_BLK_MISC_UID_GPC_MISC_IPCLKPORT_PCLK,
2073         CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AST_ICC_CPUGIC_IPCLKPORT_I_CLK,
2074         CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AXI_D_SSS_IPCLKPORT_I_CLK,
2075         CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AXI_P_GIC_IPCLKPORT_I_CLK,
2076         CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AXI_P_MISC_IPCLKPORT_I_CLK,
2077         CLK_CON_GAT_GOUT_BLK_MISC_UID_LHS_ACEL_D_MISC_IPCLKPORT_I_CLK,
2078         CLK_CON_GAT_GOUT_BLK_MISC_UID_LHS_AST_IRI_GICCPU_IPCLKPORT_I_CLK,
2079         CLK_CON_GAT_GOUT_BLK_MISC_UID_LHS_AXI_D_SSS_IPCLKPORT_I_CLK,
2080         CLK_CON_GAT_GOUT_BLK_MISC_UID_MCT_IPCLKPORT_PCLK,
2081         CLK_CON_GAT_GOUT_BLK_MISC_UID_OTP_CON_BIRA_IPCLKPORT_PCLK,
2082         CLK_CON_GAT_GOUT_BLK_MISC_UID_OTP_CON_BISR_IPCLKPORT_PCLK,
2083         CLK_CON_GAT_GOUT_BLK_MISC_UID_OTP_CON_TOP_IPCLKPORT_PCLK,
2084         CLK_CON_GAT_GOUT_BLK_MISC_UID_PDMA_IPCLKPORT_ACLK,
2085         CLK_CON_GAT_GOUT_BLK_MISC_UID_PPMU_DMA_IPCLKPORT_ACLK,
2086         CLK_CON_GAT_GOUT_BLK_MISC_UID_PPMU_MISC_IPCLKPORT_ACLK,
2087         CLK_CON_GAT_GOUT_BLK_MISC_UID_PPMU_MISC_IPCLKPORT_PCLK,
2088         CLK_CON_GAT_GOUT_BLK_MISC_UID_PUF_IPCLKPORT_I_CLK,
2089         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_DIT_IPCLKPORT_ACLK,
2090         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_DIT_IPCLKPORT_PCLK,
2091         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PDMA_IPCLKPORT_ACLK,
2092         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PDMA_IPCLKPORT_PCLK,
2093         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PPMU_DMA_IPCLKPORT_ACLK,
2094         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PPMU_DMA_IPCLKPORT_PCLK,
2095         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_RTIC_IPCLKPORT_ACLK,
2096         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_RTIC_IPCLKPORT_PCLK,
2097         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SPDMA_IPCLKPORT_ACLK,
2098         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SPDMA_IPCLKPORT_PCLK,
2099         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SSS_IPCLKPORT_ACLK,
2100         CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SSS_IPCLKPORT_PCLK,
2101         CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_BUSD_IPCLKPORT_CLK,
2102         CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_BUSP_IPCLKPORT_CLK,
2103         CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_GIC_IPCLKPORT_CLK,
2104         CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_SSS_IPCLKPORT_CLK,
2105         CLK_CON_GAT_GOUT_BLK_MISC_UID_RTIC_IPCLKPORT_I_ACLK,
2106         CLK_CON_GAT_GOUT_BLK_MISC_UID_RTIC_IPCLKPORT_I_PCLK,
2107         CLK_CON_GAT_GOUT_BLK_MISC_UID_SPDMA_IPCLKPORT_ACLK,
2108         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_DIT_IPCLKPORT_ACLK,
2109         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_DIT_IPCLKPORT_PCLK,
2110         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PDMA_IPCLKPORT_ACLK,
2111         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PDMA_IPCLKPORT_PCLK,
2112         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PPMU_DMA_IPCLKPORT_ACLK,
2113         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PPMU_DMA_IPCLKPORT_PCLK,
2114         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_RTIC_IPCLKPORT_ACLK,
2115         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_RTIC_IPCLKPORT_PCLK,
2116         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SPDMA_IPCLKPORT_ACLK,
2117         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SPDMA_IPCLKPORT_PCLK,
2118         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SSS_IPCLKPORT_ACLK,
2119         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SSS_IPCLKPORT_PCLK,
2120         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSS_IPCLKPORT_I_ACLK,
2121         CLK_CON_GAT_GOUT_BLK_MISC_UID_SSS_IPCLKPORT_I_PCLK,
2122         CLK_CON_GAT_GOUT_BLK_MISC_UID_SYSMMU_MISC_IPCLKPORT_CLK_S2,
2123         CLK_CON_GAT_GOUT_BLK_MISC_UID_SYSMMU_SSS_IPCLKPORT_CLK_S1,
2124         CLK_CON_GAT_GOUT_BLK_MISC_UID_SYSREG_MISC_IPCLKPORT_PCLK,
2125         CLK_CON_GAT_GOUT_BLK_MISC_UID_TMU_SUB_IPCLKPORT_PCLK,
2126         CLK_CON_GAT_GOUT_BLK_MISC_UID_TMU_TOP_IPCLKPORT_PCLK,
2127         CLK_CON_GAT_GOUT_BLK_MISC_UID_WDT_CLUSTER0_IPCLKPORT_PCLK,
2128         CLK_CON_GAT_GOUT_BLK_MISC_UID_WDT_CLUSTER1_IPCLKPORT_PCLK,
2129         CLK_CON_GAT_GOUT_BLK_MISC_UID_XIU_D_MISC_IPCLKPORT_ACLK,
2130         DMYQCH_CON_PPMU_DMA_QCH,
2131         DMYQCH_CON_PUF_QCH,
2132         PCH_CON_LHM_AXI_D_SSS_PCH,
2133         PCH_CON_LHM_AXI_P_GIC_PCH,
2134         PCH_CON_LHM_AXI_P_MISC_PCH,
2135         PCH_CON_LHS_ACEL_D_MISC_PCH,
2136         PCH_CON_LHS_AST_IRI_GICCPU_PCH,
2137         PCH_CON_LHS_AXI_D_SSS_PCH,
2138         QCH_CON_ADM_AHB_SSS_QCH,
2139         QCH_CON_DIT_QCH,
2140         QCH_CON_GIC_QCH,
2141         QCH_CON_LHM_AST_ICC_CPUGIC_QCH,
2142         QCH_CON_LHM_AXI_D_SSS_QCH,
2143         QCH_CON_LHM_AXI_P_GIC_QCH,
2144         QCH_CON_LHM_AXI_P_MISC_QCH,
2145         QCH_CON_LHS_ACEL_D_MISC_QCH,
2146         QCH_CON_LHS_AST_IRI_GICCPU_QCH,
2147         QCH_CON_LHS_AXI_D_SSS_QCH,
2148         QCH_CON_MCT_QCH,
2149         QCH_CON_MISC_CMU_MISC_QCH,
2150         QCH_CON_OTP_CON_BIRA_QCH,
2151         QCH_CON_OTP_CON_BISR_QCH,
2152         QCH_CON_OTP_CON_TOP_QCH,
2153         QCH_CON_PDMA_QCH,
2154         QCH_CON_PPMU_MISC_QCH,
2155         QCH_CON_QE_DIT_QCH,
2156         QCH_CON_QE_PDMA_QCH,
2157         QCH_CON_QE_PPMU_DMA_QCH,
2158         QCH_CON_QE_RTIC_QCH,
2159         QCH_CON_QE_SPDMA_QCH,
2160         QCH_CON_QE_SSS_QCH,
2161         QCH_CON_RTIC_QCH,
2162         QCH_CON_SPDMA_QCH,
2163         QCH_CON_SSMT_DIT_QCH,
2164         QCH_CON_SSMT_PDMA_QCH,
2165         QCH_CON_SSMT_PPMU_DMA_QCH,
2166         QCH_CON_SSMT_RTIC_QCH,
2167         QCH_CON_SSMT_SPDMA_QCH,
2168         QCH_CON_SSMT_SSS_QCH,
2169         QCH_CON_SSS_QCH,
2170         QCH_CON_SYSMMU_MISC_QCH,
2171         QCH_CON_SYSMMU_SSS_QCH,
2172         QCH_CON_SYSREG_MISC_QCH,
2173         QCH_CON_TMU_SUB_QCH,
2174         QCH_CON_TMU_TOP_QCH,
2175         QCH_CON_WDT_CLUSTER0_QCH,
2176         QCH_CON_WDT_CLUSTER1_QCH,
2177         QUEUE_CTRL_REG_BLK_MISC_CMU_MISC,
2178 };
2179
2180  /* List of parent clocks for Muxes in CMU_MISC */
2181 PNAME(mout_misc_bus_user_p)             = { "oscclk", "dout_cmu_misc_bus" };
2182 PNAME(mout_misc_sss_user_p)             = { "oscclk", "dout_cmu_misc_sss" };
2183 PNAME(mout_misc_gic_p)                  = { "dout_misc_gic", "oscclk" };
2184
2185 static const struct samsung_mux_clock misc_mux_clks[] __initconst = {
2186         MUX(CLK_MOUT_MISC_BUS_USER, "mout_misc_bus_user", mout_misc_bus_user_p,
2187             PLL_CON0_MUX_CLKCMU_MISC_BUS_USER, 4, 1),
2188         MUX(CLK_MOUT_MISC_SSS_USER, "mout_misc_sss_user", mout_misc_sss_user_p,
2189             PLL_CON0_MUX_CLKCMU_MISC_SSS_USER, 4, 1),
2190         MUX(CLK_MOUT_MISC_GIC, "mout_misc_gic", mout_misc_gic_p,
2191             CLK_CON_MUX_MUX_CLK_MISC_GIC, 0, 0),
2192 };
2193
2194 static const struct samsung_div_clock misc_div_clks[] __initconst = {
2195         DIV(CLK_DOUT_MISC_BUSP, "dout_misc_busp", "mout_misc_bus_user",
2196             CLK_CON_DIV_DIV_CLK_MISC_BUSP, 0, 3),
2197         DIV(CLK_DOUT_MISC_GIC, "dout_misc_gic", "mout_misc_bus_user",
2198             CLK_CON_DIV_DIV_CLK_MISC_GIC, 0, 3),
2199 };
2200
2201 static const struct samsung_gate_clock misc_gate_clks[] __initconst = {
2202         GATE(CLK_GOUT_MISC_MISC_CMU_MISC_PCLK,
2203              "gout_misc_misc_cmu_misc_pclk", "dout_misc_busp",
2204              CLK_CON_GAT_CLK_BLK_MISC_UID_MISC_CMU_MISC_IPCLKPORT_PCLK,
2205              21, 0, 0),
2206         GATE(CLK_GOUT_MISC_OTP_CON_BIRA_I_OSCCLK,
2207              "gout_misc_otp_con_bira_i_oscclk", "oscclk",
2208              CLK_CON_GAT_CLK_BLK_MISC_UID_OTP_CON_BIRA_IPCLKPORT_I_OSCCLK,
2209              21, 0, 0),
2210         GATE(CLK_GOUT_MISC_OTP_CON_BISR_I_OSCCLK,
2211              "gout_misc_otp_con_bisr_i_oscclk", "oscclk",
2212              CLK_CON_GAT_CLK_BLK_MISC_UID_OTP_CON_BISR_IPCLKPORT_I_OSCCLK,
2213              21, 0, 0),
2214         GATE(CLK_GOUT_MISC_OTP_CON_TOP_I_OSCCLK,
2215              "gout_misc_otp_con_top_i_oscclk", "oscclk",
2216              CLK_CON_GAT_CLK_BLK_MISC_UID_OTP_CON_TOP_IPCLKPORT_I_OSCCLK,
2217              21, 0, 0),
2218         GATE(CLK_GOUT_MISC_CLK_MISC_OSCCLK_CLK,
2219              "gout_misc_clk_misc_oscclk_clk", "oscclk",
2220              CLK_CON_GAT_CLK_BLK_MISC_UID_RSTNSYNC_CLK_MISC_OSCCLK_IPCLKPORT_CLK,
2221              21, 0, 0),
2222         GATE(CLK_GOUT_MISC_ADM_AHB_SSS_HCLKM,
2223              "gout_misc_adm_ahb_sss_hclkm", "mout_misc_sss_user",
2224              CLK_CON_GAT_GOUT_BLK_MISC_UID_ADM_AHB_SSS_IPCLKPORT_HCLKM,
2225              21, 0, 0),
2226         GATE(CLK_GOUT_MISC_AD_APB_DIT_PCLKM,
2227              "gout_misc_ad_apb_dit_pclkm", "mout_misc_bus_user",
2228              CLK_CON_GAT_GOUT_BLK_MISC_UID_AD_APB_DIT_IPCLKPORT_PCLKM,
2229              21, 0, 0),
2230         GATE(CLK_GOUT_MISC_D_TZPC_MISC_PCLK,
2231              "gout_misc_d_tzpc_misc_pclk", "dout_misc_busp",
2232              CLK_CON_GAT_GOUT_BLK_MISC_UID_D_TZPC_MISC_IPCLKPORT_PCLK,
2233              21, 0, 0),
2234         GATE(CLK_GOUT_MISC_GIC_GICCLK,
2235              "gout_misc_gic_gicclk", "mout_misc_gic",
2236              CLK_CON_GAT_GOUT_BLK_MISC_UID_GIC_IPCLKPORT_GICCLK,
2237              21, 0, 0),
2238         GATE(CLK_GOUT_MISC_GPC_MISC_PCLK,
2239              "gout_misc_gpc_misc_pclk", "dout_misc_busp",
2240              CLK_CON_GAT_GOUT_BLK_MISC_UID_GPC_MISC_IPCLKPORT_PCLK,
2241              21, 0, 0),
2242         GATE(CLK_GOUT_MISC_LHM_AST_ICC_CPUGIC_I_CLK,
2243              "gout_misc_lhm_ast_icc_gpugic_i_clk", "mout_misc_gic",
2244              CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AST_ICC_CPUGIC_IPCLKPORT_I_CLK,
2245              21, 0, 0),
2246         GATE(CLK_GOUT_MISC_LHM_AXI_D_SSS_I_CLK,
2247              "gout_misc_lhm_axi_d_sss_i_clk", "mout_misc_bus_user",
2248              CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AXI_D_SSS_IPCLKPORT_I_CLK,
2249              21, 0, 0),
2250         GATE(CLK_GOUT_MISC_LHM_AXI_P_GIC_I_CLK,
2251              "gout_misc_lhm_axi_p_gic_i_clk", "mout_misc_gic",
2252              CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AXI_P_GIC_IPCLKPORT_I_CLK,
2253              21, 0, 0),
2254         GATE(CLK_GOUT_MISC_LHM_AXI_P_MISC_I_CLK,
2255              "gout_misc_lhm_axi_p_misc_i_clk", "dout_misc_busp",
2256              CLK_CON_GAT_GOUT_BLK_MISC_UID_LHM_AXI_P_MISC_IPCLKPORT_I_CLK,
2257              21, 0, 0),
2258         GATE(CLK_GOUT_MISC_LHS_ACEL_D_MISC_I_CLK,
2259              "gout_misc_lhs_acel_d_misc_i_clk", "mout_misc_bus_user",
2260              CLK_CON_GAT_GOUT_BLK_MISC_UID_LHS_ACEL_D_MISC_IPCLKPORT_I_CLK,
2261              21, 0, 0),
2262         GATE(CLK_GOUT_MISC_LHS_AST_IRI_GICCPU_I_CLK,
2263              "gout_misc_lhs_ast_iri_giccpu_i_clk", "mout_misc_gic",
2264              CLK_CON_GAT_GOUT_BLK_MISC_UID_LHS_AST_IRI_GICCPU_IPCLKPORT_I_CLK,
2265              21, 0, 0),
2266         GATE(CLK_GOUT_MISC_LHS_AXI_D_SSS_I_CLK,
2267              "gout_misc_lhs_axi_d_sss_i_clk", "mout_misc_sss_user",
2268              CLK_CON_GAT_GOUT_BLK_MISC_UID_LHS_AXI_D_SSS_IPCLKPORT_I_CLK,
2269              21, 0, 0),
2270         GATE(CLK_GOUT_MISC_MCT_PCLK, "gout_misc_mct_pclk",
2271              "dout_misc_busp",
2272              CLK_CON_GAT_GOUT_BLK_MISC_UID_MCT_IPCLKPORT_PCLK,
2273              21, 0, 0),
2274         GATE(CLK_GOUT_MISC_OTP_CON_BIRA_PCLK,
2275              "gout_misc_otp_con_bira_pclk", "dout_misc_busp",
2276              CLK_CON_GAT_GOUT_BLK_MISC_UID_OTP_CON_BIRA_IPCLKPORT_PCLK,
2277              21, 0, 0),
2278         GATE(CLK_GOUT_MISC_OTP_CON_BISR_PCLK,
2279              "gout_misc_otp_con_bisr_pclk", "dout_misc_busp",
2280              CLK_CON_GAT_GOUT_BLK_MISC_UID_OTP_CON_BISR_IPCLKPORT_PCLK,
2281              21, 0, 0),
2282         GATE(CLK_GOUT_MISC_OTP_CON_TOP_PCLK,
2283              "gout_misc_otp_con_top_pclk", "dout_misc_busp",
2284              CLK_CON_GAT_GOUT_BLK_MISC_UID_OTP_CON_TOP_IPCLKPORT_PCLK,
2285              21, 0, 0),
2286         GATE(CLK_GOUT_MISC_PDMA_ACLK, "gout_misc_pdma_aclk",
2287              "mout_misc_bus_user",
2288              CLK_CON_GAT_GOUT_BLK_MISC_UID_PDMA_IPCLKPORT_ACLK,
2289              21, 0, 0),
2290         GATE(CLK_GOUT_MISC_PPMU_MISC_ACLK,
2291              "gout_misc_ppmu_misc_aclk", "mout_misc_bus_user",
2292              CLK_CON_GAT_GOUT_BLK_MISC_UID_PPMU_MISC_IPCLKPORT_ACLK,
2293              21, 0, 0),
2294         GATE(CLK_GOUT_MISC_PPMU_MISC_PCLK,
2295              "gout_misc_ppmu_misc_pclk", "dout_misc_busp",
2296              CLK_CON_GAT_GOUT_BLK_MISC_UID_PPMU_MISC_IPCLKPORT_PCLK,
2297              21, 0, 0),
2298         GATE(CLK_GOUT_MISC_PUF_I_CLK,
2299              "gout_misc_puf_i_clk", "mout_misc_sss_user",
2300              CLK_CON_GAT_GOUT_BLK_MISC_UID_PUF_IPCLKPORT_I_CLK,
2301              21, 0, 0),
2302         GATE(CLK_GOUT_MISC_QE_DIT_ACLK,
2303              "gout_misc_qe_dit_aclk", "mout_misc_bus_user",
2304              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_DIT_IPCLKPORT_ACLK,
2305              21, 0, 0),
2306         GATE(CLK_GOUT_MISC_QE_DIT_PCLK,
2307              "gout_misc_qe_dit_pclk", "dout_misc_busp",
2308              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_DIT_IPCLKPORT_PCLK,
2309              21, 0, 0),
2310         GATE(CLK_GOUT_MISC_QE_PDMA_ACLK,
2311              "gout_misc_qe_pdma_aclk", "mout_misc_bus_user",
2312              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PDMA_IPCLKPORT_ACLK,
2313              21, 0, 0),
2314         GATE(CLK_GOUT_MISC_QE_PDMA_PCLK,
2315              "gout_misc_qe_pdma_pclk", "dout_misc_busp",
2316              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PDMA_IPCLKPORT_PCLK,
2317              21, 0, 0),
2318         GATE(CLK_GOUT_MISC_QE_PPMU_DMA_ACLK,
2319              "gout_misc_qe_ppmu_dma_aclk", "mout_misc_bus_user",
2320              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PPMU_DMA_IPCLKPORT_ACLK,
2321              21, 0, 0),
2322         GATE(CLK_GOUT_MISC_QE_PPMU_DMA_PCLK,
2323              "gout_misc_qe_ppmu_dma_pclk", "dout_misc_busp",
2324              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_PPMU_DMA_IPCLKPORT_PCLK,
2325              21, 0, 0),
2326         GATE(CLK_GOUT_MISC_QE_RTIC_ACLK,
2327              "gout_misc_qe_rtic_aclk", "mout_misc_bus_user",
2328              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_RTIC_IPCLKPORT_ACLK,
2329              21, 0, 0),
2330         GATE(CLK_GOUT_MISC_QE_RTIC_PCLK,
2331              "gout_misc_qe_rtic_pclk", "dout_misc_busp",
2332              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_RTIC_IPCLKPORT_PCLK,
2333              21, 0, 0),
2334         GATE(CLK_GOUT_MISC_QE_SPDMA_ACLK,
2335              "gout_misc_qe_spdma_aclk", "mout_misc_bus_user",
2336              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SPDMA_IPCLKPORT_ACLK,
2337              21, 0, 0),
2338         GATE(CLK_GOUT_MISC_QE_SPDMA_PCLK,
2339              "gout_misc_qe_spdma_pclk", "dout_misc_busp",
2340              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SPDMA_IPCLKPORT_PCLK,
2341              21, 0, 0),
2342         GATE(CLK_GOUT_MISC_QE_SSS_ACLK,
2343              "gout_misc_qe_sss_aclk", "mout_misc_sss_user",
2344              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SSS_IPCLKPORT_ACLK,
2345              21, 0, 0),
2346         GATE(CLK_GOUT_MISC_QE_SSS_PCLK,
2347              "gout_misc_qe_sss_pclk", "dout_misc_busp",
2348              CLK_CON_GAT_GOUT_BLK_MISC_UID_QE_SSS_IPCLKPORT_PCLK,
2349              21, 0, 0),
2350         GATE(CLK_GOUT_MISC_CLK_MISC_BUSD_CLK,
2351              "gout_misc_clk_misc_busd_clk", "mout_misc_bus_user",
2352              CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_BUSD_IPCLKPORT_CLK,
2353              21, 0, 0),
2354         GATE(CLK_GOUT_MISC_CLK_MISC_BUSP_CLK,
2355              "gout_misc_clk_misc_busp_clk", "dout_misc_busp",
2356              CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_BUSP_IPCLKPORT_CLK,
2357              21, 0, 0),
2358         GATE(CLK_GOUT_MISC_CLK_MISC_GIC_CLK,
2359              "gout_misc_clk_misc_gic_clk", "mout_misc_gic",
2360              CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_GIC_IPCLKPORT_CLK,
2361              21, 0, 0),
2362         GATE(CLK_GOUT_MISC_CLK_MISC_SSS_CLK,
2363              "gout_misc_clk_misc_sss_clk", "mout_misc_sss_user",
2364              CLK_CON_GAT_GOUT_BLK_MISC_UID_RSTNSYNC_CLK_MISC_SSS_IPCLKPORT_CLK,
2365              21, 0, 0),
2366         GATE(CLK_GOUT_MISC_RTIC_I_ACLK,
2367              "gout_misc_rtic_i_aclk", "mout_misc_bus_user",
2368              CLK_CON_GAT_GOUT_BLK_MISC_UID_RTIC_IPCLKPORT_I_ACLK,
2369              21, 0, 0),
2370         GATE(CLK_GOUT_MISC_RTIC_I_PCLK, "gout_misc_rtic_i_pclk",
2371              "dout_misc_busp",
2372              CLK_CON_GAT_GOUT_BLK_MISC_UID_RTIC_IPCLKPORT_I_PCLK,
2373              21, 0, 0),
2374         GATE(CLK_GOUT_MISC_SPDMA_ACLK,
2375              "gout_misc_spdma_ipclockport_aclk", "mout_misc_bus_user",
2376              CLK_CON_GAT_GOUT_BLK_MISC_UID_SPDMA_IPCLKPORT_ACLK,
2377              21, 0, 0),
2378         GATE(CLK_GOUT_MISC_SSMT_DIT_ACLK,
2379              "gout_misc_ssmt_dit_aclk", "mout_misc_bus_user",
2380              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_DIT_IPCLKPORT_ACLK,
2381              21, 0, 0),
2382         GATE(CLK_GOUT_MISC_SSMT_DIT_PCLK,
2383              "gout_misc_ssmt_dit_pclk", "dout_misc_busp",
2384              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_DIT_IPCLKPORT_PCLK,
2385              21, 0, 0),
2386         GATE(CLK_GOUT_MISC_SSMT_PDMA_ACLK,
2387              "gout_misc_ssmt_pdma_aclk", "mout_misc_bus_user",
2388              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PDMA_IPCLKPORT_ACLK,
2389              21, 0, 0),
2390         GATE(CLK_GOUT_MISC_SSMT_PDMA_PCLK,
2391              "gout_misc_ssmt_pdma_pclk", "dout_misc_busp",
2392              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PDMA_IPCLKPORT_PCLK,
2393              21, 0, 0),
2394         GATE(CLK_GOUT_MISC_SSMT_PPMU_DMA_ACLK,
2395              "gout_misc_ssmt_ppmu_dma_aclk", "mout_misc_bus_user",
2396              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PPMU_DMA_IPCLKPORT_ACLK,
2397              21, 0, 0),
2398         GATE(CLK_GOUT_MISC_SSMT_PPMU_DMA_PCLK,
2399              "gout_misc_ssmt_ppmu_dma_pclk", "dout_misc_busp",
2400              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_PPMU_DMA_IPCLKPORT_PCLK,
2401              21, 0, 0),
2402         GATE(CLK_GOUT_MISC_SSMT_RTIC_ACLK,
2403              "gout_misc_ssmt_rtic_aclk", "mout_misc_bus_user",
2404              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_RTIC_IPCLKPORT_ACLK,
2405              21, 0, 0),
2406         GATE(CLK_GOUT_MISC_SSMT_RTIC_PCLK,
2407              "gout_misc_ssmt_rtic_pclk", "dout_misc_busp",
2408              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_RTIC_IPCLKPORT_PCLK,
2409              21, 0, 0),
2410         GATE(CLK_GOUT_MISC_SSMT_SPDMA_ACLK,
2411              "gout_misc_ssmt_spdma_aclk", "mout_misc_bus_user",
2412              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SPDMA_IPCLKPORT_ACLK,
2413              21, 0, 0),
2414         GATE(CLK_GOUT_MISC_SSMT_SPDMA_PCLK,
2415              "gout_misc_ssmt_spdma_pclk", "dout_misc_busp",
2416              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SPDMA_IPCLKPORT_PCLK,
2417              21, 0, 0),
2418         GATE(CLK_GOUT_MISC_SSMT_SSS_ACLK,
2419              "gout_misc_ssmt_sss_aclk", "mout_misc_bus_user",
2420              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SSS_IPCLKPORT_ACLK,
2421              21, 0, 0),
2422         GATE(CLK_GOUT_MISC_SSMT_SSS_PCLK,
2423              "gout_misc_ssmt_sss_pclk", "dout_misc_busp",
2424              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSMT_SSS_IPCLKPORT_PCLK,
2425              21, 0, 0),
2426         GATE(CLK_GOUT_MISC_SSS_I_ACLK,
2427              "gout_misc_sss_i_aclk", "mout_misc_bus_user",
2428              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSS_IPCLKPORT_I_ACLK,
2429              21, 0, 0),
2430         GATE(CLK_GOUT_MISC_SSS_I_PCLK,
2431              "gout_misc_sss_i_pclk", "dout_misc_busp",
2432              CLK_CON_GAT_GOUT_BLK_MISC_UID_SSS_IPCLKPORT_I_PCLK,
2433              21, 0, 0),
2434         GATE(CLK_GOUT_MISC_SYSMMU_MISC_CLK_S2,
2435              "gout_misc_sysmmu_misc_clk_s2", "mout_misc_bus_user",
2436              CLK_CON_GAT_GOUT_BLK_MISC_UID_SYSMMU_MISC_IPCLKPORT_CLK_S2,
2437              21, 0, 0),
2438         GATE(CLK_GOUT_MISC_SYSMMU_SSS_CLK_S1,
2439              "gout_misc_sysmmu_sss_clk_s1", "mout_misc_sss_user",
2440              CLK_CON_GAT_GOUT_BLK_MISC_UID_SYSMMU_SSS_IPCLKPORT_CLK_S1,
2441              21, 0, 0),
2442         GATE(CLK_GOUT_MISC_SYSREG_MISC_PCLK,
2443              "gout_misc_sysreg_misc_pclk", "dout_misc_busp",
2444              CLK_CON_GAT_GOUT_BLK_MISC_UID_SYSREG_MISC_IPCLKPORT_PCLK,
2445              21, 0, 0),
2446         GATE(CLK_GOUT_MISC_TMU_SUB_PCLK,
2447              "gout_misc_tmu_sub_pclk", "dout_misc_busp",
2448              CLK_CON_GAT_GOUT_BLK_MISC_UID_TMU_SUB_IPCLKPORT_PCLK,
2449              21, 0, 0),
2450         GATE(CLK_GOUT_MISC_TMU_TOP_PCLK,
2451              "gout_misc_tmu_top_pclk", "dout_misc_busp",
2452              CLK_CON_GAT_GOUT_BLK_MISC_UID_TMU_TOP_IPCLKPORT_PCLK,
2453              21, 0, 0),
2454         GATE(CLK_GOUT_MISC_WDT_CLUSTER0_PCLK,
2455              "gout_misc_wdt_cluster0_pclk", "dout_misc_busp",
2456              CLK_CON_GAT_GOUT_BLK_MISC_UID_WDT_CLUSTER0_IPCLKPORT_PCLK,
2457              21, 0, 0),
2458         GATE(CLK_GOUT_MISC_WDT_CLUSTER1_PCLK,
2459              "gout_misc_wdt_cluster1_pclk", "dout_misc_busp",
2460              CLK_CON_GAT_GOUT_BLK_MISC_UID_WDT_CLUSTER1_IPCLKPORT_PCLK,
2461              21, 0, 0),
2462         GATE(CLK_GOUT_MISC_XIU_D_MISC_ACLK,
2463              "gout_misc_xiu_d_misc_aclk", "mout_misc_bus_user",
2464              CLK_CON_GAT_GOUT_BLK_MISC_UID_XIU_D_MISC_IPCLKPORT_ACLK,
2465              21, 0, 0),
2466 };
2467
2468 static const struct samsung_cmu_info misc_cmu_info __initconst = {
2469         .mux_clks               = misc_mux_clks,
2470         .nr_mux_clks            = ARRAY_SIZE(misc_mux_clks),
2471         .div_clks               = misc_div_clks,
2472         .nr_div_clks            = ARRAY_SIZE(misc_div_clks),
2473         .gate_clks              = misc_gate_clks,
2474         .nr_gate_clks           = ARRAY_SIZE(misc_gate_clks),
2475         .nr_clk_ids             = CLKS_NR_MISC,
2476         .clk_regs               = misc_clk_regs,
2477         .nr_clk_regs            = ARRAY_SIZE(misc_clk_regs),
2478         .clk_name               = "bus",
2479 };
2480
2481 /* ---- platform_driver ----------------------------------------------------- */
2482
2483 static int __init gs101_cmu_probe(struct platform_device *pdev)
2484 {
2485         const struct samsung_cmu_info *info;
2486         struct device *dev = &pdev->dev;
2487
2488         info = of_device_get_match_data(dev);
2489         exynos_arm64_register_cmu(dev, dev->of_node, info);
2490
2491         return 0;
2492 }
2493
2494 static const struct of_device_id gs101_cmu_of_match[] = {
2495         {
2496                 .compatible = "google,gs101-cmu-apm",
2497                 .data = &apm_cmu_info,
2498         }, {
2499                 .compatible = "google,gs101-cmu-misc",
2500                 .data = &misc_cmu_info,
2501         }, {
2502         },
2503 };
2504
2505 static struct platform_driver gs101_cmu_driver __refdata = {
2506         .driver = {
2507                 .name = "gs101-cmu",
2508                 .of_match_table = gs101_cmu_of_match,
2509                 .suppress_bind_attrs = true,
2510         },
2511         .probe = gs101_cmu_probe,
2512 };
2513
2514 static int __init gs101_cmu_init(void)
2515 {
2516         return platform_driver_register(&gs101_cmu_driver);
2517 }
2518 core_initcall(gs101_cmu_init);