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
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Rockchip VAD driver
 *
 * Copyright (C) 2018 Fuzhou Rockchip Electronics Co., Ltd
 *
 */
 
#ifndef _ROCKCHIP_VAD_H
#define _ROCKCHIP_VAD_H
 
#define VAD_CTRL            0x00
#define VAD_DET_CHNL_SHIFT        29
#define VAD_DET_CHNL_MASK        GENMASK(31, 29)
#define VAD_DET_CHNL(x)            ((x) << VAD_DET_CHNL_SHIFT)
#define AUDIO_24BIT_SAT_SHIFT        28
#define AUDIO_24BIT_SAT_MASK        BIT(28)
#define AUDIO_H16B            0
#define AUDIO_SAT_24TO16        BIT(28)
#define AUDIO_24BIT_ALIGN_MODE_SHIFT    27
#define AUDIO_24BIT_ALIGN_MODE_MASK    BIT(27)
#define AUDIO_24BIT_ALIGN_8_31B        0
#define AUDIO_24BIT_ALIGN_0_23B        BIT(27)
#define AUDIO_CHNL_BW_SHIFT        26
#define AUDIO_CHNL_BW_MASK        BIT(26)
#define AUDIO_CHNL_16B            0
#define AUDIO_CHNL_24B            BIT(26)
#define AUDIO_CHNL_NUM_SHIFT        23
#define AUDIO_CHNL_NUM_MASK        GENMASK(25, 23)
#define AUDIO_CHNL_NUM(x)        ((x - 1) << AUDIO_CHNL_NUM_SHIFT)
#define CFG_ACODE_AFTER_DET_EN_SHIFT    22
#define CFG_ACODE_AFTER_DET_EN_MASK    BIT(22)
#define CFG_ACODE_AFTER_DET_EN        BIT(22)
#define VAD_MODE_SHIFT            20
#define VAD_MODE_MASK            GENMASK(21, 20)
#define STORE_DATA_VAD_DET_ONLY        0
#define STORE_DATA_ALL            (1 << VAD_MODE_SHIFT)
#define NO_STORE_DATA            (2 << VAD_MODE_SHIFT)
#define ACODE_CFG_REG_NUM_SHIFT        15
#define ACODE_CFG_REG_NUM_MASK        GENMASK(19, 15)
#define ACODE_CFG_REG_NUM(x)        ((x - 1) << ACODE_CFG_REG_NUM_SHIFT)
#define SRC_ADDR_MODE_SHIFT        14
#define SRC_ADDR_MODE_MASK        BIT(14)
#define SRC_ADDR_MODE_INC        0
#define SRC_ADDR_MODE_FIXED        BIT(14)
#define INCR_BURST_LEN_SHIFT        10
#define INCR_BURST_LEN_MASK        GENMASK(13, 10)
#define INCR_BURST_LEN(x)        ((x - 1) << INCR_BURST_LEN_SHIFT)
#define SRC_BURST_NUM_SHIFT        7
#define SRC_BURST_NUM_MASK        GENMASK(9, 7)
#define SRC_BURST_NUM(x)        ((x - 1) << SRC_BURST_NUM_SHIFT)
#define SRC_BURST_SHIFT            4
#define SRC_BURST_MASK            GENMASK(6, 4)
#define SRC_BURST_SIGNLE        0
#define SRC_BURST_INCR            (1 << SRC_BURST_SHIFT)
#define SRC_BURST_INCR4            (3 << SRC_BURST_SHIFT)
#define SRC_BURST_INCR8            (5 << SRC_BURST_SHIFT)
#define SRC_BURST_INCR16        (7 << SRC_BURST_SHIFT)
#define AUDIO_SRC_SEL_SHIFT        1
#define AUDIO_SRC_SEL_MASK        GENMASK(3, 1)
#define AUDIO_SRC_SEL_I2S0        0
#define AUDIO_SRC_SEL_I2S1        (1 << AUDIO_SRC_SEL_MASK)
#define AUDIO_SRC_SEL_I2S2        (2 << AUDIO_SRC_SEL_MASK)
#define AUDIO_SRC_SEL_I2S3        (3 << AUDIO_SRC_SEL_MASK)
#define AUDIO_SRC_SEL_PDM        (4 << AUDIO_SRC_SEL_MASK)
#define VAD_EN_SHIFT            0
#define VAD_EN_MASK            BIT(0)
#define VAD_EN                BIT(0)
#define VAD_DISABLE            0
#define VAD_IS_ADDR            4
#define VAD_ID_ADDR            8
#define VAD_OD_ADDR0            0x0c
#define VAD_OD_ADDR1            0x10
#define VAD_OD_ADDR2            0x14
#define VAD_OD_ADDR3            0x18
#define VAD_OD_ADDR4            0x1c
#define VAD_OD_ADDR5            0x20
#define VAD_OD_ADDR6            0x24
#define VAD_OD_ADDR7            0x28
#define VAD_D_DATA0            0x2c
#define VAD_D_DATA1            0x30
#define VAD_D_DATA2            0x34
#define VAD_D_DATA3            0x38
#define VAD_D_DATA4            0x3c
#define VAD_D_DATA5            0x40
#define VAD_D_DATA6            0x44
#define VAD_D_DATA7            0x48
 
