ASoC: sti: Add uniperipheral header file
[deliverable/linux.git] / sound / soc / sti / uniperif.h
CommitLineData
e1ecace6
AP
1/*
2 * Copyright (C) STMicroelectronics SA 2015
3 * Authors: Arnaud Pouliquen <arnaud.pouliquen@st.com>
4 * for STMicroelectronics.
5 * License terms: GNU General Public License (GPL), version 2
6 */
7
8#ifndef __SND_ST_AUD_UNIPERIF_H
9#define __SND_ST_AUD_UNIPERIF_H
10
11#include <linux/regmap.h>
12
13/*
14 * Register access macros
15 */
16
17#define GET_UNIPERIF_REG(ip, offset, shift, mask) \
18 ((readl_relaxed(ip->base + offset) >> shift) & mask)
19#define SET_UNIPERIF_REG(ip, offset, shift, mask, value) \
20 writel_relaxed(((readl_relaxed(ip->base + offset) & \
21 ~(mask << shift)) | (((value) & mask) << shift)), ip->base + offset)
22#define SET_UNIPERIF_BIT_REG(ip, offset, shift, mask, value) \
23 writel_relaxed((((value) & mask) << shift), ip->base + offset)
24
25/*
26 * AUD_UNIPERIF_SOFT_RST reg
27 */
28
29#define UNIPERIF_SOFT_RST_OFFSET(ip) 0x0000
30#define GET_UNIPERIF_SOFT_RST(ip) \
31 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
32 readl_relaxed(ip->base + UNIPERIF_SOFT_RST_OFFSET(ip)) : 0)
33#define SET_UNIPERIF_SOFT_RST(ip, value) \
34 writel_relaxed(value, ip->base + UNIPERIF_SOFT_RST_OFFSET(ip))
35
36/* SOFT_RST */
37#define UNIPERIF_SOFT_RST_SOFT_RST_SHIFT(ip) 0x0
38#define UNIPERIF_SOFT_RST_SOFT_RST_MASK(ip) 0x1
39#define SET_UNIPERIF_SOFT_RST_SOFT_RST(ip) \
40 SET_UNIPERIF_BIT_REG(ip, \
41 UNIPERIF_SOFT_RST_OFFSET(ip), \
42 UNIPERIF_SOFT_RST_SOFT_RST_SHIFT(ip), \
43 UNIPERIF_SOFT_RST_SOFT_RST_MASK(ip), 1)
44#define GET_UNIPERIF_SOFT_RST_SOFT_RST(ip) \
45 GET_UNIPERIF_REG(ip, \
46 UNIPERIF_SOFT_RST_OFFSET(ip), \
47 UNIPERIF_SOFT_RST_SOFT_RST_SHIFT(ip), \
48 UNIPERIF_SOFT_RST_SOFT_RST_MASK(ip))
49
50/*
51 * AUD_UNIPERIF_FIFO_DATA reg
52 */
53
54#define UNIPERIF_FIFO_DATA_OFFSET(ip) 0x0004
55#define SET_UNIPERIF_DATA(ip, value) \
56 writel_relaxed(value, ip->base + UNIPERIF_FIFO_DATA_OFFSET(ip))
57
58/*
59 * AUD_UNIPERIF_CHANNEL_STA_REGN reg
60 */
61
62#define UNIPERIF_CHANNEL_STA_REGN(ip, n) (0x0060 + (4 * n))
63#define GET_UNIPERIF_CHANNEL_STA_REGN(ip) \
64 readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REGN(ip, n))
65#define SET_UNIPERIF_CHANNEL_STA_REGN(ip, n, value) \
66 writel_relaxed(value, ip->base + \
67 UNIPERIF_CHANNEL_STA_REGN(ip, n))
68
69#define UNIPERIF_CHANNEL_STA_REG0_OFFSET(ip) 0x0060
70#define GET_UNIPERIF_CHANNEL_STA_REG0(ip) \
71 readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG0_OFFSET(ip))
72#define SET_UNIPERIF_CHANNEL_STA_REG0(ip, value) \
73 writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG0_OFFSET(ip))
74
75#define UNIPERIF_CHANNEL_STA_REG1_OFFSET(ip) 0x0064
76#define GET_UNIPERIF_CHANNEL_STA_REG1(ip) \
77 readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG1_OFFSET(ip))
78#define SET_UNIPERIF_CHANNEL_STA_REG1(ip, value) \
79 writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG1_OFFSET(ip))
80
81#define UNIPERIF_CHANNEL_STA_REG2_OFFSET(ip) 0x0068
82#define GET_UNIPERIF_CHANNEL_STA_REG2(ip) \
83 readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG2_OFFSET(ip))
84#define SET_UNIPERIF_CHANNEL_STA_REG2(ip, value) \
85 writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG2_OFFSET(ip))
86
87#define UNIPERIF_CHANNEL_STA_REG3_OFFSET(ip) 0x006C
88#define GET_UNIPERIF_CHANNEL_STA_REG3(ip) \
89 readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG3_OFFSET(ip))
90#define SET_UNIPERIF_CHANNEL_STA_REG3(ip, value) \
91 writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG3_OFFSET(ip))
92
93#define UNIPERIF_CHANNEL_STA_REG4_OFFSET(ip) 0x0070
94#define GET_UNIPERIF_CHANNEL_STA_REG4(ip) \
95 readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG4_OFFSET(ip))
96#define SET_UNIPERIF_CHANNEL_STA_REG4(ip, value) \
97 writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG4_OFFSET(ip))
98
99#define UNIPERIF_CHANNEL_STA_REG5_OFFSET(ip) 0x0074
100#define GET_UNIPERIF_CHANNEL_STA_REG5(ip) \
101 readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REG5_OFFSET(ip))
102#define SET_UNIPERIF_CHANNEL_STA_REG5(ip, value) \
103 writel_relaxed(value, ip->base + UNIPERIF_CHANNEL_STA_REG5_OFFSET(ip))
104
105/*
106 * AUD_UNIPERIF_ITS reg
107 */
108
109#define UNIPERIF_ITS_OFFSET(ip) 0x000C
110#define GET_UNIPERIF_ITS(ip) \
111 readl_relaxed(ip->base + UNIPERIF_ITS_OFFSET(ip))
112
113/* MEM_BLK_READ */
114#define UNIPERIF_ITS_MEM_BLK_READ_SHIFT(ip) 5
115#define UNIPERIF_ITS_MEM_BLK_READ_MASK(ip) \
116 (BIT(UNIPERIF_ITS_MEM_BLK_READ_SHIFT(ip)))
117
118/* FIFO_ERROR */
119#define UNIPERIF_ITS_FIFO_ERROR_SHIFT(ip) \
120 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 8)
121#define UNIPERIF_ITS_FIFO_ERROR_MASK(ip) \
122 (BIT(UNIPERIF_ITS_FIFO_ERROR_SHIFT(ip)))
123
124/* DMA_ERROR */
125#define UNIPERIF_ITS_DMA_ERROR_SHIFT(ip) 9
126#define UNIPERIF_ITS_DMA_ERROR_MASK(ip) \
127 (BIT(UNIPERIF_ITS_DMA_ERROR_SHIFT(ip)))
128
129/* UNDERFLOW_REC_DONE */
130#define UNIPERIF_ITS_UNDERFLOW_REC_DONE_SHIFT(ip) \
131 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 12)
132#define UNIPERIF_ITS_UNDERFLOW_REC_DONE_MASK(ip) \
133 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
134 0 : (BIT(UNIPERIF_ITS_UNDERFLOW_REC_DONE_SHIFT(ip))))
135
136/* UNDERFLOW_REC_FAILED */
137#define UNIPERIF_ITS_UNDERFLOW_REC_FAILED_SHIFT(ip) \
138 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 13)
139#define UNIPERIF_ITS_UNDERFLOW_REC_FAILED_MASK(ip) \
140 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
141 0 : (BIT(UNIPERIF_ITS_UNDERFLOW_REC_FAILED_SHIFT(ip))))
142
143/*
144 * AUD_UNIPERIF_ITS_BCLR reg
145 */
146
147/* FIFO_ERROR */
148#define UNIPERIF_ITS_BCLR_FIFO_ERROR_SHIFT(ip) \
149 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 8)
150#define UNIPERIF_ITS_BCLR_FIFO_ERROR_MASK(ip) \
151 (BIT(UNIPERIF_ITS_BCLR_FIFO_ERROR_SHIFT(ip)))
152#define SET_UNIPERIF_ITS_BCLR_FIFO_ERROR(ip) \
153 SET_UNIPERIF_ITS_BCLR(ip, \
154 UNIPERIF_ITS_BCLR_FIFO_ERROR_MASK(ip))
155
156#define UNIPERIF_ITS_BCLR_OFFSET(ip) 0x0010
157#define SET_UNIPERIF_ITS_BCLR(ip, value) \
158 writel_relaxed(value, ip->base + UNIPERIF_ITS_BCLR_OFFSET(ip))
159
160/*
161 * AUD_UNIPERIF_ITM reg
162 */
163
164#define UNIPERIF_ITM_OFFSET(ip) 0x0018
165#define GET_UNIPERIF_ITM(ip) \
166 readl_relaxed(ip->base + UNIPERIF_ITM_OFFSET(ip))
167
168/* FIFO_ERROR */
169#define UNIPERIF_ITM_FIFO_ERROR_SHIFT(ip) \
170 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 8)
171#define UNIPERIF_ITM_FIFO_ERROR_MASK(ip) \
172 (BIT(UNIPERIF_ITM_FIFO_ERROR_SHIFT(ip)))
173
174/* UNDERFLOW_REC_DONE */
175#define UNIPERIF_ITM_UNDERFLOW_REC_DONE_SHIFT(ip) \
176 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 12)
177#define UNIPERIF_ITM_UNDERFLOW_REC_DONE_MASK(ip) \
178 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
179 0 : (BIT(UNIPERIF_ITM_UNDERFLOW_REC_DONE_SHIFT(ip))))
180
181/* UNDERFLOW_REC_FAILED */
182#define UNIPERIF_ITM_UNDERFLOW_REC_FAILED_SHIFT(ip) \
183 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 13)
184#define UNIPERIF_ITM_UNDERFLOW_REC_FAILED_MASK(ip) \
185 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
186 0 : (BIT(UNIPERIF_ITM_UNDERFLOW_REC_FAILED_SHIFT(ip))))
187
188/*
189 * AUD_UNIPERIF_ITM_BCLR reg
190 */
191
192#define UNIPERIF_ITM_BCLR_OFFSET(ip) 0x001c
193#define SET_UNIPERIF_ITM_BCLR(ip, value) \
194 writel_relaxed(value, ip->base + UNIPERIF_ITM_BCLR_OFFSET(ip))
195
196/* FIFO_ERROR */
197#define UNIPERIF_ITM_BCLR_FIFO_ERROR_SHIFT(ip) \
198 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 8)
199#define UNIPERIF_ITM_BCLR_FIFO_ERROR_MASK(ip) \
200 (BIT(UNIPERIF_ITM_BCLR_FIFO_ERROR_SHIFT(ip)))
201#define SET_UNIPERIF_ITM_BCLR_FIFO_ERROR(ip) \
202 SET_UNIPERIF_ITM_BCLR(ip, \
203 UNIPERIF_ITM_BCLR_FIFO_ERROR_MASK(ip))
204
205/* DMA_ERROR */
206#define UNIPERIF_ITM_BCLR_DMA_ERROR_SHIFT(ip) 9
207#define UNIPERIF_ITM_BCLR_DMA_ERROR_MASK(ip) \
208 (BIT(UNIPERIF_ITM_BCLR_DMA_ERROR_SHIFT(ip)))
209#define SET_UNIPERIF_ITM_BCLR_DMA_ERROR(ip) \
210 SET_UNIPERIF_ITM_BCLR(ip, \
211 UNIPERIF_ITM_BCLR_DMA_ERROR_MASK(ip))
212
213/*
214 * AUD_UNIPERIF_ITM_BSET reg
215 */
216
217#define UNIPERIF_ITM_BSET_OFFSET(ip) 0x0020
218#define SET_UNIPERIF_ITM_BSET(ip, value) \
219 writel_relaxed(value, ip->base + UNIPERIF_ITM_BSET_OFFSET(ip))
220
221/* FIFO_ERROR */
222#define UNIPERIF_ITM_BSET_FIFO_ERROR_SHIFT(ip) \
223 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 8)
224#define UNIPERIF_ITM_BSET_FIFO_ERROR_MASK(ip) \
225 (BIT(UNIPERIF_ITM_BSET_FIFO_ERROR_SHIFT(ip)))
226#define SET_UNIPERIF_ITM_BSET_FIFO_ERROR(ip) \
227 SET_UNIPERIF_ITM_BSET(ip, \
228 UNIPERIF_ITM_BSET_FIFO_ERROR_MASK(ip))
229
230/* MEM_BLK_READ */
231#define UNIPERIF_ITM_BSET_MEM_BLK_READ_SHIFT(ip) 5
232#define UNIPERIF_ITM_BSET_MEM_BLK_READ_MASK(ip) \
233 (BIT(UNIPERIF_ITM_BSET_MEM_BLK_READ_SHIFT(ip)))
234#define SET_UNIPERIF_ITM_BSET_MEM_BLK_READ(ip) \
235 SET_UNIPERIF_ITM_BSET(ip, \
236 UNIPERIF_ITM_BSET_MEM_BLK_READ_MASK(ip))
237
238/* DMA_ERROR */
239#define UNIPERIF_ITM_BSET_DMA_ERROR_SHIFT(ip) 9
240#define UNIPERIF_ITM_BSET_DMA_ERROR_MASK(ip) \
241 (BIT(UNIPERIF_ITM_BSET_DMA_ERROR_SHIFT(ip)))
242#define SET_UNIPERIF_ITM_BSET_DMA_ERROR(ip) \
243 SET_UNIPERIF_ITM_BSET(ip, \
244 UNIPERIF_ITM_BSET_DMA_ERROR_MASK(ip))
245
246/* UNDERFLOW_REC_DONE */
247#define UNIPERIF_ITM_BSET_UNDERFLOW_REC_DONE_SHIFT(ip) \
248 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 12)
249#define UNIPERIF_ITM_BSET_UNDERFLOW_REC_DONE_MASK(ip) \
250 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
251 0 : (BIT(UNIPERIF_ITM_BSET_UNDERFLOW_REC_DONE_SHIFT(ip))))
252#define SET_UNIPERIF_ITM_BSET_UNDERFLOW_REC_DONE(ip) \
253 SET_UNIPERIF_ITM_BSET(ip, \
254 UNIPERIF_ITM_BSET_UNDERFLOW_REC_DONE_MASK(ip))
255
256/* UNDERFLOW_REC_FAILED */
257#define UNIPERIF_ITM_BSET_UNDERFLOW_REC_FAILED_SHIFT(ip) \
258 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 13)
259#define UNIPERIF_ITM_BSET_UNDERFLOW_REC_FAILED_MASK(ip) \
260 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? \
261 0 : (BIT(UNIPERIF_ITM_BSET_UNDERFLOW_REC_FAILED_SHIFT(ip))))
262#define SET_UNIPERIF_ITM_BSET_UNDERFLOW_REC_FAILED(ip) \
263 SET_UNIPERIF_ITM_BSET(ip, \
264 UNIPERIF_ITM_BSET_UNDERFLOW_REC_FAILED_MASK(ip))
265
266/*
267 * UNIPERIF_CONFIG reg
268 */
269
270#define UNIPERIF_CONFIG_OFFSET(ip) 0x0040
271#define GET_UNIPERIF_CONFIG(ip) \
272 readl_relaxed(ip->base + UNIPERIF_CONFIG_OFFSET(ip))
273#define SET_UNIPERIF_CONFIG(ip, value) \
274 writel_relaxed(value, ip->base + UNIPERIF_CONFIG_OFFSET(ip))
275
276/* PARITY_CNTR */
277#define UNIPERIF_CONFIG_PARITY_CNTR_SHIFT(ip) 0
278#define UNIPERIF_CONFIG_PARITY_CNTR_MASK(ip) 0x1
279#define GET_UNIPERIF_CONFIG_PARITY_CNTR(ip) \
280 GET_UNIPERIF_REG(ip, \
281 UNIPERIF_CONFIG_OFFSET(ip), \
282 UNIPERIF_CONFIG_PARITY_CNTR_SHIFT(ip), \
283 UNIPERIF_CONFIG_PARITY_CNTR_MASK(ip))
284#define SET_UNIPERIF_CONFIG_PARITY_CNTR_BY_HW(ip) \
285 SET_UNIPERIF_REG(ip, \
286 UNIPERIF_CONFIG_OFFSET(ip), \
287 UNIPERIF_CONFIG_PARITY_CNTR_SHIFT(ip), \
288 UNIPERIF_CONFIG_PARITY_CNTR_MASK(ip), 0)
289#define SET_UNIPERIF_CONFIG_PARITY_CNTR_BY_SW(ip) \
290 SET_UNIPERIF_REG(ip, \
291 UNIPERIF_CONFIG_OFFSET(ip), \
292 UNIPERIF_CONFIG_PARITY_CNTR_SHIFT(ip), \
293 UNIPERIF_CONFIG_PARITY_CNTR_MASK(ip), 1)
294
295/* CHANNEL_STA_CNTR */
296#define UNIPERIF_CONFIG_CHANNEL_STA_CNTR_SHIFT(ip) 1
297#define UNIPERIF_CONFIG_CHANNEL_STA_CNTR_MASK(ip) 0x1
298#define GET_UNIPERIF_CONFIG_CHANNEL_STA_CNTR(ip) \
299 GET_UNIPERIF_REG(ip, \
300 UNIPERIF_CONFIG_OFFSET(ip), \
301 UNIPERIF_CONFIG_CHANNEL_STA_CNTR_SHIFT(ip), \
302 UNIPERIF_CONFIG_CHANNEL_STA_CNTR_MASK(ip))
303#define SET_UNIPERIF_CONFIG_CHANNEL_STA_CNTR_BY_SW(ip) \
304 SET_UNIPERIF_REG(ip, \
305 UNIPERIF_CONFIG_OFFSET(ip), \
306 UNIPERIF_CONFIG_CHANNEL_STA_CNTR_SHIFT(ip), \
307 UNIPERIF_CONFIG_CHANNEL_STA_CNTR_MASK(ip), 0)
308#define SET_UNIPERIF_CONFIG_CHANNEL_STA_CNTR_BY_HW(ip) \
309 SET_UNIPERIF_REG(ip, \
310 UNIPERIF_CONFIG_OFFSET(ip), \
311 UNIPERIF_CONFIG_CHANNEL_STA_CNTR_SHIFT(ip), \
312 UNIPERIF_CONFIG_CHANNEL_STA_CNTR_MASK(ip), 1)
313
314/* USER_DAT_CNTR */
315#define UNIPERIF_CONFIG_USER_DAT_CNTR_SHIFT(ip) 2
316#define UNIPERIF_CONFIG_USER_DAT_CNTR_MASK(ip) 0x1
317#define GET_UNIPERIF_CONFIG_USER_DAT_CNTR(ip) \
318 GET_UNIPERIF_REG(ip, \
319 UNIPERIF_CONFIG_OFFSET(ip), \
320 UNIPERIF_CONFIG_USER_DAT_CNTR_SHIFT(ip), \
321 UNIPERIF_CONFIG_USER_DAT_CNTR_MASK(ip))
322#define SET_UNIPERIF_CONFIG_USER_DAT_CNTR_BY_HW(ip) \
323 SET_UNIPERIF_REG(ip, \
324 UNIPERIF_CONFIG_OFFSET(ip), \
325 UNIPERIF_CONFIG_USER_DAT_CNTR_SHIFT(ip), \
326 UNIPERIF_CONFIG_USER_DAT_CNTR_MASK(ip), 1)
327#define SET_UNIPERIF_CONFIG_USER_DAT_CNTR_BY_SW(ip) \
328 SET_UNIPERIF_REG(ip, \
329 UNIPERIF_CONFIG_OFFSET(ip), \
330 UNIPERIF_CONFIG_USER_DAT_CNTR_SHIFT(ip), \
331 UNIPERIF_CONFIG_USER_DAT_CNTR_MASK(ip), 0)
332
333/* VALIDITY_DAT_CNTR */
334#define UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_SHIFT(ip) 3
335#define UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_MASK(ip) 0x1
336#define GET_UNIPERIF_CONFIG_VALIDITY_DAT_CNTR(ip) \
337 GET_UNIPERIF_REG(ip, \
338 UNIPERIF_CONFIG_OFFSET(ip), \
339 UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_SHIFT(ip), \
340 UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_MASK(ip))
341#define SET_UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_BY_SW(ip) \
342 SET_UNIPERIF_REG(ip, \
343 UNIPERIF_CONFIG_OFFSET(ip), \
344 UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_SHIFT(ip), \
345 UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_MASK(ip), 0)
346#define SET_UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_BY_HW(ip) \
347 SET_UNIPERIF_REG(ip, \
348 UNIPERIF_CONFIG_OFFSET(ip), \
349 UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_SHIFT(ip), \
350 UNIPERIF_CONFIG_VALIDITY_DAT_CNTR_MASK(ip), 1)
351
352/* ONE_BIT_AUD_SUPPORT */
353#define UNIPERIF_CONFIG_ONE_BIT_AUD_SHIFT(ip) 4
354#define UNIPERIF_CONFIG_ONE_BIT_AUD_MASK(ip) 0x1
355#define GET_UNIPERIF_CONFIG_ONE_BIT_AUD(ip) \
356 GET_UNIPERIF_REG(ip, \
357 UNIPERIF_CONFIG_OFFSET(ip), \
358 UNIPERIF_CONFIG_ONE_BIT_AUD_SHIFT(ip), \
359 UNIPERIF_CONFIG_ONE_BIT_AUD_MASK(ip))
360#define SET_UNIPERIF_CONFIG_ONE_BIT_AUD_DISABLE(ip) \
361 SET_UNIPERIF_REG(ip, \
362 UNIPERIF_CONFIG_OFFSET(ip), \
363 UNIPERIF_CONFIG_ONE_BIT_AUD_SHIFT(ip), \
364 UNIPERIF_CONFIG_ONE_BIT_AUD_MASK(ip), 0)
365#define SET_UNIPERIF_CONFIG_ONE_BIT_AUD_ENABLE(ip) \
366 SET_UNIPERIF_REG(ip, \
367 UNIPERIF_CONFIG_OFFSET(ip), \
368 UNIPERIF_CONFIG_ONE_BIT_AUD_SHIFT(ip), \
369 UNIPERIF_CONFIG_ONE_BIT_AUD_MASK(ip), 1)
370
371/* MEMORY_FMT */
372#define UNIPERIF_CONFIG_MEM_FMT_SHIFT(ip) 5
373#define UNIPERIF_CONFIG_MEM_FMT_MASK(ip) 0x1
374#define VALUE_UNIPERIF_CONFIG_MEM_FMT_16_0(ip) 0
375#define VALUE_UNIPERIF_CONFIG_MEM_FMT_16_16(ip) 1
376#define GET_UNIPERIF_CONFIG_MEM_FMT(ip) \
377 GET_UNIPERIF_REG(ip, \
378 UNIPERIF_CONFIG_OFFSET(ip), \
379 UNIPERIF_CONFIG_MEM_FMT_SHIFT(ip), \
380 UNIPERIF_CONFIG_MEM_FMT_MASK(ip))
381#define SET_UNIPERIF_CONFIG_MEM_FMT(ip, value) \
382 SET_UNIPERIF_REG(ip, \
383 UNIPERIF_CONFIG_OFFSET(ip), \
384 UNIPERIF_CONFIG_MEM_FMT_SHIFT(ip), \
385 UNIPERIF_CONFIG_MEM_FMT_MASK(ip), value)
386#define SET_UNIPERIF_CONFIG_MEM_FMT_16_0(ip) \
387 SET_UNIPERIF_CONFIG_MEM_FMT(ip, \
388 VALUE_UNIPERIF_CONFIG_MEM_FMT_16_0(ip))
389#define SET_UNIPERIF_CONFIG_MEM_FMT_16_16(ip) \
390 SET_UNIPERIF_CONFIG_MEM_FMT(ip, \
391 VALUE_UNIPERIF_CONFIG_MEM_FMT_16_16(ip))
392
393/* REPEAT_CHL_STS */
394#define UNIPERIF_CONFIG_REPEAT_CHL_STS_SHIFT(ip) 6
395#define UNIPERIF_CONFIG_REPEAT_CHL_STS_MASK(ip) 0x1
396#define GET_UNIPERIF_CONFIG_REPEAT_CHL_STS(ip) \
397 GET_UNIPERIF_REG(ip, \
398 UNIPERIF_CONFIG_OFFSET(ip), \
399 UNIPERIF_CONFIG_REPEAT_CHL_STS_SHIFT(ip), \
400 UNIPERIF_CONFIG_REPEAT_CHL_STS_MASK(ip))
401#define SET_UNIPERIF_CONFIG_REPEAT_CHL_STS_ENABLE(ip) \
402 SET_UNIPERIF_REG(ip, \
403 UNIPERIF_CONFIG_OFFSET(ip), \
404 UNIPERIF_CONFIG_REPEAT_CHL_STS_SHIFT(ip), \
405 UNIPERIF_CONFIG_REPEAT_CHL_STS_MASK(ip), 0)
406#define SET_UNIPERIF_CONFIG_REPEAT_CHL_STS_DISABLE(ip) \
407 SET_UNIPERIF_REG(ip, \
408 UNIPERIF_CONFIG_OFFSET(ip), \
409 UNIPERIF_CONFIG_REPEAT_CHL_STS_SHIFT(ip), \
410 UNIPERIF_CONFIG_REPEAT_CHL_STS_MASK(ip), 1)
411
412/* BACK_STALL_REQ */
413#define UNIPERIF_CONFIG_BACK_STALL_REQ_SHIFT(ip) \
414 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 7 : -1)
415#define UNIPERIF_CONFIG_BACK_STALL_REQ_MASK(ip) 0x1
416#define GET_UNIPERIF_CONFIG_BACK_STALL_REQ(ip) \
417 GET_UNIPERIF_REG(ip, \
418 UNIPERIF_CONFIG_OFFSET(ip), \
419 UNIPERIF_CONFIG_BACK_STALL_REQ_SHIFT(ip), \
420 UNIPERIF_CONFIG_BACK_STALL_REQ_MASK(ip))
421#define SET_UNIPERIF_CONFIG_BACK_STALL_REQ_DISABLE(ip) \
422 SET_UNIPERIF_REG(ip, \
423 UNIPERIF_CONFIG_OFFSET(ip), \
424 UNIPERIF_CONFIG_BACK_STALL_REQ_SHIFT(ip), \
425 UNIPERIF_CONFIG_BACK_STALL_REQ_MASK(ip), 0)
426#define SET_UNIPERIF_CONFIG_BACK_STALL_REQ_ENABLE(ip) \
427 SET_UNIPERIF_REG(ip, \
428 UNIPERIF_CONFIG_OFFSET(ip), \
429 UNIPERIF_CONFIG_BACK_STALL_REQ_SHIFT(ip), \
430 UNIPERIF_CONFIG_BACK_STALL_REQ_MASK(ip), 1)
431
432/* FDMA_TRIGGER_LIMIT */
433#define UNIPERIF_CONFIG_DMA_TRIG_LIMIT_SHIFT(ip) 8
434#define UNIPERIF_CONFIG_DMA_TRIG_LIMIT_MASK(ip) 0x7F
435#define GET_UNIPERIF_CONFIG_DMA_TRIG_LIMIT(ip) \
436 GET_UNIPERIF_REG(ip, \
437 UNIPERIF_CONFIG_OFFSET(ip), \
438 UNIPERIF_CONFIG_DMA_TRIG_LIMIT_SHIFT(ip), \
439 UNIPERIF_CONFIG_DMA_TRIG_LIMIT_MASK(ip))
440#define SET_UNIPERIF_CONFIG_DMA_TRIG_LIMIT(ip, value) \
441 SET_UNIPERIF_REG(ip, \
442 UNIPERIF_CONFIG_OFFSET(ip), \
443 UNIPERIF_CONFIG_DMA_TRIG_LIMIT_SHIFT(ip), \
444 UNIPERIF_CONFIG_DMA_TRIG_LIMIT_MASK(ip), value)
445
446/* CHL_STS_UPDATE */
447#define UNIPERIF_CONFIG_CHL_STS_UPDATE_SHIFT(ip) \
448 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 16 : -1)
449#define UNIPERIF_CONFIG_CHL_STS_UPDATE_MASK(ip) 0x1
450#define GET_UNIPERIF_CONFIG_CHL_STS_UPDATE(ip) \
451 GET_UNIPERIF_REG(ip, \
452 UNIPERIF_CONFIG_OFFSET(ip), \
453 UNIPERIF_CONFIG_CHL_STS_UPDATE_SHIFT(ip), \
454 UNIPERIF_CONFIG_CHL_STS_UPDATE_MASK(ip))
455#define SET_UNIPERIF_CONFIG_CHL_STS_UPDATE(ip) \
456 SET_UNIPERIF_REG(ip, \
457 UNIPERIF_CONFIG_OFFSET(ip), \
458 UNIPERIF_CONFIG_CHL_STS_UPDATE_SHIFT(ip), \
459 UNIPERIF_CONFIG_CHL_STS_UPDATE_MASK(ip), 1)
460
461/* IDLE_MOD */
462#define UNIPERIF_CONFIG_IDLE_MOD_SHIFT(ip) 18
463#define UNIPERIF_CONFIG_IDLE_MOD_MASK(ip) 0x1
464#define GET_UNIPERIF_CONFIG_IDLE_MOD(ip) \
465 GET_UNIPERIF_REG(ip, \
466 UNIPERIF_CONFIG_OFFSET(ip), \
467 UNIPERIF_CONFIG_IDLE_MOD_SHIFT(ip), \
468 UNIPERIF_CONFIG_IDLE_MOD_MASK(ip))
469#define SET_UNIPERIF_CONFIG_IDLE_MOD_DISABLE(ip) \
470 SET_UNIPERIF_REG(ip, \
471 UNIPERIF_CONFIG_OFFSET(ip), \
472 UNIPERIF_CONFIG_IDLE_MOD_SHIFT(ip), \
473 UNIPERIF_CONFIG_IDLE_MOD_MASK(ip), 0)
474#define SET_UNIPERIF_CONFIG_IDLE_MOD_ENABLE(ip) \
475 SET_UNIPERIF_REG(ip, \
476 UNIPERIF_CONFIG_OFFSET(ip), \
477 UNIPERIF_CONFIG_IDLE_MOD_SHIFT(ip), \
478 UNIPERIF_CONFIG_IDLE_MOD_MASK(ip), 1)
479
480/* SUBFRAME_SELECTION */
481#define UNIPERIF_CONFIG_SUBFRAME_SEL_SHIFT(ip) 19
482#define UNIPERIF_CONFIG_SUBFRAME_SEL_MASK(ip) 0x1
483#define GET_UNIPERIF_CONFIG_SUBFRAME_SEL(ip) \
484 GET_UNIPERIF_REG(ip, \
485 UNIPERIF_CONFIG_OFFSET(ip), \
486 UNIPERIF_CONFIG_SUBFRAME_SEL_SHIFT(ip), \
487 UNIPERIF_CONFIG_SUBFRAME_SEL_MASK(ip))
488#define SET_UNIPERIF_CONFIG_SUBFRAME_SEL_SUBF1_SUBF0(ip) \
489 SET_UNIPERIF_REG(ip, \
490 UNIPERIF_CONFIG_OFFSET(ip), \
491 UNIPERIF_CONFIG_SUBFRAME_SEL_SHIFT(ip), \
492 UNIPERIF_CONFIG_SUBFRAME_SEL_MASK(ip), 1)
493#define SET_UNIPERIF_CONFIG_SUBFRAME_SEL_SUBF0_SUBF1(ip) \
494 SET_UNIPERIF_REG(ip, \
495 UNIPERIF_CONFIG_OFFSET(ip), \
496 UNIPERIF_CONFIG_SUBFRAME_SEL_SHIFT(ip), \
497 UNIPERIF_CONFIG_SUBFRAME_SEL_MASK(ip), 0)
498
499/* FULL_SW_CONTROL */
500#define UNIPERIF_CONFIG_SPDIF_SW_CTRL_SHIFT(ip) 20
501#define UNIPERIF_CONFIG_SPDIF_SW_CTRL_MASK(ip) 0x1
502#define GET_UNIPERIF_CONFIG_SPDIF_SW_CTRL(ip) \
503 GET_UNIPERIF_REG(ip, \
504 UNIPERIF_CONFIG_OFFSET(ip), \
505 UNIPERIF_CONFIG_SPDIF_SW_CTRL_SHIFT(ip), \
506 UNIPERIF_CONFIG_SPDIF_SW_CTRL_MASK(ip))
507#define SET_UNIPERIF_CONFIG_SPDIF_SW_CTRL_ENABLE(ip) \
508 SET_UNIPERIF_REG(ip, \
509 UNIPERIF_CONFIG_OFFSET(ip), \
510 UNIPERIF_CONFIG_SPDIF_SW_CTRL_SHIFT(ip), \
511 UNIPERIF_CONFIG_SPDIF_SW_CTRL_MASK(ip), 1)
512#define SET_UNIPERIF_CONFIG_SPDIF_SW_CTRL_DISABLE(ip) \
513 SET_UNIPERIF_REG(ip, \
514 UNIPERIF_CONFIG_OFFSET(ip), \
515 UNIPERIF_CONFIG_SPDIF_SW_CTRL_SHIFT(ip), \
516 UNIPERIF_CONFIG_SPDIF_SW_CTRL_MASK(ip), 0)
517
518/* MASTER_CLKEDGE */
519#define UNIPERIF_CONFIG_MSTR_CLKEDGE_SHIFT(ip) \
520 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 24 : -1)
521#define UNIPERIF_CONFIG_MSTR_CLKEDGE_MASK(ip) 0x1
522#define GET_UNIPERIF_CONFIG_MSTR_CLKEDGE(ip) \
523 GET_UNIPERIF_REG(ip, \
524 UNIPERIF_CONFIG_OFFSET(ip), \
525 UNIPERIF_CONFIG_MSTR_CLKEDGE_SHIFT(ip), \
526 UNIPERIF_CONFIG_MSTR_CLKEDGE_MASK(ip))
527#define SET_UNIPERIF_CONFIG_MSTR_CLKEDGE_FALLING(ip) \
528 SET_UNIPERIF_REG(ip, \
529 UNIPERIF_CONFIG_OFFSET(ip), \
530 UNIPERIF_CONFIG_MSTR_CLKEDGE_SHIFT(ip), \
531 UNIPERIF_CONFIG_MSTR_CLKEDGE_MASK(ip), 1)
532#define SET_UNIPERIF_CONFIG_MSTR_CLKEDGE_RISING(ip) \
533 SET_UNIPERIF_REG(ip, \
534 UNIPERIF_CONFIG_OFFSET(ip), \
535 UNIPERIF_CONFIG_MSTR_CLKEDGE_SHIFT(ip), \
536 UNIPERIF_CONFIG_MSTR_CLKEDGE_MASK(ip), 0)
537
538/*
539 * UNIPERIF_CTRL reg
540 */
541
542#define UNIPERIF_CTRL_OFFSET(ip) 0x0044
543#define GET_UNIPERIF_CTRL(ip) \
544 readl_relaxed(ip->base + UNIPERIF_CTRL_OFFSET(ip))
545#define SET_UNIPERIF_CTRL(ip, value) \
546 writel_relaxed(value, ip->base + UNIPERIF_CTRL_OFFSET(ip))
547
548/* OPERATION */
549#define UNIPERIF_CTRL_OPERATION_SHIFT(ip) 0
550#define UNIPERIF_CTRL_OPERATION_MASK(ip) 0x7
551#define GET_UNIPERIF_CTRL_OPERATION(ip) \
552 GET_UNIPERIF_REG(ip, \
553 UNIPERIF_CTRL_OFFSET(ip), \
554 UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
555 UNIPERIF_CTRL_OPERATION_MASK(ip))
556#define VALUE_UNIPERIF_CTRL_OPERATION_OFF(ip) 0
557#define SET_UNIPERIF_CTRL_OPERATION_OFF(ip) \
558 SET_UNIPERIF_REG(ip, \
559 UNIPERIF_CTRL_OFFSET(ip), \
560 UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
561 UNIPERIF_CTRL_OPERATION_MASK(ip), \
562 VALUE_UNIPERIF_CTRL_OPERATION_OFF(ip))
563#define VALUE_UNIPERIF_CTRL_OPERATION_MUTE_PCM_NULL(ip) \
564 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 1 : -1)
565#define SET_UNIPERIF_CTRL_OPERATION_MUTE_PCM_NULL(ip) \
566 SET_UNIPERIF_REG(ip, \
567 UNIPERIF_CTRL_OFFSET(ip), \
568 UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
569 UNIPERIF_CTRL_OPERATION_MASK(ip), \
570 VALUE_UNIPERIF_CTRL_OPERATION_MUTE_PCM_NULL(ip))
571#define VALUE_UNIPERIF_CTRL_OPERATION_MUTE_PAUSE_BURST(ip) \
572 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 2 : -1)
573#define SET_UNIPERIF_CTRL_OPERATION_MUTE_PAUSE_BURST(ip) \
574 SET_UNIPERIF_REG(ip, \
575 UNIPERIF_CTRL_OFFSET(ip), \
576 UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
577 UNIPERIF_CTRL_OPERATION_MASK(ip), \
578 VALUE_UNIPERIF_CTRL_OPERATION_MUTE_PAUSE_BURST(ip))
579#define VALUE_UNIPERIF_CTRL_OPERATION_PCM_DATA(ip) 3
580#define SET_UNIPERIF_CTRL_OPERATION_PCM_DATA(ip) \
581 SET_UNIPERIF_REG(ip, \
582 UNIPERIF_CTRL_OFFSET(ip), \
583 UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
584 UNIPERIF_CTRL_OPERATION_MASK(ip), \
585 VALUE_UNIPERIF_CTRL_OPERATION_PCM_DATA(ip))
586/* This is the same as above! */
587#define VALUE_UNIPERIF_CTRL_OPERATION_AUDIO_DATA(ip) 3
588#define SET_UNIPERIF_CTRL_OPERATION_AUDIO_DATA(ip) \
589 SET_UNIPERIF_REG(ip, \
590 UNIPERIF_CTRL_OFFSET(ip), \
591 UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
592 UNIPERIF_CTRL_OPERATION_MASK(ip), \
593 VALUE_UNIPERIF_CTRL_OPERATION_AUDIO_DATA(ip))
594#define VALUE_UNIPERIF_CTRL_OPERATION_ENC_DATA(ip) 4
595#define SET_UNIPERIF_CTRL_OPERATION_ENC_DATA(ip) \
596 SET_UNIPERIF_REG(ip, \
597 UNIPERIF_CTRL_OFFSET(ip), \
598 UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
599 UNIPERIF_CTRL_OPERATION_MASK(ip), \
600 VALUE_UNIPERIF_CTRL_OPERATION_ENC_DATA(ip))
601#define VALUE_UNIPERIF_CTRL_OPERATION_CD_DATA(ip) \
602 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 5 : -1)
603#define SET_UNIPERIF_CTRL_OPERATION_CD_DATA(ip) \
604 SET_UNIPERIF_REG(ip, \
605 UNIPERIF_CTRL_OFFSET(ip), \
606 UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
607 UNIPERIF_CTRL_OPERATION_MASK(ip), \
608 VALUE_UNIPERIF_CTRL_OPERATION_CD_DATA(ip))
609#define VALUE_UNIPERIF_CTRL_OPERATION_STANDBY(ip) \
610 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 7)
611#define SET_UNIPERIF_CTRL_OPERATION_STANDBY(ip) \
612 SET_UNIPERIF_REG(ip, \
613 UNIPERIF_CTRL_OFFSET(ip), \
614 UNIPERIF_CTRL_OPERATION_SHIFT(ip), \
615 UNIPERIF_CTRL_OPERATION_MASK(ip), \
616 VALUE_UNIPERIF_CTRL_OPERATION_STANDBY(ip))
617
618/* EXIT_STBY_ON_EOBLOCK */
619#define UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_SHIFT(ip) \
620 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 3)
621#define UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_MASK(ip) 0x1
622#define GET_UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK(ip) \
623 GET_UNIPERIF_REG(ip, \
624 UNIPERIF_CTRL_OFFSET(ip), \
625 UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_SHIFT(ip), \
626 UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_MASK(ip))
627#define SET_UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_OFF(ip) \
628 SET_UNIPERIF_REG(ip, \
629 UNIPERIF_CTRL_OFFSET(ip), \
630 UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_SHIFT(ip), \
631 UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_MASK(ip), 0)
632#define SET_UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_ON(ip) \
633 SET_UNIPERIF_REG(ip, \
634 UNIPERIF_CTRL_OFFSET(ip), \
635 UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_SHIFT(ip), \
636 UNIPERIF_CTRL_EXIT_STBY_ON_EOBLOCK_MASK(ip), 1)
637
638/* ROUNDING */
639#define UNIPERIF_CTRL_ROUNDING_SHIFT(ip) 4
640#define UNIPERIF_CTRL_ROUNDING_MASK(ip) 0x1
641#define GET_UNIPERIF_CTRL_ROUNDING(ip) \
642 GET_UNIPERIF_REG(ip, \
643 UNIPERIF_CTRL_OFFSET(ip), \
644 UNIPERIF_CTRL_ROUNDING_SHIFT(ip), \
645 UNIPERIF_CTRL_ROUNDING_MASK(ip))
646#define SET_UNIPERIF_CTRL_ROUNDING_OFF(ip) \
647 SET_UNIPERIF_REG(ip, \
648 UNIPERIF_CTRL_OFFSET(ip), \
649 UNIPERIF_CTRL_ROUNDING_SHIFT(ip), \
650 UNIPERIF_CTRL_ROUNDING_MASK(ip), 0)
651#define SET_UNIPERIF_CTRL_ROUNDING_ON(ip) \
652 SET_UNIPERIF_REG(ip, \
653 UNIPERIF_CTRL_OFFSET(ip), \
654 UNIPERIF_CTRL_ROUNDING_SHIFT(ip), \
655 UNIPERIF_CTRL_ROUNDING_MASK(ip), 1)
656
657/* DIVIDER */
658#define UNIPERIF_CTRL_DIVIDER_SHIFT(ip) 5
659#define UNIPERIF_CTRL_DIVIDER_MASK(ip) 0xff
660#define GET_UNIPERIF_CTRL_DIVIDER(ip) \
661 GET_UNIPERIF_REG(ip, \
662 UNIPERIF_CTRL_OFFSET(ip), \
663 UNIPERIF_CTRL_DIVIDER_SHIFT(ip), \
664 UNIPERIF_CTRL_DIVIDER_MASK(ip))
665#define SET_UNIPERIF_CTRL_DIVIDER(ip, value) \
666 SET_UNIPERIF_REG(ip, \
667 UNIPERIF_CTRL_OFFSET(ip), \
668 UNIPERIF_CTRL_DIVIDER_SHIFT(ip), \
669 UNIPERIF_CTRL_DIVIDER_MASK(ip), value)
670
671/* BYTE_SWAP */
672#define UNIPERIF_CTRL_BYTE_SWP_SHIFT(ip) \
673 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 13 : -1)
674#define UNIPERIF_CTRL_BYTE_SWP_MASK(ip) 0x1
675#define GET_UNIPERIF_CTRL_BYTE_SWP(ip) \
676 GET_UNIPERIF_REG(ip, \
677 UNIPERIF_CTRL_OFFSET(ip), \
678 UNIPERIF_CTRL_BYTE_SWP_SHIFT(ip), \
679 UNIPERIF_CTRL_BYTE_SWP_MASK(ip))
680#define SET_UNIPERIF_CTRL_BYTE_SWP_OFF(ip) \
681 SET_UNIPERIF_REG(ip, \
682 UNIPERIF_CTRL_OFFSET(ip), \
683 UNIPERIF_CTRL_BYTE_SWP_SHIFT(ip), \
684 UNIPERIF_CTRL_BYTE_SWP_MASK(ip), 0)
685#define SET_UNIPERIF_CTRL_BYTE_SWP_ON(ip) \
686 SET_UNIPERIF_REG(ip, \
687 UNIPERIF_CTRL_OFFSET(ip), \
688 UNIPERIF_CTRL_BYTE_SWP_SHIFT(ip), \
689 UNIPERIF_CTRL_BYTE_SWP_MASK(ip), 1)
690
691/* ZERO_STUFFING_HW_SW */
692#define UNIPERIF_CTRL_ZERO_STUFF_SHIFT(ip) \
693 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 14 : -1)
694#define UNIPERIF_CTRL_ZERO_STUFF_MASK(ip) 0x1
695#define GET_UNIPERIF_CTRL_ZERO_STUFF(ip) \
696 GET_UNIPERIF_REG(ip, \
697 UNIPERIF_CTRL_OFFSET(ip), \
698 UNIPERIF_CTRL_ZERO_STUFF_SHIFT(ip), \
699 UNIPERIF_CTRL_ZERO_STUFF_MASK(ip))
700#define SET_UNIPERIF_CTRL_ZERO_STUFF_HW(ip) \
701 SET_UNIPERIF_REG(ip, \
702 UNIPERIF_CTRL_OFFSET(ip), \
703 UNIPERIF_CTRL_ZERO_STUFF_SHIFT(ip), \
704 UNIPERIF_CTRL_ZERO_STUFF_MASK(ip), 1)
705#define SET_UNIPERIF_CTRL_ZERO_STUFF_SW(ip) \
706 SET_UNIPERIF_REG(ip, \
707 UNIPERIF_CTRL_OFFSET(ip), \
708 UNIPERIF_CTRL_ZERO_STUFF_SHIFT(ip), \
709 UNIPERIF_CTRL_ZERO_STUFF_MASK(ip), 0)
710
711/* SPDIF_LAT */
712#define UNIPERIF_CTRL_SPDIF_LAT_SHIFT(ip) \
713 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 16 : -1)
714#define UNIPERIF_CTRL_SPDIF_LAT_MASK(ip) 0x1
715#define GET_UNIPERIF_CTRL_SPDIF_LAT(ip) \
716 GET_UNIPERIF_REG(ip, \
717 UNIPERIF_CTRL_OFFSET(ip), \
718 UNIPERIF_CTRL_SPDIF_LAT_SHIFT(ip), \
719 UNIPERIF_CTRL_SPDIF_LAT_MASK(ip))
720#define SET_UNIPERIF_CTRL_SPDIF_LAT_ON(ip) \
721 SET_UNIPERIF_REG(ip, \
722 UNIPERIF_CTRL_OFFSET(ip), \
723 UNIPERIF_CTRL_SPDIF_LAT_SHIFT(ip), \
724 UNIPERIF_CTRL_SPDIF_LAT_MASK(ip), 1)
725#define SET_UNIPERIF_CTRL_SPDIF_LAT_OFF(ip) \
726 SET_UNIPERIF_REG(ip, \
727 UNIPERIF_CTRL_OFFSET(ip), \
728 UNIPERIF_CTRL_SPDIF_LAT_SHIFT(ip), \
729 UNIPERIF_CTRL_SPDIF_LAT_MASK(ip), 0)
730
731/* EN_SPDIF_FORMATTING */
732#define UNIPERIF_CTRL_SPDIF_FMT_SHIFT(ip) 17
733#define UNIPERIF_CTRL_SPDIF_FMT_MASK(ip) 0x1
734#define GET_UNIPERIF_CTRL_SPDIF_FMT(ip) \
735 GET_UNIPERIF_REG(ip, \
736 UNIPERIF_CTRL_OFFSET(ip), \
737 UNIPERIF_CTRL_SPDIF_FMT_SHIFT(ip), \
738 UNIPERIF_CTRL_SPDIF_FMT_MASK(ip))
739#define SET_UNIPERIF_CTRL_SPDIF_FMT_ON(ip) \
740 SET_UNIPERIF_REG(ip, \
741 UNIPERIF_CTRL_OFFSET(ip), \
742 UNIPERIF_CTRL_SPDIF_FMT_SHIFT(ip), \
743 UNIPERIF_CTRL_SPDIF_FMT_MASK(ip), 1)
744#define SET_UNIPERIF_CTRL_SPDIF_FMT_OFF(ip) \
745 SET_UNIPERIF_REG(ip, \
746 UNIPERIF_CTRL_OFFSET(ip), \
747 UNIPERIF_CTRL_SPDIF_FMT_SHIFT(ip), \
748 UNIPERIF_CTRL_SPDIF_FMT_MASK(ip), 0)
749
750/* READER_OUT_SELECT */
751#define UNIPERIF_CTRL_READER_OUT_SEL_SHIFT(ip) \
752 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 18 : -1)
753#define UNIPERIF_CTRL_READER_OUT_SEL_MASK(ip) 0x1
754#define GET_UNIPERIF_CTRL_READER_OUT_SEL(ip) \
755 GET_UNIPERIF_REG(ip, \
756 UNIPERIF_CTRL_OFFSET(ip), \
757 UNIPERIF_CTRL_READER_OUT_SEL_SHIFT(ip), \
758 UNIPERIF_CTRL_READER_OUT_SEL_MASK(ip))
759#define SET_UNIPERIF_CTRL_READER_OUT_SEL_IN_MEM(ip) \
760 SET_UNIPERIF_REG(ip, \
761 UNIPERIF_CTRL_OFFSET(ip), \
762 UNIPERIF_CTRL_READER_OUT_SEL_SHIFT(ip), \
763 UNIPERIF_CTRL_READER_OUT_SEL_MASK(ip), 0)
764#define SET_UNIPERIF_CTRL_READER_OUT_SEL_ON_I2S_LINE(ip) \
765 SET_UNIPERIF_REG(ip, \
766 UNIPERIF_CTRL_OFFSET(ip), \
767 UNIPERIF_CTRL_READER_OUT_SEL_SHIFT(ip), \
768 CORAUD_UNIPERIF_CTRL_READER_OUT_SEL_MASK(ip), 1)
769
770/* UNDERFLOW_REC_WINDOW */
771#define UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_SHIFT(ip) 20
772#define UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_MASK(ip) 0xff
773#define GET_UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW(ip) \
774 GET_UNIPERIF_REG(ip, \
775 UNIPERIF_CTRL_OFFSET(ip), \
776 UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_SHIFT(ip), \
777 UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_MASK(ip))
778#define SET_UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW(ip, value) \
779 SET_UNIPERIF_REG(ip, \
780 UNIPERIF_CTRL_OFFSET(ip), \
781 UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_SHIFT(ip), \
782 UNIPERIF_CTRL_UNDERFLOW_REC_WINDOW_MASK(ip), value)
783
784/*
785 * UNIPERIF_I2S_FMT a.k.a UNIPERIF_FORMAT reg
786 */
787
788#define UNIPERIF_I2S_FMT_OFFSET(ip) 0x0048
789#define GET_UNIPERIF_I2S_FMT(ip) \
790 readl_relaxed(ip->base + UNIPERIF_I2S_FMT_OFFSET(ip))
791#define SET_UNIPERIF_I2S_FMT(ip, value) \
792 writel_relaxed(value, ip->base + UNIPERIF_I2S_FMT_OFFSET(ip))
793
794/* NBIT */
795#define UNIPERIF_I2S_FMT_NBIT_SHIFT(ip) 0
796#define UNIPERIF_I2S_FMT_NBIT_MASK(ip) 0x1
797#define GET_UNIPERIF_I2S_FMT_NBIT(ip) \
798 GET_UNIPERIF_REG(ip, \
799 UNIPERIF_I2S_FMT_OFFSET(ip), \
800 UNIPERIF_I2S_FMT_NBIT_SHIFT(ip), \
801 UNIPERIF_I2S_FMT_NBIT_MASK(ip))
802#define SET_UNIPERIF_I2S_FMT_NBIT_32(ip) \
803 SET_UNIPERIF_REG(ip, \
804 UNIPERIF_I2S_FMT_OFFSET(ip), \
805 UNIPERIF_I2S_FMT_NBIT_SHIFT(ip), \
806 UNIPERIF_I2S_FMT_NBIT_MASK(ip), 0)
807#define SET_UNIPERIF_I2S_FMT_NBIT_16(ip) \
808 SET_UNIPERIF_REG(ip, \
809 UNIPERIF_I2S_FMT_OFFSET(ip), \
810 UNIPERIF_I2S_FMT_NBIT_SHIFT(ip), \
811 UNIPERIF_I2S_FMT_NBIT_MASK(ip), 1)
812
813/* DATA_SIZE */
814#define UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip) 1
815#define UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip) 0x7
816#define GET_UNIPERIF_I2S_FMT_DATA_SIZE(ip) \
817 GET_UNIPERIF_REG(ip, \
818 UNIPERIF_I2S_FMT_OFFSET(ip), \
819 UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
820 UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip))
821#define SET_UNIPERIF_I2S_FMT_DATA_SIZE_16(ip) \
822 SET_UNIPERIF_REG(ip, \
823 UNIPERIF_I2S_FMT_OFFSET(ip), \
824 UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
825 UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 0)
826#define SET_UNIPERIF_I2S_FMT_DATA_SIZE_18(ip) \
827 SET_UNIPERIF_REG(ip, \
828 UNIPERIF_I2S_FMT_OFFSET(ip), \
829 UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
830 UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 1)
831#define SET_UNIPERIF_I2S_FMT_DATA_SIZE_20(ip) \
832 SET_UNIPERIF_REG(ip, \
833 UNIPERIF_I2S_FMT_OFFSET(ip), \
834 UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
835 UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 2)
836#define SET_UNIPERIF_I2S_FMT_DATA_SIZE_24(ip) \
837 SET_UNIPERIF_REG(ip, \
838 UNIPERIF_I2S_FMT_OFFSET(ip), \
839 UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
840 UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 3)
841#define SET_UNIPERIF_I2S_FMTL_DATA_SIZE_28(ip) \
842 SET_UNIPERIF_REG(ip, \
843 UNIPERIF_I2S_FMT_OFFSET(ip), \
844 UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
845 UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 4)
846#define SET_UNIPERIF_I2S_FMT_DATA_SIZE_32(ip) \
847 SET_UNIPERIF_REG(ip, \
848 UNIPERIF_I2S_FMT_OFFSET(ip), \
849 UNIPERIF_I2S_FMT_DATA_SIZE_SHIFT(ip), \
850 UNIPERIF_I2S_FMT_DATA_SIZE_MASK(ip), 5)
851
852/* LR_POL */
853#define UNIPERIF_I2S_FMT_LR_POL_SHIFT(ip) 4
854#define UNIPERIF_I2S_FMT_LR_POL_MASK(ip) 0x1
855#define VALUE_UNIPERIF_I2S_FMT_LR_POL_LOW(ip) 0x0
856#define VALUE_UNIPERIF_I2S_FMT_LR_POL_HIG(ip) 0x1
857#define GET_UNIPERIF_I2S_FMT_LR_POL(ip) \
858 GET_UNIPERIF_REG(ip, \
859 UNIPERIF_I2S_FMT_OFFSET(ip), \
860 UNIPERIF_I2S_FMT_LR_POL_SHIFT(ip), \
861 UNIPERIF_I2S_FMT_LR_POL_MASK(ip))
862#define SET_UNIPERIF_I2S_FMT_LR_POL(ip, value) \
863 SET_UNIPERIF_REG(ip, \
864 UNIPERIF_I2S_FMT_OFFSET(ip), \
865 UNIPERIF_I2S_FMT_LR_POL_SHIFT(ip), \
866 UNIPERIF_I2S_FMT_LR_POL_MASK(ip), value)
867#define SET_UNIPERIF_I2S_FMT_LR_POL_LOW(ip) \
868 SET_UNIPERIF_I2S_FMT_LR_POL(ip, \
869 VALUE_UNIPERIF_I2S_FMT_LR_POL_LOW(ip))
870#define SET_UNIPERIF_I2S_FMT_LR_POL_HIG(ip) \
871 SET_UNIPERIF_I2S_FMT_LR_POL(ip, \
872 VALUE_UNIPERIF_I2S_FMT_LR_POL_HIG(ip))
873
874/* SCLK_EDGE */
875#define UNIPERIF_I2S_FMT_SCLK_EDGE_SHIFT(ip) 5
876#define UNIPERIF_I2S_FMT_SCLK_EDGE_MASK(ip) 0x1
877#define GET_UNIPERIF_I2S_FMT_SCLK_EDGE(ip) \
878 GET_UNIPERIF_REG(ip, \
879 UNIPERIF_I2S_FMT_OFFSET(ip), \
880 UNIPERIF_I2S_FMT_SCLK_EDGE_SHIFT(ip), \
881 UNIPERIF_I2S_FMT_SCLK_EDGE_MASK(ip))
882#define SET_UNIPERIF_I2S_FMT_SCLK_EDGE_RISING(ip) \
883 SET_UNIPERIF_REG(ip, \
884 UNIPERIF_I2S_FMT_OFFSET(ip), \
885 UNIPERIF_I2S_FMT_SCLK_EDGE_SHIFT(ip), \
886 UNIPERIF_I2S_FMT_SCLK_EDGE_MASK(ip), 0)
887#define SET_UNIPERIF_I2S_FMT_SCLK_EDGE_FALLING(ip) \
888 SET_UNIPERIF_REG(ip, \
889 UNIPERIF_I2S_FMT_OFFSET(ip), \
890 UNIPERIF_I2S_FMT_SCLK_EDGE_SHIFT(ip), \
891 UNIPERIF_I2S_FMT_SCLK_EDGE_MASK(ip), 1)
892
893/* PADDING */
894#define UNIPERIF_I2S_FMT_PADDING_SHIFT(ip) 6
895#define UNIPERIF_I2S_FMT_PADDING_MASK(ip) 0x1
896#define UNIPERIF_I2S_FMT_PADDING_MASK(ip) 0x1
897#define VALUE_UNIPERIF_I2S_FMT_PADDING_I2S_MODE(ip) 0x0
898#define VALUE_UNIPERIF_I2S_FMT_PADDING_SONY_MODE(ip) 0x1
899#define GET_UNIPERIF_I2S_FMT_PADDING(ip) \
900 GET_UNIPERIF_REG(ip, \
901 UNIPERIF_I2S_FMT_OFFSET(ip), \
902 UNIPERIF_I2S_FMT_PADDING_SHIFT(ip), \
903 UNIPERIF_I2S_FMT_PADDING_MASK(ip))
904#define SET_UNIPERIF_I2S_FMT_PADDING(ip, value) \
905 SET_UNIPERIF_REG(ip, \
906 UNIPERIF_I2S_FMT_OFFSET(ip), \
907 UNIPERIF_I2S_FMT_PADDING_SHIFT(ip), \
908 UNIPERIF_I2S_FMT_PADDING_MASK(ip), value)
909#define SET_UNIPERIF_I2S_FMT_PADDING_I2S_MODE(ip) \
910 SET_UNIPERIF_I2S_FMT_PADDING(ip, \
911 VALUE_UNIPERIF_I2S_FMT_PADDING_I2S_MODE(ip))
912#define SET_UNIPERIF_I2S_FMT_PADDING_SONY_MODE(ip) \
913 SET_UNIPERIF_I2S_FMT_PADDING(ip, \
914 VALUE_UNIPERIF_I2S_FMT_PADDING_SONY_MODE(ip))
915
916/* ALIGN */
917#define UNIPERIF_I2S_FMT_ALIGN_SHIFT(ip) 7
918#define UNIPERIF_I2S_FMT_ALIGN_MASK(ip) 0x1
919#define GET_UNIPERIF_I2S_FMT_ALIGN(ip) \
920 GET_UNIPERIF_REG(ip, \
921 UNIPERIF_I2S_FMT_OFFSET(ip), \
922 UNIPERIF_I2S_FMT_ALIGN_SHIFT(ip), \
923 UNIPERIF_I2S_FMT_ALIGN_MASK(ip))
924#define SET_UNIPERIF_I2S_FMT_ALIGN_LEFT(ip) \
925 SET_UNIPERIF_REG(ip, \
926 UNIPERIF_I2S_FMT_OFFSET(ip), \
927 UNIPERIF_I2S_FMT_ALIGN_SHIFT(ip), \
928 UNIPERIF_I2S_FMT_ALIGN_MASK(ip), 0)
929#define SET_UNIPERIF_I2S_FMT_ALIGN_RIGHT(ip) \
930 SET_UNIPERIF_REG(ip, \
931 UNIPERIF_I2S_FMT_OFFSET(ip), \
932 UNIPERIF_I2S_FMT_ALIGN_SHIFT(ip), \
933 UNIPERIF_I2S_FMT_ALIGN_MASK(ip), 1)
934
935/* ORDER */
936#define UNIPERIF_I2S_FMT_ORDER_SHIFT(ip) 8
937#define UNIPERIF_I2S_FMT_ORDER_MASK(ip) 0x1
938#define GET_UNIPERIF_I2S_FMT_ORDER(ip) \
939 GET_UNIPERIF_REG(ip, \
940 UNIPERIF_I2S_FMT_OFFSET(ip), \
941 UNIPERIF_I2S_FMT_ORDER_SHIFT(ip), \
942 UNIPERIF_I2S_FMT_ORDER_MASK(ip))
943#define SET_UNIPERIF_I2S_FMT_ORDER_LSB(ip) \
944 SET_UNIPERIF_REG(ip, \
945 UNIPERIF_I2S_FMT_OFFSET(ip), \
946 UNIPERIF_I2S_FMT_ORDER_SHIFT(ip), \
947 UNIPERIF_I2S_FMT_ORDER_MASK(ip), 0)
948#define SET_UNIPERIF_I2S_FMT_ORDER_MSB(ip) \
949 SET_UNIPERIF_REG(ip, \
950 UNIPERIF_I2S_FMT_OFFSET(ip), \
951 UNIPERIF_I2S_FMT_ORDER_SHIFT(ip), \
952 UNIPERIF_I2S_FMT_ORDER_MASK(ip), 1)
953
954/* NUM_CH */
955#define UNIPERIF_I2S_FMT_NUM_CH_SHIFT(ip) 9
956#define UNIPERIF_I2S_FMT_NUM_CH_MASK(ip) 0x7
957#define GET_UNIPERIF_I2S_FMT_NUM_CH(ip) \
958 GET_UNIPERIF_REG(ip, \
959 UNIPERIF_I2S_FMT_OFFSET(ip), \
960 UNIPERIF_I2S_FMT_NUM_CH_SHIFT(ip), \
961 UNIPERIF_I2S_FMT_NUM_CH_MASK(ip))
962#define SET_UNIPERIF_I2S_FMT_NUM_CH(ip, value) \
963 SET_UNIPERIF_REG(ip, \
964 UNIPERIF_I2S_FMT_OFFSET(ip), \
965 UNIPERIF_I2S_FMT_NUM_CH_SHIFT(ip), \
966 UNIPERIF_I2S_FMT_NUM_CH_MASK(ip), value)
967
968/* NO_OF_SAMPLES_TO_READ */
969#define UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_SHIFT(ip) 12
970#define UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_MASK(ip) 0xfffff
971#define GET_UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ(ip) \
972 GET_UNIPERIF_REG(ip, \
973 UNIPERIF_I2S_FMT_OFFSET(ip), \
974 UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_SHIFT(ip), \
975 UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_MASK(ip))
976#define SET_UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ(ip, value) \
977 SET_UNIPERIF_REG(ip, \
978 UNIPERIF_I2S_FMT_OFFSET(ip), \
979 UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_SHIFT(ip), \
980 UNIPERIF_I2S_FMT_NO_OF_SAMPLES_TO_READ_MASK(ip), value)
981
982/*
983 * UNIPERIF_BIT_CONTROL reg
984 */
985
986#define UNIPERIF_BIT_CONTROL_OFFSET(ip) \
987 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 0x004c)
988#define GET_UNIPERIF_BIT_CONTROL(ip) \
989 readl_relaxed(ip->base + UNIPERIF_BIT_CONTROL_OFFSET(ip))
990#define SET_UNIPERIF_BIT_CONTROL(ip, value) \
991 writel_relaxed(value, ip->base + UNIPERIF_BIT_CONTROL_OFFSET(ip))
992
993/* CLR_UNDERFLOW_DURATION */
994#define UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_SHIFT(ip) 0
995#define UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_MASK(ip) 0x1
996#define GET_UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION(ip) \
997 GET_UNIPERIF_REG(ip, \
998 UNIPERIF_BIT_CONTROL_OFFSET(ip), \
999 UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_SHIFT(ip), \
1000 UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_MASK(ip))
1001#define SET_UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION(ip) \
1002 SET_UNIPERIF_REG(ip, \
1003 UNIPERIF_BIT_CONTROL_OFFSET(ip), \
1004 UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_SHIFT(ip), \
1005 UNIPERIF_BIT_CONTROL_CLR_UNDERFLOW_DURATION_MASK(ip), 1)
1006
1007/* CHL_STS_UPDATE */
1008#define UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_SHIFT(ip) 1
1009#define UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_MASK(ip) 0x1
1010#define GET_UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE(ip) \
1011 GET_UNIPERIF_REG(ip, \
1012 UNIPERIF_BIT_CONTROL_OFFSET(ip), \
1013 UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_SHIFT(ip), \
1014 UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_MASK(ip))
1015#define SET_UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE(ip) \
1016 SET_UNIPERIF_BIT_REG(ip, \
1017 UNIPERIF_BIT_CONTROL_OFFSET(ip), \
1018 UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_SHIFT(ip), \
1019 UNIPERIF_BIT_CONTROL_CHL_STS_UPDATE_MASK(ip), 1)
1020
1021/*
1022 * UNIPERIF_STATUS_1 reg
1023 */
1024
1025#define UNIPERIF_STATUS_1_OFFSET(ip) 0x0050
1026#define GET_UNIPERIF_STATUS_1(ip) \
1027 readl_relaxed(ip->base + UNIPERIF_STATUS_1_OFFSET(ip))
1028#define SET_UNIPERIF_STATUS_1(ip, value) \
1029 writel_relaxed(value, ip->base + UNIPERIF_STATUS_1_OFFSET(ip))
1030
1031/* UNDERFLOW_DURATION */
1032#define UNIPERIF_STATUS_1_UNDERFLOW_DURATION_SHIFT(ip) \
1033 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 0)
1034#define UNIPERIF_STATUS_1_UNDERFLOW_DURATION_MASK(ip) 0xff
1035#define GET_UNIPERIF_STATUS_1_UNDERFLOW_DURATION(ip) \
1036 GET_UNIPERIF_REG(ip, \
1037 UNIPERIF_STATUS_1_OFFSET(ip), \
1038 UNIPERIF_STATUS_1_UNDERFLOW_DURATION_SHIFT(ip), \
1039 UNIPERIF_STATUS_1_UNDERFLOW_DURATION_MASK(ip))
1040#define SET_UNIPERIF_STATUS_1_UNDERFLOW_DURATION(ip, value) \
1041 SET_UNIPERIF_REG(ip, \
1042 UNIPERIF_STATUS_1_OFFSET(ip), \
1043 UNIPERIF_STATUS_1_UNDERFLOW_DURATION_SHIFT(ip), \
1044 UNIPERIF_STATUS_1_UNDERFLOW_DURATION_MASK(ip), value)
1045
1046/*
1047 * AUD_UNIPERIF_CHANNEL_STA_REGN reg
1048 */
1049
1050#define UNIPERIF_CHANNEL_STA_REGN(ip, n) (0x0060 + (4 * n))
1051#define GET_UNIPERIF_CHANNEL_STA_REGN(ip) \
1052 readl_relaxed(ip->base + UNIPERIF_CHANNEL_STA_REGN(ip, n))
1053#define SET_UNIPERIF_CHANNEL_STA_REGN(ip, n, value) \
1054 writel_relaxed(value, ip->base + \
1055 UNIPERIF_CHANNEL_STA_REGN(ip, n))
1056
1057/*
1058 * AUD_UNIPERIF_USER_VALIDITY reg
1059 */
1060
1061#define UNIPERIF_USER_VALIDITY_OFFSET(ip) 0x0090
1062#define GET_UNIPERIF_USER_VALIDITY(ip) \
1063 readl_relaxed(ip->base + UNIPERIF_USER_VALIDITY_OFFSET(ip))
1064#define SET_UNIPERIF_USER_VALIDITY(ip, value) \
1065 writel_relaxed(value, ip->base + UNIPERIF_USER_VALIDITY_OFFSET(ip))
1066
1067/* VALIDITY_LEFT_AND_RIGHT */
1068#define UNIPERIF_USER_VALIDITY_VALIDITY_LR_SHIFT(ip) 0
1069#define UNIPERIF_USER_VALIDITY_VALIDITY_LR_MASK(ip) 0x3
1070#define GET_UNIPERIF_USER_VALIDITY_VALIDITY_LR(ip) \
1071 GET_UNIPERIF_REG(ip, \
1072 UNIPERIF_USER_VALIDITY_OFFSET(ip), \
1073 UNIPERIF_USER_VALIDITY_VALIDITY_LR_SHIFT(ip), \
1074 UNIPERIF_USER_VALIDITY_VALIDITY_LR_MASK(ip))
1075#define SET_UNIPERIF_USER_VALIDITY_VALIDITY_LR(ip, value) \
1076 SET_UNIPERIF_REG(ip, \
1077 UNIPERIF_USER_VALIDITY_OFFSET(ip), \
1078 UNIPERIF_USER_VALIDITY_VALIDITY_LR_SHIFT(ip), \
1079 UNIPERIF_USER_VALIDITY_VALIDITY_LR_MASK(ip), \
1080 value ? 0x3 : 0)
1081
1082/*
1083 * UNIPERIF_DBG_STANDBY_LEFT_SP reg
1084 */
1085#define UNIPERIF_DBG_STANDBY_LEFT_SP_OFFSET(ip) 0x0150
1086#define UNIPERIF_DBG_STANDBY_LEFT_SP_SHIFT(ip) \
1087 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? -1 : 0)
1088#define UNIPERIF_DBG_STANDBY_LEFT_SP_MASK(ip) \
1089 ((ip)->ver < SND_ST_UNIPERIF_VERSION_UNI_PLR_TOP_1_0 ? 0 : 0xFFFFFF)
1090#define GET_UNIPERIF_DBG_STANDBY_LEFT_SP(ip) \
1091 GET_UNIPERIF_REG(ip, \
1092 UNIPERIF_DBG_STANDBY_LEFT_SP_OFFSET(ip), \
1093 UNIPERIF_DBG_STANDBY_LEFT_SP_SHIFT(ip), \
1094 UNIPERIF_DBG_STANDBY_LEFT_SP_MASK(ip))
1095#define SET_UNIPERIF_DBG_STANDBY_LEFT_SP(ip, value) \
1096 SET_UNIPERIF_REG(ip, \
1097 UNIPERIF_DBG_STANDBY_LEFT_SP_OFFSET(ip), \
1098 UNIPERIF_DBG_STANDBY_LEFT_SP_SHIFT(ip), \
1099 UNIPERIF_DBG_STANDBY_LEFT_SP_MASK(ip), value)
This page took 0.16128 seconds and 5 git commands to generate.