[alsa-devel] [PATCH v2] tlv320aic3x: disable ADC/DAC while changing clock

Daniel Glöckner dg at emlix.com
Wed Apr 1 18:21:19 CEST 2009

On 04/01/2009 05:24 PM, Mark Brown wrote:
> In that case rather than using a trigger to check if the device is
> running it should be possible to use constraints to prevent
> reconfiguration of the device when it's not supported - this is more
> friendly to apps since they know they won't be allowed to change the
> configuration.

It was my impression that it is up to the pcm part to install these
constraints as this is where SNDRV_PCM_INFO_JOINT_DUPLEX can be put into
the snd_pcm_hardware structure.

>>> It's especially suspicious since the power of the DAC and ADC is managed
>>> via DAPM; the only current user should be safe since it saves then
>>> restores the state but it does raise alarm bells.
>> How about making it a function that always disables the four components and
>> referring to snd_soc_dapm_sync to restore the state?
> Hrm.  For the ADC that's probably OK but powering off the DAC does risk
> being audible in the output; that does depend on the hardware, though.
> It should do the right thing, I think, but checking for audio artefacts
> would be advisable.

I can't hear any artefacts with my cheap headphones.
The delayed close is audible, though.

> It'd probably also help to only do reconfiguration if actually required
> rather than always powering down the ADCs and DACs.

That's what is done in these lines at the very first in aic3x_hw_params:

+	if (aic3x->format == params_format(params) &&
+	    aic3x->rate == params_rate(params))
+		return 0;

>> One could reorder aic3x_hw_params to detect the error before the
>> first registers are written..
> Yes.

I'll make it three patches then:
- one to remove the redundant actions on bias level off
- one to reorder hw_params
- and one to fix the bug


Dipl.-Math. Daniel Glöckner, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax -11, Bahnhofsallee 1b, 37081 Göttingen, Germany
Geschäftsführung: Dr. Uwe Kracke, Dr. Cord Seele, Ust-IdNr.: DE 205 198 055
Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160

emlix - your embedded linux partner

More information about the Alsa-devel mailing list