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 ddeeebf7c42..898be3a8db9 100644 --- a/include/sound/wm8904.h +++ b/include/sound/wm8904.h @@ -19,6 +19,40 @@  #define WM8904_GPIO_NO_CONFIG 0x8000  /* + * R6 (0x06) - Mic Bias Control 0 + */ +#define WM8904_MICDET_THR_MASK                  0x0070  /* MICDET_THR - [6:4] */ +#define WM8904_MICDET_THR_SHIFT                      4  /* MICDET_THR - [6:4] */ +#define WM8904_MICDET_THR_WIDTH                      3  /* MICDET_THR - [6:4] */ +#define WM8904_MICSHORT_THR_MASK                0x000C  /* MICSHORT_THR - [3:2] */ +#define WM8904_MICSHORT_THR_SHIFT                    2  /* MICSHORT_THR - [3:2] */ +#define WM8904_MICSHORT_THR_WIDTH                    2  /* MICSHORT_THR - [3:2] */ +#define WM8904_MICDET_ENA                       0x0002  /* MICDET_ENA */ +#define WM8904_MICDET_ENA_MASK                  0x0002  /* MICDET_ENA */ +#define WM8904_MICDET_ENA_SHIFT                      1  /* MICDET_ENA */ +#define WM8904_MICDET_ENA_WIDTH                      1  /* MICDET_ENA */ +#define WM8904_MICBIAS_ENA                      0x0001  /* MICBIAS_ENA */ +#define WM8904_MICBIAS_ENA_MASK                 0x0001  /* MICBIAS_ENA */ +#define WM8904_MICBIAS_ENA_SHIFT                     0  /* MICBIAS_ENA */ +#define WM8904_MICBIAS_ENA_WIDTH                     1  /* MICBIAS_ENA */ + +/* + * R7 (0x07) - Mic Bias Control 1 + */ +#define WM8904_MIC_DET_FILTER_ENA               0x8000  /* MIC_DET_FILTER_ENA */ +#define WM8904_MIC_DET_FILTER_ENA_MASK          0x8000  /* MIC_DET_FILTER_ENA */ +#define WM8904_MIC_DET_FILTER_ENA_SHIFT             15  /* MIC_DET_FILTER_ENA */ +#define WM8904_MIC_DET_FILTER_ENA_WIDTH              1  /* MIC_DET_FILTER_ENA */ +#define WM8904_MIC_SHORT_FILTER_ENA             0x4000  /* MIC_SHORT_FILTER_ENA */ +#define WM8904_MIC_SHORT_FILTER_ENA_MASK        0x4000  /* MIC_SHORT_FILTER_ENA */ +#define WM8904_MIC_SHORT_FILTER_ENA_SHIFT           14  /* MIC_SHORT_FILTER_ENA */ +#define WM8904_MIC_SHORT_FILTER_ENA_WIDTH            1  /* MIC_SHORT_FILTER_ENA */ +#define WM8904_MICBIAS_SEL_MASK                 0x0007  /* MICBIAS_SEL - [2:0] */ +#define WM8904_MICBIAS_SEL_SHIFT                     0  /* MICBIAS_SEL - [2:0] */ +#define WM8904_MICBIAS_SEL_WIDTH                     3  /* MICBIAS_SEL - [2:0] */ + + +/*   * R121 (0x79) - GPIO Control 1   */  #define WM8904_GPIO1_PU                         0x0020  /* GPIO1_PU */ @@ -82,6 +116,7 @@  #define WM8904_GPIO_BCLK_SEL_SHIFT                   0  /* GPIO_BCLK_SEL - [3:0] */  #define WM8904_GPIO_BCLK_SEL_WIDTH                   4  /* GPIO_BCLK_SEL - [3:0] */ +#define WM8904_MIC_REGS  2  #define WM8904_GPIO_REGS 4  #define WM8904_DRC_REGS  4  #define WM8904_EQ_REGS   25 @@ -122,6 +157,7 @@ struct wm8904_pdata {  	struct wm8904_retune_mobile_cfg *retune_mobile_cfgs;  	u32 gpio_cfg[WM8904_GPIO_REGS]; +	u32 mic_cfg[WM8904_MIC_REGS];  };  #endif diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c index ce3f004217a..c5b50d73f2d 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,  			wm8904->reg_cache[WM8904_GPIO_CONTROL_1 + i]  				= pdata->gpio_cfg[i] & 0xffff;  		} + +		/* Zero is the default value for these anyway */ +		for (i = 0; i < WM8904_MIC_REGS; i++) +			wm8904->reg_cache[WM8904_MIC_BIAS_CONTROL_0 + i] +				= pdata->mic_cfg[i];  	}  	/* 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 10603a75c1a..abe5059b300 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;  #define WM8904_VMID_ENA_WIDTH                        1  /* VMID_ENA */  /* - * R6 (0x06) - Mic Bias Control 0 - */ -#define WM8904_MICDET_THR_MASK                  0x0070  /* MICDET_THR - [6:4] */ -#define WM8904_MICDET_THR_SHIFT                      4  /* MICDET_THR - [6:4] */ -#define WM8904_MICDET_THR_WIDTH                      3  /* MICDET_THR - [6:4] */ -#define WM8904_MICSHORT_THR_MASK                0x000C  /* MICSHORT_THR - [3:2] */ -#define WM8904_MICSHORT_THR_SHIFT                    2  /* MICSHORT_THR - [3:2] */ -#define WM8904_MICSHORT_THR_WIDTH                    2  /* MICSHORT_THR - [3:2] */ -#define WM8904_MICDET_ENA                       0x0002  /* MICDET_ENA */ -#define WM8904_MICDET_ENA_MASK                  0x0002  /* MICDET_ENA */ -#define WM8904_MICDET_ENA_SHIFT                      1  /* MICDET_ENA */ -#define WM8904_MICDET_ENA_WIDTH                      1  /* MICDET_ENA */ -#define WM8904_MICBIAS_ENA                      0x0001  /* MICBIAS_ENA */ -#define WM8904_MICBIAS_ENA_MASK                 0x0001  /* MICBIAS_ENA */ -#define WM8904_MICBIAS_ENA_SHIFT                     0  /* MICBIAS_ENA */ -#define WM8904_MICBIAS_ENA_WIDTH                     1  /* MICBIAS_ENA */ - -/* - * R7 (0x07) - Mic Bias Control 1 - */ -#define WM8904_MIC_DET_FILTER_ENA               0x8000  /* MIC_DET_FILTER_ENA */ -#define WM8904_MIC_DET_FILTER_ENA_MASK          0x8000  /* MIC_DET_FILTER_ENA */ -#define WM8904_MIC_DET_FILTER_ENA_SHIFT             15  /* MIC_DET_FILTER_ENA */ -#define WM8904_MIC_DET_FILTER_ENA_WIDTH              1  /* MIC_DET_FILTER_ENA */ -#define WM8904_MIC_SHORT_FILTER_ENA             0x4000  /* MIC_SHORT_FILTER_ENA */ -#define WM8904_MIC_SHORT_FILTER_ENA_MASK        0x4000  /* MIC_SHORT_FILTER_ENA */ -#define WM8904_MIC_SHORT_FILTER_ENA_SHIFT           14  /* MIC_SHORT_FILTER_ENA */ -#define WM8904_MIC_SHORT_FILTER_ENA_WIDTH            1  /* MIC_SHORT_FILTER_ENA */ -#define WM8904_MICBIAS_SEL_MASK                 0x0007  /* MICBIAS_SEL - [2:0] */ -#define WM8904_MICBIAS_SEL_SHIFT                     0  /* MICBIAS_SEL - [2:0] */ -#define WM8904_MICBIAS_SEL_WIDTH                     3  /* MICBIAS_SEL - [2:0] */ - -/*   * R8 (0x08) - Analogue DAC 0   */  #define WM8904_DAC_BIAS_SEL_MASK                0x0018  /* DAC_BIAS_SEL - [4:3] */  |