xref: /OK3568_Linux_fs/kernel/sound/soc/codecs/rk_codec_digital.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Rockchip Audio Codec Digital driver
4  *
5  * Copyright (C) 2020 Rockchip Electronics Co., Ltd
6  *
7  */
8 
9 #ifndef _RK_CODEC_DIGITAL_H
10 #define _RK_CODEC_DIGITAL_H
11 
12 #define SYSCTRL0		0x0000
13 #define ADCVUCTL		0x0040
14 #define ADCVUCTIME		0x0044
15 #define ADCDIGEN		0x0048
16 #define ADCCLKCTRL		0x004C
17 #define ADCINT_DIV		0x0054
18 #define ADCSCLKTXINT_DIV	0x006C
19 #define ADCCFG1			0x0084
20 #define ADCVOLL0		0x0088
21 #define ADCVOLL1		0x008C
22 #define ADCVOLR0		0x0098
23 #define ADCVOGP			0x00A8
24 #define ADCRVOLL0		0x00AC
25 #define ADCRVOLL1		0x00B0
26 #define ADCRVOLR0		0x00BC
27 #define ADCALC0			0x00CC
28 #define ADCALC1			0x00D0
29 #define ADCALC2			0x00D4
30 #define ADCNG			0x00D8
31 #define ADCNGST			0x00DC
32 #define ADCHPFEN		0x00E0
33 #define ADCHPFCF		0x00E4
34 #define ADCPGL0			0x00EC
35 #define ADCPGL1			0x00F0
36 #define ADCPGR0			0x00FC
37 #define ADCLILMT0		0x010C
38 #define ADCLILMT1		0x0110
39 #define ADCDMICNG0		0x0114
40 #define ADCDMICNG1		0x0118
41 #define DACVUCTL		0x0140
42 #define DACVUCTIME		0x0144
43 #define DACDIGEN		0x0148
44 #define DACCLKCTRL		0x014C
45 #define DACINT_DIV		0x0154
46 #define DACSCLKRXINT_DIV	0x0160
47 #define DACPWM_DIV		0x0164
48 #define DACPWM_CTRL		0x0168
49 #define DACCFG1			0x0184
50 #define DACMUTE			0x0188
51 #define DACMUTEST		0x018C
52 #define DACVOLL0		0x0190
53 #define DACVOLR0		0x01A0
54 #define DACVOGP			0x01B0
55 #define DACRVOLL0		0x01B4
56 #define DACRVOLR0		0x01C4
57 #define DACLMT0			0x01D4
58 #define DACLMT1			0x01D8
59 #define DACLMT2			0x01DC
60 #define DACMIXCTRLL		0x01E0
61 #define DACMIXCTRLR		0x01E4
62 #define DACHPF			0x01E8
63 #define I2S_TXCR0		0x0300
64 #define I2S_TXCR1		0x0304
65 #define I2S_TXCR2		0x0308
66 #define I2S_RXCR0		0x030C
67 #define I2S_RXCR1		0x0310
68 #define I2S_CKR0		0x0314
69 #define I2S_CKR1		0x0318
70 #define I2S_XFER		0x031C
71 #define I2S_CLR			0x0320
72 #define VERSION			0x0380
73 
74 /* SYSCTRL0 */
75 #define ACDCDIG_SYSCTRL0_SYNC_SEL_MASK		BIT(1)
76 #define ACDCDIG_SYSCTRL0_SYNC_SEL_DAC		BIT(1)
77 #define ACDCDIG_SYSCTRL0_SYNC_SEL_ADC		0
78 #define ACDCDIG_SYSCTRL0_GLB_CKE_MASK		BIT(3)
79 #define ACDCDIG_SYSCTRL0_GLB_CKE_EN		BIT(3)
80 #define ACDCDIG_SYSCTRL0_GLB_CKE_DIS		0
81 #define ACDCDIG_SYSCTRL0_CLK_COM_SEL_MASK	BIT(4)
82 #define ACDCDIG_SYSCTRL0_CLK_COM_SEL_DAC	BIT(4)
83 #define ACDCDIG_SYSCTRL0_CLK_COM_SEL_ADC	0
84 #define ACDCDIG_SYSCTRL0_SYNC_MODE_MASK		BIT(5)
85 #define ACDCDIG_SYSCTRL0_SYNC_MODE_SYNC		BIT(5)
86 #define ACDCDIG_SYSCTRL0_SYNC_MODE_ASYNC	0
87 /* ADCVUCTL */
88 #define ACDCDIG_ADCVUCTL_ADC_BYPS_MASK		BIT(2)
89 #define ACDCDIG_ADCVUCTL_ADC_BYPS		BIT(2)
90 /* ADCDIGEN */
91 #define ACDCDIG_ADCDIGEN_ADCEN_L0R1_MASK	BIT(0)
92 #define ACDCDIG_ADCDIGEN_ADCEN_L0R1_EN		BIT(0)
93 #define ACDCDIG_ADCDIGEN_ADCEN_L0R1_DIS		0
94 #define ACDCDIG_ADCDIGEN_ADCEN_L2_MASK		BIT(1)
95 #define ACDCDIG_ADCDIGEN_ADCEN_L2_EN		BIT(1)
96 #define ACDCDIG_ADCDIGEN_ADCEN_L2_DIS		0
97 #define ACDCDIG_ADCDIGEN_ADC_GLBEN_MASK		BIT(4)
98 #define ACDCDIG_ADCDIGEN_ADC_GLBEN_EN		BIT(4)
99 #define ACDCDIG_ADCDIGEN_ADC_GLBEN_DIS		0
100 /* ADCCLKCTRL */
101 #define ACDCDIG_ADCCLKCTRL_ADC_SYNC_STATUS_MASK	BIT(0)
102 #define ACDCDIG_ADCCLKCTRL_ADC_SYNC_ENA_MASK	BIT(1)
103 #define ACDCDIG_ADCCLKCTRL_ADC_SYNC_ENA_EN	BIT(1)
104 #define ACDCDIG_ADCCLKCTRL_ADC_SYNC_ENA_DIS	0
105 #define ACDCDIG_ADCCLKCTRL_FILTER_GATE_EN_MASK	BIT(2)
106 #define ACDCDIG_ADCCLKCTRL_FILTER_GATE_EN	BIT(2)
107 #define ACDCDIG_ADCCLKCTRL_CKE_BCLKTX_MASK	BIT(3)
108 #define ACDCDIG_ADCCLKCTRL_CKE_BCLKTX_EN	BIT(3)
109 #define ACDCDIG_ADCCLKCTRL_CKE_BCLKTX_DIS	0
110 #define ACDCDIG_ADCCLKCTRL_I2STX_CKE_MASK	BIT(4)
111 #define ACDCDIG_ADCCLKCTRL_I2STX_CKE_EN		BIT(4)
112 #define ACDCDIG_ADCCLKCTRL_I2STX_CKE_DIS	0
113 #define ACDCDIG_ADCCLKCTRL_ADC_CKE_MASK		BIT(5)
114 #define ACDCDIG_ADCCLKCTRL_ADC_CKE_EN		BIT(5)
115 #define ACDCDIG_ADCCLKCTRL_ADC_CKE_DIS		0
116 #define ACDCDIG_ADCCLKCTRL_CIC_DS_RATIO_MASK	GENMASK(7, 6)
117 #define ACDCDIG_ADCCLKCTRL_CIC_DS_RATIO_16	(0x0 << 6)
118 #define ACDCDIG_ADCCLKCTRL_CIC_DS_RATIO_8	(0x1 << 6)
119 #define ACDCDIG_ADCCLKCTRL_CIC_DS_RATIO_4	(0x2 << 6)
120 /* ADCINT_DIV */
121 #define ACDCDIG_ADCINT_DIV_INT_DIV_CON_MASK	GENMASK(7, 0)
122 #define ACDCDIG_ADCINT_DIV_INT_DIV_CON(x)	((x) - 1)
123 /* ADCSCLKTXINT_DIV */
124 #define ACDCDIG_ADCSCLKTXINT_DIV_SCKTXDIV_MASK	GENMASK(7, 0)
125 #define ACDCDIG_ADCSCLKTXINT_DIV_SCKTXDIV(x)	((x) - 1)
126 /* ADCCFG1 */
127 #define ACDCDIG_ADCCFG1_FIR_COM_BPS_MASK	BIT(0)
128 #define ACDCDIG_ADCCFG1_FIR_COM_BPS_EN		BIT(0)
129 #define ACDCDIG_ADCCFG1_SIG_SCALE_MODE_MASK	BIT(1)
130 #define ACDCDIG_ADCCFG1_SIG_SCALE_MODE_HALF	BIT(1)
131 #define ACDCDIG_ADCCFG1_ADCSRT_MASK		GENMASK(4, 2)
132 #define ACDCDIG_ADCCFG1_ADCSRT(x)		(((x) & 0x7) << 2)
133 /* ADCVOLL0 */
134 #define ACDCDIG_ADCVOLL0_ADCLV0_MASK		GENMASK(7, 0)
135 #define ACDCDIG_ADCVOLL0_ADCLV0(x)		(x)
136 /* ADCVOLL1 */
137 #define ACDCDIG_ADCVOLL1_ADCLV1_MASK		GENMASK(7, 0)
138 #define ACDCDIG_ADCVOLL1_ADCLV1(x)		(x)
139 /* ADCVOLR0 */
140 #define ACDCDIG_ADCVOLR0_ADCRV0_MASK		GENMASK(7, 0)
141 #define ACDCDIG_ADCVOLR0_ADCRV0(x)		(x)
142 /* ADCVOGP */
143 #define ACDCDIG_ADCVOGP_VOLGPL0_MASK		BIT(0)
144 #define ACDCDIG_ADCVOGP_VOLGPL0_POS		BIT(0)
145 #define ACDCDIG_ADCVOGP_VOLGPL0_NEG		0
146 #define ACDCDIG_ADCVOGP_VOLGPR0_MASK		BIT(1)
147 #define ACDCDIG_ADCVOGP_VOLGPR0_POS		BIT(1)
148 #define ACDCDIG_ADCVOGP_VOLGPR0_NEG		0
149 #define ACDCDIG_ADCVOGP_VOLGPL1_MASK		BIT(2)
150 #define ACDCDIG_ADCVOGP_VOLGPL1_POS		BIT(2)
151 #define ACDCDIG_ADCVOGP_VOLGPL1_NEG		0
152 /* ADCALC0 */
153 #define ACDCDIG_ADCALC0_ALCL0_MASK		BIT(0)
154 #define ACDCDIG_ADCALC0_ALCL0_EN		BIT(0)
155 #define ACDCDIG_ADCALC0_ALCR0_MASK		BIT(1)
156 #define ACDCDIG_ADCALC0_ALCR0_EN		BIT(1)
157 #define ACDCDIG_ADCALC0_ALCL1_MASK		BIT(2)
158 #define ACDCDIG_ADCALC0_ALCL1_EN		BIT(2)
159 /* ADCALC1 */
160 #define ACDCDIG_ADCALC1_ALCRRATE_MASK		GENMASK(3, 0)
161 #define ACDCDIG_ADCALC1_ALCRRATE(x)		((x) & 0xf)
162 #define ACDCDIG_ADCALC1_ALCARATE_MASK		GENMASK(7, 4)
163 #define ACDCDIG_ADCALC1_ALCARATE(x)		(((x) & 0xf) << 4)
164 /* ADCALC2 */
165 #define ACDCDIG_ADCALC2_ALCMIN_MASK		GENMASK(2, 0)
166 #define ACDCDIG_ADCALC2_ALCMIN(x)		((x) & 0x7)
167 #define ACDCDIG_ADCALC2_ALCMAX_MASK		GENMASK(6, 4)
168 #define ACDCDIG_ADCALC2_ALCMAX(x)		(((x) & 0x7) << 4)
169 /* ADCHPFEN */
170 #define ACDCDIG_ADCHPFEN_HPFEN_L0_MASK		BIT(0)
171 #define ACDCDIG_ADCHPFEN_HPFEN_L0_EN		BIT(0)
172 #define ACDCDIG_ADCHPFEN_HPFEN_R0_MASK		BIT(1)
173 #define ACDCDIG_ADCHPFEN_HPFEN_R0_EN		BIT(1)
174 #define ACDCDIG_ADCHPFEN_HPFEN_L1_MASK		BIT(2)
175 #define ACDCDIG_ADCHPFEN_HPFEN_L1_EN		BIT(2)
176 /* ADCHPFCF */
177 #define ACDCDIG_ADCHPFCF_HPFCF_MASK		GENMASK(1, 0)
178 #define ACDCDIG_ADCHPFCF_HPFCF_493HZ		3
179 #define ACDCDIG_ADCHPFCF_HPFCF_243HZ		2
180 #define ACDCDIG_ADCHPFCF_HPFCF_60HZ		1
181 #define ACDCDIG_ADCHPFCF_HPFCF_3P79HZ		0
182 /* ADCPGL0 */
183 #define ACDCDIG_ADCPGL0_PGA_L0_MASK		GENMASK(3, 0)
184 /* ADCPGL1 */
185 #define ACDCDIG_ADCPGL1_PGA_L1_MASK		GENMASK(3, 0)
186 /* ADCPGR0 */
187 #define ACDCDIG_ADCPGR0_PGA_R0_MASK		GENMASK(3, 0)
188 /* DACDIGEN */
189 #define ACDCDIG_DACDIGEN_DACEN_L0R1_MASK	BIT(0)
190 #define ACDCDIG_DACDIGEN_DACEN_L0R1_EN		BIT(0)
191 #define ACDCDIG_DACDIGEN_DACEN_L0R1_DIS		0
192 #define ACDCDIG_DACDIGEN_DAC_GLBEN_MASK		BIT(4)
193 #define ACDCDIG_DACDIGEN_DAC_GLBEN_EN		BIT(4)
194 #define ACDCDIG_DACDIGEN_DAC_GLBEN_DIS		0
195 /* DACCLKCTRL */
196 #define ACDCDIG_DACCLKCTRL_DAC_MODE_ATTENU_MASK	BIT(0)
197 #define ACDCDIG_DACCLKCTRL_DAC_MODE_ATTENU_EN	BIT(0)
198 #define ACDCDIG_DACCLKCTRL_DAC_MODE_ATTENU_DIS	0
199 #define ACDCDIG_DACCLKCTRL_DAC_SYNC_STATUS_MASK	BIT(1)
200 #define ACDCDIG_DACCLKCTRL_DAC_SYNC_STATUS_DONE	0
201 #define ACDCDIG_DACCLKCTRL_DAC_SYNC_ENA_MASK	BIT(2)
202 #define ACDCDIG_DACCLKCTRL_DAC_SYNC_ENA_EN	BIT(2)
203 #define ACDCDIG_DACCLKCTRL_DAC_SYNC_ENA_DIS	0
204 #define ACDCDIG_DACCLKCTRL_CKE_BCLKRX_MASK	BIT(3)
205 #define ACDCDIG_DACCLKCTRL_CKE_BCLKRX_EN	BIT(3)
206 #define ACDCDIG_DACCLKCTRL_CKE_BCLKRX_DIS	0
207 #define ACDCDIG_DACCLKCTRL_I2SRX_CKE_MASK	BIT(4)
208 #define ACDCDIG_DACCLKCTRL_I2SRX_CKE_EN		BIT(4)
209 #define ACDCDIG_DACCLKCTRL_I2SRX_CKE_DIS	0
210 #define ACDCDIG_DACCLKCTRL_DAC_CKE_MASK		BIT(5)
211 #define ACDCDIG_DACCLKCTRL_DAC_CKE_EN		BIT(5)
212 #define ACDCDIG_DACCLKCTRL_DAC_CKE_DIS		0
213 /* DACINT_DIV */
214 #define ACDCDIG_DACINT_DIV_INT_DIV_CON_MASK	GENMASK(7, 0)
215 #define ACDCDIG_DACINT_DIV_INT_DIV_CON(x)	((x) - 1)
216 /* DACSCLKRXINT_DIV */
217 #define ACDCDIG_DACSCLKRXINT_DIV_SCKRXDIV_MASK	GENMASK(7, 0)
218 #define ACDCDIG_DACSCLKRXINT_DIV_SCKRXDIV(x)	((x) - 1)
219 /* DACPWM_DIV */
220 #define ACDCDIG_DACPWM_DIV_AUDIO_PWM_DIV_MASK	GENMASK(7, 0)
221 #define ACDCDIG_DACPWM_DIV_AUDIO_PWM_DIV(x)	((x) - 1)
222 /* DACPWM_CTRL */
223 #define ACDCDIG_DACPWM_CTRL_DITH_SEL_MASK	GENMASK(2, 0)
224 #define ACDCDIG_DACPWM_CTRL_DITH_SEL(x)		(x)
225 #define ACDCDIG_DACPWM_CTRL_PWM_EN_MASK		BIT(3)
226 #define ACDCDIG_DACPWM_CTRL_PWM_EN		BIT(3)
227 #define ACDCDIG_DACPWM_CTRL_PWM_DIS		0
228 #define ACDCDIG_DACPWM_CTRL_PWM_MODE_MASK	GENMASK(5, 4)
229 #define ACDCDIG_DACPWM_CTRL_PWM_MODE_1		(0x2 << 4)
230 #define ACDCDIG_DACPWM_CTRL_PWM_MODE_0		(0x1 << 4)
231 #define ACDCDIG_DACPWM_CTRL_PWM_MODE_DAC	(0x0 << 4)
232 #define ACDCDIG_DACPWM_CTRL_PWM_MODE_CKE_MASK	BIT(6)
233 #define ACDCDIG_DACPWM_CTRL_PWM_MODE_CKE_EN	BIT(6)
234 #define ACDCDIG_DACPWM_CTRL_PWM_MODE_CKE_DIS	0
235 /* DACCFG1 */
236 #define ACDCDIG_DACCFG1_DACSRT_MASK		GENMASK(4, 2)
237 #define ACDCDIG_DACCFG1_DACSRT(x)		((x) << 2)
238 /* DACMUTE */
239 #define ACDCDIG_DACMUTE_DACMT_MASK		BIT(0)
240 #define ACDCDIG_DACMUTE_DACUNMT_MASK		BIT(1)
241 /* DACVOLL0 */
242 #define ACDCDIG_DACVOLL0_DACLV0_MASK		GENMASK(7, 0)
243 #define ACDCDIG_DACVOLL0_DACLV0(x)		(x)
244 /* DACVOLR0 */
245 #define ACDCDIG_DACVOLR0_DACRV0_MASK		GENMASK(7, 0)
246 #define ACDCDIG_DACVOLR0_DACRV0(x)		(x)
247 /* DACVOGP */
248 #define ACDCDIG_DACVOGP_VOLGPL0_MASK		BIT(0)
249 #define ACDCDIG_DACVOGP_VOLGPL0_POS		BIT(0)
250 #define ACDCDIG_DACVOGP_VOLGPL0_NEG		0
251 #define ACDCDIG_DACVOGP_VOLGPR0_MASK		BIT(1)
252 #define ACDCDIG_DACVOGP_VOLGPR0_POS		BIT(1)
253 #define ACDCDIG_DACVOGP_VOLGPR0_NEG		0
254 /* DACMIXCTRLL */
255 #define ACDCDIG_DACMIXCTRLL_MIXMODE_L0_MASK	GENMASK(1, 0)
256 #define ACDCDIG_DACMIXCTRLL_MIXMODE_L0_LR	2
257 #define ACDCDIG_DACMIXCTRLL_MIXMODE_L0_R	1
258 #define ACDCDIG_DACMIXCTRLL_MIXMODE_L0_L	0
259 /* DACMIXCTRLR */
260 #define ACDCDIG_DACMIXCTRLR_MIXMODE_R0_MASK	GENMASK(1, 0)
261 #define ACDCDIG_DACMIXCTRLR_MIXMODE_R0_LR	2
262 #define ACDCDIG_DACMIXCTRLR_MIXMODE_R0_L	1
263 #define ACDCDIG_DACMIXCTRLR_MIXMODE_R0_R	0
264 /* DACHPF */
265 #define ACDCDIG_DACHPF_HPFEN_L0R0_MASK		BIT(0)
266 #define ACDCDIG_DACHPF_HPFEN_L0R0_EN		BIT(0)
267 #define ACDCDIG_DACHPF_HPFCF_MASK		GENMASK(5, 4)
268 #define ACDCDIG_DACHPF_HPFCF_140HZ		(0x3 << 4)
269 #define ACDCDIG_DACHPF_HPFCF_120HZ		(0x2 << 4)
270 #define ACDCDIG_DACHPF_HPFCF_100HZ		(0x1 << 4)
271 #define ACDCDIG_DACHPF_HPFCF_80HZ		(0x0 << 4)
272 /* I2S_TXCR0 */
273 #define ACDCDIG_I2S_TXCR0_VDW_MASK		GENMASK(4, 0)
274 #define ACDCDIG_I2S_TXCR0_VDW(x)		((x) - 1)
275 /* I2S_TXCR1 */
276 #define ACDCDIG_I2S_TXCR1_CEX_MASK		BIT(4)
277 #define ACDCDIG_I2S_TXCR1_CEX_EXCHANGE		BIT(4)
278 #define ACDCDIG_I2S_TXCR1_TCSR_MASK		GENMASK(7, 6)
279 #define ACDCDIG_I2S_TXCR1_TCSR_4CH		(0x1 << 6)
280 #define ACDCDIG_I2S_TXCR1_TCSR_2CH		(0x0 << 6)
281 /* I2S_RXCR0 */
282 #define ACDCDIG_I2S_RXCR0_VDW_MASK		GENMASK(4, 0)
283 #define ACDCDIG_I2S_RXCR0_VDW(x)		((x) - 1)
284 /* I2S_RXCR1 */
285 #define ACDCDIG_I2S_RXCR1_CEX_MASK		BIT(4)
286 #define ACDCDIG_I2S_RXCR1_CEX_EXCHANGE		BIT(4)
287 #define ACDCDIG_I2S_RXCR1_RCSR_MASK		GENMASK(7, 6)
288 #define ACDCDIG_I2S_RXCR1_RCSR_2CH		(0x0 << 6)
289 /* I2S_CKR0 */
290 #define ACDCDIG_I2S_CKR0_TSD_MASK		GENMASK(1, 0)
291 #define ACDCDIG_I2S_CKR0_TSD_64			(0 << 0)
292 #define ACDCDIG_I2S_CKR0_TSD_128		(1 << 0)
293 #define ACDCDIG_I2S_CKR0_TSD_256		(2 << 0)
294 #define ACDCDIG_I2S_CKR0_RSD_MASK		GENMASK(3, 2)
295 #define ACDCDIG_I2S_CKR0_RSD_64			(0 << 2)
296 #define ACDCDIG_I2S_CKR0_RSD_128		(1 << 2)
297 #define ACDCDIG_I2S_CKR0_RSD_256		(2 << 2)
298 
299 /* I2S_CKR1 */
300 #define ACDCDIG_I2S_CKR1_TLP_MASK		BIT(0)
301 #define ACDCDIG_I2S_CKR1_TLP_INVERTED		BIT(0)
302 #define ACDCDIG_I2S_CKR1_TLP_NORMAL		0
303 #define ACDCDIG_I2S_CKR1_RLP_MASK		BIT(1)
304 #define ACDCDIG_I2S_CKR1_RLP_INVERTED		BIT(1)
305 #define ACDCDIG_I2S_CKR1_RLP_NORMAL		0
306 #define ACDCDIG_I2S_CKR1_CKP_MASK		BIT(2)
307 #define ACDCDIG_I2S_CKR1_CKP_INVERTED		BIT(2)
308 #define ACDCDIG_I2S_CKR1_CKP_NORMAL		0
309 #define ACDCDIG_I2S_CKR1_MSS_MASK		BIT(3)
310 #define ACDCDIG_I2S_CKR1_MSS_MASTER		0
311 /* I2S_XFER */
312 #define ACDCDIG_I2S_XFER_TXS_MASK		BIT(0)
313 #define ACDCDIG_I2S_XFER_TXS_START		BIT(0)
314 #define ACDCDIG_I2S_XFER_TXS_STOP		0
315 #define ACDCDIG_I2S_XFER_RXS_MASK		BIT(1)
316 #define ACDCDIG_I2S_XFER_RXS_START		BIT(1)
317 #define ACDCDIG_I2S_XFER_RXS_STOP		0
318 /* I2S_CLR */
319 #define ACDCDIG_I2S_CLR_TXC_MASK		BIT(0)
320 #define ACDCDIG_I2S_CLR_TXC_CLR			BIT(0)
321 #define ACDCDIG_I2S_CLR_RXC_MASK		BIT(1)
322 #define ACDCDIG_I2S_CLR_RXC_CLR			BIT(1)
323 
324 #endif
325