mirror of https://gitee.com/openkylin/linux.git
ASoC: Further optimise WM8400 bias configuration sequence
The active discharge does not bring sufficient benefit to justify the lengthy times involved so don't do that. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
da88b48b84
commit
e3598f6e42
|
@ -1096,45 +1096,22 @@ static int wm8400_set_bias_level(struct snd_soc_codec *codec,
|
||||||
wm8400_write(codec, WM8400_POWER_MANAGEMENT_1,
|
wm8400_write(codec, WM8400_POWER_MANAGEMENT_1,
|
||||||
WM8400_CODEC_ENA | WM8400_SYSCLK_ENA);
|
WM8400_CODEC_ENA | WM8400_SYSCLK_ENA);
|
||||||
|
|
||||||
/* Enable all output discharge bits */
|
|
||||||
wm8400_write(codec, WM8400_ANTIPOP1, WM8400_DIS_LLINE |
|
|
||||||
WM8400_DIS_RLINE | WM8400_DIS_OUT3 |
|
|
||||||
WM8400_DIS_OUT4 | WM8400_DIS_LOUT |
|
|
||||||
WM8400_DIS_ROUT);
|
|
||||||
|
|
||||||
/* Enable POBCTRL, SOFT_ST, VMIDTOG and BUFDCOPEN */
|
/* Enable POBCTRL, SOFT_ST, VMIDTOG and BUFDCOPEN */
|
||||||
wm8400_write(codec, WM8400_ANTIPOP2, WM8400_SOFTST |
|
wm8400_write(codec, WM8400_ANTIPOP2, WM8400_SOFTST |
|
||||||
WM8400_BUFDCOPEN | WM8400_POBCTRL);
|
WM8400_BUFDCOPEN | WM8400_POBCTRL);
|
||||||
|
|
||||||
msleep(500);
|
msleep(50);
|
||||||
|
|
||||||
/* Enable outputs */
|
|
||||||
val = wm8400_read(codec, WM8400_POWER_MANAGEMENT_1);
|
|
||||||
val |= WM8400_SPK_ENA | WM8400_OUT3_ENA |
|
|
||||||
WM8400_OUT4_ENA | WM8400_LOUT_ENA |
|
|
||||||
WM8400_ROUT_ENA;
|
|
||||||
wm8400_write(codec, WM8400_POWER_MANAGEMENT_1, val);
|
|
||||||
|
|
||||||
/* disable all output discharge bits */
|
|
||||||
wm8400_write(codec, WM8400_ANTIPOP1, 0);
|
|
||||||
|
|
||||||
/* Enable VREF & VMID at 2x50k */
|
/* Enable VREF & VMID at 2x50k */
|
||||||
|
val = wm8400_read(codec, WM8400_POWER_MANAGEMENT_1);
|
||||||
val |= 0x2 | WM8400_VREF_ENA;
|
val |= 0x2 | WM8400_VREF_ENA;
|
||||||
wm8400_write(codec, WM8400_POWER_MANAGEMENT_1, val);
|
wm8400_write(codec, WM8400_POWER_MANAGEMENT_1, val);
|
||||||
|
|
||||||
msleep(600);
|
|
||||||
|
|
||||||
/* Enable BUFIOEN */
|
/* Enable BUFIOEN */
|
||||||
wm8400_write(codec, WM8400_ANTIPOP2, WM8400_SOFTST |
|
wm8400_write(codec, WM8400_ANTIPOP2, WM8400_SOFTST |
|
||||||
WM8400_BUFDCOPEN | WM8400_POBCTRL |
|
WM8400_BUFDCOPEN | WM8400_POBCTRL |
|
||||||
WM8400_BUFIOEN);
|
WM8400_BUFIOEN);
|
||||||
|
|
||||||
/* Disable outputs */
|
|
||||||
val &= ~(WM8400_SPK_ENA | WM8400_OUT3_ENA |
|
|
||||||
WM8400_OUT4_ENA | WM8400_LOUT_ENA |
|
|
||||||
WM8400_ROUT_ENA);
|
|
||||||
wm8400_write(codec, WM8400_POWER_MANAGEMENT_1, val);
|
|
||||||
|
|
||||||
/* disable POBCTRL, SOFT_ST and BUFDCOPEN */
|
/* disable POBCTRL, SOFT_ST and BUFDCOPEN */
|
||||||
wm8400_write(codec, WM8400_ANTIPOP2, WM8400_BUFIOEN);
|
wm8400_write(codec, WM8400_ANTIPOP2, WM8400_BUFIOEN);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue