ASoC: Support configuration of WM8958 microphone bias analogue parameters
The WM8958 has a different microphone bias architecture to WM8994 so needs different configuration to WM8994. Support this in platform data. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
This commit is contained in:
@@ -108,13 +108,16 @@ struct wm8994_pdata {
|
|||||||
*/
|
*/
|
||||||
int micdet_irq;
|
int micdet_irq;
|
||||||
|
|
||||||
/* Microphone biases: 0=0.9*AVDD1 1=0.65*AVVD1 */
|
/* WM8994 microphone biases: 0=0.9*AVDD1 1=0.65*AVVD1 */
|
||||||
unsigned int micbias1_lvl:1;
|
unsigned int micbias1_lvl:1;
|
||||||
unsigned int micbias2_lvl:1;
|
unsigned int micbias2_lvl:1;
|
||||||
|
|
||||||
/* Jack detect threashold levels, see datasheet for values */
|
/* WM8994 jack detect threashold levels, see datasheet for values */
|
||||||
unsigned int jd_scthr:2;
|
unsigned int jd_scthr:2;
|
||||||
unsigned int jd_thr:2;
|
unsigned int jd_thr:2;
|
||||||
|
|
||||||
|
/* WM8958 microphone bias configuration */
|
||||||
|
int micbias[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -63,6 +63,8 @@
|
|||||||
#define WM8994_MICBIAS 0x3A
|
#define WM8994_MICBIAS 0x3A
|
||||||
#define WM8994_LDO_1 0x3B
|
#define WM8994_LDO_1 0x3B
|
||||||
#define WM8994_LDO_2 0x3C
|
#define WM8994_LDO_2 0x3C
|
||||||
|
#define WM8958_MICBIAS1 0x3D
|
||||||
|
#define WM8958_MICBIAS2 0x3E
|
||||||
#define WM8994_CHARGE_PUMP_1 0x4C
|
#define WM8994_CHARGE_PUMP_1 0x4C
|
||||||
#define WM8958_CHARGE_PUMP_2 0x4D
|
#define WM8958_CHARGE_PUMP_2 0x4D
|
||||||
#define WM8994_CLASS_W_1 0x51
|
#define WM8994_CLASS_W_1 0x51
|
||||||
|
@@ -2855,6 +2855,13 @@ static void wm8994_handle_pdata(struct wm8994_priv *wm8994)
|
|||||||
else
|
else
|
||||||
snd_soc_add_controls(wm8994->codec, wm8994_eq_controls,
|
snd_soc_add_controls(wm8994->codec, wm8994_eq_controls,
|
||||||
ARRAY_SIZE(wm8994_eq_controls));
|
ARRAY_SIZE(wm8994_eq_controls));
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(pdata->micbias); i++) {
|
||||||
|
if (pdata->micbias[i]) {
|
||||||
|
snd_soc_write(codec, WM8958_MICBIAS1 + i,
|
||||||
|
pdata->micbias[i] & 0xffff);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user