#define VAD_TIMEOUT            0x4c
#define WORK_TIMEOUT_EN_MASK        BIT(31)
#define WORK_TIMEOUT_EN            BIT(31)
#define WORK_TIMEOUT_DISABLE        0
#define IDLE_TIMEOUT_EN_MASK        BIT(30)
#define IDLE_TIMEOUT_EN            BIT(30)
#define IDLE_TIMEOUT_DISABLE        0
#define WORK_TIMEOUT_THD_SHIFT        20
#define WORK_TIMEOUT_THD_MASK        GENMASK(29, 20)
#define WORK_TIMEOUT_THD(x)        ((x) << WORK_TIMEOUT_THD_SHIFT)
#define IDLE_TIMEOUT_THD_SHIFT        0
#define IDLE_TIMEOUT_THD_MASK        GENMASK(19, 0)
#define IDLE_TIMEOUT_THD(x)        ((x) << IDLE_TIMEOUT_THD_SHIFT)
 
#define VAD_RAM_BEGIN_ADDR        0x50
#define VAD_RAM_END_ADDR        0x54
#define VAD_RAM_CUR_ADDR        0x58
#define VAD_DET_CON0            0x5c
#define VAD_CON_THD_SHIFT        16
#define VAD_CON_THD_MASK        GENMASK(23, 16)
#define VAD_CON_THD(x)            ((x) << VAD_CON_THD_SHIFT)
#define NOISE_LEVEL_SHIFT        12
#define NOISE_LEVEL_MASK        GENMASK(14, 12)
#define NOISE_LEVEL(x)            ((x) << NOISE_LEVEL_SHIFT)
#define GAIN_SHIFT            0
#define GAIN_MASK            GENMASK(9, 0)
#define GAIN(x)                (x)
 
#define VAD_DET_CON1            0x60
#define MIN_NOISE_FIND_MODE_SHIFT    30
#define MIN_NOISE_FIN_MODE_MASK        BIT(30)
#define MIN_NOISE_FIND_MODE0        0
#define MIN_NOISE_FIND_MODE1        BIT(30)
#define NOISE_CLEAN_MODE_SHIFT        29
#define NOISE_CLEAN_MODE_MASK        BIT(29)
#define NOISE_CLEAN_MODE0        0
#define NOISE_CLEAN_MODE1        BIT(29)
#define NOISE_CLK_FORCE_EN_MASK        BIT(28)
#define NOISE_CLK_AUTO_GATING        0
#define NOISE_CLK_FORCE_EN        BIT(28)
#define NOISE_SAMPLE_NUM_SHIFT        16
#define NOISE_SAMPLE_NUM_MASK        GENMASK(25, 16)
#define NOISE_SAMPLE_NUM        ((x) << NOISE_SAMPLE_NUM_SHIFT)
#define SOUND_THD_MASK            GENMASK(15, 0)
#define SOUND_THD(x)            (x)
 
#define VAD_DET_CON2            0x64
#define IIR_B0_SHIFT            16
#define IIR_B0_MASK            GENMASK(31, 16)
#define IIR_B0(x)            ((x) << IIR_B0_SHIFT)
#define NOISE_ALPHA_SHIFT        8
#define NOISE_ALPHA_MASK        GENMASK(15, 8)
#define NOISE_ALPHA(x)            ((x) << NOISE_ALPHA_SHIFT)
#define NOISE_FRM_NUM_MASK        GENMASK(6, 0)
#define NOISE_FRM_NUM(x)        (x)
 
