[alsa-devel] [PATCH] ALSA: ASoC: cs4720: use snd_soc_cache_sync()

Mark Brown broonie at opensource.wolfsonmicro.com
Tue Nov 22 15:02:10 CET 2011


On Tue, Nov 22, 2011 at 02:45:16PM +0100, Daniel Mack wrote:
> Replace the manual register restore mechanism in cs4270.c and call
> snd_soc_cache_sync() instead. The current is also wrong, as it doesn't
> update the internal cache, leading to cache inconsitency after suspend.

I don't understand why this is a bug fix - the code is writing the
values from the internal cache to the hardware and what's there doesn't
look obviously wrong...

>  	/* first restore the entire register cache ... */
> -	for (reg = CS4270_FIRSTREG; reg <= CS4270_LASTREG; reg++) {
> -		u8 val = snd_soc_read(codec, reg);
> -

This reads from the cache.

> -		if (i2c_smbus_write_byte_data(i2c_client, reg, val)) {
> -			dev_err(codec->dev, "i2c write failed\n");
> -			return -EIO;
> -		}

This writes the cached value to the hardware.


More information about the Alsa-devel mailing list