summaryrefslogtreecommitdiffstats
path: root/sys/dev/sound/pci/cs4281.h
blob: c7b3799ab89db2ae31619eb82e792e402dc9d37b (plain)
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
/*-
 * Copyright (c) 2000 Orion Hodson <O.Hodson@cs.ucl.ac.uk>
 * 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.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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, WHETHERIN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _CS4281_H_
#define _CS4281_H_

#define CS4281_PCI_ID 	0x60051013

/* Ball Parks */
#define CS4281PCI_BA0_SIZE 	4096
#define CS4281PCI_BA1_SIZE	65536

/* Register values */
#define CS4281PCI_HISR		0x000
#	define CS4281PCI_HISR_DMAI		0x00040000
#	define CS4281PCI_HISR_DMA(x)		(0x0100 << (x))

#define CS4281PCI_HICR		0x008
#	define CS4281PCI_HICR_EOI		0x00000003

#define CS4281PCI_HIMR		0x00c
#	define CS4281PCI_HIMR_DMAI		0x00040000
#	define CS4281PCI_HIMR_DMA(x)		(0x0100 << (x))

#define CS4281PCI_IIER		0x010

#define CS4281PCI_HDSR(x)	(0x0f0 + (x)*0x004)
#	define CS4281PCI_HDSR_CH1P		0x02000000
#	define CS4281PCI_HDSR_CH2P		0x01000000
#	define CS4281PCI_HDSR_HDTC		0x00020000
#	define CS4281PCI_HDSR_DTC		0x00010000
#	define CS4281PCI_HDSR_DRUN		0x00008000
#	define CS4281PCI_HDSR_RQ		0x00000080

#define CS4281PCI_DCA(x)	(0x110 + (x) * 0x010)
#define CS4281PCI_DCC(x)	(0x114 + (x) * 0x010)
#define CS4281PCI_DBA(x)	(0x118 + (x) * 0x010)
#define CS4281PCI_DBC(x)	(0x11c + (x) * 0x010)

#define CS4281PCI_DMR(x)	(0x150 + (x) * 0x008)
#	define CS4281PCI_DMR_DMA		0x20000000
#	define CS4281PCI_DMR_POLL		0x10000000
#	define CS4281PCI_DMR_TBC		0x02000000
#	define CS4281PCI_DMR_CBC		0x01000000
#	define CS4281PCI_DMR_SWAPC		0x00400000
#	define CS4281PCI_DMR_SIZE20		0x00100000
#	define CS4281PCI_DMR_USIGN		0x00080000
#	define CS4281PCI_DMR_BEND		0x00040000
#	define CS4281PCI_DMR_MONO		0x00020000
#	define CS4281PCI_DMR_SIZE8		0x00010000
#	define CS4281PCI_DMR_TYPE_DEMAND	0x00000000
#	define CS4281PCI_DMR_TYPE_SINGLE	0x00000040
#	define CS4281PCI_DMR_TYPE_BLOCK		0x00000080
#	define CS4281PCI_DMR_TYPE_CASCADE	0x000000c0
#	define CS4281PCI_DMR_DEC		0x00000020
#	define CS4281PCI_DMR_AUTO		0x00000010
#	define CS4281PCI_DMR_TR_PLAY		0x00000008
#	define CS4281PCI_DMR_TR_REC		0x00000004

#define CS4281PCI_DCR(x)	(0x154 + (x) * 0x008)
#	define CS4281PCI_DCR_HTCIE		0x00020000
#	define CS4281PCI_DCR_TCIE		0x00010000
#	define CS4281PCI_DCR_MSK		0x00000001

#define CS4281PCI_FCR(x)	(0x180 + (x) * 0x004)
#	define CS4281PCI_FCR_FEN		0x80000000
#	define CS4281PCI_FCR_DACZ		0x40000000
#	define CS4281PCI_FCR_PSH		0x20000000
#	define CS4281PCI_FCR_RS(x)		((x) << 24)
#	define CS4281PCI_FCR_LS(x)		((x) << 16)
#	define CS4281PCI_FCR_SZ(x)		((x) << 8)
#	define CS4281PCI_FCR_OF(x)		(x)

#define CS4281PCI_FPDR(x)	(0x190 + (x) * 0x004)

#define CS4281PCI_FCHS		0x20c
#define CS4281PCI_FSIC(x)	(0x210 + (x) * 0x004)

#define CS4281PCI_PMCS		0x344
#	define CS4281PCI_PMCS_PS_MASK		0x00000003
#define CS4281PCI_PMCS_OFFSET	(CS4281PCI_PMCS - 0x300)

#define CS4281PCI_CWPR		0x3e0
#	define CS4281PCI_CWPR_MAGIC		0x00004281

#define CS4281PCI_EPPMC		0x3e4
#	define CS4281PCI_EPPMC_FPDN		0x00004000
#define CS4281PCI_GPIOR		0x3e8

#define CS4281PCI_SPMC		0x3ec
#	define CS4281PCI_SPMC_RSTN		0x00000001
#	define CS4281PCI_SPMC_ASYN		0x00000002
#	define CS4281PCI_SPMC_WUP1		0x00000004
#	define CS4281PCI_SPMC_WUP2		0x00000008
#	define CS4281PCI_SPMC_ASDO		0x00000080
#	define CS4281PCI_SPMC_ASDI2E		0x00000100
#	define CS4281PCI_SPMC_EESPD		0x00000200
#	define CS4281PCI_SPMC_GISPEN		0x00004000
#	define CS4281PCI_SPMC_GIPPEN		0x00008000

#define CS4281PCI_CFLR		0x3f0
#define CS4281PCI_IISR		0x3f4
#define CS4281PCI_TMS		0x3f8
#define CS4281PCI_SSVID		0x3fc

#define CS4281PCI_CLKCR1	0x400
#	define CS_4281PCI_CLKCR1_DLLSS_MASK	0x0000000c
#	define CS_4281PCI_CLKCR1_DLLSS_AC97	0x00000004
#	define CS4281PCI_CLKCR1_DLLP		0x00000010
#	define CS4281PCI_CLKCR1_SWCE		0x00000020
#	define CS4281PCI_CLKCR1_DLLOS		0x00000040
#	define CS4281PCI_CLKCR1_CKRA		0x00010000
#	define CS4281PCI_CLKCR1_DLLRDY		0x01000000
#	define CS4281PCI_CLKCR1_CLKON		0x02000000

#define CS4281PCI_FRR		0x410

#define CS4281PCI_SLT12O	0x41c
#define CS4281PCI_SERMC		0x420
#	define CS4281PCI_SERMC_PTC_AC97		0x00000002
#	define CS4281PCI_SERMC_PTC_MASK		0x0000000e
#	define CS4281PCI_SERMC_ODSEN1		0x01000000
#	define CS4281PCI_SERMC_ODSEN2		0x02000000
#define CS4281PCI_SERC1		0x428
#define CS4281PCI_SERC2		0x42c

#define CS4281PCI_SLT12M	0x45c
#define CS4281PCI_ACCTL		0x460
#	define CS4281PCI_ACCTL_ESYN		0x00000002
#	define CS4281PCI_ACCTL_VFRM		0x00000004
#	define CS4281PCI_ACCTL_DCV		0x00000008
#	define CS4281PCI_ACCTL_CRW		0x00000010
#	define CS4281PCI_ACCTL_TC		0x00000040

#define CS4281PCI_ACSTS		0x464
#	define CS4281PCI_ACSTS_CRDY		0x00000001
#	define CS4281PCI_ACSTS_VSTS		0x00000002

#define CS4281PCI_ACOSV		0x468
#	define CS4281PCI_ACOSV_SLV(x)		(1 << (x - 3))
#define CS4281PCI_ACCAD		0x46c
#define CS4281PCI_ACCDA		0x470
#define CS4281PCI_ACISV		0x474
#	define CS4281PCI_ACISV_ISV(x)		(1 << (x - 3))
#define CS4281PCI_ACSAD		0x478
#define CS4281PCI_ACSDA		0x47c
#define CS4281PCI_JSPT		0x480
#define CS4281PCI_JSCTL		0x484

#define CS4281PCI_SSPM		0x740
#	define CS4281PCI_SSPM_MIXEN		0x00000040
#	define CS4281PCI_SSPM_CSRCEN		0x00000020
#	define CS4281PCI_SSPM_PSRCEN		0x00000010
#	define CS4281PCI_SSPM_JSEN		0x00000008
#	define CS4281PCI_SSPM_ACLEN		0x00000004
#	define CS4281PCI_SSPM_FMEN		0x00000002

#define CS4281PCI_DACSR		0x744
#define CS4281PCI_ADCSR		0x748
#define CS4281PCI_SSCR		0x74c

#define CS4281PCI_SRCSA		0x75c
#	define CS4281PCI_SRCSA_PLSS(x)		(x)
#	define CS4281PCI_SRCSA_PRSS(x)		((x) << 8)
#	define CS4281PCI_SRCSA_CLSS(x)		((x) << 16)
#	define CS4281PCI_SRCSA_CRSS(x)		((x) << 24)

#define CS4281PCI_PPLVC		0x760
#define CS4281PCI_PPRVC		0x764

/* Slot definitions (minimal) */
#define CS4281PCI_LPCM_PLAY_SLOT	0x00
#define CS4281PCI_RPCM_PLAY_SLOT	0x01

#define CS4281PCI_LPCM_REC_SLOT		0x0a
#define CS4281PCI_RPCM_REC_SLOT		0x0b

#define CS4281PCI_DISABLED_SLOT		0x1f

#endif /* _CS4281_H_ */
OpenPOWER on IntegriCloud