xref: /netbsd-src/sys/arch/arm/amlogic/mesong12_clkc.h (revision 90313c06e62e910bf0d1bb24faa9d17dcefd0ab6)
1 /* $NetBSD: mesong12_clkc.h,v 1.2 2024/02/07 04:20:26 msaitoh Exp $ */
2 
3 /*
4  * Copyright (c) 2021 Ryo Shimizu
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
17  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
20  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
24  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
25  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26  * POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 #ifndef _MESONG12_CLKC_H
30 #define _MESONG12_CLKC_H
31 
32 /*
33  * CLOCK IDs.
34  *  The values are matched to those in dt-bindings/clock/g12a-clkc.h ,
35  *  but some are only defined locally.
36  */
37 #define MESONG12_CLOCK_SYS_PLL		0
38 #define MESONG12_CLOCK_FIXED_PLL	1
39 #define MESONG12_CLOCK_FCLK_DIV2	2
40 #define MESONG12_CLOCK_FCLK_DIV3	3
41 #define MESONG12_CLOCK_FCLK_DIV4	4
42 #define MESONG12_CLOCK_FCLK_DIV5	5
43 #define MESONG12_CLOCK_FCLK_DIV7	6
44 #define MESONG12_CLOCK_GP0_PLL		7
45 
46 #define MESONG12_CLOCK_CLK81		10
47 #define MESONG12_CLOCK_MPLL0		11
48 #define MESONG12_CLOCK_MPLL1		12
49 #define MESONG12_CLOCK_MPLL2		13
50 #define MESONG12_CLOCK_MPLL3		14
51 #define MESONG12_CLOCK_DDR		15
52 #define MESONG12_CLOCK_DOS		16
53 #define MESONG12_CLOCK_AUDIO_LOCKER	17
54 #define MESONG12_CLOCK_MIPI_DSI_HOST	18
55 #define MESONG12_CLOCK_ETH_PHY		19
56 #define MESONG12_CLOCK_ISA		20
57 #define MESONG12_CLOCK_PL301		21
58 #define MESONG12_CLOCK_PERIPHS		22
59 #define MESONG12_CLOCK_SPICC0		23
60 #define MESONG12_CLOCK_I2C		24
61 #define MESONG12_CLOCK_SANA		25
62 #define MESONG12_CLOCK_SD		26
63 #define MESONG12_CLOCK_RNG0		27
64 #define MESONG12_CLOCK_UART0		28
65 #define MESONG12_CLOCK_SPICC1		29
66 #define MESONG12_CLOCK_HIU_IFACE	30
67 #define MESONG12_CLOCK_MIPI_DSI_PHY	31
68 #define MESONG12_CLOCK_ASSIST_MISC	32
69 #define MESONG12_CLOCK_SD_EMMC_A	33
70 #define MESONG12_CLOCK_SD_EMMC_B	34
71 #define MESONG12_CLOCK_SD_EMMC_C	35
72 #define MESONG12_CLOCK_AUDIO_CODEC	36
73 #define MESONG12_CLOCK_AUDIO		37
74 #define MESONG12_CLOCK_ETH		38
75 #define MESONG12_CLOCK_DEMUX		39
76 #define MESONG12_CLOCK_AUDIO_IFIFO	40
77 #define MESONG12_CLOCK_ADC		41
78 #define MESONG12_CLOCK_UART1		42
79 #define MESONG12_CLOCK_G2D		43
80 #define MESONG12_CLOCK_RESET		44
81 #define MESONG12_CLOCK_PCIE_COMB	45
82 #define MESONG12_CLOCK_PARSER		46
83 #define MESONG12_CLOCK_USB		47
84 #define MESONG12_CLOCK_PCIE_PHY		48
85 #define MESONG12_CLOCK_AHB_ARB0		49
86 #define MESONG12_CLOCK_AHB_DATA_BUS	50
87 #define MESONG12_CLOCK_AHB_CTRL_BUS	51
88 #define MESONG12_CLOCK_HTX_HDCP22	52
89 #define MESONG12_CLOCK_HTX_PCLK		53
90 #define MESONG12_CLOCK_BT656		54
91 #define MESONG12_CLOCK_USB1_DDR_BRIDGE	55
92 #define MESONG12_CLOCK_MMC_PCLK		56
93 #define MESONG12_CLOCK_UART2		57
94 #define MESONG12_CLOCK_VPU_INTR		58
95 #define MESONG12_CLOCK_GIC		59
96 #define MESONG12_CLOCK_SD_EMMC_A_CLK0	60
97 #define MESONG12_CLOCK_SD_EMMC_B_CLK0	61
98 #define MESONG12_CLOCK_SD_EMMC_C_CLK0	62
99 
100 #define MESONG12_CLOCK_HIFI_PLL		74
101 
102 #define MESONG12_CLOCK_VCLK2_VENCI0	80
103 #define MESONG12_CLOCK_VCLK2_VENCI1	81
104 #define MESONG12_CLOCK_VCLK2_VENCP0	82
105 #define MESONG12_CLOCK_VCLK2_VENCP1	83
106 #define MESONG12_CLOCK_VCLK2_VENCT0	84
107 #define MESONG12_CLOCK_VCLK2_VENCT1	85
108 #define MESONG12_CLOCK_VCLK2_OTHER	86
109 #define MESONG12_CLOCK_VCLK2_ENCI	87
110 #define MESONG12_CLOCK_VCLK2_ENCP	88
111 #define MESONG12_CLOCK_DAC_CLK		89
112 #define MESONG12_CLOCK_AOCLK		90
113 #define MESONG12_CLOCK_IEC958		91
114 #define MESONG12_CLOCK_ENC480P		92
115 #define MESONG12_CLOCK_RNG1		93
116 #define MESONG12_CLOCK_VCLK2_ENCT	94
117 #define MESONG12_CLOCK_VCLK2_ENCL	95
118 #define MESONG12_CLOCK_VCLK2_VENCLMMC	96
119 #define MESONG12_CLOCK_VCLK2_VENCL	97
120 #define MESONG12_CLOCK_VCLK2_OTHER1	98
121 #define MESONG12_CLOCK_FCLK_DIV2P5	99
122 
123 #define MESONG12_CLOCK_DMA		105
124 #define MESONG12_CLOCK_EFUSE		106
125 #define MESONG12_CLOCK_ROM_BOOT		107
126 #define MESONG12_CLOCK_RESET_SEC	108
127 #define MESONG12_CLOCK_SEC_AHB_APB3	109
128 #define MESONG12_CLOCK_VPU_0_SEL	110
129 
130 #define MESONG12_CLOCK_VPU_0		112
131 #define MESONG12_CLOCK_VPU_1_SEL	113
132 
133 #define MESONG12_CLOCK_VPU_1		115
134 #define MESONG12_CLOCK_VPU		116
135 #define MESONG12_CLOCK_VAPB_0_SEL	117
136 
137 #define MESONG12_CLOCK_VAPB_0		119
138 #define MESONG12_CLOCK_VAPB_1_SEL	120
139 
140 #define MESONG12_CLOCK_VAPB_1		122
141 #define MESONG12_CLOCK_VAPB_SEL		123
142 #define MESONG12_CLOCK_VAPB		124
143 
144 #define MESONG12_CLOCK_HDMI_PLL		128
145 #define MESONG12_CLOCK_VID_PLL		129
146 
147 #define MESONG12_CLOCK_VCLK		138
148 #define MESONG12_CLOCK_VCLK2		139
149 
150 #define MESONG12_CLOCK_VCLK_DIV1	148
151 #define MESONG12_CLOCK_VCLK_DIV2	149
152 #define MESONG12_CLOCK_VCLK_DIV4	150
153 #define MESONG12_CLOCK_VCLK_DIV6	151
154 #define MESONG12_CLOCK_VCLK_DIV12	152
155 #define MESONG12_CLOCK_VCLK2_DIV1	153
156 #define MESONG12_CLOCK_VCLK2_DIV2	154
157 #define MESONG12_CLOCK_VCLK2_DIV4	155
158 #define MESONG12_CLOCK_VCLK2_DIV6	156
159 #define MESONG12_CLOCK_VCLK2_DIV12	157
160 
161 #define MESONG12_CLOCK_CTS_ENCI		162
162 #define MESONG12_CLOCK_CTS_ENCP		163
163 #define MESONG12_CLOCK_CTS_VDAC		164
164 #define MESONG12_CLOCK_HDMI_TX		165
165 
166 #define MESONG12_CLOCK_HDMI		168
167 #define MESONG12_CLOCK_MALI_0_SEL	169
168 
169 #define MESONG12_CLOCK_MALI_0		171
170 #define MESONG12_CLOCK_MALI_1_SEL	172
171 
172 #define MESONG12_CLOCK_MALI_1		174
173 #define MESONG12_CLOCK_MALI		175
174 
175 #define MESONG12_CLOCK_MPLL_50M		177
176 
177 #define MESONG12_CLOCK_CPU_CLK		187
178 
179 #define MESONG12_CLOCK_PCIE_PLL		201
180 
181 #define MESONG12_CLOCK_VDEC_1		204
182 
183 #define MESONG12_CLOCK_VDEC_HEVC	207
184 
185 #define MESONG12_CLOCK_VDEC_HEVCF	210
186 
187 #define MESONG12_CLOCK_TS		212
188 
189 #define MESONG12_CLOCK_CPUB_CLK		224
190 
191 #define MESONG12_CLOCK_GP1_PLL		243
192 
193 #define MESONG12_CLOCK_DSU_CLK		252
194 #define MESONG12_CLOCK_CPU1_CLK		253
195 #define MESONG12_CLOCK_CPU2_CLK		254
196 #define MESONG12_CLOCK_CPU3_CLK		255
197 
198 
199 /*
200  * locally defined
201  */
202 #define MESONG12_CLOCK_MPEG_SEL				8
203 #define MESONG12_CLOCK_MPEG_DIV				9
204 
205 #define MESONG12_CLOCK_SD_EMMC_A_CLK0_SEL		63
206 #define MESONG12_CLOCK_SD_EMMC_A_CLK0_DIV		64
207 #define MESONG12_CLOCK_SD_EMMC_B_CLK0_SEL		65
208 #define MESONG12_CLOCK_SD_EMMC_B_CLK0_DIV		66
209 #define MESONG12_CLOCK_SD_EMMC_C_CLK0_SEL		67
210 #define MESONG12_CLOCK_SD_EMMC_C_CLK0_DIV		68
211 #define MESONG12_CLOCK_MPLL0_DIV			69
212 #define MESONG12_CLOCK_MPLL1_DIV			70
213 #define MESONG12_CLOCK_MPLL2_DIV			71
214 #define MESONG12_CLOCK_MPLL3_DIV			72
215 #define MESONG12_CLOCK_MPLL_PREDIV			73
216 #define MESONG12_CLOCK_FCLK_DIV2_DIV			75
217 #define MESONG12_CLOCK_FCLK_DIV3_DIV			76
218 #define MESONG12_CLOCK_FCLK_DIV4_DIV			77
219 #define MESONG12_CLOCK_FCLK_DIV5_DIV			78
220 #define MESONG12_CLOCK_FCLK_DIV7_DIV			79
221 #define MESONG12_CLOCK_FCLK_DIV2P5_DIV			100
222 #define MESONG12_CLOCK_FIXED_PLL_DCO			101
223 #define MESONG12_CLOCK_SYS_PLL_DCO			102
224 #define MESONG12_CLOCK_GP0_PLL_DCO			103
225 #define MESONG12_CLOCK_HIFI_PLL_DCO			104
226 #define MESONG12_CLOCK_VPU_0_DIV			111
227 #define MESONG12_CLOCK_VPU_1_DIV			114
228 #define MESONG12_CLOCK_VAPB_0_DIV			118
229 #define MESONG12_CLOCK_VAPB_1_DIV			121
230 #define MESONG12_CLOCK_HDMI_PLL_DCO			125
231 #define MESONG12_CLOCK_HDMI_PLL_OD			126
232 #define MESONG12_CLOCK_HDMI_PLL_OD2			127
233 #define MESONG12_CLOCK_VID_PLL_SEL			130
234 #define MESONG12_CLOCK_VID_PLL_DIV			131
235 #define MESONG12_CLOCK_VCLK_SEL				132
236 #define MESONG12_CLOCK_VCLK2_SEL			133
237 #define MESONG12_CLOCK_VCLK_INPUT			134
238 #define MESONG12_CLOCK_VCLK2_INPUT			135
239 #define MESONG12_CLOCK_VCLK_DIV				136
240 #define MESONG12_CLOCK_VCLK2_DIV			137
241 #define MESONG12_CLOCK_VCLK_DIV2_EN			140
242 #define MESONG12_CLOCK_VCLK_DIV4_EN			141
243 #define MESONG12_CLOCK_VCLK_DIV6_EN			142
244 #define MESONG12_CLOCK_VCLK_DIV12_EN			143
245 #define MESONG12_CLOCK_VCLK2_DIV2_EN			144
246 #define MESONG12_CLOCK_VCLK2_DIV4_EN			145
247 #define MESONG12_CLOCK_VCLK2_DIV6_EN			146
248 #define MESONG12_CLOCK_VCLK2_DIV12_EN			147
249 #define MESONG12_CLOCK_CTS_ENCI_SEL			158
250 #define MESONG12_CLOCK_CTS_ENCP_SEL			159
251 #define MESONG12_CLOCK_CTS_VDAC_SEL			160
252 #define MESONG12_CLOCK_HDMI_TX_SEL			161
253 #define MESONG12_CLOCK_HDMI_SEL				166
254 #define MESONG12_CLOCK_HDMI_DIV				167
255 #define MESONG12_CLOCK_MALI_0_DIV			170
256 #define MESONG12_CLOCK_MALI_1_DIV			173
257 #define MESONG12_CLOCK_MPLL_50M_DIV			176
258 #define MESONG12_CLOCK_SYS_PLL_DIV16_EN			178
259 #define MESONG12_CLOCK_SYS_PLL_DIV16			179
260 #define MESONG12_CLOCK_CPU_CLK_DYN0_SEL			180
261 #define MESONG12_CLOCK_CPU_CLK_DYN0_DIV			181
262 #define MESONG12_CLOCK_CPU_CLK_DYN0			182
263 #define MESONG12_CLOCK_CPU_CLK_DYN1_SEL			183
264 #define MESONG12_CLOCK_CPU_CLK_DYN1_DIV			184
265 #define MESONG12_CLOCK_CPU_CLK_DYN1			185
266 #define MESONG12_CLOCK_CPU_CLK_DYN			186
267 #define MESONG12_CLOCK_CPU_CLK_DIV16_EN			188
268 #define MESONG12_CLOCK_CPU_CLK_DIV16			189
269 #define MESONG12_CLOCK_CPU_CLK_APB_DIV			190
270 #define MESONG12_CLOCK_CPU_CLK_APB			191
271 #define MESONG12_CLOCK_CPU_CLK_ATB_DIV			192
272 #define MESONG12_CLOCK_CPU_CLK_ATB			193
273 #define MESONG12_CLOCK_CPU_CLK_AXI_DIV			194
274 #define MESONG12_CLOCK_CPU_CLK_AXI			195
275 #define MESONG12_CLOCK_CPU_CLK_TRACE_DIV		196
276 #define MESONG12_CLOCK_CPU_CLK_TRACE			197
277 #define MESONG12_CLOCK_PCIE_PLL_DCO			198
278 #define MESONG12_CLOCK_PCIE_PLL_DCO_DIV2		199
279 #define MESONG12_CLOCK_PCIE_PLL_OD			200
280 #define MESONG12_CLOCK_VDEC_1_SEL			202
281 #define MESONG12_CLOCK_VDEC_1_DIV			203
282 #define MESONG12_CLOCK_VDEC_HEVC_SEL			205
283 #define MESONG12_CLOCK_VDEC_HEVC_DIV			206
284 #define MESONG12_CLOCK_VDEC_HEVCF_SEL			208
285 #define MESONG12_CLOCK_VDEC_HEVCF_DIV			209
286 #define MESONG12_CLOCK_TS_DIV				211
287 #define MESONG12_CLOCK_SYS1_PLL_DCO			213
288 #define MESONG12_CLOCK_SYS1_PLL				214
289 #define MESONG12_CLOCK_SYS1_PLL_DIV16_EN		215
290 #define MESONG12_CLOCK_SYS1_PLL_DIV16			216
291 #define MESONG12_CLOCK_CPUB_CLK_DYN0_SEL		217
292 #define MESONG12_CLOCK_CPUB_CLK_DYN0_DIV		218
293 #define MESONG12_CLOCK_CPUB_CLK_DYN0			219
294 #define MESONG12_CLOCK_CPUB_CLK_DYN1_SEL		220
295 #define MESONG12_CLOCK_CPUB_CLK_DYN1_DIV		221
296 #define MESONG12_CLOCK_CPUB_CLK_DYN1			222
297 #define MESONG12_CLOCK_CPUB_CLK_DYN			223
298 #define MESONG12_CLOCK_CPUB_CLK_DIV16_EN		225
299 #define MESONG12_CLOCK_CPUB_CLK_DIV16			226
300 #define MESONG12_CLOCK_CPUB_CLK_DIV2			227
301 #define MESONG12_CLOCK_CPUB_CLK_DIV3			228
302 #define MESONG12_CLOCK_CPUB_CLK_DIV4			229
303 #define MESONG12_CLOCK_CPUB_CLK_DIV5			230
304 #define MESONG12_CLOCK_CPUB_CLK_DIV6			231
305 #define MESONG12_CLOCK_CPUB_CLK_DIV7			232
306 #define MESONG12_CLOCK_CPUB_CLK_DIV8			233
307 #define MESONG12_CLOCK_CPUB_CLK_APB_SEL			234
308 #define MESONG12_CLOCK_CPUB_CLK_APB			235
309 #define MESONG12_CLOCK_CPUB_CLK_ATB_SEL			236
310 #define MESONG12_CLOCK_CPUB_CLK_ATB			237
311 #define MESONG12_CLOCK_CPUB_CLK_AXI_SEL			238
312 #define MESONG12_CLOCK_CPUB_CLK_AXI			239
313 #define MESONG12_CLOCK_CPUB_CLK_TRACE_SEL		240
314 #define MESONG12_CLOCK_CPUB_CLK_TRACE			241
315 #define MESONG12_CLOCK_GP1_PLL_DCO			242
316 #define MESONG12_CLOCK_DSU_CLK_DYN0_SEL			244
317 #define MESONG12_CLOCK_DSU_CLK_DYN0_DIV			245
318 #define MESONG12_CLOCK_DSU_CLK_DYN0			246
319 #define MESONG12_CLOCK_DSU_CLK_DYN1_SEL			247
320 #define MESONG12_CLOCK_DSU_CLK_DYN1_DIV			248
321 #define MESONG12_CLOCK_DSU_CLK_DYN1			249
322 #define MESONG12_CLOCK_DSU_CLK_DYN			250
323 #define MESONG12_CLOCK_DSU_CLK_FINAL			251
324 #define MESONG12_CLOCK_SPICC0_SCLK_SEL			256
325 #define MESONG12_CLOCK_SPICC0_SCLK_DIV			257
326 #define MESONG12_CLOCK_SPICC1_SCLK_SEL			259
327 #define MESONG12_CLOCK_SPICC1_SCLK_DIV			260
328 #define MESONG12_CLOCK_NNA_AXI_CLK_SEL			262
329 #define MESONG12_CLOCK_NNA_AXI_CLK_DIV			263
330 #define MESONG12_CLOCK_NNA_CORE_CLK_SEL			265
331 #define MESONG12_CLOCK_NNA_CORE_CLK_DIV			266
332 
333 
334 #endif /* _MESONG12_CLKC_H */
335