[alsa-devel] Need help fixing pop/click artifacts in an ASOC driver

Mark Brown broonie at kernel.org
Thu Nov 15 01:33:13 CET 2018


On Thu, Nov 15, 2018 at 01:55:06AM +0200, Dimitris Papavasiliou wrote:
> On 11/15/2018 01:02 AM, Mark Brown wrote:
> > I've no idea what you're proposing, sorry.

> I mentioned it in the message you replied to initially, so you
> can consult that for more details if you want, but I'll give a
> summary below:

That was rather a long mail and I got a bit lost about what the proposal
was.

> As far as I could determine experimentally, switching clocks when
> the DAC is not suspended seems to result in a spike at the input
> of the DAC, the level of which doesn't depend on the digital
> volume setting (so that it's always very loud).  I tried various

This is fairly normal; the DAC is partly digital.

> Avoiding the spike instead of relying on muting seems preferable,
> but, since the power state of the PCM5122 is manipulated by the
> CODEC driver, in response to requests to set the bias level, I'm
> concerned about potential race conditions.

Given that there's no substantial delays in the power up/down paths of
the driver you probably want to set idle_bias_off and possibly also
configuring ignore_pmdown_time to force immediate poweroff.  That should
get the device powered down rapidly, though bouncing the power on and
off all the time isn't great.  If you do need ignore_pmdown_time then
it's probably better to add a higher level interface that allows the
machine driver to cancel all power down timers.

> if (no_switch_needed)
>     return;
> 
> snd_soc_dapm_mutex_lock(dapm);
> force = (snd_soc_dapm_get_bias_level(dapm) != SND_SOC_BIAS_OFF);
> 
> if (force)
>     snd_soc_dapm_force_bias_level(dapm, SND_SOC_BIAS_OFF);
> 
> /* Switch the clock here. */
> 
> ...
> 
> if (force)
>     snd_soc_dapm_sync_unlocked(dapm);
> 
> snd_soc_dapm_mutex_unlock(dapm);

This is not a good idea, fiddling around with DAPM internals from
drivers is going to be very fragile as things change in future.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20181114/d2844f0a/attachment-0001.sig>


More information about the Alsa-devel mailing list