ASoC: wm8994: VMID management improvements
Raise the ramp time to 50ms to cover corner cases, use the startup bias generator, explicitly reset the ramp circuit when complete and reorder things all of which should improve performance somewhat for systems that are sensitive to noise from VMID. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
d60d6c3b65
commit
cc6d5a8c2b
|
@ -778,29 +778,37 @@ static void vmid_reference(struct snd_soc_codec *codec)
|
||||||
wm8994->vmid_refcount);
|
wm8994->vmid_refcount);
|
||||||
|
|
||||||
if (wm8994->vmid_refcount == 1) {
|
if (wm8994->vmid_refcount == 1) {
|
||||||
|
snd_soc_update_bits(codec, WM8994_ANTIPOP_1,
|
||||||
|
WM8994_LINEOUT_VMID_BUF_ENA |
|
||||||
|
WM8994_LINEOUT1_DISCH |
|
||||||
|
WM8994_LINEOUT2_DISCH,
|
||||||
|
WM8994_LINEOUT_VMID_BUF_ENA);
|
||||||
|
|
||||||
/* Startup bias, VMID ramp & buffer */
|
/* Startup bias, VMID ramp & buffer */
|
||||||
snd_soc_update_bits(codec, WM8994_ANTIPOP_2,
|
snd_soc_update_bits(codec, WM8994_ANTIPOP_2,
|
||||||
|
WM8994_BIAS_SRC |
|
||||||
|
WM8994_VMID_DISCH |
|
||||||
WM8994_STARTUP_BIAS_ENA |
|
WM8994_STARTUP_BIAS_ENA |
|
||||||
WM8994_VMID_BUF_ENA |
|
WM8994_VMID_BUF_ENA |
|
||||||
WM8994_VMID_RAMP_MASK,
|
WM8994_VMID_RAMP_MASK,
|
||||||
|
WM8994_BIAS_SRC |
|
||||||
WM8994_STARTUP_BIAS_ENA |
|
WM8994_STARTUP_BIAS_ENA |
|
||||||
WM8994_VMID_BUF_ENA |
|
WM8994_VMID_BUF_ENA |
|
||||||
(0x3 << WM8994_VMID_RAMP_SHIFT));
|
(0x3 << WM8994_VMID_RAMP_SHIFT));
|
||||||
|
|
||||||
wm_hubs_vmid_ena(codec);
|
wm_hubs_vmid_ena(codec);
|
||||||
|
|
||||||
/* Remove discharge for line out */
|
|
||||||
snd_soc_update_bits(codec, WM8994_ANTIPOP_1,
|
|
||||||
WM8994_LINEOUT1_DISCH |
|
|
||||||
WM8994_LINEOUT2_DISCH, 0);
|
|
||||||
|
|
||||||
/* Main bias enable, VMID=2x40k */
|
/* Main bias enable, VMID=2x40k */
|
||||||
snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1,
|
snd_soc_update_bits(codec, WM8994_POWER_MANAGEMENT_1,
|
||||||
WM8994_BIAS_ENA |
|
WM8994_BIAS_ENA |
|
||||||
WM8994_VMID_SEL_MASK,
|
WM8994_VMID_SEL_MASK,
|
||||||
WM8994_BIAS_ENA | 0x2);
|
WM8994_BIAS_ENA | 0x2);
|
||||||
|
|
||||||
msleep(20);
|
msleep(50);
|
||||||
|
|
||||||
|
snd_soc_update_bits(codec, WM8994_ANTIPOP_2,
|
||||||
|
WM8994_VMID_RAMP_MASK | WM8994_BIAS_SRC,
|
||||||
|
0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue