diff options
-rw-r--r-- | include/sound/wm8904.h | 36 | ||||
-rw-r--r-- | sound/soc/codecs/wm8904.c | 5 | ||||
-rw-r--r-- | sound/soc/codecs/wm8904.h | 33 |
3 files changed, 41 insertions, 33 deletions
diff --git a/include/sound/wm8904.h b/include/sound/wm8904.h index ddeeebf7c426..898be3a8db9a 100644 --- a/include/sound/wm8904.h +++ b/include/sound/wm8904.h | |||
@@ -19,6 +19,40 @@ | |||
19 | #define WM8904_GPIO_NO_CONFIG 0x8000 | 19 | #define WM8904_GPIO_NO_CONFIG 0x8000 |
20 | 20 | ||
21 | /* | 21 | /* |
22 | * R6 (0x06) - Mic Bias Control 0 | ||
23 | */ | ||
24 | #define WM8904_MICDET_THR_MASK 0x0070 /* MICDET_THR - [6:4] */ | ||
25 | #define WM8904_MICDET_THR_SHIFT 4 /* MICDET_THR - [6:4] */ | ||
26 | #define WM8904_MICDET_THR_WIDTH 3 /* MICDET_THR - [6:4] */ | ||
27 | #define WM8904_MICSHORT_THR_MASK 0x000C /* MICSHORT_THR - [3:2] */ | ||
28 | #define WM8904_MICSHORT_THR_SHIFT 2 /* MICSHORT_THR - [3:2] */ | ||
29 | #define WM8904_MICSHORT_THR_WIDTH 2 /* MICSHORT_THR - [3:2] */ | ||
30 | #define WM8904_MICDET_ENA 0x0002 /* MICDET_ENA */ | ||
31 | #define WM8904_MICDET_ENA_MASK 0x0002 /* MICDET_ENA */ | ||
32 | #define WM8904_MICDET_ENA_SHIFT 1 /* MICDET_ENA */ | ||
33 | #define WM8904_MICDET_ENA_WIDTH 1 /* MICDET_ENA */ | ||
34 | #define WM8904_MICBIAS_ENA 0x0001 /* MICBIAS_ENA */ | ||
35 | #define WM8904_MICBIAS_ENA_MASK 0x0001 /* MICBIAS_ENA */ | ||
36 | #define WM8904_MICBIAS_ENA_SHIFT 0 /* MICBIAS_ENA */ | ||
37 | #define WM8904_MICBIAS_ENA_WIDTH 1 /* MICBIAS_ENA */ | ||
38 | |||
39 | /* | ||
40 | * R7 (0x07) - Mic Bias Control 1 | ||
41 | */ | ||
42 | #define WM8904_MIC_DET_FILTER_ENA 0x8000 /* MIC_DET_FILTER_ENA */ | ||
43 | #define WM8904_MIC_DET_FILTER_ENA_MASK 0x8000 /* MIC_DET_FILTER_ENA */ | ||
44 | #define WM8904_MIC_DET_FILTER_ENA_SHIFT 15 /* MIC_DET_FILTER_ENA */ | ||
45 | #define WM8904_MIC_DET_FILTER_ENA_WIDTH 1 /* MIC_DET_FILTER_ENA */ | ||
46 | #define WM8904_MIC_SHORT_FILTER_ENA 0x4000 /* MIC_SHORT_FILTER_ENA */ | ||
47 | #define WM8904_MIC_SHORT_FILTER_ENA_MASK 0x4000 /* MIC_SHORT_FILTER_ENA */ | ||
48 | #define WM8904_MIC_SHORT_FILTER_ENA_SHIFT 14 /* MIC_SHORT_FILTER_ENA */ | ||
49 | #define WM8904_MIC_SHORT_FILTER_ENA_WIDTH 1 /* MIC_SHORT_FILTER_ENA */ | ||
50 | #define WM8904_MICBIAS_SEL_MASK 0x0007 /* MICBIAS_SEL - [2:0] */ | ||
51 | #define WM8904_MICBIAS_SEL_SHIFT 0 /* MICBIAS_SEL - [2:0] */ | ||
52 | #define WM8904_MICBIAS_SEL_WIDTH 3 /* MICBIAS_SEL - [2:0] */ | ||
53 | |||
54 | |||
55 | /* | ||
22 | * R121 (0x79) - GPIO Control 1 | 56 | * R121 (0x79) - GPIO Control 1 |
23 | */ | 57 | */ |
24 | #define WM8904_GPIO1_PU 0x0020 /* GPIO1_PU */ | 58 | #define WM8904_GPIO1_PU 0x0020 /* GPIO1_PU */ |
@@ -82,6 +116,7 @@ | |||
82 | #define WM8904_GPIO_BCLK_SEL_SHIFT 0 /* GPIO_BCLK_SEL - [3:0] */ | 116 | #define WM8904_GPIO_BCLK_SEL_SHIFT 0 /* GPIO_BCLK_SEL - [3:0] */ |
83 | #define WM8904_GPIO_BCLK_SEL_WIDTH 4 /* GPIO_BCLK_SEL - [3:0] */ | 117 | #define WM8904_GPIO_BCLK_SEL_WIDTH 4 /* GPIO_BCLK_SEL - [3:0] */ |
84 | 118 | ||
119 | #define WM8904_MIC_REGS 2 | ||
85 | #define WM8904_GPIO_REGS 4 | 120 | #define WM8904_GPIO_REGS 4 |
86 | #define WM8904_DRC_REGS 4 | 121 | #define WM8904_DRC_REGS 4 |
87 | #define WM8904_EQ_REGS 25 | 122 | #define WM8904_EQ_REGS 25 |
@@ -122,6 +157,7 @@ struct wm8904_pdata { | |||
122 | struct wm8904_retune_mobile_cfg *retune_mobile_cfgs; | 157 | struct wm8904_retune_mobile_cfg *retune_mobile_cfgs; |
123 | 158 | ||
124 | u32 gpio_cfg[WM8904_GPIO_REGS]; | 159 | u32 gpio_cfg[WM8904_GPIO_REGS]; |
160 | u32 mic_cfg[WM8904_MIC_REGS]; | ||
125 | }; | 161 | }; |
126 | 162 | ||
127 | #endif | 163 | #endif |
diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c index ce3f004217ae..c5b50d73f2d5 100644 --- a/sound/soc/codecs/wm8904.c +++ b/sound/soc/codecs/wm8904.c | |||
@@ -2540,6 +2540,11 @@ static int wm8904_register(struct wm8904_priv *wm8904, | |||
2540 | wm8904->reg_cache[WM8904_GPIO_CONTROL_1 + i] | 2540 | wm8904->reg_cache[WM8904_GPIO_CONTROL_1 + i] |
2541 | = pdata->gpio_cfg[i] & 0xffff; | 2541 | = pdata->gpio_cfg[i] & 0xffff; |
2542 | } | 2542 | } |
2543 | |||
2544 | /* Zero is the default value for these anyway */ | ||
2545 | for (i = 0; i < WM8904_MIC_REGS; i++) | ||
2546 | wm8904->reg_cache[WM8904_MIC_BIAS_CONTROL_0 + i] | ||
2547 | = pdata->mic_cfg[i]; | ||
2543 | } | 2548 | } |
2544 | 2549 | ||
2545 | /* Set Class W by default - this will be managed by the Class | 2550 | /* Set Class W by default - this will be managed by the Class |
diff --git a/sound/soc/codecs/wm8904.h b/sound/soc/codecs/wm8904.h index 10603a75c1a5..abe5059b3004 100644 --- a/sound/soc/codecs/wm8904.h +++ b/sound/soc/codecs/wm8904.h | |||
@@ -186,39 +186,6 @@ extern struct snd_soc_codec_device soc_codec_dev_wm8904; | |||
186 | #define WM8904_VMID_ENA_WIDTH 1 /* VMID_ENA */ | 186 | #define WM8904_VMID_ENA_WIDTH 1 /* VMID_ENA */ |
187 | 187 | ||
188 | /* | 188 | /* |
189 | * R6 (0x06) - Mic Bias Control 0 | ||
190 | */ | ||
191 | #define WM8904_MICDET_THR_MASK 0x0070 /* MICDET_THR - [6:4] */ | ||
192 | #define WM8904_MICDET_THR_SHIFT 4 /* MICDET_THR - [6:4] */ | ||
193 | #define WM8904_MICDET_THR_WIDTH 3 /* MICDET_THR - [6:4] */ | ||
194 | #define WM8904_MICSHORT_THR_MASK 0x000C /* MICSHORT_THR - [3:2] */ | ||
195 | #define WM8904_MICSHORT_THR_SHIFT 2 /* MICSHORT_THR - [3:2] */ | ||
196 | #define WM8904_MICSHORT_THR_WIDTH 2 /* MICSHORT_THR - [3:2] */ | ||
197 | #define WM8904_MICDET_ENA 0x0002 /* MICDET_ENA */ | ||
198 | #define WM8904_MICDET_ENA_MASK 0x0002 /* MICDET_ENA */ | ||
199 | #define WM8904_MICDET_ENA_SHIFT 1 /* MICDET_ENA */ | ||
200 | #define WM8904_MICDET_ENA_WIDTH 1 /* MICDET_ENA */ | ||
201 | #define WM8904_MICBIAS_ENA 0x0001 /* MICBIAS_ENA */ | ||
202 | #define WM8904_MICBIAS_ENA_MASK 0x0001 /* MICBIAS_ENA */ | ||
203 | #define WM8904_MICBIAS_ENA_SHIFT 0 /* MICBIAS_ENA */ | ||
204 | #define WM8904_MICBIAS_ENA_WIDTH 1 /* MICBIAS_ENA */ | ||
205 | |||
206 | /* | ||
207 | * R7 (0x07) - Mic Bias Control 1 | ||
208 | */ | ||
209 | #define WM8904_MIC_DET_FILTER_ENA 0x8000 /* MIC_DET_FILTER_ENA */ | ||
210 | #define WM8904_MIC_DET_FILTER_ENA_MASK 0x8000 /* MIC_DET_FILTER_ENA */ | ||
211 | #define WM8904_MIC_DET_FILTER_ENA_SHIFT 15 /* MIC_DET_FILTER_ENA */ | ||
212 | #define WM8904_MIC_DET_FILTER_ENA_WIDTH 1 /* MIC_DET_FILTER_ENA */ | ||
213 | #define WM8904_MIC_SHORT_FILTER_ENA 0x4000 /* MIC_SHORT_FILTER_ENA */ | ||
214 | #define WM8904_MIC_SHORT_FILTER_ENA_MASK 0x4000 /* MIC_SHORT_FILTER_ENA */ | ||
215 | #define WM8904_MIC_SHORT_FILTER_ENA_SHIFT 14 /* MIC_SHORT_FILTER_ENA */ | ||
216 | #define WM8904_MIC_SHORT_FILTER_ENA_WIDTH 1 /* MIC_SHORT_FILTER_ENA */ | ||
217 | #define WM8904_MICBIAS_SEL_MASK 0x0007 /* MICBIAS_SEL - [2:0] */ | ||
218 | #define WM8904_MICBIAS_SEL_SHIFT 0 /* MICBIAS_SEL - [2:0] */ | ||
219 | #define WM8904_MICBIAS_SEL_WIDTH 3 /* MICBIAS_SEL - [2:0] */ | ||
220 | |||
221 | /* | ||
222 | * R8 (0x08) - Analogue DAC 0 | 189 | * R8 (0x08) - Analogue DAC 0 |
223 | */ | 190 | */ |
224 | #define WM8904_DAC_BIAS_SEL_MASK 0x0018 /* DAC_BIAS_SEL - [4:3] */ | 191 | #define WM8904_DAC_BIAS_SEL_MASK 0x0018 /* DAC_BIAS_SEL - [4:3] */ |