Re: [PATCH v3] ASoC: fsl: imx-wm8962: Grant hw_params/free()permission to control FLL

From: Mark Brown
Date: Tue Dec 17 2013 - 17:50:33 EST


On Thu, Dec 12, 2013 at 05:59:28PM +0800, Nicolin Chen wrote:

> + mask = WM8962_MIXINL_TO_HPMIXL_MASK | WM8962_MIXINR_TO_HPMIXL_MASK |
> + WM8962_IN4L_TO_HPMIXL_MASK | WM8962_IN4R_TO_HPMIXL_MASK;
> + bypass |= snd_soc_read(codec, WM8962_HEADPHONE_MIXER_1) & mask;
> + bypass |= snd_soc_read(codec, WM8962_HEADPHONE_MIXER_2) & mask;
> + bypass |= snd_soc_read(codec, WM8962_SPEAKER_MIXER_1) & mask;
> + bypass |= snd_soc_read(codec, WM8962_SPEAKER_MIXER_2) & mask;
> +
> + /* Don't diable FLL if running multi-substreams or analogue bypass */
> + if (codec_dai->active != 1 || bypass)
> + return 0;

I don't think this works with the power down delay we do on playback -
the DAI will go inactive when closed but we'll still have the CODEC
active and using its clocks until the power down time has elapsed if
it's a playback DAI. Trying to reclock the device while active is at
best risky, even if it's muted.

I do think refcounting from both here and the bias level changes is
going to be the most robust thing, that'd also avoid the need to peer
into the CODEC register map.

Attachment: signature.asc
Description: Digital signature