[alsa-devel] [PATCH] ASoC: core: Fix check before defaulting to regmap

Peter Ujfalusi peter.ujfalusi at ti.com
Thu Aug 2 09:44:41 CEST 2012

Hi Mark,

On 08/01/2012 10:06 PM, Mark Brown wrote:
> Check if the chip has provided a write operation (which is mandatory for
> I/O) rather than looking for control data as some of the MFDs use a global
> for this. Also skip the attempt if there's no regmap available by device
> in case things get confused by the attempt to default.
> Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
> ---
>  sound/soc/soc-core.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index b1fd043..5359623 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -1096,7 +1096,7 @@ static int soc_probe_codec(struct snd_soc_card *card,
>  	}
>  	/* If the driver didn't set I/O up try regmap */
> -	if (!codec->control_data)
> +	if (!codec->write && dev_get_regmap(codec->dev, NULL))
>  		snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP);
>  	if (driver->controls)

I have a slightly different implementation of this, but this looks better.

Boards using the following machine drivers are affected by this issue:
zoom2, overo, omap3pandora, omap3beagle, sdp3430, omap-abe-twl6040, omap3evm,

All boards using these machine drivers will have kernel crash at the first
time we try to write a register in the codec.

Could you send this patch (if the patch OK with you) to be included in 3.6-rc1
to avoid boards booting to kernel crash (if they restore the mixers at boot

Thank you.

Tested-by: Peter Ujfalusi <peter.ujfalusi at ti.com>

More information about the Alsa-devel mailing list