xref: /openbmc/linux/sound/soc/codecs/wm8955.h (revision b35a28af)
1b35a28afSMark Brown /*
2b35a28afSMark Brown  * wm8955.h  --  WM8904 ASoC driver
3b35a28afSMark Brown  *
4b35a28afSMark Brown  * Copyright 2009 Wolfson Microelectronics, plc
5b35a28afSMark Brown  *
6b35a28afSMark Brown  * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
7b35a28afSMark Brown  *
8b35a28afSMark Brown  * This program is free software; you can redistribute it and/or modify
9b35a28afSMark Brown  * it under the terms of the GNU General Public License version 2 as
10b35a28afSMark Brown  * published by the Free Software Foundation.
11b35a28afSMark Brown  */
12b35a28afSMark Brown 
13b35a28afSMark Brown #ifndef _WM8955_H
14b35a28afSMark Brown #define _WM8955_H
15b35a28afSMark Brown 
16b35a28afSMark Brown #define WM8955_CLK_MCLK 1
17b35a28afSMark Brown 
18b35a28afSMark Brown extern struct snd_soc_dai wm8955_dai;
19b35a28afSMark Brown extern struct snd_soc_codec_device soc_codec_dev_wm8955;
20b35a28afSMark Brown 
21b35a28afSMark Brown /*
22b35a28afSMark Brown  * Register values.
23b35a28afSMark Brown  */
24b35a28afSMark Brown #define WM8955_LOUT1_VOLUME                     0x02
25b35a28afSMark Brown #define WM8955_ROUT1_VOLUME                     0x03
26b35a28afSMark Brown #define WM8955_DAC_CONTROL                      0x05
27b35a28afSMark Brown #define WM8955_AUDIO_INTERFACE                  0x07
28b35a28afSMark Brown #define WM8955_SAMPLE_RATE                      0x08
29b35a28afSMark Brown #define WM8955_LEFT_DAC_VOLUME                  0x0A
30b35a28afSMark Brown #define WM8955_RIGHT_DAC_VOLUME                 0x0B
31b35a28afSMark Brown #define WM8955_BASS_CONTROL                     0x0C
32b35a28afSMark Brown #define WM8955_TREBLE_CONTROL                   0x0D
33b35a28afSMark Brown #define WM8955_RESET                            0x0F
34b35a28afSMark Brown #define WM8955_ADDITIONAL_CONTROL_1             0x17
35b35a28afSMark Brown #define WM8955_ADDITIONAL_CONTROL_2             0x18
36b35a28afSMark Brown #define WM8955_POWER_MANAGEMENT_1               0x19
37b35a28afSMark Brown #define WM8955_POWER_MANAGEMENT_2               0x1A
38b35a28afSMark Brown #define WM8955_ADDITIONAL_CONTROL_3             0x1B
39b35a28afSMark Brown #define WM8955_LEFT_OUT_MIX_1                   0x22
40b35a28afSMark Brown #define WM8955_LEFT_OUT_MIX_2                   0x23
41b35a28afSMark Brown #define WM8955_RIGHT_OUT_MIX_1                  0x24
42b35a28afSMark Brown #define WM8955_RIGHT_OUT_MIX_2                  0x25
43b35a28afSMark Brown #define WM8955_MONO_OUT_MIX_1                   0x26
44b35a28afSMark Brown #define WM8955_MONO_OUT_MIX_2                   0x27
45b35a28afSMark Brown #define WM8955_LOUT2_VOLUME                     0x28
46b35a28afSMark Brown #define WM8955_ROUT2_VOLUME                     0x29
47b35a28afSMark Brown #define WM8955_MONOOUT_VOLUME                   0x2A
48b35a28afSMark Brown #define WM8955_CLOCKING_PLL                     0x2B
49b35a28afSMark Brown #define WM8955_PLL_CONTROL_1                    0x2C
50b35a28afSMark Brown #define WM8955_PLL_CONTROL_2                    0x2D
51b35a28afSMark Brown #define WM8955_PLL_CONTROL_3                    0x2E
52b35a28afSMark Brown #define WM8955_PLL_CONTROL_4                    0x3B
53b35a28afSMark Brown 
54b35a28afSMark Brown #define WM8955_REGISTER_COUNT                   29
55b35a28afSMark Brown #define WM8955_MAX_REGISTER                     0x3B
56b35a28afSMark Brown 
57b35a28afSMark Brown /*
58b35a28afSMark Brown  * Field Definitions.
59b35a28afSMark Brown  */
60b35a28afSMark Brown 
61b35a28afSMark Brown /*
62b35a28afSMark Brown  * R2 (0x02) - LOUT1 volume
63b35a28afSMark Brown  */
64b35a28afSMark Brown #define WM8955_LO1VU                            0x0100  /* LO1VU */
65b35a28afSMark Brown #define WM8955_LO1VU_MASK                       0x0100  /* LO1VU */
66b35a28afSMark Brown #define WM8955_LO1VU_SHIFT                           8  /* LO1VU */
67b35a28afSMark Brown #define WM8955_LO1VU_WIDTH                           1  /* LO1VU */
68b35a28afSMark Brown #define WM8955_LO1ZC                            0x0080  /* LO1ZC */
69b35a28afSMark Brown #define WM8955_LO1ZC_MASK                       0x0080  /* LO1ZC */
70b35a28afSMark Brown #define WM8955_LO1ZC_SHIFT                           7  /* LO1ZC */
71b35a28afSMark Brown #define WM8955_LO1ZC_WIDTH                           1  /* LO1ZC */
72b35a28afSMark Brown #define WM8955_LOUTVOL_MASK                     0x007F  /* LOUTVOL - [6:0] */
73b35a28afSMark Brown #define WM8955_LOUTVOL_SHIFT                         0  /* LOUTVOL - [6:0] */
74b35a28afSMark Brown #define WM8955_LOUTVOL_WIDTH                         7  /* LOUTVOL - [6:0] */
75b35a28afSMark Brown 
76b35a28afSMark Brown /*
77b35a28afSMark Brown  * R3 (0x03) - ROUT1 volume
78b35a28afSMark Brown  */
79b35a28afSMark Brown #define WM8955_RO1VU                            0x0100  /* RO1VU */
80b35a28afSMark Brown #define WM8955_RO1VU_MASK                       0x0100  /* RO1VU */
81b35a28afSMark Brown #define WM8955_RO1VU_SHIFT                           8  /* RO1VU */
82b35a28afSMark Brown #define WM8955_RO1VU_WIDTH                           1  /* RO1VU */
83b35a28afSMark Brown #define WM8955_RO1ZC                            0x0080  /* RO1ZC */
84b35a28afSMark Brown #define WM8955_RO1ZC_MASK                       0x0080  /* RO1ZC */
85b35a28afSMark Brown #define WM8955_RO1ZC_SHIFT                           7  /* RO1ZC */
86b35a28afSMark Brown #define WM8955_RO1ZC_WIDTH                           1  /* RO1ZC */
87b35a28afSMark Brown #define WM8955_ROUTVOL_MASK                     0x007F  /* ROUTVOL - [6:0] */
88b35a28afSMark Brown #define WM8955_ROUTVOL_SHIFT                         0  /* ROUTVOL - [6:0] */
89b35a28afSMark Brown #define WM8955_ROUTVOL_WIDTH                         7  /* ROUTVOL - [6:0] */
90b35a28afSMark Brown 
91b35a28afSMark Brown /*
92b35a28afSMark Brown  * R5 (0x05) - DAC Control
93b35a28afSMark Brown  */
94b35a28afSMark Brown #define WM8955_DAT                              0x0080  /* DAT */
95b35a28afSMark Brown #define WM8955_DAT_MASK                         0x0080  /* DAT */
96b35a28afSMark Brown #define WM8955_DAT_SHIFT                             7  /* DAT */
97b35a28afSMark Brown #define WM8955_DAT_WIDTH                             1  /* DAT */
98b35a28afSMark Brown #define WM8955_DACMU                            0x0008  /* DACMU */
99b35a28afSMark Brown #define WM8955_DACMU_MASK                       0x0008  /* DACMU */
100b35a28afSMark Brown #define WM8955_DACMU_SHIFT                           3  /* DACMU */
101b35a28afSMark Brown #define WM8955_DACMU_WIDTH                           1  /* DACMU */
102b35a28afSMark Brown #define WM8955_DEEMPH_MASK                      0x0006  /* DEEMPH - [2:1] */
103b35a28afSMark Brown #define WM8955_DEEMPH_SHIFT                          1  /* DEEMPH - [2:1] */
104b35a28afSMark Brown #define WM8955_DEEMPH_WIDTH                          2  /* DEEMPH - [2:1] */
105b35a28afSMark Brown 
106b35a28afSMark Brown /*
107b35a28afSMark Brown  * R7 (0x07) - Audio Interface
108b35a28afSMark Brown  */
109b35a28afSMark Brown #define WM8955_BCLKINV                          0x0080  /* BCLKINV */
110b35a28afSMark Brown #define WM8955_BCLKINV_MASK                     0x0080  /* BCLKINV */
111b35a28afSMark Brown #define WM8955_BCLKINV_SHIFT                         7  /* BCLKINV */
112b35a28afSMark Brown #define WM8955_BCLKINV_WIDTH                         1  /* BCLKINV */
113b35a28afSMark Brown #define WM8955_MS                               0x0040  /* MS */
114b35a28afSMark Brown #define WM8955_MS_MASK                          0x0040  /* MS */
115b35a28afSMark Brown #define WM8955_MS_SHIFT                              6  /* MS */
116b35a28afSMark Brown #define WM8955_MS_WIDTH                              1  /* MS */
117b35a28afSMark Brown #define WM8955_LRSWAP                           0x0020  /* LRSWAP */
118b35a28afSMark Brown #define WM8955_LRSWAP_MASK                      0x0020  /* LRSWAP */
119b35a28afSMark Brown #define WM8955_LRSWAP_SHIFT                          5  /* LRSWAP */
120b35a28afSMark Brown #define WM8955_LRSWAP_WIDTH                          1  /* LRSWAP */
121b35a28afSMark Brown #define WM8955_LRP                              0x0010  /* LRP */
122b35a28afSMark Brown #define WM8955_LRP_MASK                         0x0010  /* LRP */
123b35a28afSMark Brown #define WM8955_LRP_SHIFT                             4  /* LRP */
124b35a28afSMark Brown #define WM8955_LRP_WIDTH                             1  /* LRP */
125b35a28afSMark Brown #define WM8955_WL_MASK                          0x000C  /* WL - [3:2] */
126b35a28afSMark Brown #define WM8955_WL_SHIFT                              2  /* WL - [3:2] */
127b35a28afSMark Brown #define WM8955_WL_WIDTH                              2  /* WL - [3:2] */
128b35a28afSMark Brown #define WM8955_FORMAT_MASK                      0x0003  /* FORMAT - [1:0] */
129b35a28afSMark Brown #define WM8955_FORMAT_SHIFT                          0  /* FORMAT - [1:0] */
130b35a28afSMark Brown #define WM8955_FORMAT_WIDTH                          2  /* FORMAT - [1:0] */
131b35a28afSMark Brown 
132b35a28afSMark Brown /*
133b35a28afSMark Brown  * R8 (0x08) - Sample Rate
134b35a28afSMark Brown  */
135b35a28afSMark Brown #define WM8955_BCLKDIV2                         0x0080  /* BCLKDIV2 */
136b35a28afSMark Brown #define WM8955_BCLKDIV2_MASK                    0x0080  /* BCLKDIV2 */
137b35a28afSMark Brown #define WM8955_BCLKDIV2_SHIFT                        7  /* BCLKDIV2 */
138b35a28afSMark Brown #define WM8955_BCLKDIV2_WIDTH                        1  /* BCLKDIV2 */
139b35a28afSMark Brown #define WM8955_MCLKDIV2                         0x0040  /* MCLKDIV2 */
140b35a28afSMark Brown #define WM8955_MCLKDIV2_MASK                    0x0040  /* MCLKDIV2 */
141b35a28afSMark Brown #define WM8955_MCLKDIV2_SHIFT                        6  /* MCLKDIV2 */
142b35a28afSMark Brown #define WM8955_MCLKDIV2_WIDTH                        1  /* MCLKDIV2 */
143b35a28afSMark Brown #define WM8955_SR_MASK                          0x003E  /* SR - [5:1] */
144b35a28afSMark Brown #define WM8955_SR_SHIFT                              1  /* SR - [5:1] */
145b35a28afSMark Brown #define WM8955_SR_WIDTH                              5  /* SR - [5:1] */
146b35a28afSMark Brown #define WM8955_USB                              0x0001  /* USB */
147b35a28afSMark Brown #define WM8955_USB_MASK                         0x0001  /* USB */
148b35a28afSMark Brown #define WM8955_USB_SHIFT                             0  /* USB */
149b35a28afSMark Brown #define WM8955_USB_WIDTH                             1  /* USB */
150b35a28afSMark Brown 
151b35a28afSMark Brown /*
152b35a28afSMark Brown  * R10 (0x0A) - Left DAC volume
153b35a28afSMark Brown  */
154b35a28afSMark Brown #define WM8955_LDVU                             0x0100  /* LDVU */
155b35a28afSMark Brown #define WM8955_LDVU_MASK                        0x0100  /* LDVU */
156b35a28afSMark Brown #define WM8955_LDVU_SHIFT                            8  /* LDVU */
157b35a28afSMark Brown #define WM8955_LDVU_WIDTH                            1  /* LDVU */
158b35a28afSMark Brown #define WM8955_LDACVOL_MASK                     0x00FF  /* LDACVOL - [7:0] */
159b35a28afSMark Brown #define WM8955_LDACVOL_SHIFT                         0  /* LDACVOL - [7:0] */
160b35a28afSMark Brown #define WM8955_LDACVOL_WIDTH                         8  /* LDACVOL - [7:0] */
161b35a28afSMark Brown 
162b35a28afSMark Brown /*
163b35a28afSMark Brown  * R11 (0x0B) - Right DAC volume
164b35a28afSMark Brown  */
165b35a28afSMark Brown #define WM8955_RDVU                             0x0100  /* RDVU */
166b35a28afSMark Brown #define WM8955_RDVU_MASK                        0x0100  /* RDVU */
167b35a28afSMark Brown #define WM8955_RDVU_SHIFT                            8  /* RDVU */
168b35a28afSMark Brown #define WM8955_RDVU_WIDTH                            1  /* RDVU */
169b35a28afSMark Brown #define WM8955_RDACVOL_MASK                     0x00FF  /* RDACVOL - [7:0] */
170b35a28afSMark Brown #define WM8955_RDACVOL_SHIFT                         0  /* RDACVOL - [7:0] */
171b35a28afSMark Brown #define WM8955_RDACVOL_WIDTH                         8  /* RDACVOL - [7:0] */
172b35a28afSMark Brown 
173b35a28afSMark Brown /*
174b35a28afSMark Brown  * R12 (0x0C) - Bass control
175b35a28afSMark Brown  */
176b35a28afSMark Brown #define WM8955_BB                               0x0080  /* BB */
177b35a28afSMark Brown #define WM8955_BB_MASK                          0x0080  /* BB */
178b35a28afSMark Brown #define WM8955_BB_SHIFT                              7  /* BB */
179b35a28afSMark Brown #define WM8955_BB_WIDTH                              1  /* BB */
180b35a28afSMark Brown #define WM8955_BC                               0x0040  /* BC */
181b35a28afSMark Brown #define WM8955_BC_MASK                          0x0040  /* BC */
182b35a28afSMark Brown #define WM8955_BC_SHIFT                              6  /* BC */
183b35a28afSMark Brown #define WM8955_BC_WIDTH                              1  /* BC */
184b35a28afSMark Brown #define WM8955_BASS_MASK                        0x000F  /* BASS - [3:0] */
185b35a28afSMark Brown #define WM8955_BASS_SHIFT                            0  /* BASS - [3:0] */
186b35a28afSMark Brown #define WM8955_BASS_WIDTH                            4  /* BASS - [3:0] */
187b35a28afSMark Brown 
188b35a28afSMark Brown /*
189b35a28afSMark Brown  * R13 (0x0D) - Treble control
190b35a28afSMark Brown  */
191b35a28afSMark Brown #define WM8955_TC                               0x0040  /* TC */
192b35a28afSMark Brown #define WM8955_TC_MASK                          0x0040  /* TC */
193b35a28afSMark Brown #define WM8955_TC_SHIFT                              6  /* TC */
194b35a28afSMark Brown #define WM8955_TC_WIDTH                              1  /* TC */
195b35a28afSMark Brown #define WM8955_TRBL_MASK                        0x000F  /* TRBL - [3:0] */
196b35a28afSMark Brown #define WM8955_TRBL_SHIFT                            0  /* TRBL - [3:0] */
197b35a28afSMark Brown #define WM8955_TRBL_WIDTH                            4  /* TRBL - [3:0] */
198b35a28afSMark Brown 
199b35a28afSMark Brown /*
200b35a28afSMark Brown  * R15 (0x0F) - Reset
201b35a28afSMark Brown  */
202b35a28afSMark Brown #define WM8955_RESET_MASK                       0x01FF  /* RESET - [8:0] */
203b35a28afSMark Brown #define WM8955_RESET_SHIFT                           0  /* RESET - [8:0] */
204b35a28afSMark Brown #define WM8955_RESET_WIDTH                           9  /* RESET - [8:0] */
205b35a28afSMark Brown 
206b35a28afSMark Brown /*
207b35a28afSMark Brown  * R23 (0x17) - Additional control (1)
208b35a28afSMark Brown  */
209b35a28afSMark Brown #define WM8955_TSDEN                            0x0100  /* TSDEN */
210b35a28afSMark Brown #define WM8955_TSDEN_MASK                       0x0100  /* TSDEN */
211b35a28afSMark Brown #define WM8955_TSDEN_SHIFT                           8  /* TSDEN */
212b35a28afSMark Brown #define WM8955_TSDEN_WIDTH                           1  /* TSDEN */
213b35a28afSMark Brown #define WM8955_VSEL_MASK                        0x00C0  /* VSEL - [7:6] */
214b35a28afSMark Brown #define WM8955_VSEL_SHIFT                            6  /* VSEL - [7:6] */
215b35a28afSMark Brown #define WM8955_VSEL_WIDTH                            2  /* VSEL - [7:6] */
216b35a28afSMark Brown #define WM8955_DMONOMIX_MASK                    0x0030  /* DMONOMIX - [5:4] */
217b35a28afSMark Brown #define WM8955_DMONOMIX_SHIFT                        4  /* DMONOMIX - [5:4] */
218b35a28afSMark Brown #define WM8955_DMONOMIX_WIDTH                        2  /* DMONOMIX - [5:4] */
219b35a28afSMark Brown #define WM8955_DACINV                           0x0002  /* DACINV */
220b35a28afSMark Brown #define WM8955_DACINV_MASK                      0x0002  /* DACINV */
221b35a28afSMark Brown #define WM8955_DACINV_SHIFT                          1  /* DACINV */
222b35a28afSMark Brown #define WM8955_DACINV_WIDTH                          1  /* DACINV */
223b35a28afSMark Brown #define WM8955_TOEN                             0x0001  /* TOEN */
224b35a28afSMark Brown #define WM8955_TOEN_MASK                        0x0001  /* TOEN */
225b35a28afSMark Brown #define WM8955_TOEN_SHIFT                            0  /* TOEN */
226b35a28afSMark Brown #define WM8955_TOEN_WIDTH                            1  /* TOEN */
227b35a28afSMark Brown 
228b35a28afSMark Brown /*
229b35a28afSMark Brown  * R24 (0x18) - Additional control (2)
230b35a28afSMark Brown  */
231b35a28afSMark Brown #define WM8955_OUT3SW_MASK                      0x0180  /* OUT3SW - [8:7] */
232b35a28afSMark Brown #define WM8955_OUT3SW_SHIFT                          7  /* OUT3SW - [8:7] */
233b35a28afSMark Brown #define WM8955_OUT3SW_WIDTH                          2  /* OUT3SW - [8:7] */
234b35a28afSMark Brown #define WM8955_ROUT2INV                         0x0010  /* ROUT2INV */
235b35a28afSMark Brown #define WM8955_ROUT2INV_MASK                    0x0010  /* ROUT2INV */
236b35a28afSMark Brown #define WM8955_ROUT2INV_SHIFT                        4  /* ROUT2INV */
237b35a28afSMark Brown #define WM8955_ROUT2INV_WIDTH                        1  /* ROUT2INV */
238b35a28afSMark Brown #define WM8955_DACOSR                           0x0001  /* DACOSR */
239b35a28afSMark Brown #define WM8955_DACOSR_MASK                      0x0001  /* DACOSR */
240b35a28afSMark Brown #define WM8955_DACOSR_SHIFT                          0  /* DACOSR */
241b35a28afSMark Brown #define WM8955_DACOSR_WIDTH                          1  /* DACOSR */
242b35a28afSMark Brown 
243b35a28afSMark Brown /*
244b35a28afSMark Brown  * R25 (0x19) - Power Management (1)
245b35a28afSMark Brown  */
246b35a28afSMark Brown #define WM8955_VMIDSEL_MASK                     0x0180  /* VMIDSEL - [8:7] */
247b35a28afSMark Brown #define WM8955_VMIDSEL_SHIFT                         7  /* VMIDSEL - [8:7] */
248b35a28afSMark Brown #define WM8955_VMIDSEL_WIDTH                         2  /* VMIDSEL - [8:7] */
249b35a28afSMark Brown #define WM8955_VREF                             0x0040  /* VREF */
250b35a28afSMark Brown #define WM8955_VREF_MASK                        0x0040  /* VREF */
251b35a28afSMark Brown #define WM8955_VREF_SHIFT                            6  /* VREF */
252b35a28afSMark Brown #define WM8955_VREF_WIDTH                            1  /* VREF */
253b35a28afSMark Brown #define WM8955_DIGENB                           0x0001  /* DIGENB */
254b35a28afSMark Brown #define WM8955_DIGENB_MASK                      0x0001  /* DIGENB */
255b35a28afSMark Brown #define WM8955_DIGENB_SHIFT                          0  /* DIGENB */
256b35a28afSMark Brown #define WM8955_DIGENB_WIDTH                          1  /* DIGENB */
257b35a28afSMark Brown 
258b35a28afSMark Brown /*
259b35a28afSMark Brown  * R26 (0x1A) - Power Management (2)
260b35a28afSMark Brown  */
261b35a28afSMark Brown #define WM8955_DACL                             0x0100  /* DACL */
262b35a28afSMark Brown #define WM8955_DACL_MASK                        0x0100  /* DACL */
263b35a28afSMark Brown #define WM8955_DACL_SHIFT                            8  /* DACL */
264b35a28afSMark Brown #define WM8955_DACL_WIDTH                            1  /* DACL */
265b35a28afSMark Brown #define WM8955_DACR                             0x0080  /* DACR */
266b35a28afSMark Brown #define WM8955_DACR_MASK                        0x0080  /* DACR */
267b35a28afSMark Brown #define WM8955_DACR_SHIFT                            7  /* DACR */
268b35a28afSMark Brown #define WM8955_DACR_WIDTH                            1  /* DACR */
269b35a28afSMark Brown #define WM8955_LOUT1                            0x0040  /* LOUT1 */
270b35a28afSMark Brown #define WM8955_LOUT1_MASK                       0x0040  /* LOUT1 */
271b35a28afSMark Brown #define WM8955_LOUT1_SHIFT                           6  /* LOUT1 */
272b35a28afSMark Brown #define WM8955_LOUT1_WIDTH                           1  /* LOUT1 */
273b35a28afSMark Brown #define WM8955_ROUT1                            0x0020  /* ROUT1 */
274b35a28afSMark Brown #define WM8955_ROUT1_MASK                       0x0020  /* ROUT1 */
275b35a28afSMark Brown #define WM8955_ROUT1_SHIFT                           5  /* ROUT1 */
276b35a28afSMark Brown #define WM8955_ROUT1_WIDTH                           1  /* ROUT1 */
277b35a28afSMark Brown #define WM8955_LOUT2                            0x0010  /* LOUT2 */
278b35a28afSMark Brown #define WM8955_LOUT2_MASK                       0x0010  /* LOUT2 */
279b35a28afSMark Brown #define WM8955_LOUT2_SHIFT                           4  /* LOUT2 */
280b35a28afSMark Brown #define WM8955_LOUT2_WIDTH                           1  /* LOUT2 */
281b35a28afSMark Brown #define WM8955_ROUT2                            0x0008  /* ROUT2 */
282b35a28afSMark Brown #define WM8955_ROUT2_MASK                       0x0008  /* ROUT2 */
283b35a28afSMark Brown #define WM8955_ROUT2_SHIFT                           3  /* ROUT2 */
284b35a28afSMark Brown #define WM8955_ROUT2_WIDTH                           1  /* ROUT2 */
285b35a28afSMark Brown #define WM8955_MONO                             0x0004  /* MONO */
286b35a28afSMark Brown #define WM8955_MONO_MASK                        0x0004  /* MONO */
287b35a28afSMark Brown #define WM8955_MONO_SHIFT                            2  /* MONO */
288b35a28afSMark Brown #define WM8955_MONO_WIDTH                            1  /* MONO */
289b35a28afSMark Brown #define WM8955_OUT3                             0x0002  /* OUT3 */
290b35a28afSMark Brown #define WM8955_OUT3_MASK                        0x0002  /* OUT3 */
291b35a28afSMark Brown #define WM8955_OUT3_SHIFT                            1  /* OUT3 */
292b35a28afSMark Brown #define WM8955_OUT3_WIDTH                            1  /* OUT3 */
293b35a28afSMark Brown 
294b35a28afSMark Brown /*
295b35a28afSMark Brown  * R27 (0x1B) - Additional Control (3)
296b35a28afSMark Brown  */
297b35a28afSMark Brown #define WM8955_VROI                             0x0040  /* VROI */
298b35a28afSMark Brown #define WM8955_VROI_MASK                        0x0040  /* VROI */
299b35a28afSMark Brown #define WM8955_VROI_SHIFT                            6  /* VROI */
300b35a28afSMark Brown #define WM8955_VROI_WIDTH                            1  /* VROI */
301b35a28afSMark Brown 
302b35a28afSMark Brown /*
303b35a28afSMark Brown  * R34 (0x22) - Left out Mix (1)
304b35a28afSMark Brown  */
305b35a28afSMark Brown #define WM8955_LD2LO                            0x0100  /* LD2LO */
306b35a28afSMark Brown #define WM8955_LD2LO_MASK                       0x0100  /* LD2LO */
307b35a28afSMark Brown #define WM8955_LD2LO_SHIFT                           8  /* LD2LO */
308b35a28afSMark Brown #define WM8955_LD2LO_WIDTH                           1  /* LD2LO */
309b35a28afSMark Brown #define WM8955_LI2LO                            0x0080  /* LI2LO */
310b35a28afSMark Brown #define WM8955_LI2LO_MASK                       0x0080  /* LI2LO */
311b35a28afSMark Brown #define WM8955_LI2LO_SHIFT                           7  /* LI2LO */
312b35a28afSMark Brown #define WM8955_LI2LO_WIDTH                           1  /* LI2LO */
313b35a28afSMark Brown #define WM8955_LI2LOVOL_MASK                    0x0070  /* LI2LOVOL - [6:4] */
314b35a28afSMark Brown #define WM8955_LI2LOVOL_SHIFT                        4  /* LI2LOVOL - [6:4] */
315b35a28afSMark Brown #define WM8955_LI2LOVOL_WIDTH                        3  /* LI2LOVOL - [6:4] */
316b35a28afSMark Brown 
317b35a28afSMark Brown /*
318b35a28afSMark Brown  * R35 (0x23) - Left out Mix (2)
319b35a28afSMark Brown  */
320b35a28afSMark Brown #define WM8955_RD2LO                            0x0100  /* RD2LO */
321b35a28afSMark Brown #define WM8955_RD2LO_MASK                       0x0100  /* RD2LO */
322b35a28afSMark Brown #define WM8955_RD2LO_SHIFT                           8  /* RD2LO */
323b35a28afSMark Brown #define WM8955_RD2LO_WIDTH                           1  /* RD2LO */
324b35a28afSMark Brown #define WM8955_RI2LO                            0x0080  /* RI2LO */
325b35a28afSMark Brown #define WM8955_RI2LO_MASK                       0x0080  /* RI2LO */
326b35a28afSMark Brown #define WM8955_RI2LO_SHIFT                           7  /* RI2LO */
327b35a28afSMark Brown #define WM8955_RI2LO_WIDTH                           1  /* RI2LO */
328b35a28afSMark Brown #define WM8955_RI2LOVOL_MASK                    0x0070  /* RI2LOVOL - [6:4] */
329b35a28afSMark Brown #define WM8955_RI2LOVOL_SHIFT                        4  /* RI2LOVOL - [6:4] */
330b35a28afSMark Brown #define WM8955_RI2LOVOL_WIDTH                        3  /* RI2LOVOL - [6:4] */
331b35a28afSMark Brown 
332b35a28afSMark Brown /*
333b35a28afSMark Brown  * R36 (0x24) - Right out Mix (1)
334b35a28afSMark Brown  */
335b35a28afSMark Brown #define WM8955_LD2RO                            0x0100  /* LD2RO */
336b35a28afSMark Brown #define WM8955_LD2RO_MASK                       0x0100  /* LD2RO */
337b35a28afSMark Brown #define WM8955_LD2RO_SHIFT                           8  /* LD2RO */
338b35a28afSMark Brown #define WM8955_LD2RO_WIDTH                           1  /* LD2RO */
339b35a28afSMark Brown #define WM8955_LI2RO                            0x0080  /* LI2RO */
340b35a28afSMark Brown #define WM8955_LI2RO_MASK                       0x0080  /* LI2RO */
341b35a28afSMark Brown #define WM8955_LI2RO_SHIFT                           7  /* LI2RO */
342b35a28afSMark Brown #define WM8955_LI2RO_WIDTH                           1  /* LI2RO */
343b35a28afSMark Brown #define WM8955_LI2ROVOL_MASK                    0x0070  /* LI2ROVOL - [6:4] */
344b35a28afSMark Brown #define WM8955_LI2ROVOL_SHIFT                        4  /* LI2ROVOL - [6:4] */
345b35a28afSMark Brown #define WM8955_LI2ROVOL_WIDTH                        3  /* LI2ROVOL - [6:4] */
346b35a28afSMark Brown 
347b35a28afSMark Brown /*
348b35a28afSMark Brown  * R37 (0x25) - Right Out Mix (2)
349b35a28afSMark Brown  */
350b35a28afSMark Brown #define WM8955_RD2RO                            0x0100  /* RD2RO */
351b35a28afSMark Brown #define WM8955_RD2RO_MASK                       0x0100  /* RD2RO */
352b35a28afSMark Brown #define WM8955_RD2RO_SHIFT                           8  /* RD2RO */
353b35a28afSMark Brown #define WM8955_RD2RO_WIDTH                           1  /* RD2RO */
354b35a28afSMark Brown #define WM8955_RI2RO                            0x0080  /* RI2RO */
355b35a28afSMark Brown #define WM8955_RI2RO_MASK                       0x0080  /* RI2RO */
356b35a28afSMark Brown #define WM8955_RI2RO_SHIFT                           7  /* RI2RO */
357b35a28afSMark Brown #define WM8955_RI2RO_WIDTH                           1  /* RI2RO */
358b35a28afSMark Brown #define WM8955_RI2ROVOL_MASK                    0x0070  /* RI2ROVOL - [6:4] */
359b35a28afSMark Brown #define WM8955_RI2ROVOL_SHIFT                        4  /* RI2ROVOL - [6:4] */
360b35a28afSMark Brown #define WM8955_RI2ROVOL_WIDTH                        3  /* RI2ROVOL - [6:4] */
361b35a28afSMark Brown 
362b35a28afSMark Brown /*
363b35a28afSMark Brown  * R38 (0x26) - Mono out Mix (1)
364b35a28afSMark Brown  */
365b35a28afSMark Brown #define WM8955_LD2MO                            0x0100  /* LD2MO */
366b35a28afSMark Brown #define WM8955_LD2MO_MASK                       0x0100  /* LD2MO */
367b35a28afSMark Brown #define WM8955_LD2MO_SHIFT                           8  /* LD2MO */
368b35a28afSMark Brown #define WM8955_LD2MO_WIDTH                           1  /* LD2MO */
369b35a28afSMark Brown #define WM8955_LI2MO                            0x0080  /* LI2MO */
370b35a28afSMark Brown #define WM8955_LI2MO_MASK                       0x0080  /* LI2MO */
371b35a28afSMark Brown #define WM8955_LI2MO_SHIFT                           7  /* LI2MO */
372b35a28afSMark Brown #define WM8955_LI2MO_WIDTH                           1  /* LI2MO */
373b35a28afSMark Brown #define WM8955_LI2MOVOL_MASK                    0x0070  /* LI2MOVOL - [6:4] */
374b35a28afSMark Brown #define WM8955_LI2MOVOL_SHIFT                        4  /* LI2MOVOL - [6:4] */
375b35a28afSMark Brown #define WM8955_LI2MOVOL_WIDTH                        3  /* LI2MOVOL - [6:4] */
376b35a28afSMark Brown #define WM8955_DMEN                             0x0001  /* DMEN */
377b35a28afSMark Brown #define WM8955_DMEN_MASK                        0x0001  /* DMEN */
378b35a28afSMark Brown #define WM8955_DMEN_SHIFT                            0  /* DMEN */
379b35a28afSMark Brown #define WM8955_DMEN_WIDTH                            1  /* DMEN */
380b35a28afSMark Brown 
381b35a28afSMark Brown /*
382b35a28afSMark Brown  * R39 (0x27) - Mono out Mix (2)
383b35a28afSMark Brown  */
384b35a28afSMark Brown #define WM8955_RD2MO                            0x0100  /* RD2MO */
385b35a28afSMark Brown #define WM8955_RD2MO_MASK                       0x0100  /* RD2MO */
386b35a28afSMark Brown #define WM8955_RD2MO_SHIFT                           8  /* RD2MO */
387b35a28afSMark Brown #define WM8955_RD2MO_WIDTH                           1  /* RD2MO */
388b35a28afSMark Brown #define WM8955_RI2MO                            0x0080  /* RI2MO */
389b35a28afSMark Brown #define WM8955_RI2MO_MASK                       0x0080  /* RI2MO */
390b35a28afSMark Brown #define WM8955_RI2MO_SHIFT                           7  /* RI2MO */
391b35a28afSMark Brown #define WM8955_RI2MO_WIDTH                           1  /* RI2MO */
392b35a28afSMark Brown #define WM8955_RI2MOVOL_MASK                    0x0070  /* RI2MOVOL - [6:4] */
393b35a28afSMark Brown #define WM8955_RI2MOVOL_SHIFT                        4  /* RI2MOVOL - [6:4] */
394b35a28afSMark Brown #define WM8955_RI2MOVOL_WIDTH                        3  /* RI2MOVOL - [6:4] */
395b35a28afSMark Brown 
396b35a28afSMark Brown /*
397b35a28afSMark Brown  * R40 (0x28) - LOUT2 volume
398b35a28afSMark Brown  */
399b35a28afSMark Brown #define WM8955_LO2VU                            0x0100  /* LO2VU */
400b35a28afSMark Brown #define WM8955_LO2VU_MASK                       0x0100  /* LO2VU */
401b35a28afSMark Brown #define WM8955_LO2VU_SHIFT                           8  /* LO2VU */
402b35a28afSMark Brown #define WM8955_LO2VU_WIDTH                           1  /* LO2VU */
403b35a28afSMark Brown #define WM8955_LO2ZC                            0x0080  /* LO2ZC */
404b35a28afSMark Brown #define WM8955_LO2ZC_MASK                       0x0080  /* LO2ZC */
405b35a28afSMark Brown #define WM8955_LO2ZC_SHIFT                           7  /* LO2ZC */
406b35a28afSMark Brown #define WM8955_LO2ZC_WIDTH                           1  /* LO2ZC */
407b35a28afSMark Brown #define WM8955_LOUT2VOL_MASK                    0x007F  /* LOUT2VOL - [6:0] */
408b35a28afSMark Brown #define WM8955_LOUT2VOL_SHIFT                        0  /* LOUT2VOL - [6:0] */
409b35a28afSMark Brown #define WM8955_LOUT2VOL_WIDTH                        7  /* LOUT2VOL - [6:0] */
410b35a28afSMark Brown 
411b35a28afSMark Brown /*
412b35a28afSMark Brown  * R41 (0x29) - ROUT2 volume
413b35a28afSMark Brown  */
414b35a28afSMark Brown #define WM8955_RO2VU                            0x0100  /* RO2VU */
415b35a28afSMark Brown #define WM8955_RO2VU_MASK                       0x0100  /* RO2VU */
416b35a28afSMark Brown #define WM8955_RO2VU_SHIFT                           8  /* RO2VU */
417b35a28afSMark Brown #define WM8955_RO2VU_WIDTH                           1  /* RO2VU */
418b35a28afSMark Brown #define WM8955_RO2ZC                            0x0080  /* RO2ZC */
419b35a28afSMark Brown #define WM8955_RO2ZC_MASK                       0x0080  /* RO2ZC */
420b35a28afSMark Brown #define WM8955_RO2ZC_SHIFT                           7  /* RO2ZC */
421b35a28afSMark Brown #define WM8955_RO2ZC_WIDTH                           1  /* RO2ZC */
422b35a28afSMark Brown #define WM8955_ROUT2VOL_MASK                    0x007F  /* ROUT2VOL - [6:0] */
423b35a28afSMark Brown #define WM8955_ROUT2VOL_SHIFT                        0  /* ROUT2VOL - [6:0] */
424b35a28afSMark Brown #define WM8955_ROUT2VOL_WIDTH                        7  /* ROUT2VOL - [6:0] */
425b35a28afSMark Brown 
426b35a28afSMark Brown /*
427b35a28afSMark Brown  * R42 (0x2A) - MONOOUT volume
428b35a28afSMark Brown  */
429b35a28afSMark Brown #define WM8955_MOZC                             0x0080  /* MOZC */
430b35a28afSMark Brown #define WM8955_MOZC_MASK                        0x0080  /* MOZC */
431b35a28afSMark Brown #define WM8955_MOZC_SHIFT                            7  /* MOZC */
432b35a28afSMark Brown #define WM8955_MOZC_WIDTH                            1  /* MOZC */
433b35a28afSMark Brown #define WM8955_MOUTVOL_MASK                     0x007F  /* MOUTVOL - [6:0] */
434b35a28afSMark Brown #define WM8955_MOUTVOL_SHIFT                         0  /* MOUTVOL - [6:0] */
435b35a28afSMark Brown #define WM8955_MOUTVOL_WIDTH                         7  /* MOUTVOL - [6:0] */
436b35a28afSMark Brown 
437b35a28afSMark Brown /*
438b35a28afSMark Brown  * R43 (0x2B) - Clocking / PLL
439b35a28afSMark Brown  */
440b35a28afSMark Brown #define WM8955_MCLKSEL                          0x0100  /* MCLKSEL */
441b35a28afSMark Brown #define WM8955_MCLKSEL_MASK                     0x0100  /* MCLKSEL */
442b35a28afSMark Brown #define WM8955_MCLKSEL_SHIFT                         8  /* MCLKSEL */
443b35a28afSMark Brown #define WM8955_MCLKSEL_WIDTH                         1  /* MCLKSEL */
444b35a28afSMark Brown #define WM8955_PLLOUTDIV2                       0x0020  /* PLLOUTDIV2 */
445b35a28afSMark Brown #define WM8955_PLLOUTDIV2_MASK                  0x0020  /* PLLOUTDIV2 */
446b35a28afSMark Brown #define WM8955_PLLOUTDIV2_SHIFT                      5  /* PLLOUTDIV2 */
447b35a28afSMark Brown #define WM8955_PLLOUTDIV2_WIDTH                      1  /* PLLOUTDIV2 */
448b35a28afSMark Brown #define WM8955_PLL_RB                           0x0010  /* PLL_RB */
449b35a28afSMark Brown #define WM8955_PLL_RB_MASK                      0x0010  /* PLL_RB */
450b35a28afSMark Brown #define WM8955_PLL_RB_SHIFT                          4  /* PLL_RB */
451b35a28afSMark Brown #define WM8955_PLL_RB_WIDTH                          1  /* PLL_RB */
452b35a28afSMark Brown #define WM8955_PLLEN                            0x0008  /* PLLEN */
453b35a28afSMark Brown #define WM8955_PLLEN_MASK                       0x0008  /* PLLEN */
454b35a28afSMark Brown #define WM8955_PLLEN_SHIFT                           3  /* PLLEN */
455b35a28afSMark Brown #define WM8955_PLLEN_WIDTH                           1  /* PLLEN */
456b35a28afSMark Brown 
457b35a28afSMark Brown /*
458b35a28afSMark Brown  * R44 (0x2C) - PLL Control 1
459b35a28afSMark Brown  */
460b35a28afSMark Brown #define WM8955_N_MASK                           0x01E0  /* N - [8:5] */
461b35a28afSMark Brown #define WM8955_N_SHIFT                               5  /* N - [8:5] */
462b35a28afSMark Brown #define WM8955_N_WIDTH                               4  /* N - [8:5] */
463b35a28afSMark Brown #define WM8955_K_21_18_MASK                     0x000F  /* K(21:18) - [3:0] */
464b35a28afSMark Brown #define WM8955_K_21_18_SHIFT                         0  /* K(21:18) - [3:0] */
465b35a28afSMark Brown #define WM8955_K_21_18_WIDTH                         4  /* K(21:18) - [3:0] */
466b35a28afSMark Brown 
467b35a28afSMark Brown /*
468b35a28afSMark Brown  * R45 (0x2D) - PLL Control 2
469b35a28afSMark Brown  */
470b35a28afSMark Brown #define WM8955_K_17_9_MASK                      0x01FF  /* K(17:9) - [8:0] */
471b35a28afSMark Brown #define WM8955_K_17_9_SHIFT                          0  /* K(17:9) - [8:0] */
472b35a28afSMark Brown #define WM8955_K_17_9_WIDTH                          9  /* K(17:9) - [8:0] */
473b35a28afSMark Brown 
474b35a28afSMark Brown /*
475b35a28afSMark Brown  * R46 (0x2E) - PLL Control 3
476b35a28afSMark Brown  */
477b35a28afSMark Brown #define WM8955_K_8_0_MASK                       0x01FF  /* K(8:0) - [8:0] */
478b35a28afSMark Brown #define WM8955_K_8_0_SHIFT                           0  /* K(8:0) - [8:0] */
479b35a28afSMark Brown #define WM8955_K_8_0_WIDTH                           9  /* K(8:0) - [8:0] */
480b35a28afSMark Brown 
481b35a28afSMark Brown /*
482b35a28afSMark Brown  * R59 (0x3B) - PLL Control 4
483b35a28afSMark Brown  */
484b35a28afSMark Brown #define WM8955_KEN                              0x0080  /* KEN */
485b35a28afSMark Brown #define WM8955_KEN_MASK                         0x0080  /* KEN */
486b35a28afSMark Brown #define WM8955_KEN_SHIFT                             7  /* KEN */
487b35a28afSMark Brown #define WM8955_KEN_WIDTH                             1  /* KEN */
488b35a28afSMark Brown 
489b35a28afSMark Brown #endif
490