Re: [PATCH] ASoC: sun4i-codec: fix first delay on Speaker

Maxime Ripard
2019-05-15T13:58:38Z

Hi,

On Wed, May 15, 2019 at 03:58:40PM +0300, Georgii Staroselskii wrote:
> This commit fixes the same issue as bf14da7 but for another codepath.
> The issue can be triggered by having Speaker in codec audio routing.

Mentionning what "the issue" is in the commit log would be great.

> &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>
> ---
> sound/soc/sunxi/sun4i-codec.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> 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?

If so, we should use a property and set it on a per-board basis.

Maxime

--
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering