On Wed, May 15, 2019 at 06:27:49PM +0300, Georgii Staroselskii wrote:
On Wed, May 15, 2019 at 03:58:13PM +0200, Maxime Ripard wrote:
diff --git a/sound/soc/sunxi/sun4i-codec.c b/sound/soc/sunxi/sun4i-codec.c index 15d08e3..e0099519 100644 --- a/sound/soc/sunxi/sun4i-codec.c +++ b/sound/soc/sunxi/sun4i-codec.c @@ -1329,6 +1329,15 @@ static int sun4i_codec_spk_event(struct snd_soc_dapm_widget *w, gpiod_set_value_cansleep(scodec->gpio_pa, !!SND_SOC_DAPM_EVENT_ON(event));
- if (SND_SOC_DAPM_EVENT_ON(event)) {
/*
* Need a delay to have the amplifier up. 700ms seems the best
* compromise between the time to let the amplifier up and the
* time not to feel this delay while playing a sound.
*/
msleep(700);
- }
Since this is an external amplifier, I guess they would have different warm-up time depending on the exact part being used?
I guess I might've used Speaker wrong and bumped into an existing issue. The issue first arose when I needed to connect a speaker and use a mute GPIO pin to toggle it. I bumped into the lag similar to the one that has been fixed in bf14da7. The word "amplifier" here in my comments might be wrong and misleding. Sorry for that. I just measured the latency on the speaker I'm using and it is well under 1ms so this is the Allwinner DAC that is pushing the data with a lag. Or some other thing, I'm not sure.
I want to stress again that I might've experienced the issue because I was abusing "Speaker" routing. I basically just needed the analog audio stream and mute GPIO handling done automatically.
Ok. I guess the comment should just be reflecting that then.
Maxime
-- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com