summaryrefslogtreecommitdiff
path: root/sound/pci/oxygen/wm8776.h
blob: 1a96f56157279c5c3a7269db7c9a3aaae5d8af08 (plain) (blame)
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
#ifndef WM8776_H_INCLUDED
#define WM8776_H_INCLUDED

/*
 * the following register names are from:
 * wm8776.h  --  WM8776 ASoC driver
 *
 * Copyright 2009 Wolfson Microelectronics plc
 *
 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#define WM8776_HPLVOL		0x00
#define WM8776_HPRVOL		0x01
#define WM8776_HPMASTER		0x02
#define WM8776_DACLVOL		0x03
#define WM8776_DACRVOL		0x04
#define WM8776_DACMASTER	0x05
#define WM8776_PHASESWAP	0x06
#define WM8776_DACCTRL1		0x07
#define WM8776_DACMUTE		0x08
#define WM8776_DACCTRL2		0x09
#define WM8776_DACIFCTRL	0x0a
#define WM8776_ADCIFCTRL	0x0b
#define WM8776_MSTRCTRL		0x0c
#define WM8776_PWRDOWN		0x0d
#define WM8776_ADCLVOL		0x0e
#define WM8776_ADCRVOL		0x0f
#define WM8776_ALCCTRL1		0x10
#define WM8776_ALCCTRL2		0x11
#define WM8776_ALCCTRL3		0x12
#define WM8776_NOISEGATE	0x13
#define WM8776_LIMITER		0x14
#define WM8776_ADCMUX		0x15
#define WM8776_OUTMUX		0x16
#define WM8776_RESET		0x17


/* HPLVOL/HPRVOL/HPMASTER */
#define WM8776_HPATT_MASK	0x07f
#define WM8776_HPZCEN		0x080
#define WM8776_UPDATE		0x100

/* DACLVOL/DACRVOL/DACMASTER */
#define WM8776_DATT_MASK	0x0ff
/*#define WM8776_UPDATE		0x100*/

/* PHASESWAP */
#define WM8776_PH_MASK		0x003

/* DACCTRL1 */
#define WM8776_DZCEN		0x001
#define WM8776_ATC		0x002
#define WM8776_IZD		0x004
#define WM8776_TOD		0x008
#define WM8776_PL_LEFT_MASK	0x030
#define WM8776_PL_LEFT_MUTE	0x000
#define WM8776_PL_LEFT_LEFT	0x010
#define WM8776_PL_LEFT_RIGHT	0x020
#define WM8776_PL_LEFT_LRMIX	0x030
#define WM8776_PL_RIGHT_MASK	0x0c0
#define WM8776_PL_RIGHT_MUTE	0x000
#define WM8776_PL_RIGHT_LEFT	0x040
#define WM8776_PL_RIGHT_RIGHT	0x080
#define WM8776_PL_RIGHT_LRMIX	0x0c0

/* DACMUTE */
#define WM8776_DMUTE		0x001

/* DACCTRL2 */
#define WM8776_DEEMPH		0x001
#define WM8776_DZFM_MASK	0x006
#define WM8776_DZFM_NONE	0x000
#define WM8776_DZFM_LR		0x002
#define WM8776_DZFM_BOTH	0x004
#define WM8776_DZFM_EITHER	0x006

/* DACIFCTRL */
#define WM8776_DACFMT_MASK	0x003
#define WM8776_DACFMT_RJUST	0x000
#define WM8776_DACFMT_LJUST	0x001
#define WM8776_DACFMT_I2S	0x002
#define WM8776_DACFMT_DSP	0x003
#define WM8776_DACLRP		0x004
#define WM8776_DACBCP		0x008
#define WM8776_DACWL_MASK	0x030
#define WM8776_DACWL_16		0x000
#define WM8776_DACWL_20		0x010
#define WM8776_DACWL_24		0x020
#define WM8776_DACWL_32		0x030

/* ADCIFCTRL */
#define WM8776_ADCFMT_MASK	0x003
#define WM8776_ADCFMT_RJUST	0x000
#define WM8776_ADCFMT_LJUST	0x001
#define WM8776_ADCFMT_I2S	0x002
#define WM8776_ADCFMT_DSP	0x003
#define WM8776_ADCLRP		0x004
#define WM8776_ADCBCP		0x008
#define WM8776_ADCWL_MASK	0x030
#define WM8776_ADCWL_16		0x000
#define WM8776_ADCWL_20		0x010
#define WM8776_ADCWL_24		0x020
#define WM8776_ADCWL_32		0x030
#define WM8776_ADCMCLK		0x040
#define WM8776_ADCHPD		0x100

/* MSTRCTRL */
#define WM8776_ADCRATE_MASK	0x007
#define WM8776_ADCRATE_256	0x002
#define WM8776_ADCRATE_384	0x003
#define WM8776_ADCRATE_512	0x004
#define WM8776_ADCRATE_768	0x005
#define WM8776_ADCOSR		0x008
#define WM8776_DACRATE_MASK	0x070
#define WM8776_DACRATE_128	0x000
#define WM8776_DACRATE_192	0x010
#define WM8776_DACRATE_256	0x020
#define WM8776_DACRATE_384	0x030
#define WM8776_DACRATE_512	0x040
#define WM8776_DACRATE_768	0x050
#define WM8776_DACMS		0x080
#define WM8776_ADCMS		0x100

/* PWRDOWN */
#define WM8776_PDWN		0x001
#define WM8776_ADCPD		0x002
#define WM8776_DACPD		0x004
#define WM8776_HPPD		0x008
#define WM8776_AINPD		0x040

/* ADCLVOL/ADCRVOL */
#define WM8776_AGMASK		0x0ff
#define WM8776_ZCA		0x100

/* ALCCTRL1 */
#define WM8776_LCT_MASK		0x00f
#define WM8776_MAXGAIN_MASK	0x070
#define WM8776_LCSEL_MASK	0x180
#define WM8776_LCSEL_LIMITER	0x000
#define WM8776_LCSEL_ALC_RIGHT 0x080
#define WM8776_LCSEL_ALC_LEFT	0x100
#define WM8776_LCSEL_ALC_STEREO	0x180

/* ALCCTRL2 */
#define WM8776_HLD_MASK		0x00f
#define WM8776_ALCZC		0x080
#define WM8776_LCEN		0x100

/* ALCCTRL3 */
#define WM8776_ATK_MASK		0x00f
#define WM8776_DCY_MASK		0x0f0

/* NOISEGATE */
#define WM8776_NGAT		0x001
#define WM8776_NGTH_MASK	0x01c

/* LIMITER */
#define WM8776_MAXATTEN_MASK	0x00f
#define WM8776_TRANWIN_MASK	0x070

/* ADCMUX */
#define WM8776_AMX_MASK		0x01f
#define WM8776_MUTERA		0x040
#define WM8776_MUTELA		0x080
#define WM8776_LRBOTH		0x100

/* OUTMUX */
#define WM8776_MX_DAC		0x001
#define WM8776_MX_AUX		0x002
#define WM8776_MX_BYPASS	0x004

#endif