forked from luck/tmp_suning_uos_patched
ASoC: Provide microphone bias configuration for WM8962
Add the widget for MICBIAS power control and allow configuration of the microphone bias setup via the platform data for the WM8962. When microphone status signals are brought out to GPIO this should be sufficient to enable microphone detection. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
This commit is contained in:
parent
dee0bb9d0f
commit
a4f28c001d
|
@ -17,6 +17,12 @@
|
||||||
struct wm8962_pdata {
|
struct wm8962_pdata {
|
||||||
u32 gpio_init[WM8962_MAX_GPIO];
|
u32 gpio_init[WM8962_MAX_GPIO];
|
||||||
|
|
||||||
|
/* Setup for microphone detection, raw value to be written to
|
||||||
|
* R48(0x30) - only microphone related bits will be updated.
|
||||||
|
* Detection may be enabled here for use with signals brought
|
||||||
|
* out on the GPIOs. */
|
||||||
|
u32 mic_cfg;
|
||||||
|
|
||||||
bool irq_active_low;
|
bool irq_active_low;
|
||||||
|
|
||||||
bool spk_mono; /* Speaker outputs tied together as mono */
|
bool spk_mono; /* Speaker outputs tied together as mono */
|
||||||
|
|
|
@ -630,6 +630,8 @@ SND_SOC_DAPM_INPUT("IN4L"),
|
||||||
SND_SOC_DAPM_INPUT("IN4R"),
|
SND_SOC_DAPM_INPUT("IN4R"),
|
||||||
SND_SOC_DAPM_INPUT("Beep"),
|
SND_SOC_DAPM_INPUT("Beep"),
|
||||||
|
|
||||||
|
SND_SOC_DAPM_MICBIAS("MICBIAS", WM8962_PWR_MGMT_1, 1, 0),
|
||||||
|
|
||||||
SND_SOC_DAPM_SUPPLY("Class G", WM8962_CHARGE_PUMP_B, 0, 1, NULL, 0),
|
SND_SOC_DAPM_SUPPLY("Class G", WM8962_CHARGE_PUMP_B, 0, 1, NULL, 0),
|
||||||
SND_SOC_DAPM_SUPPLY("SYSCLK", WM8962_CLOCKING2, 5, 0, sysclk_event,
|
SND_SOC_DAPM_SUPPLY("SYSCLK", WM8962_CLOCKING2, 5, 0, sysclk_event,
|
||||||
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
|
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
|
||||||
|
@ -1755,6 +1757,16 @@ static int wm8962_probe(struct snd_soc_codec *codec)
|
||||||
if (pdata->spk_mono)
|
if (pdata->spk_mono)
|
||||||
wm8962->reg_cache[WM8962_CLASS_D_CONTROL_2]
|
wm8962->reg_cache[WM8962_CLASS_D_CONTROL_2]
|
||||||
|= WM8962_SPK_MONO;
|
|= WM8962_SPK_MONO;
|
||||||
|
|
||||||
|
/* Micbias setup, detection enable and detection
|
||||||
|
* threasholds. */
|
||||||
|
if (pdata->mic_cfg)
|
||||||
|
snd_soc_update_bits(codec, WM8962_ADDITIONAL_CONTROL_4,
|
||||||
|
WM8962_MICDET_ENA |
|
||||||
|
WM8962_MICDET_THR_MASK |
|
||||||
|
WM8962_MICSHORT_THR_MASK |
|
||||||
|
WM8962_MICBIAS_LVL,
|
||||||
|
pdata->mic_cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Latch volume update bits */
|
/* Latch volume update bits */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user