ASoC: soc-cache: Add support for LZO register caching
authorDimitris Papastamos <dp@opensource.wolfsonmicro.com>
Thu, 11 Nov 2010 10:04:58 +0000 (10:04 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 11 Nov 2010 15:59:01 +0000 (15:59 +0000)
commitcc28fb8e7d55d4d7c1661dc0b236f4faddecdd9e
treea7a0123df99c39db8c5084303a07c2dfae385add
parent7a30a3db34cc7b2180a1a6c4a51d19d93c8a8b80
ASoC: soc-cache: Add support for LZO register caching

This patch adds support for LZO compression when storing the register
cache.  The initial register defaults cache is marked as __devinitconst
and the only change required for a driver to use LZO compression is
to set the compress_type member in codec->driver to SND_SOC_LZO_COMPRESSION.

For a typical device whose register map would normally occupy 25kB or 50kB
by using the LZO compression technique, one can get down to ~5-7kB.  There
might be a performance penalty associated with each individual read/write
due to decompressing/compressing the underlying cache, however that should not
be noticeable.  These memory benefits depend on whether the target architecture
can get rid of the memory occupied by the original register defaults cache
which is marked as __devinitconst.  Nevertheless there will be some memory
gain even if the target architecture can't get rid of the original register
map, this should be around ~30-32kB instead of 50kB.

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>
include/sound/soc.h
sound/soc/Kconfig
sound/soc/soc-cache.c