RE: Re: [PATCH 4/4] ASoC: wm8524: Delay some time to follow power up sequency

From: Chancel Liu
Date: Fri Feb 24 2023 - 05:56:09 EST


> On Wed, Feb 22, 2023 at 07:39:45PM +0800, Chancel Liu wrote:
>
> > + switch (cmd) {
> > + case SNDRV_PCM_TRIGGER_START:
> > + case SNDRV_PCM_TRIGGER_RESUME:
> > + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
> > + mdelay(wm8524->power_up_delay);
> > + break;
>
> Doing a 100ms busy wait in atomic context does not seem like a great
> idea, never mind a 1.5s one. This shouldn't be done in trigger, it
> needs to be done later - digital_mute() might be a better time to hook
> in, though longer delays like this are really quite bad.

Yes, such long time delay in driver is very bad. But this device requires
waiting some time before able to output audio. We have to wait otherwise the
beginning data may be lost.

The power up to audio out timing occurs after MCLK, BCLK and MUTE=1 are ready.
I added the delay in trigger() because some CPU DAI drivers enable BCLK in
trigger(). You suggested moving the delay to digital_mute(). It seems
digital_mute() is called before cpu_dai->trigger. Please correct me if I'm
wrong.

Regards,
Chancel Liu