[alsa-devel] [PATCH] ASoC: arizona: Add 32uS delay after putting FLL into freerun

Mark Brown broonie at kernel.org
Fri Nov 27 13:26:27 CET 2015


On Thu, Nov 26, 2015 at 02:03:20PM +0000, Charles Keepax wrote:
> When switching between two clock sources using the FLL freerun to smooth
> the transition we should wait 32uS after putting the FLL into freerun
> before we proceed. In practice we appear to be getting enough delay from
> the surrounding code, but better to make it explicit.

You'll almost certainly get 32us from just setting up the I/O and
also...

> +++ b/sound/soc/codecs/arizona.c
> @@ -2215,6 +2215,7 @@ static int arizona_enable_fll(struct arizona_fll *fll)
>  		regmap_update_bits_async(fll->arizona->regmap, fll->base + 1,
>  					 ARIZONA_FLL1_FREERUN,
>  					 ARIZONA_FLL1_FREERUN);
> +		udelay(32);

...this won't do what you say it will - the I/O is asynchronous so what
this will do is add a delay immediately after scheduling the I/O while
the I/O is at best in progress and most likely before it is ever begun.
You'd need to make the I/O synchronous to actually introduce the delay.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20151127/a76b9bdd/attachment.sig>


More information about the Alsa-devel mailing list