Skip to content

Commit

Permalink
ASoC: soc-cache: Ensure flat compression uses a copy of the defaults …
Browse files Browse the repository at this point in the history
…cache

With the addition of the cache fallback functionality, it is necessary
to ensure that if the register defaults cache was marked as __devinitconst
and the LZO compression is not compiled in the kernel, the fallback to
flat compression will still use a copy of the defaults cache.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Dimitris Papastamos authored and Mark Brown committed Jan 12, 2011
1 parent 9f040c7 commit d779fce
Showing 1 changed file with 4 additions and 12 deletions.
16 changes: 4 additions & 12 deletions sound/soc/soc-cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -1400,8 +1400,8 @@ static int snd_soc_flat_cache_sync(struct snd_soc_codec *codec)
ret = snd_soc_cache_read(codec, i, &val);
if (ret)
return ret;
if (codec_drv->reg_cache_default)
if (snd_soc_get_cache_val(codec_drv->reg_cache_default,
if (codec->reg_def_copy)
if (snd_soc_get_cache_val(codec->reg_def_copy,
i, codec_drv->reg_word_size) == val)
continue;
ret = snd_soc_write(codec, i, val);
Expand Down Expand Up @@ -1446,16 +1446,8 @@ static int snd_soc_flat_cache_init(struct snd_soc_codec *codec)
codec_drv = codec->driver;
reg_size = codec_drv->reg_cache_size * codec_drv->reg_word_size;

/*
* for flat compression, we don't need to keep a copy of the
* original defaults register cache as it will definitely not
* be marked as __devinitconst
*/
kfree(codec->reg_def_copy);
codec->reg_def_copy = NULL;

if (codec_drv->reg_cache_default)
codec->reg_cache = kmemdup(codec_drv->reg_cache_default,
if (codec->reg_def_copy)
codec->reg_cache = kmemdup(codec->reg_def_copy,
reg_size, GFP_KERNEL);
else
codec->reg_cache = kzalloc(reg_size, GFP_KERNEL);
Expand Down

0 comments on commit d779fce

Please sign in to comment.