xref: /OK3568_Linux_fs/kernel/drivers/clk/meson/g12a.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (c) 2016 Amlogic, Inc.
4*4882a593Smuzhiyun  * Author: Michael Turquette <mturquette@baylibre.com>
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Copyright (c) 2018 Amlogic, inc.
7*4882a593Smuzhiyun  * Author: Qiufang Dai <qiufang.dai@amlogic.com>
8*4882a593Smuzhiyun  * Author: Jian Hu <jian.hu@amlogic.com>
9*4882a593Smuzhiyun  *
10*4882a593Smuzhiyun  */
11*4882a593Smuzhiyun #ifndef __G12A_H
12*4882a593Smuzhiyun #define __G12A_H
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun /*
15*4882a593Smuzhiyun  * Clock controller register offsets
16*4882a593Smuzhiyun  *
17*4882a593Smuzhiyun  * Register offsets from the data sheet must be multiplied by 4 before
18*4882a593Smuzhiyun  * adding them to the base address to get the right value.
19*4882a593Smuzhiyun  */
20*4882a593Smuzhiyun #define HHI_MIPI_CNTL0			0x000
21*4882a593Smuzhiyun #define HHI_MIPI_CNTL1			0x004
22*4882a593Smuzhiyun #define HHI_MIPI_CNTL2			0x008
23*4882a593Smuzhiyun #define HHI_MIPI_STS			0x00C
24*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL0		0x040
25*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL1		0x044
26*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL2		0x048
27*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL3		0x04C
28*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL4		0x050
29*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL5		0x054
30*4882a593Smuzhiyun #define HHI_GP0_PLL_CNTL6		0x058
31*4882a593Smuzhiyun #define HHI_GP0_PLL_STS			0x05C
32*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL0		0x060
33*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL1		0x064
34*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL2		0x068
35*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL3		0x06C
36*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL4		0x070
37*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL5		0x074
38*4882a593Smuzhiyun #define HHI_GP1_PLL_CNTL6		0x078
39*4882a593Smuzhiyun #define HHI_GP1_PLL_STS			0x07C
40*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL0		0x098
41*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL1		0x09C
42*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL2		0x0A0
43*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL3		0x0A4
44*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL4		0x0A8
45*4882a593Smuzhiyun #define HHI_PCIE_PLL_CNTL5		0x0AC
46*4882a593Smuzhiyun #define HHI_PCIE_PLL_STS		0x0B8
47*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL0		0x0D8
48*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL1		0x0DC
49*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL2		0x0E0
50*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL3		0x0E4
51*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL4		0x0E8
52*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL5		0x0EC
53*4882a593Smuzhiyun #define HHI_HIFI_PLL_CNTL6		0x0F0
54*4882a593Smuzhiyun #define HHI_VIID_CLK_DIV		0x128
55*4882a593Smuzhiyun #define HHI_VIID_CLK_CNTL		0x12C
56*4882a593Smuzhiyun #define HHI_GCLK_MPEG0			0x140
57*4882a593Smuzhiyun #define HHI_GCLK_MPEG1			0x144
58*4882a593Smuzhiyun #define HHI_GCLK_MPEG2			0x148
59*4882a593Smuzhiyun #define HHI_GCLK_OTHER			0x150
60*4882a593Smuzhiyun #define HHI_GCLK_OTHER2			0x154
61*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL1		0x15c
62*4882a593Smuzhiyun #define HHI_VID_CLK_DIV			0x164
63*4882a593Smuzhiyun #define HHI_MPEG_CLK_CNTL		0x174
64*4882a593Smuzhiyun #define HHI_AUD_CLK_CNTL		0x178
65*4882a593Smuzhiyun #define HHI_VID_CLK_CNTL		0x17c
66*4882a593Smuzhiyun #define HHI_TS_CLK_CNTL			0x190
67*4882a593Smuzhiyun #define HHI_VID_CLK_CNTL2		0x194
68*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL0		0x19c
69*4882a593Smuzhiyun #define HHI_VID_PLL_CLK_DIV		0x1A0
70*4882a593Smuzhiyun #define HHI_MALI_CLK_CNTL		0x1b0
71*4882a593Smuzhiyun #define HHI_VPU_CLKC_CNTL		0x1b4
72*4882a593Smuzhiyun #define HHI_VPU_CLK_CNTL		0x1bC
73*4882a593Smuzhiyun #define HHI_NNA_CLK_CNTL		0x1C8
74*4882a593Smuzhiyun #define HHI_HDMI_CLK_CNTL		0x1CC
75*4882a593Smuzhiyun #define HHI_VDEC_CLK_CNTL		0x1E0
76*4882a593Smuzhiyun #define HHI_VDEC2_CLK_CNTL		0x1E4
77*4882a593Smuzhiyun #define HHI_VDEC3_CLK_CNTL		0x1E8
78*4882a593Smuzhiyun #define HHI_VDEC4_CLK_CNTL		0x1EC
79*4882a593Smuzhiyun #define HHI_HDCP22_CLK_CNTL		0x1F0
80*4882a593Smuzhiyun #define HHI_VAPBCLK_CNTL		0x1F4
81*4882a593Smuzhiyun #define HHI_SYS_CPUB_CLK_CNTL1		0x200
82*4882a593Smuzhiyun #define HHI_SYS_CPUB_CLK_CNTL		0x208
83*4882a593Smuzhiyun #define HHI_VPU_CLKB_CNTL		0x20C
84*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL2		0x210
85*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL3		0x214
86*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL4		0x218
87*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL5		0x21c
88*4882a593Smuzhiyun #define HHI_SYS_CPU_CLK_CNTL6		0x220
89*4882a593Smuzhiyun #define HHI_GEN_CLK_CNTL		0x228
90*4882a593Smuzhiyun #define HHI_VDIN_MEAS_CLK_CNTL		0x250
91*4882a593Smuzhiyun #define HHI_MIPIDSI_PHY_CLK_CNTL	0x254
92*4882a593Smuzhiyun #define HHI_NAND_CLK_CNTL		0x25C
93*4882a593Smuzhiyun #define HHI_SD_EMMC_CLK_CNTL		0x264
94*4882a593Smuzhiyun #define HHI_MPLL_CNTL0			0x278
95*4882a593Smuzhiyun #define HHI_MPLL_CNTL1			0x27C
96*4882a593Smuzhiyun #define HHI_MPLL_CNTL2			0x280
97*4882a593Smuzhiyun #define HHI_MPLL_CNTL3			0x284
98*4882a593Smuzhiyun #define HHI_MPLL_CNTL4			0x288
99*4882a593Smuzhiyun #define HHI_MPLL_CNTL5			0x28c
100*4882a593Smuzhiyun #define HHI_MPLL_CNTL6			0x290
101*4882a593Smuzhiyun #define HHI_MPLL_CNTL7			0x294
102*4882a593Smuzhiyun #define HHI_MPLL_CNTL8			0x298
103*4882a593Smuzhiyun #define HHI_FIX_PLL_CNTL0		0x2A0
104*4882a593Smuzhiyun #define HHI_FIX_PLL_CNTL1		0x2A4
105*4882a593Smuzhiyun #define HHI_FIX_PLL_CNTL3		0x2AC
106*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL0		0x2f4
107*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL1		0x2f8
108*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL2		0x2fc
109*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL3		0x300
110*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL4		0x304
111*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL5		0x308
112*4882a593Smuzhiyun #define HHI_SYS_PLL_CNTL6		0x30c
113*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL0		0x320
114*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL1		0x324
115*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL2		0x328
116*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL3		0x32c
117*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL4		0x330
118*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL5		0x334
119*4882a593Smuzhiyun #define HHI_HDMI_PLL_CNTL6		0x338
120*4882a593Smuzhiyun #define HHI_SPICC_CLK_CNTL		0x3dc
121*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL0		0x380
122*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL1		0x384
123*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL2		0x388
124*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL3		0x38c
125*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL4		0x390
126*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL5		0x394
127*4882a593Smuzhiyun #define HHI_SYS1_PLL_CNTL6		0x398
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun /*
130*4882a593Smuzhiyun  * CLKID index values
131*4882a593Smuzhiyun  *
132*4882a593Smuzhiyun  * These indices are entirely contrived and do not map onto the hardware.
133*4882a593Smuzhiyun  * It has now been decided to expose everything by default in the DT header:
134*4882a593Smuzhiyun  * include/dt-bindings/clock/g12a-clkc.h. Only the clocks ids we don't want
135*4882a593Smuzhiyun  * to expose, such as the internal muxes and dividers of composite clocks,
136*4882a593Smuzhiyun  * will remain defined here.
137*4882a593Smuzhiyun  */
138*4882a593Smuzhiyun #define CLKID_MPEG_SEL				8
139*4882a593Smuzhiyun #define CLKID_MPEG_DIV				9
140*4882a593Smuzhiyun #define CLKID_SD_EMMC_A_CLK0_SEL		63
141*4882a593Smuzhiyun #define CLKID_SD_EMMC_A_CLK0_DIV		64
142*4882a593Smuzhiyun #define CLKID_SD_EMMC_B_CLK0_SEL		65
143*4882a593Smuzhiyun #define CLKID_SD_EMMC_B_CLK0_DIV		66
144*4882a593Smuzhiyun #define CLKID_SD_EMMC_C_CLK0_SEL		67
145*4882a593Smuzhiyun #define CLKID_SD_EMMC_C_CLK0_DIV		68
146*4882a593Smuzhiyun #define CLKID_MPLL0_DIV				69
147*4882a593Smuzhiyun #define CLKID_MPLL1_DIV				70
148*4882a593Smuzhiyun #define CLKID_MPLL2_DIV				71
149*4882a593Smuzhiyun #define CLKID_MPLL3_DIV				72
150*4882a593Smuzhiyun #define CLKID_MPLL_PREDIV			73
151*4882a593Smuzhiyun #define CLKID_FCLK_DIV2_DIV			75
152*4882a593Smuzhiyun #define CLKID_FCLK_DIV3_DIV			76
153*4882a593Smuzhiyun #define CLKID_FCLK_DIV4_DIV			77
154*4882a593Smuzhiyun #define CLKID_FCLK_DIV5_DIV			78
155*4882a593Smuzhiyun #define CLKID_FCLK_DIV7_DIV			79
156*4882a593Smuzhiyun #define CLKID_FCLK_DIV2P5_DIV			100
157*4882a593Smuzhiyun #define CLKID_FIXED_PLL_DCO			101
158*4882a593Smuzhiyun #define CLKID_SYS_PLL_DCO			102
159*4882a593Smuzhiyun #define CLKID_GP0_PLL_DCO			103
160*4882a593Smuzhiyun #define CLKID_HIFI_PLL_DCO			104
161*4882a593Smuzhiyun #define CLKID_VPU_0_DIV				111
162*4882a593Smuzhiyun #define CLKID_VPU_1_DIV				114
163*4882a593Smuzhiyun #define CLKID_VAPB_0_DIV			118
164*4882a593Smuzhiyun #define CLKID_VAPB_1_DIV			121
165*4882a593Smuzhiyun #define CLKID_HDMI_PLL_DCO			125
166*4882a593Smuzhiyun #define CLKID_HDMI_PLL_OD			126
167*4882a593Smuzhiyun #define CLKID_HDMI_PLL_OD2			127
168*4882a593Smuzhiyun #define CLKID_VID_PLL_SEL			130
169*4882a593Smuzhiyun #define CLKID_VID_PLL_DIV			131
170*4882a593Smuzhiyun #define CLKID_VCLK_SEL				132
171*4882a593Smuzhiyun #define CLKID_VCLK2_SEL				133
172*4882a593Smuzhiyun #define CLKID_VCLK_INPUT			134
173*4882a593Smuzhiyun #define CLKID_VCLK2_INPUT			135
174*4882a593Smuzhiyun #define CLKID_VCLK_DIV				136
175*4882a593Smuzhiyun #define CLKID_VCLK2_DIV				137
176*4882a593Smuzhiyun #define CLKID_VCLK_DIV2_EN			140
177*4882a593Smuzhiyun #define CLKID_VCLK_DIV4_EN			141
178*4882a593Smuzhiyun #define CLKID_VCLK_DIV6_EN			142
179*4882a593Smuzhiyun #define CLKID_VCLK_DIV12_EN			143
180*4882a593Smuzhiyun #define CLKID_VCLK2_DIV2_EN			144
181*4882a593Smuzhiyun #define CLKID_VCLK2_DIV4_EN			145
182*4882a593Smuzhiyun #define CLKID_VCLK2_DIV6_EN			146
183*4882a593Smuzhiyun #define CLKID_VCLK2_DIV12_EN			147
184*4882a593Smuzhiyun #define CLKID_CTS_ENCI_SEL			158
185*4882a593Smuzhiyun #define CLKID_CTS_ENCP_SEL			159
186*4882a593Smuzhiyun #define CLKID_CTS_VDAC_SEL			160
187*4882a593Smuzhiyun #define CLKID_HDMI_TX_SEL			161
188*4882a593Smuzhiyun #define CLKID_HDMI_SEL				166
189*4882a593Smuzhiyun #define CLKID_HDMI_DIV				167
190*4882a593Smuzhiyun #define CLKID_MALI_0_DIV			170
191*4882a593Smuzhiyun #define CLKID_MALI_1_DIV			173
192*4882a593Smuzhiyun #define CLKID_MPLL_50M_DIV			176
193*4882a593Smuzhiyun #define CLKID_SYS_PLL_DIV16_EN			178
194*4882a593Smuzhiyun #define CLKID_SYS_PLL_DIV16			179
195*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN0_SEL			180
196*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN0_DIV			181
197*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN0			182
198*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN1_SEL			183
199*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN1_DIV			184
200*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN1			185
201*4882a593Smuzhiyun #define CLKID_CPU_CLK_DYN			186
202*4882a593Smuzhiyun #define CLKID_CPU_CLK_DIV16_EN			188
203*4882a593Smuzhiyun #define CLKID_CPU_CLK_DIV16			189
204*4882a593Smuzhiyun #define CLKID_CPU_CLK_APB_DIV			190
205*4882a593Smuzhiyun #define CLKID_CPU_CLK_APB			191
206*4882a593Smuzhiyun #define CLKID_CPU_CLK_ATB_DIV			192
207*4882a593Smuzhiyun #define CLKID_CPU_CLK_ATB			193
208*4882a593Smuzhiyun #define CLKID_CPU_CLK_AXI_DIV			194
209*4882a593Smuzhiyun #define CLKID_CPU_CLK_AXI			195
210*4882a593Smuzhiyun #define CLKID_CPU_CLK_TRACE_DIV			196
211*4882a593Smuzhiyun #define CLKID_CPU_CLK_TRACE			197
212*4882a593Smuzhiyun #define CLKID_PCIE_PLL_DCO			198
213*4882a593Smuzhiyun #define CLKID_PCIE_PLL_DCO_DIV2			199
214*4882a593Smuzhiyun #define CLKID_PCIE_PLL_OD			200
215*4882a593Smuzhiyun #define CLKID_VDEC_1_SEL			202
216*4882a593Smuzhiyun #define CLKID_VDEC_1_DIV			203
217*4882a593Smuzhiyun #define CLKID_VDEC_HEVC_SEL			205
218*4882a593Smuzhiyun #define CLKID_VDEC_HEVC_DIV			206
219*4882a593Smuzhiyun #define CLKID_VDEC_HEVCF_SEL			208
220*4882a593Smuzhiyun #define CLKID_VDEC_HEVCF_DIV			209
221*4882a593Smuzhiyun #define CLKID_TS_DIV				211
222*4882a593Smuzhiyun #define CLKID_SYS1_PLL_DCO			213
223*4882a593Smuzhiyun #define CLKID_SYS1_PLL				214
224*4882a593Smuzhiyun #define CLKID_SYS1_PLL_DIV16_EN			215
225*4882a593Smuzhiyun #define CLKID_SYS1_PLL_DIV16			216
226*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN0_SEL			217
227*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN0_DIV			218
228*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN0			219
229*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN1_SEL			220
230*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN1_DIV			221
231*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN1			222
232*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DYN			223
233*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV16_EN			225
234*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV16			226
235*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV2			227
236*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV3			228
237*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV4			229
238*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV5			230
239*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV6			231
240*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV7			232
241*4882a593Smuzhiyun #define CLKID_CPUB_CLK_DIV8			233
242*4882a593Smuzhiyun #define CLKID_CPUB_CLK_APB_SEL			234
243*4882a593Smuzhiyun #define CLKID_CPUB_CLK_APB			235
244*4882a593Smuzhiyun #define CLKID_CPUB_CLK_ATB_SEL			236
245*4882a593Smuzhiyun #define CLKID_CPUB_CLK_ATB			237
246*4882a593Smuzhiyun #define CLKID_CPUB_CLK_AXI_SEL			238
247*4882a593Smuzhiyun #define CLKID_CPUB_CLK_AXI			239
248*4882a593Smuzhiyun #define CLKID_CPUB_CLK_TRACE_SEL		240
249*4882a593Smuzhiyun #define CLKID_CPUB_CLK_TRACE			241
250*4882a593Smuzhiyun #define CLKID_GP1_PLL_DCO			242
251*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN0_SEL			244
252*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN0_DIV			245
253*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN0			246
254*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN1_SEL			247
255*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN1_DIV			248
256*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN1			249
257*4882a593Smuzhiyun #define CLKID_DSU_CLK_DYN			250
258*4882a593Smuzhiyun #define CLKID_DSU_CLK_FINAL			251
259*4882a593Smuzhiyun #define CLKID_SPICC0_SCLK_SEL			256
260*4882a593Smuzhiyun #define CLKID_SPICC0_SCLK_DIV			257
261*4882a593Smuzhiyun #define CLKID_SPICC1_SCLK_SEL			259
262*4882a593Smuzhiyun #define CLKID_SPICC1_SCLK_DIV			260
263*4882a593Smuzhiyun #define CLKID_NNA_AXI_CLK_SEL			262
264*4882a593Smuzhiyun #define CLKID_NNA_AXI_CLK_DIV			263
265*4882a593Smuzhiyun #define CLKID_NNA_CORE_CLK_SEL			265
266*4882a593Smuzhiyun #define CLKID_NNA_CORE_CLK_DIV			266
267*4882a593Smuzhiyun 
268*4882a593Smuzhiyun #define NR_CLKS					268
269*4882a593Smuzhiyun 
270*4882a593Smuzhiyun /* include the CLKIDs that have been made part of the DT binding */
271*4882a593Smuzhiyun #include <dt-bindings/clock/g12a-clkc.h>
272*4882a593Smuzhiyun 
273*4882a593Smuzhiyun #endif /* __G12A_H */
274