1. 08 11月, 2011 1 次提交
    • M
      regmap: Add a reusable irq_chip for regmap based interrupt controllers · f8beab2b
      Mark Brown 提交于
      There seem to be lots of regmap-using devices with very similar interrupt
      controllers with a small bank of interrupt registers and mask registers
      with an interrupt per bit. This won't cover everything but it's a good
      start.
      
      Each chip supplies a base for the status registers, a base for the mask
      registers, an optional base for writing acknowledgements (which may be the
      same as the status registers) and an array of bits within each of these
      register banks which indicate the interrupt.
      
      There is an assumption that the bit for each interrupt will be the same
      in each of the register bank.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      f8beab2b
  2. 20 9月, 2011 4 次提交
    • D
      regmap: Add the LZO cache support · 2cbbb579
      Dimitris Papastamos 提交于
      This patch adds support for LZO compression when storing the register
      cache.
      
      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: NDimitris Papastamos <dp@opensource.wolfsonmicro.com>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      2cbbb579
    • D
      regmap: Add the rbtree cache support · 28644c80
      Dimitris Papastamos 提交于
      This patch adds support for the rbtree cache compression type.
      
      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 regcache core.  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.
      
      There are various optimizations across the implementation to speed up lookups
      by caching the most recently used rbnode.
      Signed-off-by: NDimitris Papastamos <dp@opensource.wolfsonmicro.com>
      Tested-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      28644c80
    • D
      regmap: Add the indexed cache support · 195af65c
      Dimitris Papastamos 提交于
      This is the simplest form of a cache available in regcache.  Any
      registers whose default value is 0 are ignored.  If any of those
      registers are modified in the future, they will be placed in the
      cache on demand.  The cache layout is essentially using the provided
      register defaults by the regcache core directly and does not re-map
      it to another representation.
      Signed-off-by: NDimitris Papastamos <dp@opensource.wolfsonmicro.com>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      195af65c
    • D
      regmap: Introduce caching support · 9fabe24e
      Dimitris Papastamos 提交于
      This patch introduces caching support for regmap.  The regcache API
      has evolved essentially out of ASoC soc-cache so most of the actual
      caching types (except LZO) have been tested in the past.
      
      The purpose of regcache is to optimize in time and space the handling
      of register caches.  Time optimization is achieved by not having to go
      over a slow bus like I2C to read the value of a register, instead it is
      cached locally in memory and can be retrieved faster.  Regarding space
      optimization, some of the cache types are better at packing the caches,
      for e.g. the rbtree and the LZO caches.  By doing this the sacrifice in
      time still wins over doing I2C transactions.
      Signed-off-by: NDimitris Papastamos <dp@opensource.wolfsonmicro.com>
      Tested-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      9fabe24e
  3. 08 8月, 2011 1 次提交
  4. 23 7月, 2011 3 次提交