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