linux/sound/soc
Dimitris Papastamos 0944cc392e ASoC: soc-cache: Block based rbtree compression
This patch prepares the ground for the actual rbtree optimization patch
which will save a pointer to the last accessed rbnode that was used
in either the read() or write() functions.

Each rbnode manages a variable length block of registers.  There can be no
two nodes with overlapping blocks.  Each block has a base register and a
currently top register, all the other registers, if any, lie in between these
two and in ascending order.

The reasoning behind the construction of this rbtree is simple.  In the
snd_soc_rbtree_cache_init() function, we iterate over the register defaults
provided by the driver.  For each register value that is non-zero we
insert it in the rbtree.  In order to determine in which rbnode we need
to add the register, we first look if there is another register already
added that is adjacent to the one we are about to add.  If that is the case
we append it in that rbnode block, otherwise we create a new rbnode
with a single register in its block and add it to the tree.

In the next patch, where a cached rbnode is used by both the write() and the
read() functions, we also check if the register we are about to add is in the
cached rbnode (the least recently accessed one) and if so we append it in that
rbnode block.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2011-05-20 11:21:53 +01:00
..
atmel ASoC: Merge branch 'for-2.6.39' into for-2.6.40 2011-04-18 18:07:43 +01:00
au1x ASoC: Remove -codec from WM8731 driver name 2011-03-30 07:15:33 +09:00
blackfin ASoC: Blackfin: push down SPORT settings from global variables 2011-03-30 07:20:05 +09:00
codecs Merge branch 'for-2.6.39' into for-2.6.40 2011-05-10 15:58:17 +02:00
davinci davinci-mcasp: fix _CBM_CFS pin directions 2011-04-26 11:43:53 +01:00
ep93xx ASoC: Enable 192kHz sample rate for EP93xx. 2011-03-09 13:08:42 +00:00
fsl Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2011-03-18 10:46:37 -07:00
imx ASoC: Merge branch 'for-2.6.39' into for-2.6.40 2011-04-18 18:07:43 +01:00
jz4740 Merge branch 'for-2.6.39' into for-2.6.40 2011-05-03 19:07:45 +01:00
kirkwood Fix common misspellings 2011-03-31 11:26:23 -03:00
mid-x86 Merge branch 'for-2.6.39' into for-2.6.40 2011-05-03 23:30:36 +01:00
nuc900 Merge branch 'for-2.6.37' into for-2.6.38 2010-11-30 11:35:43 +00:00
omap Fix common misspellings 2011-03-31 11:26:23 -03:00
pxa ASoC: Properly handle spitz MIC GPIO 2011-04-03 22:11:09 +09:00
s6000 ASoC: Remove needless inclusion of tlv320aic3x.h from machine drivers 2011-01-05 11:28:50 +00:00
samsung ASoC: Don't specify the DMA driver for Goni baseband link 2011-04-28 12:11:06 +01:00
sh ASoC: sh: fsi: Add module/port clock control function 2011-04-26 11:42:11 +01:00
tegra ASoC: tegra: TrimSlice machine support 2011-05-03 18:42:44 +01:00
txx9 ASoC: multi-component - ASoC Multi-Component Support 2010-08-12 14:00:00 +01:00
Kconfig ASoC: tegra: Kconfig and Makefile 2011-01-10 22:21:09 +00:00
Makefile ASoC: tegra: Kconfig and Makefile 2011-01-10 22:21:09 +00:00
soc-cache.c ASoC: soc-cache: Block based rbtree compression 2011-05-20 11:21:53 +01:00
soc-core.c ASoC: Create codec DAPM widgets before calling the codecs probe function 2011-05-08 14:38:08 +01:00
soc-dapm.c ASoC: Implement mux control sharing 2011-05-03 19:29:15 +01:00
soc-jack.c ASoC: Merge branch 'for-2.6.39' into for-2.6.40 2011-04-18 18:07:43 +01:00
soc-utils.c ASoC: Work around allmodconfig failure 2011-04-28 12:09:06 +01:00