#define VAD_DET_CON3            0x68
#define IIR_B2_MASK            GENMASK(31, 16)
#define IIR_B2(x)            ((x) << 16)
#define IIR_B1_MASK            GENMASK(15, 0)
#define IIR_B1(x)            (x)
 
#define VAD_DET_CON4            0x6c
#define IIR_A2_MASK            GENMASK(31, 16)
#define IIR_A2(x)            ((x) << 16)
#define IIR_A1_MASK            GENMASK(15, 0)
#define IIR_A1(x)            (x)
 
#define VAD_DET_CON5            0x70
#define IIR_RESULT_SHIFT        16
#define IIR_RESULT_MASK            GENMASK(31, 16)
#define NOISE_ABS_MASK            GENMASK(15, 0)
#define NOISE_ABS(x)            (x)
 
#define VAD_INT                0x74
#define VAD_DATA_TRANS_INT_FLAG_MASK    BIT(11)
#define VAD_DATA_TRANS_INT_EN_MASK    BIT(10)
#define VAD_DATA_TRANS_INT_EN        BIT(10)
#define VAD_IDLE_MASK            BIT(9)
#define RAM_LOOP_FLGA_MASK        BIT(8)
#define WORK_TIMEOUT_FLAG_MASK        BIT(7)
#define IDLE_TIMEOUT_FLAG_MASK        BIT(6)
#define ERR_INT_FLAG_MASK        BIT(5)
#define VAD_DET_INT_FLAG_MASK        BIT(4)
#define WORK_TIMEOUT_INT_EN_MASK    BIT(3)
#define WORK_TIMEOUT_INT_EN        BIT(3)
#define IDLE_TIMEOUT_INT_EN_MASK    BIT(2)
#define IDLE_TIMEOUT_INT_EN        BIT(2)
#define ERR_INT_EN_MASK            BIT(1)
#define ERR_INT_EN            BIT(1)
#define VAD_DET_INT_EN_MASK        BIT(0)
#define VAD_DET_INT_EN            BIT(0)
 
#define VAD_AUX_CONTROL            0x78
#define SAMPLE_CNT_EN_MASK        BIT(29)
#define SAMPLE_CNT_EN            BIT(29)
#define SAMPLE_CNT_DIS            0
#define INT_TRIG_CTRL_EN_MASK        BIT(28)
#define INT_TRIG_CTRL_EN        BIT(28)
#define INT_TRIG_CTRL_DIS        0
#define INT_TRIG_VALID_THD_MASK        GENMASK(27, 16)
#define INT_TRIG_VALID_THD(x)        (((x) - 1) << 16)
#define DATA_TRANS_KBYTE_THD_MASK    GENMASK(11, 4)
#define DATA_TRANS_KBYTE_THD(x)        (((x) - 1) << 4)
#define DATA_TRANS_TRIG_INT_EN_MASK    BIT(2)
#define DATA_TRANS_TRIG_INT_EN        BIT(2)
#define DATA_TRANS_TRIG_INT_DIS        0
#define RAM_ITF_EN_MASK            BIT(1)
#define RAM_ITF_EN            0
#define RAM_ITF_DIS            BIT(1)
#define BUS_WRITE_EN_MASK        BIT(0)
#define BUS_WRITE_EN            BIT(0)
#define BUS_WRITE_DIS            0
 
#define VAD_SAMPLE_CNT            0x7c
#define VAD_NOISE_DATA            0x100
 
/* RK1808 SOC */
#define RK1808_I2S0            0xff7e0800
#define RK1808_I2S1            0xff7f0800
#define RK1808_PDM            0xff800400
 
/* RK3308 SOC */
#define ACODEC_BASE            0xff560000
#define ACODEC_ADC_ANA_CON0        0X340
 
#define RK3308_I2S_8CH_0        0xff300800
#define RK3308_I2S_8CH_1        0xff310800
#define RK3308_I2S_8CH_2        0xff320800
#define RK3308_I2S_8CH_3        0xff330800
#define RK3308_PDM_8CH            0xff380400
 
/* RK3568 SOC */
#define RK3568_I2S_8CH_1        0xfe410800
#define RK3568_I2S_2CH_2        0xfe420800
#define RK3568_I2S_2CH_3        0xfe430800
#define RK3568_PDM            0xfe440400
 
/* RK3588 SOC */
#define RK3588_I2S1_8CH            0xfe480800
#define RK3588_PDM0            0xfe4b0400
 
#endif