hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
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
/* SPDX-License-Identifier: GPL-2.0-only */
#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>
 */
 
#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