ASoC: sun4i-codec: fix first delay on Speaker
Allwinner DAC seems to have a delay in the Speaker audio routing. When
playing a sound for the first time, the sound gets chopped. On a second
play the sound is played correctly. After some time (~5s) the issue gets
back.
This commit seems to be fixing the same issue as bf14da7
but
for another codepath.
This is the DTS that was used to debug the problem.
&codec {
allwinner,pa-gpios = <&r_pio 0 11 GPIO_ACTIVE_HIGH>; /* PL11 */
allwinner,audio-routing =
"Speaker", "LINEOUT";
status = "okay";
}
Signed-off-by: Georgii Staroselskii <georgii.staroselskii@emlid.com>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
be1b577d01
commit
1f2675f665
|
@ -1329,6 +1329,15 @@ static int sun4i_codec_spk_event(struct snd_soc_dapm_widget *w,
|
||||||
gpiod_set_value_cansleep(scodec->gpio_pa,
|
gpiod_set_value_cansleep(scodec->gpio_pa,
|
||||||
!!SND_SOC_DAPM_EVENT_ON(event));
|
!!SND_SOC_DAPM_EVENT_ON(event));
|
||||||
|
|
||||||
|
if (SND_SOC_DAPM_EVENT_ON(event)) {
|
||||||
|
/*
|
||||||
|
* Need a delay to wait for DAC to push the data. 700ms seems
|
||||||
|
* to be the best compromise not to feel this delay while
|
||||||
|
* playing a sound.
|
||||||
|
*/
|
||||||
|
msleep(700);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue