1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
|
/* $OpenBSD: cs4231reg.h,v 1.1 1999/06/06 04:48:24 jason Exp $ */
/*
* Copyright (c) 1999 Jason L. Wright (jason@thought.net)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Jason L. Wright
* 4. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/*
* Driver for the CS4231 audio in some sun4m systems
*/
#define CS_TIMEOUT 90000
/*
* CS4231 registers from CS web site and Solaris 2.6 includes.
*/
struct cs4231_regs {
volatile u_int8_t iar; /* index address */
volatile u_int8_t _padding1[3]; /* reserved */
volatile u_int8_t idr; /* index data */
volatile u_int8_t _padding2[3]; /* reserved */
volatile u_int8_t status; /* status */
volatile u_int8_t _padding3[3]; /* reserved */
volatile u_int8_t pior; /* PIO data i/o */
volatile u_int8_t _padding4[3]; /* reserved */
volatile u_int32_t dma_csr; /* APC control/status */
volatile u_int32_t _padding5[3]; /* reserved */
volatile u_int32_t dma_cva; /* capture virtual addr */
volatile u_int32_t dma_cc; /* capture count */
volatile u_int32_t dma_cnva; /* capture next virtual addr */
volatile u_int32_t dma_cnc; /* capture next count */
volatile u_int32_t dma_pva; /* playback virtual addr */
volatile u_int32_t dma_pc; /* playback count */
volatile u_int32_t dma_pnva; /* playback next virtual addr */
volatile u_int32_t dma_pnc; /* playback next count */
};
/*
* The CS4231 has 4 direct access registers: iar, idr, status, pior
*
* iar and idr are used to access either 16 or 32 (mode 2 only) "indirect
* registers".
*/
/*
* Direct mapped registers
*/
/* cs4231_reg.iar: index address register */
#define CS_IAR_IR_MASK 0x1f /* indirect register mask */
#define CS_IAR_TRD 0x20 /* transfer request disable */
#define CS_IAR_MCE 0x40 /* mode change enable */
#define CS_IAR_INIT 0x80 /* initialization */
/* indirect register numbers (mode1/mode2) */
#define CS_IAR_LADCIN 0x00 /* left adc input control */
#define CS_IAR_RADCIN 0x01 /* right adc input control */
#define CS_IAR_LACIN1 0x02 /* left aux #1 input control */
#define CS_IAR_RACIN1 0x03 /* right aux #1 input control */
#define CS_IAR_LACIN2 0x04 /* left aux #2 input control */
#define CS_IAR_RACIN2 0x05 /* right aux #2 input control */
#define CS_IAR_LDACOUT 0x06 /* left dac output control */
#define CS_IAR_RDACOUT 0x07 /* right dac output control */
#define CS_IAR_FSPB 0x08 /* fs and playback format */
#define CS_IAR_IC 0x09 /* interface configuration */
#define CS_IAR_PC 0x0a /* pin control */
#define CS_IAR_ERRINIT 0x0b /* error status & init */
#define CS_IAR_MODEID 0x0c /* mode and id */
#define CS_IAR_LOOP 0x0d /* loopback control */
#define CS_IAR_PBUB 0x0e /* playback upper base */
#define CS_IAR_PBLB 0x0f /* playback lower base */
/* indirect register numbers (mode2 only) */
#define CS_IAR_AFE1 0x10 /* alt feature enable I */
#define CS_IAR_AFE2 0x11 /* alt feature enable II */
#define CS_IAR_LLI 0x12 /* left line input control */
#define CS_IAR_RLI 0x13 /* right line input control */
#define CS_IAR_TLB 0x14 /* timer lower base */
#define CS_IAR_TUB 0x15 /* timer upper base */
#define CS_IAR_reserved1 0x16 /* reserved */
#define CS_IAR_AFE3 0x17 /* alt feature enable III */
#define CS_IAR_AFS 0x18 /* alt feature status */
#define CS_IAR_VID 0x19 /* version id */
#define CS_IAR_MONO 0x1a /* mono input/output control */
#define CS_IAR_reserved2 0x1b /* reserved */
#define CS_IAR_CDF 0x1c /* capture data format */
#define CS_IAR_reserved3 0x1d /* reserved */
#define CS_IAR_CUB 0x1e /* capture upper base */
#define CS_IAR_CLB 0x1f /* capture lower base */
/* cs4231_reg.idr: index data register */
/* Contains the data of the indirect register indexed by the iar */
/* cs4231_reg.status: status register */
#define CS_STATUS_INT 0x01 /* interrupt status(1=active) */
#define CS_STATUS_PRDY 0x02 /* playback data ready */
#define CS_STATUS_PL 0x04 /* playback l/r sample */
#define CS_STATUS_PU 0x08 /* playback up/lw byte needed */
#define CS_STATUS_SER 0x10 /* sample error */
#define CS_STATUS_CRDY 0x20 /* capture data ready */
#define CS_STATUS_CL 0x40 /* capture l/r sample */
#define CS_STATUS_CU 0x80 /* capture up/lw byte needed */
/* cs4231_reg.pior: programmed i/o register */
/* On write, this is the playback data byte */
/* On read, it is the capture data byte */
/*
* Indirect Mapped Registers
*/
/* Left ADC Input Control: I0 */
#define CS_LADCIN_GAIN_MASK 0x0f /* left adc gain */
#define CS_LADCIN_reserved 0x10 /* reserved */
#define CS_LADCIN_LMGE 0x20 /* left mic gain enable */
#define CS_LADCIN_SRC_MASK 0xc0 /* left adc source select */
#define CS_LADCIN_SRC_LINE 0x00 /* left input src: line */
#define CS_LADCIN_SRC_AUX 0x40 /* left input src: aux */
#define CS_LADCIN_SRC_MIC 0x80 /* left input src: mic */
#define CS_LADCIN_SRC_LOOP 0xc0 /* left input src: loopback */
/* Right ADC Input Control: I1 */
#define CS_RADCIN_GAIN_MASK 0x0f /* right adc gain */
#define CS_RADCIN_reserved 0x10 /* reserved */
#define CS_RADCIN_LMGE 0x20 /* right mic gain enable */
#define CS_RADCIN_SRC_MASK 0xc0 /* right adc source select */
#define CS_RADCIN_SRC_LINE 0x00 /* right input src: line */
#define CS_RADCIN_SRC_AUX 0x40 /* right input src: aux */
#define CS_RADCIN_SRC_MIC 0x80 /* right input src: mic */
#define CS_RADCIN_SRC_LOOP 0xc0 /* right input src: loopback */
/* Left Auxiliary #1 Input Control: I2 */
#define CS_LACIN1_GAIN_MASK 0x1f /* left aux #1 mix gain */
#define CS_LACIN1_reserved1 0x20 /* reserved */
#define CS_LACIN1_reserved2 0x40 /* reserved */
#define CS_LACIN1_LX1M 0x80 /* left aux #1 mute */
/* Right Auxiliary #1 Input Control: I3 */
#define CS_RACIN1_GAIN_MASK 0x1f /* right aux #1 mix gain */
#define CS_RACIN1_reserved1 0x20 /* reserved */
#define CS_RACIN1_reserved2 0x40 /* reserved */
#define CS_RACIN1_RX1M 0x80 /* right aux #1 mute */
/* Left Auxiliary #2 Input Control: I4 */
#define CS_LACIN2_GAIN_MASK 0x1f /* left aux #2 mix gain */
#define CS_LACIN2_reserved1 0x20 /* reserved */
#define CS_LACIN2_reserved2 0x40 /* reserved */
#define CS_LACIN2_LX2M 0x80 /* left aux #2 mute */
/* Right Auxiliary #2 Input Control: I5 */
#define CS_RACIN2_GAIN_MASK 0x1f /* right aux #2 mix gain */
#define CS_RACIN2_reserved1 0x20 /* reserved */
#define CS_RACIN2_reserved2 0x40 /* reserved */
#define CS_RACIN2_RX2M 0x80 /* right aux #2 mute */
/* Left DAC Output Control: I6 */
#define CS_LDACOUT_LDA_MASK 0x3f /* left dac attenuator */
#define CS_LDACOUT_reserved 0x40 /* reserved */
#define CS_LDACOUT_LDM 0x80 /* left dac mute */
/* Right DAC Output Control: I7 */
#define CS_RDACOUT_RDA_MASK 0x3f /* right dac attenuator */
#define CS_RDACOUT_reserved 0x40 /* reserved */
#define CS_RDACOUT_RDM 0x80 /* right dac mute */
/* Fs and Playback Data Format: I8 */
#define CS_FSPB_C2SL 0x01 /* clock 2 source select */
#define CS_FSPB_CFS_MASK 0x0e /* clock frequency div select */
#define CS_FSPB_SM 0x10 /* stereo/mono select */
#define CS_FSPB_FMT_MASK 0xe0 /* playback format select */
#define CS_FSPB_C2SL_XTAL1 0x00 /* use 24.576 Mhz crystal */
#define CS_FSPB_C2SL_XTAL2 0x01 /* use 16.9344 Mhz crystal */
#define CS_FSPB_SM_MONO 0x00 /* use mono output */
#define CS_FSPB_SM_STEREO 0x10 /* use stereo output */
#define CS_FSPB_FMT_ULINEAR 0x00 /* fmt: linear 8bit unsigned */
#define CS_FSPB_FMT_ULAW 0x20 /* fmt: ulaw, 8bit companded */
#define CS_FSPB_FMT_LINEAR_LE 0x40 /* fmt: linear 16bit little */
#define CS_FSPB_FMT_ALAW 0x60 /* fmt: alaw, 8bit companded */
#define CS_FSPB_FMT_reserved1 0x80 /* fmt: reserved */
#define CS_FSPB_FMT_ADPCM 0xa0 /* fmt: adpcm 4bit */
#define CS_FSPB_FMT_LINEAR_BE 0xc0 /* fmt: linear 16bit big */
#define CS_FSPB_FMT_reserved2 0xe0 /* fmt: reserved */
/* Interface Configuration: I9 */
#define CS_IC_PEN 0x01 /* playback enable */
#define CS_IC_CEN 0x02 /* capture enable */
#define CS_IC_SDC 0x04 /* single dma channel */
#define CS_IC_CAL_MASK 0x18 /* calibration type mask */
#define CS_IC_reserved 0x20 /* reserved */
#define CS_IC_PPIO 0x40 /* playback pio enable */
#define CS_IC_CPIO 0x80 /* capture pio enable */
#define CS_IC_CAL_NONE 0x00 /* no calibration */
#define CS_IC_CAL_CONV 0x08 /* converter calibration */
#define CS_IC_CAL_DAC 0x10 /* dac calibration */
#define CS_IC_CAL_FULL 0x18 /* full calibration */
/* Pin Control: I10 */
#define CS_PC_reserved1 0x01 /* reserved */
#define CS_PC_IEN 0x02 /* interrupt enable */
#define CS_PC_reserved2 0x04 /* reserved */
#define CS_PC_DEN 0x08 /* dither enable */
#define CS_PC_reserved3 0x10 /* reserved */
#define CS_PC_reserved4 0x20 /* reserved */
#define CS_PC_XCTL_MASK 0xc0 /* xctl control */
#define CS_PC_LINEMUTE 0x40 /* mute line */
#define CS_PC_HDPHMUTE 0x80 /* mute headphone */
#define CS_PC_XCTL0 0x40 /* set xtcl0 to 1 */
#define CS_PC_XCTL1 0x80 /* set xctl1 to 1 */
/* Error Status and Initialization: I11 */
#define CS_ERRINIT_ORL_MASK 0x03 /* overrange left detect */
#define CS_ERRINIT_ORR_MASK 0x0c /* overrange right detect */
#define CS_ERRINIT_DRQ 0x10 /* drq status */
#define CS_ERRINIT_ACI 0x20 /* auto-calibrate in progress */
#define CS_ERRINIT_PUR 0x40 /* playback underrun */
#define CS_ERRINIT_COR 0x80 /* capture overrun */
#define CS_ERRINIT_ORL_VLOW 0x00 /* < -1.5 dB from full scale */
#define CS_ERRINIT_ORL_LOW 0x01 /* -1.5dB < x < 0dB */
#define CS_ERRINIT_ORL_HIGH 0x02 /* 0dB < x < 1.5dB */
#define CS_ERRINIT_ORL_VHIGH 0x03 /* > 1.5dB overrange */
#define CS_ERRINIT_ORR_VLOW 0x00 /* < -1.5 dB from full scale */
#define CS_ERRINIT_ORR_LOW 0x04 /* -1.5dB < x < 0dB */
#define CS_ERRINIT_ORR_HIGH 0x08 /* 0dB < x < 1.5dB */
#define CS_ERRINIT_ORR_VHIGH 0x0c /* > 1.5dB overrange */
/* Mode and ID: I12 */
#define CS_MODEID_ID_MASK 0x0f /* Codec ID */
#define CS_MODEID_reserved1 0x10 /* reserved */
#define CS_MODEID_reserved2 0x20 /* reserved */
#define CS_MODEID_MODE2 0x40 /* enable mode2 operation */
#define CS_MODEID_CS4231 0x0a /* 1010 == cs4231 */
/* Loopback Control: I13 */
#define CS_LOOP_LBE 0x01 /* loopback enable */
#define CS_LOOP_reserved 0x02 /* reserved */
#define CS_LOOP_LBA_MASK 0xfc /* loopback attenuation */
/* Playback Upper Base: I14 */
/* Playback Lower Base: I15 */
/* Alternate Feature Enable I: I16 */
#define CS_AFE1_DACZ 0x01 /* dac zero */
#define CS_AFE1_SPE 0x02 /* serial port enable */
#define CS_AFE1_SF_MASK 0x0c /* serial format mask */
#define CS_AFE1_PMCE 0x10 /* playback mode change enbl */
#define CS_AFE1_CMCE 0x20 /* capture mode change enable */
#define CS_AFE1_TE 0x40 /* timer enable */
#define CS_AFE1_OLB 0x80 /* output level bit */
#define CS_AFE1_SF_64E 0x00 /* 64 bit enhanced */
#define CS_AFE1_SF_64 0x04 /* 64 bit */
#define CS_AFE1_SF_32 0x08 /* 32 bit */
#define CS_AFE1_SF_reserved 0x0c /* reserved */
#define CS_AFE1_OLB_2 0x00 /* full scale 2Vpp (-3dB) */
#define CS_AFE1_OLB_28 0x80 /* full scale 2.8Vpp (0dB) */
/* Alternate Feature Enable II: I17 */
#define CS_AFE2_HPF 0x01 /* high pass filter enable */
#define CS_AFE2_XTALE 0x02 /* crystal enable */
#define CS_AFE2_APAR 0x04 /* ADPCM pb accumulator reset */
#define CS_AFE2_reserved 0x08 /* reserved */
#define CS_AFE2_TEST_MASK 0xf0 /* factory test bits */
/* Left Line Input Control: I18 */
#define CS_LLI_GAIN_MASK 0x1f /* left line mix gain mask */
#define CS_LLI_reserved1 0x20 /* reserved */
#define CS_LLI_reserved2 0x40 /* reserved */
#define CS_LLI_MUTE 0x80 /* left line mute */
/* Right Line Input Control: I19 */
#define CS_RLI_GAIN_MASK 0x1f /* right line mix gain mask */
#define CS_RLI_reserved1 0x20 /* reserved */
#define CS_RLI_reserved2 0x40 /* reserved */
#define CS_RLI_MUTE 0x80 /* right line mute */
/* Timer Lower Base: I20 */
/* Timer Upper Base: I21 */
/* Reserved: I22 */
/* Alternate Feature Enable III: I23 */
#define CS_AFE3_ACF 0x01 /* ADPCM capture freeze */
#define CS_AFE3_reserved 0xfe /* reserved bits */
/* Alternate Feature Status: I24 */
#define CS_AFS_PU 0x01 /* playback underrun */
#define CS_AFS_PO 0x02 /* playback overrun */
#define CS_AFS_CO 0x04 /* capture underrun */
#define CS_AFS_CU 0x08 /* capture overrun */
#define CS_AFS_PI 0x10 /* playback interrupt */
#define CS_AFS_CI 0x20 /* capture interrupt */
#define CS_AFS_TI 0x40 /* timer interrupt */
#define CS_AFS_reserved 0x80 /* reserved */
/* Version ID: I25 */
#define CS_VID_CHIP_MASK 0x07 /* chip id mask */
#define CS_VID_VER_MASK 0xe0 /* version number mask */
#define CS_VID_CHIP_CS4231 0x00 /* CS4231 and CS4231A */
#define CS_VID_VER_CS4231 0x80 /* CS4231 */
#define CS_VID_VER_CS4232 0x82 /* CS4232 */
#define CS_VID_VER_CS4231A 0xa0 /* CS4231A */
/* Mono Input & Output Control: I26 */
#define CS_MONO_MIA_MASK 0x0f /* mono attenuation mask */
#define CS_MONO_reserved 0x10 /* reserved */
#define CS_MONO_MBY 0x20 /* mono bypass */
#define CS_MONO_MOM 0x40 /* mono output mute */
#define CS_MONO_MIM 0x80 /* mono input mute */
/* Reserved: I27 */
/* Capture Data Format: I28 */
#define CS_CDF_reserved 0x0f /* reserved bits */
#define CS_CDF_SM 0x10 /* Stereo/mono select */
#define CS_CDF_FMT_MASK 0xe0 /* capture format mask */
#define CS_CDF_SM_MONO 0x00 /* select mono capture */
#define CS_CDF_SM_STEREO 0x10 /* select stereo capture */
#define CS_CDF_FMT_ULINEAR 0x00 /* fmt: linear 8bit unsigned */
#define CS_CDF_FMT_ULAW 0x20 /* fmt: ulaw, 8bit companded */
#define CS_CDF_FMT_LINEAR_LE 0x40 /* fmt: linear 16bit little */
#define CS_CDF_FMT_ALAW 0x60 /* fmt: alaw, 8bit companded */
#define CS_CDF_FMT_reserved1 0x80 /* fmt: reserved */
#define CS_CDF_FMT_ADPCM 0xa0 /* fmt: adpcm 4bit */
#define CS_CDF_FMT_LINEAR_BE 0xc0 /* fmt: linear 16bit big */
#define CS_CDF_FMT_reserved2 0xe0 /* fmt: reserved */
/* Reserved: I29 */
/* Capture Upper Base: I30 */
/* Capture Lower Base: I31 */
/*
* APC DMA Register definitions
*/
#define CS_DMACSR_RESET 0x00000001 /* reset */
#define CS_DMACSR_CDMA_GO 0x00000004 /* capture dma go */
#define CS_DMACSR_PDMA_GO 0x00000008 /* playback dma go */
#define CS_DMACSR_CODEC_RESET 0x00000020 /* codec reset */
#define CS_DMACSR_CPAUSE 0x00000040 /* capture dma pause */
#define CS_DMACSR_PPAUSE 0x00000080 /* playback dma pause */
#define CS_DMACSR_CMIE 0x00000100 /* capture pipe empty enb */
#define CS_DMACSR_CMI 0x00000200 /* capture pipe empty intr */
#define CS_DMACSR_CD 0x00000400 /* capture nva dirty */
#define CS_DMACSR_CM 0x00000800 /* capture data lost */
#define CS_DMACSR_PMIE 0x00001000 /* pb pipe empty intr enable */
#define CS_DMACSR_PD 0x00002000 /* pb nva dirty */
#define CS_DMACSR_PM 0x00004000 /* pb pipe empty */
#define CS_DMACSR_PMI 0x00008000 /* pb pipe empty interrupt */
#define CS_DMACSR_EIE 0x00010000 /* error interrupt enable */
#define CS_DMACSR_CIE 0x00020000 /* capture intr enable */
#define CS_DMACSR_PIE 0x00040000 /* playback intr enable */
#define CS_DMACSR_GIE 0x00080000 /* general intr enable */
#define CS_DMACSR_EI 0x00100000 /* error interrupt */
#define CS_DMACSR_CI 0x00200000 /* capture interrupt */
#define CS_DMACSR_PI 0x00400000 /* playback interrupt */
#define CS_DMACSR_GI 0x00800000 /* general interrupt */
#define CS_DMACSR_PLAY ( \
CS_DMACSR_EI | \
CS_DMACSR_GIE | \
CS_DMACSR_PIE | \
CS_DMACSR_EIE | \
CS_DMACSR_PDMA_GO | \
CS_DMACSR_PMIE )
#define CS_DMACSR_CAPTURE ( \
CS_DMACSR_EI | \
CS_DMACSR_GIE | \
CS_DMACSR_CIE | \
CS_DMACSR_EIE | \
CS_DMACSR_CDMA_GO )
#define CS_DMACSR_PLAY_PAUSE (~( \
CS_DMACSR_PPAUSE | \
CS_DMACSR_GI | \
CS_DMACSR_PI | \
CS_DMACSR_CI | \
CS_DMACSR_EI | \
CS_DMACSR_PMI | \
CS_DMACSR_PMIE | \
CS_DMACSR_CMI | \
CS_DMACSR_CMIE ) )
#define CS_DMACSR_CAPTURE_PAUSE (~( \
CS_DMACSR_PPAUSE | \
CS_DMACSR_GI | \
CS_DMACSR_PI | \
CS_DMACSR_CI | \
CS_DMACSR_EI | \
CS_DMACSR_PMI | \
CS_DMACSR_PMIE | \
CS_DMACSR_CMI | \
CS_DMACSR_CMIE ) )
#define CS_DMACSR_INTR_MASK ( \
CS_DMACSR_GI | \
CS_DMACSR_PI | \
CS_DMACSR_CI | \
CS_DMACSR_EI | \
CS_DMACSR_PMI | \
CS_DMACSR_CMI )
|