• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2022 Beken Corporation
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 /***********************************************************************************************************************************
16 * This file is generated from BK7256_ADDR Mapping_20211224_format_change_highlight_20220113_update.xlsm automatically
17 * Modify it manually is not recommended
18 * CHIP ID:BK7256,GENARATE TIME:2022-02-09 17:28:47
19 ************************************************************************************************************************************/
20 
21 #pragma once
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #include <soc/soc.h>
28 
29 #define I2S_LL_REG_BASE      (SOC_I2S_REG_BASE) //REG_BASE:0x47810000
30 
31 /* REG_0x00 */
32 #define I2S_REG0X0_ADDR  (I2S_LL_REG_BASE  + 0x0*4) //REG ADDR :0x47810000
33 #define I2S_REG0X0_BITRATIO_POS (0)
34 #define I2S_REG0X0_BITRATIO_MASK (0xFF)
35 
36 #define I2S_REG0X0_SMPRATIO_POS (8)
37 #define I2S_REG0X0_SMPRATIO_MASK (0x1F)
38 
39 #define I2S_REG0X0_PCM_DLEN_POS (13)
40 #define I2S_REG0X0_PCM_DLEN_MASK (0x7)
41 
42 #define I2S_REG0X0_DATALEN_POS (16)
43 #define I2S_REG0X0_DATALEN_MASK (0x1F)
44 
45 #define I2S_REG0X0_SYNCLEN_POS (21)
46 #define I2S_REG0X0_SYNCLEN_MASK (0x7)
47 
48 #define I2S_REG0X0_LSBFIRST_POS (24)
49 #define I2S_REG0X0_LSBFIRST_MASK (0x1)
50 
51 #define I2S_REG0X0_SCLKINV_POS (25)
52 #define I2S_REG0X0_SCLKINV_MASK (0x1)
53 
54 #define I2S_REG0X0_LRCKRP_POS (26)
55 #define I2S_REG0X0_LRCKRP_MASK (0x1)
56 
57 #define I2S_REG0X0_MODESEL_POS (27)
58 #define I2S_REG0X0_MODESEL_MASK (0x7)
59 
60 #define I2S_REG0X0_MSTEN_POS (30)
61 #define I2S_REG0X0_MSTEN_MASK (0x1)
62 
63 #define I2S_REG0X0_I2SPCMEN_POS (31)
64 #define I2S_REG0X0_I2SPCMEN_MASK (0x1)
65 
i2s_ll_get_reg0x0_value(void)66 static inline uint32_t i2s_ll_get_reg0x0_value(void)
67 {
68     return REG_READ(I2S_REG0X0_ADDR);
69 }
70 
i2s_ll_set_reg0x0_value(uint32_t value)71 static inline void i2s_ll_set_reg0x0_value(uint32_t value)
72 {
73     REG_WRITE(I2S_REG0X0_ADDR,value);
74 }
75 
76 /* REG_0x00:reg0x0->BITRATIO:0x0[7:0],串行时钟SCK的比特率,即相对于系统时钟SYS_CLK的分频比(仅Maseter有效); Fsck = Fsys_clk / 2*(BITRATIO)。; 【注意】配置0对应不分频,0x0,R/W*/
i2s_ll_get_reg0x0_bitratio(void)77 static inline uint32_t i2s_ll_get_reg0x0_bitratio(void)
78 {
79     uint32_t reg_value;
80     reg_value = REG_READ(I2S_REG0X0_ADDR);
81     reg_value = ((reg_value >> I2S_REG0X0_BITRATIO_POS) & I2S_REG0X0_BITRATIO_MASK);
82     return reg_value;
83 }
84 
i2s_ll_set_reg0x0_bitratio(uint32_t value)85 static inline void i2s_ll_set_reg0x0_bitratio(uint32_t value)
86 {
87     uint32_t reg_value;
88     reg_value = REG_READ(I2S_REG0X0_ADDR);
89     reg_value &= ~(I2S_REG0X0_BITRATIO_MASK << I2S_REG0X0_BITRATIO_POS);
90     reg_value |= ((value & I2S_REG0X0_BITRATIO_MASK) << I2S_REG0X0_BITRATIO_POS);
91     REG_WRITE(I2S_REG0X0_ADDR,reg_value);
92 }
93 
94 /* REG_0x00:reg0x0->SMPRATIO:0x0[12:8],采样速率指示。(单位是SCK); Fs = Fsck / 2*(SMPRATIO+1); 【注意】该配置值表示单个声道的SCK个数。若2B+D模式下,同步信号之间的间隔等于2*(SMPRATIO+1),其它模式下同步(左右声道指示)信号的变化间隔等于(SMPRATIO+1)。,0x0,R/W*/
i2s_ll_get_reg0x0_smpratio(void)95 static inline uint32_t i2s_ll_get_reg0x0_smpratio(void)
96 {
97     uint32_t reg_value;
98     reg_value = REG_READ(I2S_REG0X0_ADDR);
99     reg_value = ((reg_value >> I2S_REG0X0_SMPRATIO_POS) & I2S_REG0X0_SMPRATIO_MASK);
100     return reg_value;
101 }
102 
i2s_ll_set_reg0x0_smpratio(uint32_t value)103 static inline void i2s_ll_set_reg0x0_smpratio(uint32_t value)
104 {
105     uint32_t reg_value;
106     reg_value = REG_READ(I2S_REG0X0_ADDR);
107     reg_value &= ~(I2S_REG0X0_SMPRATIO_MASK << I2S_REG0X0_SMPRATIO_POS);
108     reg_value |= ((value & I2S_REG0X0_SMPRATIO_MASK) << I2S_REG0X0_SMPRATIO_POS);
109     REG_WRITE(I2S_REG0X0_ADDR,reg_value);
110 }
111 
112 /* REG_0x00:reg0x0->PCM_DLEN:0x0[15:13],2B+D的PCM模式中D的长度(单位是SCK)。,0x0,R/W*/
i2s_ll_get_reg0x0_pcm_dlen(void)113 static inline uint32_t i2s_ll_get_reg0x0_pcm_dlen(void)
114 {
115     uint32_t reg_value;
116     reg_value = REG_READ(I2S_REG0X0_ADDR);
117     reg_value = ((reg_value >> I2S_REG0X0_PCM_DLEN_POS) & I2S_REG0X0_PCM_DLEN_MASK);
118     return reg_value;
119 }
120 
i2s_ll_set_reg0x0_pcm_dlen(uint32_t value)121 static inline void i2s_ll_set_reg0x0_pcm_dlen(uint32_t value)
122 {
123     uint32_t reg_value;
124     reg_value = REG_READ(I2S_REG0X0_ADDR);
125     reg_value &= ~(I2S_REG0X0_PCM_DLEN_MASK << I2S_REG0X0_PCM_DLEN_POS);
126     reg_value |= ((value & I2S_REG0X0_PCM_DLEN_MASK) << I2S_REG0X0_PCM_DLEN_POS);
127     REG_WRITE(I2S_REG0X0_ADDR,reg_value);
128 }
129 
130 /* REG_0x00:reg0x0->DATALEN:0x0[20:16],传输数据长度; 0~31分别表示1~32bit。,0x0,R/W*/
i2s_ll_get_reg0x0_datalen(void)131 static inline uint32_t i2s_ll_get_reg0x0_datalen(void)
132 {
133     uint32_t reg_value;
134     reg_value = REG_READ(I2S_REG0X0_ADDR);
135     reg_value = ((reg_value >> I2S_REG0X0_DATALEN_POS) & I2S_REG0X0_DATALEN_MASK);
136     return reg_value;
137 }
138 
i2s_ll_set_reg0x0_datalen(uint32_t value)139 static inline void i2s_ll_set_reg0x0_datalen(uint32_t value)
140 {
141     uint32_t reg_value;
142     reg_value = REG_READ(I2S_REG0X0_ADDR);
143     reg_value &= ~(I2S_REG0X0_DATALEN_MASK << I2S_REG0X0_DATALEN_POS);
144     reg_value |= ((value & I2S_REG0X0_DATALEN_MASK) << I2S_REG0X0_DATALEN_POS);
145     REG_WRITE(I2S_REG0X0_ADDR,reg_value);
146 }
147 
148 /* REG_0x00:reg0x0->SYNCLEN:0x0[23:21],Sync长度(仅Long Frame Sync模式下有效)。; 1~7分别对应2~8个Bit Clock Cycle,0x0,R/W*/
i2s_ll_get_reg0x0_synclen(void)149 static inline uint32_t i2s_ll_get_reg0x0_synclen(void)
150 {
151     uint32_t reg_value;
152     reg_value = REG_READ(I2S_REG0X0_ADDR);
153     reg_value = ((reg_value >> I2S_REG0X0_SYNCLEN_POS) & I2S_REG0X0_SYNCLEN_MASK);
154     return reg_value;
155 }
156 
i2s_ll_set_reg0x0_synclen(uint32_t value)157 static inline void i2s_ll_set_reg0x0_synclen(uint32_t value)
158 {
159     uint32_t reg_value;
160     reg_value = REG_READ(I2S_REG0X0_ADDR);
161     reg_value &= ~(I2S_REG0X0_SYNCLEN_MASK << I2S_REG0X0_SYNCLEN_POS);
162     reg_value |= ((value & I2S_REG0X0_SYNCLEN_MASK) << I2S_REG0X0_SYNCLEN_POS);
163     REG_WRITE(I2S_REG0X0_ADDR,reg_value);
164 }
165 
166 /* REG_0x00:reg0x0->LSBFIRST:0x0[24],LSB先发送/接收使能信号; 0:MSB先发送/接收; 1:LSB先发送/接收,0x0,R/W*/
i2s_ll_get_reg0x0_lsbfirst(void)167 static inline uint32_t i2s_ll_get_reg0x0_lsbfirst(void)
168 {
169     uint32_t reg_value;
170     reg_value = REG_READ(I2S_REG0X0_ADDR);
171     reg_value = ((reg_value >> I2S_REG0X0_LSBFIRST_POS) & I2S_REG0X0_LSBFIRST_MASK);
172     return reg_value;
173 }
174 
i2s_ll_set_reg0x0_lsbfirst(uint32_t value)175 static inline void i2s_ll_set_reg0x0_lsbfirst(uint32_t value)
176 {
177     uint32_t reg_value;
178     reg_value = REG_READ(I2S_REG0X0_ADDR);
179     reg_value &= ~(I2S_REG0X0_LSBFIRST_MASK << I2S_REG0X0_LSBFIRST_POS);
180     reg_value |= ((value & I2S_REG0X0_LSBFIRST_MASK) << I2S_REG0X0_LSBFIRST_POS);
181     REG_WRITE(I2S_REG0X0_ADDR,reg_value);
182 }
183 
184 /* REG_0x00:reg0x0->SCLKINV:0x0[25],SCK信号反转指示; 0:不反转; 1:反转; 【注意】本模块的输入数据在SCLK的上升沿采样,输出数据在SCLK的下降沿变化。若对端通信的器件的时序要求与本模块不同,则需将该比特配置为’1’。,0x0,R/W*/
i2s_ll_get_reg0x0_sclkinv(void)185 static inline uint32_t i2s_ll_get_reg0x0_sclkinv(void)
186 {
187     uint32_t reg_value;
188     reg_value = REG_READ(I2S_REG0X0_ADDR);
189     reg_value = ((reg_value >> I2S_REG0X0_SCLKINV_POS) & I2S_REG0X0_SCLKINV_MASK);
190     return reg_value;
191 }
192 
i2s_ll_set_reg0x0_sclkinv(uint32_t value)193 static inline void i2s_ll_set_reg0x0_sclkinv(uint32_t value)
194 {
195     uint32_t reg_value;
196     reg_value = REG_READ(I2S_REG0X0_ADDR);
197     reg_value &= ~(I2S_REG0X0_SCLKINV_MASK << I2S_REG0X0_SCLKINV_POS);
198     reg_value |= ((value & I2S_REG0X0_SCLKINV_MASK) << I2S_REG0X0_SCLKINV_POS);
199     REG_WRITE(I2S_REG0X0_ADDR,reg_value);
200 }
201 
202 /* REG_0x00:reg0x0->LRCKRP:0x0[26],LRCK信号反转指示(仅MODESEL的最高位配置’0’时有效); 0:不反转; 1:反转; 【注意】本模块中LRCK的低电平表示右声道,高电平表示左声道。而有些应用的时序刚好相反(即低表示左声道,高表示右声道),此时需将该比特配置为’1’。,0x0,R/W*/
i2s_ll_get_reg0x0_lrckrp(void)203 static inline uint32_t i2s_ll_get_reg0x0_lrckrp(void)
204 {
205     uint32_t reg_value;
206     reg_value = REG_READ(I2S_REG0X0_ADDR);
207     reg_value = ((reg_value >> I2S_REG0X0_LRCKRP_POS) & I2S_REG0X0_LRCKRP_MASK);
208     return reg_value;
209 }
210 
i2s_ll_set_reg0x0_lrckrp(uint32_t value)211 static inline void i2s_ll_set_reg0x0_lrckrp(uint32_t value)
212 {
213     uint32_t reg_value;
214     reg_value = REG_READ(I2S_REG0X0_ADDR);
215     reg_value &= ~(I2S_REG0X0_LRCKRP_MASK << I2S_REG0X0_LRCKRP_POS);
216     reg_value |= ((value & I2S_REG0X0_LRCKRP_MASK) << I2S_REG0X0_LRCKRP_POS);
217     REG_WRITE(I2S_REG0X0_ADDR,reg_value);
218 }
219 
220 /* REG_0x00:reg0x0->MODESEL:0x0[29:27],模块工作模式选择信号; 000:I2S (Philips); 001:Left Justified; 010:Right Justified; 011:保留; 100:Short Frame Sync; 101:Long Frame Sync; 110:Normal 2B+D(MSB位于LRCK的第一个上升沿位置); 111:Delay 2B+D (MSB位于LRCK的第二个上升沿位置); 【注意】2B+D模式下,若D等于0即GCI时序,若D不等于0即IDL时序,0x0,R/W*/
i2s_ll_get_reg0x0_modesel(void)221 static inline uint32_t i2s_ll_get_reg0x0_modesel(void)
222 {
223     uint32_t reg_value;
224     reg_value = REG_READ(I2S_REG0X0_ADDR);
225     reg_value = ((reg_value >> I2S_REG0X0_MODESEL_POS) & I2S_REG0X0_MODESEL_MASK);
226     return reg_value;
227 }
228 
i2s_ll_set_reg0x0_modesel(uint32_t value)229 static inline void i2s_ll_set_reg0x0_modesel(uint32_t value)
230 {
231     uint32_t reg_value;
232     reg_value = REG_READ(I2S_REG0X0_ADDR);
233     reg_value &= ~(I2S_REG0X0_MODESEL_MASK << I2S_REG0X0_MODESEL_POS);
234     reg_value |= ((value & I2S_REG0X0_MODESEL_MASK) << I2S_REG0X0_MODESEL_POS);
235     REG_WRITE(I2S_REG0X0_ADDR,reg_value);
236 }
237 
238 /* REG_0x00:reg0x0->MSTEN:0x0[30],主模式使能信号; 0:工作于从模式; 1:工作于主模式,0x0,R/W*/
i2s_ll_get_reg0x0_msten(void)239 static inline uint32_t i2s_ll_get_reg0x0_msten(void)
240 {
241     uint32_t reg_value;
242     reg_value = REG_READ(I2S_REG0X0_ADDR);
243     reg_value = ((reg_value >> I2S_REG0X0_MSTEN_POS) & I2S_REG0X0_MSTEN_MASK);
244     return reg_value;
245 }
246 
i2s_ll_set_reg0x0_msten(uint32_t value)247 static inline void i2s_ll_set_reg0x0_msten(uint32_t value)
248 {
249     uint32_t reg_value;
250     reg_value = REG_READ(I2S_REG0X0_ADDR);
251     reg_value &= ~(I2S_REG0X0_MSTEN_MASK << I2S_REG0X0_MSTEN_POS);
252     reg_value |= ((value & I2S_REG0X0_MSTEN_MASK) << I2S_REG0X0_MSTEN_POS);
253     REG_WRITE(I2S_REG0X0_ADDR,reg_value);
254 }
255 
256 /* REG_0x00:reg0x0->I2SPCMEN:0x0[31],I2S使能信号; 0:禁止模块工作; 1:允许模块工作,0x0,R/W*/
i2s_ll_get_reg0x0_i2spcmen(void)257 static inline uint32_t i2s_ll_get_reg0x0_i2spcmen(void)
258 {
259     uint32_t reg_value;
260     reg_value = REG_READ(I2S_REG0X0_ADDR);
261     reg_value = ((reg_value >> I2S_REG0X0_I2SPCMEN_POS) & I2S_REG0X0_I2SPCMEN_MASK);
262     return reg_value;
263 }
264 
i2s_ll_set_reg0x0_i2spcmen(uint32_t value)265 static inline void i2s_ll_set_reg0x0_i2spcmen(uint32_t value)
266 {
267     uint32_t reg_value;
268     reg_value = REG_READ(I2S_REG0X0_ADDR);
269     reg_value &= ~(I2S_REG0X0_I2SPCMEN_MASK << I2S_REG0X0_I2SPCMEN_POS);
270     reg_value |= ((value & I2S_REG0X0_I2SPCMEN_MASK) << I2S_REG0X0_I2SPCMEN_POS);
271     REG_WRITE(I2S_REG0X0_ADDR,reg_value);
272 }
273 
274 /* REG_0x01 */
275 #define I2S_REG0X1_ADDR  (I2S_LL_REG_BASE  + 0x1*4) //REG ADDR :0x47810004
276 #define I2S_REG0X1_RXINT_EN_POS (0)
277 #define I2S_REG0X1_RXINT_EN_MASK (0x1)
278 
279 #define I2S_REG0X1_TXINT_EN_POS (1)
280 #define I2S_REG0X1_TXINT_EN_MASK (0x1)
281 
282 #define I2S_REG0X1_RXOVF_EN_POS (2)
283 #define I2S_REG0X1_RXOVF_EN_MASK (0x1)
284 
285 #define I2S_REG0X1_TXUDF_EN_POS (3)
286 #define I2S_REG0X1_TXUDF_EN_MASK (0x1)
287 
288 #define I2S_REG0X1_RXINT_LEVEL_POS (4)
289 #define I2S_REG0X1_RXINT_LEVEL_MASK (0x3)
290 
291 #define I2S_REG0X1_TXINT_LEVEL_POS (6)
292 #define I2S_REG0X1_TXINT_LEVEL_MASK (0x3)
293 
294 #define I2S_REG0X1_TXFIFO_CLR_POS (8)
295 #define I2S_REG0X1_TXFIFO_CLR_MASK (0x1)
296 
297 #define I2S_REG0X1_RXFIFO_CLR_POS (9)
298 #define I2S_REG0X1_RXFIFO_CLR_MASK (0x1)
299 
300 #define I2S_REG0X1_SMPRATIO_H2B_POS (10)
301 #define I2S_REG0X1_SMPRATIO_H2B_MASK (0x3)
302 
303 #define I2S_REG0X1_BITRATIO_H4B_POS (12)
304 #define I2S_REG0X1_BITRATIO_H4B_MASK (0xF)
305 
306 #define I2S_REG0X1_LRCOM_STORE_POS (16)
307 #define I2S_REG0X1_LRCOM_STORE_MASK (0x1)
308 
309 #define I2S_REG0X1_PARALLEL_EN_POS (17)
310 #define I2S_REG0X1_PARALLEL_EN_MASK (0x1)
311 
312 #define I2S_REG0X1_RESERVED_POS (18)
313 #define I2S_REG0X1_RESERVED_MASK (0x3FFF)
314 
i2s_ll_get_reg0x1_value(void)315 static inline uint32_t i2s_ll_get_reg0x1_value(void)
316 {
317     return REG_READ(I2S_REG0X1_ADDR);
318 }
319 
i2s_ll_set_reg0x1_value(uint32_t value)320 static inline void i2s_ll_set_reg0x1_value(uint32_t value)
321 {
322     REG_WRITE(I2S_REG0X1_ADDR,value);
323 }
324 
325 /* REG_0x01:reg0x1->RXINT_EN:0x1[0],接收中断使能,0x0,R/W*/
i2s_ll_get_reg0x1_rxint_en(void)326 static inline uint32_t i2s_ll_get_reg0x1_rxint_en(void)
327 {
328     uint32_t reg_value;
329     reg_value = REG_READ(I2S_REG0X1_ADDR);
330     reg_value = ((reg_value >> I2S_REG0X1_RXINT_EN_POS) & I2S_REG0X1_RXINT_EN_MASK);
331     return reg_value;
332 }
333 
i2s_ll_set_reg0x1_rxint_en(uint32_t value)334 static inline void i2s_ll_set_reg0x1_rxint_en(uint32_t value)
335 {
336     uint32_t reg_value;
337     reg_value = REG_READ(I2S_REG0X1_ADDR);
338     reg_value &= ~(I2S_REG0X1_RXINT_EN_MASK << I2S_REG0X1_RXINT_EN_POS);
339     reg_value |= ((value & I2S_REG0X1_RXINT_EN_MASK) << I2S_REG0X1_RXINT_EN_POS);
340     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
341 }
342 
343 /* REG_0x01:reg0x1->TXINT_EN:0x1[1],发送中断使能,0x0,R/W*/
i2s_ll_get_reg0x1_txint_en(void)344 static inline uint32_t i2s_ll_get_reg0x1_txint_en(void)
345 {
346     uint32_t reg_value;
347     reg_value = REG_READ(I2S_REG0X1_ADDR);
348     reg_value = ((reg_value >> I2S_REG0X1_TXINT_EN_POS) & I2S_REG0X1_TXINT_EN_MASK);
349     return reg_value;
350 }
351 
i2s_ll_set_reg0x1_txint_en(uint32_t value)352 static inline void i2s_ll_set_reg0x1_txint_en(uint32_t value)
353 {
354     uint32_t reg_value;
355     reg_value = REG_READ(I2S_REG0X1_ADDR);
356     reg_value &= ~(I2S_REG0X1_TXINT_EN_MASK << I2S_REG0X1_TXINT_EN_POS);
357     reg_value |= ((value & I2S_REG0X1_TXINT_EN_MASK) << I2S_REG0X1_TXINT_EN_POS);
358     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
359 }
360 
361 /* REG_0x01:reg0x1->RXOVF_EN:0x1[2],接收上溢(RXOVF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x1_rxovf_en(void)362 static inline uint32_t i2s_ll_get_reg0x1_rxovf_en(void)
363 {
364     uint32_t reg_value;
365     reg_value = REG_READ(I2S_REG0X1_ADDR);
366     reg_value = ((reg_value >> I2S_REG0X1_RXOVF_EN_POS) & I2S_REG0X1_RXOVF_EN_MASK);
367     return reg_value;
368 }
369 
i2s_ll_set_reg0x1_rxovf_en(uint32_t value)370 static inline void i2s_ll_set_reg0x1_rxovf_en(uint32_t value)
371 {
372     uint32_t reg_value;
373     reg_value = REG_READ(I2S_REG0X1_ADDR);
374     reg_value &= ~(I2S_REG0X1_RXOVF_EN_MASK << I2S_REG0X1_RXOVF_EN_POS);
375     reg_value |= ((value & I2S_REG0X1_RXOVF_EN_MASK) << I2S_REG0X1_RXOVF_EN_POS);
376     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
377 }
378 
379 /* REG_0x01:reg0x1->TXUDF_EN:0x1[3],发送下溢(TXUDF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x1_txudf_en(void)380 static inline uint32_t i2s_ll_get_reg0x1_txudf_en(void)
381 {
382     uint32_t reg_value;
383     reg_value = REG_READ(I2S_REG0X1_ADDR);
384     reg_value = ((reg_value >> I2S_REG0X1_TXUDF_EN_POS) & I2S_REG0X1_TXUDF_EN_MASK);
385     return reg_value;
386 }
387 
i2s_ll_set_reg0x1_txudf_en(uint32_t value)388 static inline void i2s_ll_set_reg0x1_txudf_en(uint32_t value)
389 {
390     uint32_t reg_value;
391     reg_value = REG_READ(I2S_REG0X1_ADDR);
392     reg_value &= ~(I2S_REG0X1_TXUDF_EN_MASK << I2S_REG0X1_TXUDF_EN_POS);
393     reg_value |= ((value & I2S_REG0X1_TXUDF_EN_MASK) << I2S_REG0X1_TXUDF_EN_POS);
394     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
395 }
396 
397 /* REG_0x01:reg0x1->RXINT_LEVEL:0x1[5:4],接收中断产生条件; 0:接收FIFO中有效数据超过1个就产生中断; 1:接收FIFO中有效数据超过8个才产生中断; 2:接收FIFO中有效数据超过16个才产生中断; 3:接收FIFO中有效数据超过24个才产生中断,0x0,R/W*/
i2s_ll_get_reg0x1_rxint_level(void)398 static inline uint32_t i2s_ll_get_reg0x1_rxint_level(void)
399 {
400     uint32_t reg_value;
401     reg_value = REG_READ(I2S_REG0X1_ADDR);
402     reg_value = ((reg_value >> I2S_REG0X1_RXINT_LEVEL_POS) & I2S_REG0X1_RXINT_LEVEL_MASK);
403     return reg_value;
404 }
405 
i2s_ll_set_reg0x1_rxint_level(uint32_t value)406 static inline void i2s_ll_set_reg0x1_rxint_level(uint32_t value)
407 {
408     uint32_t reg_value;
409     reg_value = REG_READ(I2S_REG0X1_ADDR);
410     reg_value &= ~(I2S_REG0X1_RXINT_LEVEL_MASK << I2S_REG0X1_RXINT_LEVEL_POS);
411     reg_value |= ((value & I2S_REG0X1_RXINT_LEVEL_MASK) << I2S_REG0X1_RXINT_LEVEL_POS);
412     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
413 }
414 
415 /* REG_0x01:reg0x1->TXINT_LEVEL:0x1[7:6],发送中断产生条件; 0:发送FIFO中有效数据少于1个就产生中断; 1:发送FIFO中有效数据少于8个就产生中断; 2:发送FIFO中有效数据少于16个就产生中断; 3:发送FIFO中有效数据少于24个就产生中断,0x0,R/W*/
i2s_ll_get_reg0x1_txint_level(void)416 static inline uint32_t i2s_ll_get_reg0x1_txint_level(void)
417 {
418     uint32_t reg_value;
419     reg_value = REG_READ(I2S_REG0X1_ADDR);
420     reg_value = ((reg_value >> I2S_REG0X1_TXINT_LEVEL_POS) & I2S_REG0X1_TXINT_LEVEL_MASK);
421     return reg_value;
422 }
423 
i2s_ll_set_reg0x1_txint_level(uint32_t value)424 static inline void i2s_ll_set_reg0x1_txint_level(uint32_t value)
425 {
426     uint32_t reg_value;
427     reg_value = REG_READ(I2S_REG0X1_ADDR);
428     reg_value &= ~(I2S_REG0X1_TXINT_LEVEL_MASK << I2S_REG0X1_TXINT_LEVEL_POS);
429     reg_value |= ((value & I2S_REG0X1_TXINT_LEVEL_MASK) << I2S_REG0X1_TXINT_LEVEL_POS);
430     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
431 }
432 
433 /* REG_0x01:reg0x1->TXFIFO_CLR:0x1[8],发送FIFO清除。读回值永远是0,0x0,R/W*/
i2s_ll_get_reg0x1_txfifo_clr(void)434 static inline uint32_t i2s_ll_get_reg0x1_txfifo_clr(void)
435 {
436     uint32_t reg_value;
437     reg_value = REG_READ(I2S_REG0X1_ADDR);
438     reg_value = ((reg_value >> I2S_REG0X1_TXFIFO_CLR_POS) & I2S_REG0X1_TXFIFO_CLR_MASK);
439     return reg_value;
440 }
441 
i2s_ll_set_reg0x1_txfifo_clr(uint32_t value)442 static inline void i2s_ll_set_reg0x1_txfifo_clr(uint32_t value)
443 {
444     uint32_t reg_value;
445     reg_value = REG_READ(I2S_REG0X1_ADDR);
446     reg_value &= ~(I2S_REG0X1_TXFIFO_CLR_MASK << I2S_REG0X1_TXFIFO_CLR_POS);
447     reg_value |= ((value & I2S_REG0X1_TXFIFO_CLR_MASK) << I2S_REG0X1_TXFIFO_CLR_POS);
448     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
449 }
450 
451 /* REG_0x01:reg0x1->RXFIFO_CLR:0x1[9],接收FIFO清除。读回值永远是0,0x0,R/W*/
i2s_ll_get_reg0x1_rxfifo_clr(void)452 static inline uint32_t i2s_ll_get_reg0x1_rxfifo_clr(void)
453 {
454     uint32_t reg_value;
455     reg_value = REG_READ(I2S_REG0X1_ADDR);
456     reg_value = ((reg_value >> I2S_REG0X1_RXFIFO_CLR_POS) & I2S_REG0X1_RXFIFO_CLR_MASK);
457     return reg_value;
458 }
459 
i2s_ll_set_reg0x1_rxfifo_clr(uint32_t value)460 static inline void i2s_ll_set_reg0x1_rxfifo_clr(uint32_t value)
461 {
462     uint32_t reg_value;
463     reg_value = REG_READ(I2S_REG0X1_ADDR);
464     reg_value &= ~(I2S_REG0X1_RXFIFO_CLR_MASK << I2S_REG0X1_RXFIFO_CLR_POS);
465     reg_value |= ((value & I2S_REG0X1_RXFIFO_CLR_MASK) << I2S_REG0X1_RXFIFO_CLR_POS);
466     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
467 }
468 
469 /* REG_0x01:reg0x1->SMPRATIO_H2B:0x1[11:10],采样速率指示值的高2bit,0x0,R/W*/
i2s_ll_get_reg0x1_smpratio_h2b(void)470 static inline uint32_t i2s_ll_get_reg0x1_smpratio_h2b(void)
471 {
472     uint32_t reg_value;
473     reg_value = REG_READ(I2S_REG0X1_ADDR);
474     reg_value = ((reg_value >> I2S_REG0X1_SMPRATIO_H2B_POS) & I2S_REG0X1_SMPRATIO_H2B_MASK);
475     return reg_value;
476 }
477 
i2s_ll_set_reg0x1_smpratio_h2b(uint32_t value)478 static inline void i2s_ll_set_reg0x1_smpratio_h2b(uint32_t value)
479 {
480     uint32_t reg_value;
481     reg_value = REG_READ(I2S_REG0X1_ADDR);
482     reg_value &= ~(I2S_REG0X1_SMPRATIO_H2B_MASK << I2S_REG0X1_SMPRATIO_H2B_POS);
483     reg_value |= ((value & I2S_REG0X1_SMPRATIO_H2B_MASK) << I2S_REG0X1_SMPRATIO_H2B_POS);
484     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
485 }
486 
487 /* REG_0x01:reg0x1->BITRATIO_H4B:0x1[15:12],比特速率指示值的高4bit,0x0,R/W*/
i2s_ll_get_reg0x1_bitratio_h4b(void)488 static inline uint32_t i2s_ll_get_reg0x1_bitratio_h4b(void)
489 {
490     uint32_t reg_value;
491     reg_value = REG_READ(I2S_REG0X1_ADDR);
492     reg_value = ((reg_value >> I2S_REG0X1_BITRATIO_H4B_POS) & I2S_REG0X1_BITRATIO_H4B_MASK);
493     return reg_value;
494 }
495 
i2s_ll_set_reg0x1_bitratio_h4b(uint32_t value)496 static inline void i2s_ll_set_reg0x1_bitratio_h4b(uint32_t value)
497 {
498     uint32_t reg_value;
499     reg_value = REG_READ(I2S_REG0X1_ADDR);
500     reg_value &= ~(I2S_REG0X1_BITRATIO_H4B_MASK << I2S_REG0X1_BITRATIO_H4B_POS);
501     reg_value |= ((value & I2S_REG0X1_BITRATIO_H4B_MASK) << I2S_REG0X1_BITRATIO_H4B_POS);
502     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
503 }
504 
505 /* REG_0x01:reg0x1->LRCOM_STORE:0x1[16],0x1:左右声道数据拼成一个32bit同时写入PCM_DAT中,低16bit对应左声道,高16bit对应右声道。即{R,L}->{R,L}->……; 0x0:左右声道数据按时间顺序交替写入PCM_DAT中,即L->R->L->R->…… ; 【注意】仅当数据长度小于16时才能配置该位为1,0x0,R/W*/
i2s_ll_get_reg0x1_lrcom_store(void)506 static inline uint32_t i2s_ll_get_reg0x1_lrcom_store(void)
507 {
508     uint32_t reg_value;
509     reg_value = REG_READ(I2S_REG0X1_ADDR);
510     reg_value = ((reg_value >> I2S_REG0X1_LRCOM_STORE_POS) & I2S_REG0X1_LRCOM_STORE_MASK);
511     return reg_value;
512 }
513 
i2s_ll_set_reg0x1_lrcom_store(uint32_t value)514 static inline void i2s_ll_set_reg0x1_lrcom_store(uint32_t value)
515 {
516     uint32_t reg_value;
517     reg_value = REG_READ(I2S_REG0X1_ADDR);
518     reg_value &= ~(I2S_REG0X1_LRCOM_STORE_MASK << I2S_REG0X1_LRCOM_STORE_POS);
519     reg_value |= ((value & I2S_REG0X1_LRCOM_STORE_MASK) << I2S_REG0X1_LRCOM_STORE_POS);
520     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
521 }
522 
523 /* REG_0x01:reg0x1->PARALLEL_EN:0x1[17],0x0: N(1~4)通道的数据通过sda_i[0]/sda_o[0]串行输入/输出; 0x1: N(1~4)通道的数据通过N个信号线sda_i[N-1:0]/sda_o[N-1:0]输入/输出,0x0,R/W*/
i2s_ll_get_reg0x1_parallel_en(void)524 static inline uint32_t i2s_ll_get_reg0x1_parallel_en(void)
525 {
526     uint32_t reg_value;
527     reg_value = REG_READ(I2S_REG0X1_ADDR);
528     reg_value = ((reg_value >> I2S_REG0X1_PARALLEL_EN_POS) & I2S_REG0X1_PARALLEL_EN_MASK);
529     return reg_value;
530 }
531 
i2s_ll_set_reg0x1_parallel_en(uint32_t value)532 static inline void i2s_ll_set_reg0x1_parallel_en(uint32_t value)
533 {
534     uint32_t reg_value;
535     reg_value = REG_READ(I2S_REG0X1_ADDR);
536     reg_value &= ~(I2S_REG0X1_PARALLEL_EN_MASK << I2S_REG0X1_PARALLEL_EN_POS);
537     reg_value |= ((value & I2S_REG0X1_PARALLEL_EN_MASK) << I2S_REG0X1_PARALLEL_EN_POS);
538     REG_WRITE(I2S_REG0X1_ADDR,reg_value);
539 }
540 
541 /* REG_0x02 */
542 #define I2S_REG0X2_ADDR  (I2S_LL_REG_BASE  + 0x2*4) //REG ADDR :0x47810008
543 #define I2S_REG0X2_RXINT_POS (0)
544 #define I2S_REG0X2_RXINT_MASK (0x1)
545 
546 #define I2S_REG0X2_TXINT_POS (1)
547 #define I2S_REG0X2_TXINT_MASK (0x1)
548 
549 #define I2S_REG0X2_RXOVF_POS (2)
550 #define I2S_REG0X2_RXOVF_MASK (0x1)
551 
552 #define I2S_REG0X2_TXUDF_POS (3)
553 #define I2S_REG0X2_TXUDF_MASK (0x1)
554 
555 #define I2S_REG0X2_RXFIFO_RD_READY_POS (4)
556 #define I2S_REG0X2_RXFIFO_RD_READY_MASK (0x1)
557 
558 #define I2S_REG0X2_TXFIFO_WR_READY_POS (5)
559 #define I2S_REG0X2_TXFIFO_WR_READY_MASK (0x1)
560 
561 #define I2S_REG0X2_RESERVED_POS (6)
562 #define I2S_REG0X2_RESERVED_MASK (0x3FFFFFF)
563 
i2s_ll_get_reg0x2_value(void)564 static inline uint32_t i2s_ll_get_reg0x2_value(void)
565 {
566     return REG_READ(I2S_REG0X2_ADDR);
567 }
568 
569 /* REG_0x02:reg0x2->RXINT:0x2[0],I2S接收中断标志。软件从接收FIFO中读取足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x2_rxint(void)570 static inline uint32_t i2s_ll_get_reg0x2_rxint(void)
571 {
572     uint32_t reg_value;
573     reg_value = REG_READ(I2S_REG0X2_ADDR);
574     reg_value = ((reg_value >> I2S_REG0X2_RXINT_POS)&I2S_REG0X2_RXINT_MASK);
575     return reg_value;
576 }
577 
578 /* REG_0x02:reg0x2->TXINT:0x2[1],I2S发送中断标志。软件往发送FIFO中写入足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x2_txint(void)579 static inline uint32_t i2s_ll_get_reg0x2_txint(void)
580 {
581     uint32_t reg_value;
582     reg_value = REG_READ(I2S_REG0X2_ADDR);
583     reg_value = ((reg_value >> I2S_REG0X2_TXINT_POS)&I2S_REG0X2_TXINT_MASK);
584     return reg_value;
585 }
586 
587 /* REG_0x02:reg0x2->RXOVF:0x2[2],接收上溢标志。即接收左声道FIFO发生满写错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x2_rxovf(void)588 static inline uint32_t i2s_ll_get_reg0x2_rxovf(void)
589 {
590     uint32_t reg_value;
591     reg_value = REG_READ(I2S_REG0X2_ADDR);
592     reg_value = ((reg_value >> I2S_REG0X2_RXOVF_POS) & I2S_REG0X2_RXOVF_MASK);
593     return reg_value;
594 }
595 
i2s_ll_set_reg0x2_rxovf(uint32_t value)596 static inline void i2s_ll_set_reg0x2_rxovf(uint32_t value)
597 {
598     uint32_t reg_value;
599     reg_value = REG_READ(I2S_REG0X2_ADDR);
600     reg_value &= ~(I2S_REG0X2_RXOVF_MASK << I2S_REG0X2_RXOVF_POS);
601     reg_value |= ((value & I2S_REG0X2_RXOVF_MASK) << I2S_REG0X2_RXOVF_POS);
602     REG_WRITE(I2S_REG0X2_ADDR,reg_value);
603 }
604 
605 /* REG_0x02:reg0x2->TXUDF:0x2[3],发送下溢标志。即发送左声道FIFO发生空读错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x2_txudf(void)606 static inline uint32_t i2s_ll_get_reg0x2_txudf(void)
607 {
608     uint32_t reg_value;
609     reg_value = REG_READ(I2S_REG0X2_ADDR);
610     reg_value = ((reg_value >> I2S_REG0X2_TXUDF_POS) & I2S_REG0X2_TXUDF_MASK);
611     return reg_value;
612 }
613 
i2s_ll_set_reg0x2_txudf(uint32_t value)614 static inline void i2s_ll_set_reg0x2_txudf(uint32_t value)
615 {
616     uint32_t reg_value;
617     reg_value = REG_READ(I2S_REG0X2_ADDR);
618     reg_value &= ~(I2S_REG0X2_TXUDF_MASK << I2S_REG0X2_TXUDF_POS);
619     reg_value |= ((value & I2S_REG0X2_TXUDF_MASK) << I2S_REG0X2_TXUDF_POS);
620     REG_WRITE(I2S_REG0X2_ADDR,reg_value);
621 }
622 
623 /* REG_0x02:reg0x2->RXFIFO_RD_READY:0x2[4],RXFIFO读允许标志信号,0x0,R*/
i2s_ll_get_reg0x2_rxfifo_rd_ready(void)624 static inline uint32_t i2s_ll_get_reg0x2_rxfifo_rd_ready(void)
625 {
626     uint32_t reg_value;
627     reg_value = REG_READ(I2S_REG0X2_ADDR);
628     reg_value = ((reg_value >> I2S_REG0X2_RXFIFO_RD_READY_POS)&I2S_REG0X2_RXFIFO_RD_READY_MASK);
629     return reg_value;
630 }
631 
632 /* REG_0x02:reg0x2->TXFIFO_WR_READY:0x2[5],TXFIFO写允许标志信号,0x0,R*/
i2s_ll_get_reg0x2_txfifo_wr_ready(void)633 static inline uint32_t i2s_ll_get_reg0x2_txfifo_wr_ready(void)
634 {
635     uint32_t reg_value;
636     reg_value = REG_READ(I2S_REG0X2_ADDR);
637     reg_value = ((reg_value >> I2S_REG0X2_TXFIFO_WR_READY_POS)&I2S_REG0X2_TXFIFO_WR_READY_MASK);
638     return reg_value;
639 }
640 
641 /* REG_0x03 */
642 #define I2S_REG0X3_ADDR  (I2S_LL_REG_BASE  + 0x3*4) //REG ADDR :0x4781000c
643 #define I2S_REG0X3_I2S_DAT_POS (0)
644 #define I2S_REG0X3_I2S_DAT_MASK (0xFFFFFFFF)
645 
i2s_ll_get_reg0x3_value(void)646 static inline uint32_t i2s_ll_get_reg0x3_value(void)
647 {
648     return REG_READ(I2S_REG0X3_ADDR);
649 }
650 
i2s_ll_set_reg0x3_value(uint32_t value)651 static inline void i2s_ll_set_reg0x3_value(uint32_t value)
652 {
653     REG_WRITE(I2S_REG0X3_ADDR,value);
654 }
655 
656 /* REG_0x03:reg0x3->I2S_DAT:0x3[31:0],I2S/PCM数据寄存器。(对该寄存器的写操作对应写发送FIFO,读操作对应读接收FIFO); 【注意】当LRCOM_STORE配置为0时,左右声道数据需要交替读写。当LRCOM_STORE配置为1时,低16bit对应左声道,高16bit对应右声道,None,R/W*/
i2s_ll_get_reg0x3_i2s_dat(void)657 static inline uint32_t i2s_ll_get_reg0x3_i2s_dat(void)
658 {
659     return REG_READ(I2S_REG0X3_ADDR);
660 }
661 
i2s_ll_set_reg0x3_i2s_dat(uint32_t value)662 static inline void i2s_ll_set_reg0x3_i2s_dat(uint32_t value)
663 {
664     REG_WRITE(I2S_REG0X3_ADDR,value);
665 }
666 
667 /* REG_0x04 */
668 #define I2S_REG0X4_ADDR  (I2S_LL_REG_BASE  + 0x4*4) //REG ADDR :0x47810010
669 #define I2S_REG0X4_RX2INT_EN_POS (0)
670 #define I2S_REG0X4_RX2INT_EN_MASK (0x1)
671 
672 #define I2S_REG0X4_TX2INT_EN_POS (1)
673 #define I2S_REG0X4_TX2INT_EN_MASK (0x1)
674 
675 #define I2S_REG0X4_RX2OVF_EN_POS (2)
676 #define I2S_REG0X4_RX2OVF_EN_MASK (0x1)
677 
678 #define I2S_REG0X4_TX2UDF_EN_POS (3)
679 #define I2S_REG0X4_TX2UDF_EN_MASK (0x1)
680 
681 #define I2S_REG0X4_RX3INT_EN_POS (4)
682 #define I2S_REG0X4_RX3INT_EN_MASK (0x1)
683 
684 #define I2S_REG0X4_TX3INT_EN_POS (5)
685 #define I2S_REG0X4_TX3INT_EN_MASK (0x1)
686 
687 #define I2S_REG0X4_RX3OVF_EN_POS (6)
688 #define I2S_REG0X4_RX3OVF_EN_MASK (0x1)
689 
690 #define I2S_REG0X4_TX3UDF_EN_POS (7)
691 #define I2S_REG0X4_TX3UDF_EN_MASK (0x1)
692 
693 #define I2S_REG0X4_RX4INT_EN_POS (8)
694 #define I2S_REG0X4_RX4INT_EN_MASK (0x1)
695 
696 #define I2S_REG0X4_TX4INT_EN_POS (9)
697 #define I2S_REG0X4_TX4INT_EN_MASK (0x1)
698 
699 #define I2S_REG0X4_RX4OVF_EN_POS (10)
700 #define I2S_REG0X4_RX4OVF_EN_MASK (0x1)
701 
702 #define I2S_REG0X4_TX4UDF_EN_POS (11)
703 #define I2S_REG0X4_TX4UDF_EN_MASK (0x1)
704 
705 #define I2S_REG0X4_RESERVED_POS (12)
706 #define I2S_REG0X4_RESERVED_MASK (0xFFFFF)
707 
i2s_ll_get_reg0x4_value(void)708 static inline uint32_t i2s_ll_get_reg0x4_value(void)
709 {
710     return REG_READ(I2S_REG0X4_ADDR);
711 }
712 
i2s_ll_set_reg0x4_value(uint32_t value)713 static inline void i2s_ll_set_reg0x4_value(uint32_t value)
714 {
715     REG_WRITE(I2S_REG0X4_ADDR,value);
716 }
717 
718 /* REG_0x04:reg0x4->RX2INT_EN:0x4[0],通道2的接收中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx2int_en(void)719 static inline uint32_t i2s_ll_get_reg0x4_rx2int_en(void)
720 {
721     uint32_t reg_value;
722     reg_value = REG_READ(I2S_REG0X4_ADDR);
723     reg_value = ((reg_value >> I2S_REG0X4_RX2INT_EN_POS) & I2S_REG0X4_RX2INT_EN_MASK);
724     return reg_value;
725 }
726 
i2s_ll_set_reg0x4_rx2int_en(uint32_t value)727 static inline void i2s_ll_set_reg0x4_rx2int_en(uint32_t value)
728 {
729     uint32_t reg_value;
730     reg_value = REG_READ(I2S_REG0X4_ADDR);
731     reg_value &= ~(I2S_REG0X4_RX2INT_EN_MASK << I2S_REG0X4_RX2INT_EN_POS);
732     reg_value |= ((value & I2S_REG0X4_RX2INT_EN_MASK) << I2S_REG0X4_RX2INT_EN_POS);
733     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
734 }
735 
736 /* REG_0x04:reg0x4->TX2INT_EN:0x4[1],通道2的发送中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx2int_en(void)737 static inline uint32_t i2s_ll_get_reg0x4_tx2int_en(void)
738 {
739     uint32_t reg_value;
740     reg_value = REG_READ(I2S_REG0X4_ADDR);
741     reg_value = ((reg_value >> I2S_REG0X4_TX2INT_EN_POS) & I2S_REG0X4_TX2INT_EN_MASK);
742     return reg_value;
743 }
744 
i2s_ll_set_reg0x4_tx2int_en(uint32_t value)745 static inline void i2s_ll_set_reg0x4_tx2int_en(uint32_t value)
746 {
747     uint32_t reg_value;
748     reg_value = REG_READ(I2S_REG0X4_ADDR);
749     reg_value &= ~(I2S_REG0X4_TX2INT_EN_MASK << I2S_REG0X4_TX2INT_EN_POS);
750     reg_value |= ((value & I2S_REG0X4_TX2INT_EN_MASK) << I2S_REG0X4_TX2INT_EN_POS);
751     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
752 }
753 
754 /* REG_0x04:reg0x4->RX2OVF_EN:0x4[2],通道2的接收上溢(RXOVF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx2ovf_en(void)755 static inline uint32_t i2s_ll_get_reg0x4_rx2ovf_en(void)
756 {
757     uint32_t reg_value;
758     reg_value = REG_READ(I2S_REG0X4_ADDR);
759     reg_value = ((reg_value >> I2S_REG0X4_RX2OVF_EN_POS) & I2S_REG0X4_RX2OVF_EN_MASK);
760     return reg_value;
761 }
762 
i2s_ll_set_reg0x4_rx2ovf_en(uint32_t value)763 static inline void i2s_ll_set_reg0x4_rx2ovf_en(uint32_t value)
764 {
765     uint32_t reg_value;
766     reg_value = REG_READ(I2S_REG0X4_ADDR);
767     reg_value &= ~(I2S_REG0X4_RX2OVF_EN_MASK << I2S_REG0X4_RX2OVF_EN_POS);
768     reg_value |= ((value & I2S_REG0X4_RX2OVF_EN_MASK) << I2S_REG0X4_RX2OVF_EN_POS);
769     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
770 }
771 
772 /* REG_0x04:reg0x4->TX2UDF_EN:0x4[3],通道2的发送下溢(TXUDF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx2udf_en(void)773 static inline uint32_t i2s_ll_get_reg0x4_tx2udf_en(void)
774 {
775     uint32_t reg_value;
776     reg_value = REG_READ(I2S_REG0X4_ADDR);
777     reg_value = ((reg_value >> I2S_REG0X4_TX2UDF_EN_POS) & I2S_REG0X4_TX2UDF_EN_MASK);
778     return reg_value;
779 }
780 
i2s_ll_set_reg0x4_tx2udf_en(uint32_t value)781 static inline void i2s_ll_set_reg0x4_tx2udf_en(uint32_t value)
782 {
783     uint32_t reg_value;
784     reg_value = REG_READ(I2S_REG0X4_ADDR);
785     reg_value &= ~(I2S_REG0X4_TX2UDF_EN_MASK << I2S_REG0X4_TX2UDF_EN_POS);
786     reg_value |= ((value & I2S_REG0X4_TX2UDF_EN_MASK) << I2S_REG0X4_TX2UDF_EN_POS);
787     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
788 }
789 
790 /* REG_0x04:reg0x4->RX3INT_EN:0x4[4],通道3的接收中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx3int_en(void)791 static inline uint32_t i2s_ll_get_reg0x4_rx3int_en(void)
792 {
793     uint32_t reg_value;
794     reg_value = REG_READ(I2S_REG0X4_ADDR);
795     reg_value = ((reg_value >> I2S_REG0X4_RX3INT_EN_POS) & I2S_REG0X4_RX3INT_EN_MASK);
796     return reg_value;
797 }
798 
i2s_ll_set_reg0x4_rx3int_en(uint32_t value)799 static inline void i2s_ll_set_reg0x4_rx3int_en(uint32_t value)
800 {
801     uint32_t reg_value;
802     reg_value = REG_READ(I2S_REG0X4_ADDR);
803     reg_value &= ~(I2S_REG0X4_RX3INT_EN_MASK << I2S_REG0X4_RX3INT_EN_POS);
804     reg_value |= ((value & I2S_REG0X4_RX3INT_EN_MASK) << I2S_REG0X4_RX3INT_EN_POS);
805     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
806 }
807 
808 /* REG_0x04:reg0x4->TX3INT_EN:0x4[5],通道3的发送中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx3int_en(void)809 static inline uint32_t i2s_ll_get_reg0x4_tx3int_en(void)
810 {
811     uint32_t reg_value;
812     reg_value = REG_READ(I2S_REG0X4_ADDR);
813     reg_value = ((reg_value >> I2S_REG0X4_TX3INT_EN_POS) & I2S_REG0X4_TX3INT_EN_MASK);
814     return reg_value;
815 }
816 
i2s_ll_set_reg0x4_tx3int_en(uint32_t value)817 static inline void i2s_ll_set_reg0x4_tx3int_en(uint32_t value)
818 {
819     uint32_t reg_value;
820     reg_value = REG_READ(I2S_REG0X4_ADDR);
821     reg_value &= ~(I2S_REG0X4_TX3INT_EN_MASK << I2S_REG0X4_TX3INT_EN_POS);
822     reg_value |= ((value & I2S_REG0X4_TX3INT_EN_MASK) << I2S_REG0X4_TX3INT_EN_POS);
823     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
824 }
825 
826 /* REG_0x04:reg0x4->RX3OVF_EN:0x4[6],通道3的接收上溢(RXOVF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx3ovf_en(void)827 static inline uint32_t i2s_ll_get_reg0x4_rx3ovf_en(void)
828 {
829     uint32_t reg_value;
830     reg_value = REG_READ(I2S_REG0X4_ADDR);
831     reg_value = ((reg_value >> I2S_REG0X4_RX3OVF_EN_POS) & I2S_REG0X4_RX3OVF_EN_MASK);
832     return reg_value;
833 }
834 
i2s_ll_set_reg0x4_rx3ovf_en(uint32_t value)835 static inline void i2s_ll_set_reg0x4_rx3ovf_en(uint32_t value)
836 {
837     uint32_t reg_value;
838     reg_value = REG_READ(I2S_REG0X4_ADDR);
839     reg_value &= ~(I2S_REG0X4_RX3OVF_EN_MASK << I2S_REG0X4_RX3OVF_EN_POS);
840     reg_value |= ((value & I2S_REG0X4_RX3OVF_EN_MASK) << I2S_REG0X4_RX3OVF_EN_POS);
841     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
842 }
843 
844 /* REG_0x04:reg0x4->TX3UDF_EN:0x4[7],通道3的发送下溢(TXUDF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx3udf_en(void)845 static inline uint32_t i2s_ll_get_reg0x4_tx3udf_en(void)
846 {
847     uint32_t reg_value;
848     reg_value = REG_READ(I2S_REG0X4_ADDR);
849     reg_value = ((reg_value >> I2S_REG0X4_TX3UDF_EN_POS) & I2S_REG0X4_TX3UDF_EN_MASK);
850     return reg_value;
851 }
852 
i2s_ll_set_reg0x4_tx3udf_en(uint32_t value)853 static inline void i2s_ll_set_reg0x4_tx3udf_en(uint32_t value)
854 {
855     uint32_t reg_value;
856     reg_value = REG_READ(I2S_REG0X4_ADDR);
857     reg_value &= ~(I2S_REG0X4_TX3UDF_EN_MASK << I2S_REG0X4_TX3UDF_EN_POS);
858     reg_value |= ((value & I2S_REG0X4_TX3UDF_EN_MASK) << I2S_REG0X4_TX3UDF_EN_POS);
859     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
860 }
861 
862 /* REG_0x04:reg0x4->RX4INT_EN:0x4[8],通道4的接收中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx4int_en(void)863 static inline uint32_t i2s_ll_get_reg0x4_rx4int_en(void)
864 {
865     uint32_t reg_value;
866     reg_value = REG_READ(I2S_REG0X4_ADDR);
867     reg_value = ((reg_value >> I2S_REG0X4_RX4INT_EN_POS) & I2S_REG0X4_RX4INT_EN_MASK);
868     return reg_value;
869 }
870 
i2s_ll_set_reg0x4_rx4int_en(uint32_t value)871 static inline void i2s_ll_set_reg0x4_rx4int_en(uint32_t value)
872 {
873     uint32_t reg_value;
874     reg_value = REG_READ(I2S_REG0X4_ADDR);
875     reg_value &= ~(I2S_REG0X4_RX4INT_EN_MASK << I2S_REG0X4_RX4INT_EN_POS);
876     reg_value |= ((value & I2S_REG0X4_RX4INT_EN_MASK) << I2S_REG0X4_RX4INT_EN_POS);
877     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
878 }
879 
880 /* REG_0x04:reg0x4->TX4INT_EN:0x4[9],通道4的发送中断使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx4int_en(void)881 static inline uint32_t i2s_ll_get_reg0x4_tx4int_en(void)
882 {
883     uint32_t reg_value;
884     reg_value = REG_READ(I2S_REG0X4_ADDR);
885     reg_value = ((reg_value >> I2S_REG0X4_TX4INT_EN_POS) & I2S_REG0X4_TX4INT_EN_MASK);
886     return reg_value;
887 }
888 
i2s_ll_set_reg0x4_tx4int_en(uint32_t value)889 static inline void i2s_ll_set_reg0x4_tx4int_en(uint32_t value)
890 {
891     uint32_t reg_value;
892     reg_value = REG_READ(I2S_REG0X4_ADDR);
893     reg_value &= ~(I2S_REG0X4_TX4INT_EN_MASK << I2S_REG0X4_TX4INT_EN_POS);
894     reg_value |= ((value & I2S_REG0X4_TX4INT_EN_MASK) << I2S_REG0X4_TX4INT_EN_POS);
895     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
896 }
897 
898 /* REG_0x04:reg0x4->RX4OVF_EN:0x4[10],通道4的接收上溢(RXOVF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_rx4ovf_en(void)899 static inline uint32_t i2s_ll_get_reg0x4_rx4ovf_en(void)
900 {
901     uint32_t reg_value;
902     reg_value = REG_READ(I2S_REG0X4_ADDR);
903     reg_value = ((reg_value >> I2S_REG0X4_RX4OVF_EN_POS) & I2S_REG0X4_RX4OVF_EN_MASK);
904     return reg_value;
905 }
906 
i2s_ll_set_reg0x4_rx4ovf_en(uint32_t value)907 static inline void i2s_ll_set_reg0x4_rx4ovf_en(uint32_t value)
908 {
909     uint32_t reg_value;
910     reg_value = REG_READ(I2S_REG0X4_ADDR);
911     reg_value &= ~(I2S_REG0X4_RX4OVF_EN_MASK << I2S_REG0X4_RX4OVF_EN_POS);
912     reg_value |= ((value & I2S_REG0X4_RX4OVF_EN_MASK) << I2S_REG0X4_RX4OVF_EN_POS);
913     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
914 }
915 
916 /* REG_0x04:reg0x4->TX4UDF_EN:0x4[11],通道4的发送下溢(TXUDF)中断告警使能,0x0,R/W*/
i2s_ll_get_reg0x4_tx4udf_en(void)917 static inline uint32_t i2s_ll_get_reg0x4_tx4udf_en(void)
918 {
919     uint32_t reg_value;
920     reg_value = REG_READ(I2S_REG0X4_ADDR);
921     reg_value = ((reg_value >> I2S_REG0X4_TX4UDF_EN_POS) & I2S_REG0X4_TX4UDF_EN_MASK);
922     return reg_value;
923 }
924 
i2s_ll_set_reg0x4_tx4udf_en(uint32_t value)925 static inline void i2s_ll_set_reg0x4_tx4udf_en(uint32_t value)
926 {
927     uint32_t reg_value;
928     reg_value = REG_READ(I2S_REG0X4_ADDR);
929     reg_value &= ~(I2S_REG0X4_TX4UDF_EN_MASK << I2S_REG0X4_TX4UDF_EN_POS);
930     reg_value |= ((value & I2S_REG0X4_TX4UDF_EN_MASK) << I2S_REG0X4_TX4UDF_EN_POS);
931     REG_WRITE(I2S_REG0X4_ADDR,reg_value);
932 }
933 
934 /* REG_0x05 */
935 #define I2S_REG0X5_ADDR  (I2S_LL_REG_BASE  + 0x5*4) //REG ADDR :0x47810014
936 #define I2S_REG0X5_RX2INT_POS (0)
937 #define I2S_REG0X5_RX2INT_MASK (0x1)
938 
939 #define I2S_REG0X5_TX2INT_POS (1)
940 #define I2S_REG0X5_TX2INT_MASK (0x1)
941 
942 #define I2S_REG0X5_RX2OVF_POS (2)
943 #define I2S_REG0X5_RX2OVF_MASK (0x1)
944 
945 #define I2S_REG0X5_TX2UDF_POS (3)
946 #define I2S_REG0X5_TX2UDF_MASK (0x1)
947 
948 #define I2S_REG0X5_RX3INT_POS (4)
949 #define I2S_REG0X5_RX3INT_MASK (0x1)
950 
951 #define I2S_REG0X5_TX3INT_POS (5)
952 #define I2S_REG0X5_TX3INT_MASK (0x1)
953 
954 #define I2S_REG0X5_RX3OVF_POS (6)
955 #define I2S_REG0X5_RX3OVF_MASK (0x1)
956 
957 #define I2S_REG0X5_TX3UDF_POS (3)
958 #define I2S_REG0X5_TX3UDF_MASK (0x1)
959 
960 #define I2S_REG0X5_RX4INT_POS (8)
961 #define I2S_REG0X5_RX4INT_MASK (0x1)
962 
963 #define I2S_REG0X5_TX4INT_POS (9)
964 #define I2S_REG0X5_TX4INT_MASK (0x1)
965 
966 #define I2S_REG0X5_RX4OVF_POS (10)
967 #define I2S_REG0X5_RX4OVF_MASK (0x1)
968 
969 #define I2S_REG0X5_TX4UDF_POS (11)
970 #define I2S_REG0X5_TX4UDF_MASK (0x1)
971 
972 #define I2S_REG0X5_RESERVED_POS (6)
973 #define I2S_REG0X5_RESERVED_MASK (0x3FFFFFF)
974 
i2s_ll_get_reg0x5_value(void)975 static inline uint32_t i2s_ll_get_reg0x5_value(void)
976 {
977     return REG_READ(I2S_REG0X5_ADDR);
978 }
979 
980 /* REG_0x05:reg0x5->RX2INT:0x5[0],通道2的I2S接收中断标志。软件从接收FIFO中读取足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_rx2int(void)981 static inline uint32_t i2s_ll_get_reg0x5_rx2int(void)
982 {
983     uint32_t reg_value;
984     reg_value = REG_READ(I2S_REG0X5_ADDR);
985     reg_value = ((reg_value >> I2S_REG0X5_RX2INT_POS)&I2S_REG0X5_RX2INT_MASK);
986     return reg_value;
987 }
988 
989 /* REG_0x05:reg0x5->TX2INT:0x5[1],通道2的I2S发送中断标志。软件往发送FIFO中写入足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_tx2int(void)990 static inline uint32_t i2s_ll_get_reg0x5_tx2int(void)
991 {
992     uint32_t reg_value;
993     reg_value = REG_READ(I2S_REG0X5_ADDR);
994     reg_value = ((reg_value >> I2S_REG0X5_TX2INT_POS)&I2S_REG0X5_TX2INT_MASK);
995     return reg_value;
996 }
997 
998 /* REG_0x05:reg0x5->RX2OVF:0x5[2],通道2的接收上溢标志。即接收左声道FIFO发生满写错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_rx2ovf(void)999 static inline uint32_t i2s_ll_get_reg0x5_rx2ovf(void)
1000 {
1001     uint32_t reg_value;
1002     reg_value = REG_READ(I2S_REG0X5_ADDR);
1003     reg_value = ((reg_value >> I2S_REG0X5_RX2OVF_POS) & I2S_REG0X5_RX2OVF_MASK);
1004     return reg_value;
1005 }
1006 
i2s_ll_set_reg0x5_rx2ovf(uint32_t value)1007 static inline void i2s_ll_set_reg0x5_rx2ovf(uint32_t value)
1008 {
1009     uint32_t reg_value;
1010     reg_value = REG_READ(I2S_REG0X5_ADDR);
1011     reg_value &= ~(I2S_REG0X5_RX2OVF_MASK << I2S_REG0X5_RX2OVF_POS);
1012     reg_value |= ((value & I2S_REG0X5_RX2OVF_MASK) << I2S_REG0X5_RX2OVF_POS);
1013     REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1014 }
1015 
1016 /* REG_0x05:reg0x5->TX2UDF:0x5[3],通道2的发送下溢标志。即发送左声道FIFO发生空读错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_tx2udf(void)1017 static inline uint32_t i2s_ll_get_reg0x5_tx2udf(void)
1018 {
1019     uint32_t reg_value;
1020     reg_value = REG_READ(I2S_REG0X5_ADDR);
1021     reg_value = ((reg_value >> I2S_REG0X5_TX2UDF_POS) & I2S_REG0X5_TX2UDF_MASK);
1022     return reg_value;
1023 }
1024 
i2s_ll_set_reg0x5_tx2udf(uint32_t value)1025 static inline void i2s_ll_set_reg0x5_tx2udf(uint32_t value)
1026 {
1027     uint32_t reg_value;
1028     reg_value = REG_READ(I2S_REG0X5_ADDR);
1029     reg_value &= ~(I2S_REG0X5_TX2UDF_MASK << I2S_REG0X5_TX2UDF_POS);
1030     reg_value |= ((value & I2S_REG0X5_TX2UDF_MASK) << I2S_REG0X5_TX2UDF_POS);
1031     REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1032 }
1033 
1034 /* REG_0x05:reg0x5->RX3INT:0x5[4],通道3的I2S接收中断标志。软件从接收FIFO中读取足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_rx3int(void)1035 static inline uint32_t i2s_ll_get_reg0x5_rx3int(void)
1036 {
1037     uint32_t reg_value;
1038     reg_value = REG_READ(I2S_REG0X5_ADDR);
1039     reg_value = ((reg_value >> I2S_REG0X5_RX3INT_POS)&I2S_REG0X5_RX3INT_MASK);
1040     return reg_value;
1041 }
1042 
1043 /* REG_0x05:reg0x5->TX3INT:0x5[5],通道3的I2S发送中断标志。软件往发送FIFO中写入足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_tx3int(void)1044 static inline uint32_t i2s_ll_get_reg0x5_tx3int(void)
1045 {
1046     uint32_t reg_value;
1047     reg_value = REG_READ(I2S_REG0X5_ADDR);
1048     reg_value = ((reg_value >> I2S_REG0X5_TX3INT_POS)&I2S_REG0X5_TX3INT_MASK);
1049     return reg_value;
1050 }
1051 
1052 /* REG_0x05:reg0x5->RX3OVF:0x5[6],通道3的接收上溢标志。即接收左声道FIFO发生满写错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_rx3ovf(void)1053 static inline uint32_t i2s_ll_get_reg0x5_rx3ovf(void)
1054 {
1055     uint32_t reg_value;
1056     reg_value = REG_READ(I2S_REG0X5_ADDR);
1057     reg_value = ((reg_value >> I2S_REG0X5_RX3OVF_POS) & I2S_REG0X5_RX3OVF_MASK);
1058     return reg_value;
1059 }
1060 
i2s_ll_set_reg0x5_rx3ovf(uint32_t value)1061 static inline void i2s_ll_set_reg0x5_rx3ovf(uint32_t value)
1062 {
1063     uint32_t reg_value;
1064     reg_value = REG_READ(I2S_REG0X5_ADDR);
1065     reg_value &= ~(I2S_REG0X5_RX3OVF_MASK << I2S_REG0X5_RX3OVF_POS);
1066     reg_value |= ((value & I2S_REG0X5_RX3OVF_MASK) << I2S_REG0X5_RX3OVF_POS);
1067     REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1068 }
1069 
1070 /* REG_0x05:reg0x5->TX3UDF:0x5[3],通道3的发送下溢标志。即发送左声道FIFO发生空读错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_tx3udf(void)1071 static inline uint32_t i2s_ll_get_reg0x5_tx3udf(void)
1072 {
1073     uint32_t reg_value;
1074     reg_value = REG_READ(I2S_REG0X5_ADDR);
1075     reg_value = ((reg_value >> I2S_REG0X5_TX3UDF_POS) & I2S_REG0X5_TX3UDF_MASK);
1076     return reg_value;
1077 }
1078 
i2s_ll_set_reg0x5_tx3udf(uint32_t value)1079 static inline void i2s_ll_set_reg0x5_tx3udf(uint32_t value)
1080 {
1081     uint32_t reg_value;
1082     reg_value = REG_READ(I2S_REG0X5_ADDR);
1083     reg_value &= ~(I2S_REG0X5_TX3UDF_MASK << I2S_REG0X5_TX3UDF_POS);
1084     reg_value |= ((value & I2S_REG0X5_TX3UDF_MASK) << I2S_REG0X5_TX3UDF_POS);
1085     REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1086 }
1087 
1088 /* REG_0x05:reg0x5->RX4INT:0x5[8],通道4的I2S接收中断标志。软件从接收FIFO中读取足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_rx4int(void)1089 static inline uint32_t i2s_ll_get_reg0x5_rx4int(void)
1090 {
1091     uint32_t reg_value;
1092     reg_value = REG_READ(I2S_REG0X5_ADDR);
1093     reg_value = ((reg_value >> I2S_REG0X5_RX4INT_POS)&I2S_REG0X5_RX4INT_MASK);
1094     return reg_value;
1095 }
1096 
1097 /* REG_0x05:reg0x5->TX4INT:0x5[9],通道4的I2S发送中断标志。软件往发送FIFO中写入足够数据后该中断会自动清除,0x0,R*/
i2s_ll_get_reg0x5_tx4int(void)1098 static inline uint32_t i2s_ll_get_reg0x5_tx4int(void)
1099 {
1100     uint32_t reg_value;
1101     reg_value = REG_READ(I2S_REG0X5_ADDR);
1102     reg_value = ((reg_value >> I2S_REG0X5_TX4INT_POS)&I2S_REG0X5_TX4INT_MASK);
1103     return reg_value;
1104 }
1105 
1106 /* REG_0x05:reg0x5->RX4OVF:0x5[10],通道4的接收上溢标志。即接收左声道FIFO发生满写错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_rx4ovf(void)1107 static inline uint32_t i2s_ll_get_reg0x5_rx4ovf(void)
1108 {
1109     uint32_t reg_value;
1110     reg_value = REG_READ(I2S_REG0X5_ADDR);
1111     reg_value = ((reg_value >> I2S_REG0X5_RX4OVF_POS) & I2S_REG0X5_RX4OVF_MASK);
1112     return reg_value;
1113 }
1114 
i2s_ll_set_reg0x5_rx4ovf(uint32_t value)1115 static inline void i2s_ll_set_reg0x5_rx4ovf(uint32_t value)
1116 {
1117     uint32_t reg_value;
1118     reg_value = REG_READ(I2S_REG0X5_ADDR);
1119     reg_value &= ~(I2S_REG0X5_RX4OVF_MASK << I2S_REG0X5_RX4OVF_POS);
1120     reg_value |= ((value & I2S_REG0X5_RX4OVF_MASK) << I2S_REG0X5_RX4OVF_POS);
1121     REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1122 }
1123 
1124 /* REG_0x05:reg0x5->TX4UDF:0x5[11],通道4的发送下溢标志。即发送左声道FIFO发生空读错误,会产生一个I2S中断,该位不能被硬件自动清0,必须由软件写1清0。.,0x0,R/W*/
i2s_ll_get_reg0x5_tx4udf(void)1125 static inline uint32_t i2s_ll_get_reg0x5_tx4udf(void)
1126 {
1127     uint32_t reg_value;
1128     reg_value = REG_READ(I2S_REG0X5_ADDR);
1129     reg_value = ((reg_value >> I2S_REG0X5_TX4UDF_POS) & I2S_REG0X5_TX4UDF_MASK);
1130     return reg_value;
1131 }
1132 
i2s_ll_set_reg0x5_tx4udf(uint32_t value)1133 static inline void i2s_ll_set_reg0x5_tx4udf(uint32_t value)
1134 {
1135     uint32_t reg_value;
1136     reg_value = REG_READ(I2S_REG0X5_ADDR);
1137     reg_value &= ~(I2S_REG0X5_TX4UDF_MASK << I2S_REG0X5_TX4UDF_POS);
1138     reg_value |= ((value & I2S_REG0X5_TX4UDF_MASK) << I2S_REG0X5_TX4UDF_POS);
1139     REG_WRITE(I2S_REG0X5_ADDR,reg_value);
1140 }
1141 
1142 /* REG_0x06 */
1143 #define I2S_REG0X6_ADDR  (I2S_LL_REG_BASE  + 0x6*4) //REG ADDR :0x47810018
1144 #define I2S_REG0X6_I2S_DAT2_POS (0)
1145 #define I2S_REG0X6_I2S_DAT2_MASK (0xFFFFFFFF)
1146 
1147 /*write only reg:reg0x6:default value:0x0*/
i2s_ll_set_reg0x6_value(uint32_t value)1148 static inline void i2s_ll_set_reg0x6_value(uint32_t value)
1149 {
1150     REG_WRITE(I2S_REG0X6_ADDR,value);
1151 }
1152 
1153 /* REG_0x07 */
1154 #define I2S_REG0X7_ADDR  (I2S_LL_REG_BASE  + 0x7*4) //REG ADDR :0x4781001c
1155 #define I2S_REG0X7_I2S_DAT3_POS (0)
1156 #define I2S_REG0X7_I2S_DAT3_MASK (0xFFFFFFFF)
1157 
1158 /*write only reg:reg0x7:default value:0x0*/
i2s_ll_set_reg0x7_value(uint32_t value)1159 static inline void i2s_ll_set_reg0x7_value(uint32_t value)
1160 {
1161     REG_WRITE(I2S_REG0X7_ADDR,value);
1162 }
1163 
1164 /* REG_0x08 */
1165 #define I2S_REG0X8_ADDR  (I2S_LL_REG_BASE  + 0x8*4) //REG ADDR :0x47810020
1166 #define I2S_REG0X8_I2S_DAT4_POS (0)
1167 #define I2S_REG0X8_I2S_DAT4_MASK (0xFFFFFFFF)
1168 
1169 /*write only reg:reg0x8:default value:0x0*/
i2s_ll_set_reg0x8_value(uint32_t value)1170 static inline void i2s_ll_set_reg0x8_value(uint32_t value)
1171 {
1172     REG_WRITE(I2S_REG0X8_ADDR,value);
1173 }
1174 
1175 #ifdef __cplusplus
1176 }
1177 #endif
1178