1. 07 6月, 2011 1 次提交
  2. 15 5月, 2011 1 次提交
  3. 11 5月, 2011 3 次提交
  4. 08 5月, 2011 1 次提交
  5. 20 4月, 2011 1 次提交
  6. 05 4月, 2011 3 次提交
  7. 31 3月, 2011 2 次提交
  8. 27 3月, 2011 7 次提交
  9. 08 2月, 2011 1 次提交
  10. 22 1月, 2011 1 次提交
  11. 20 1月, 2011 2 次提交
  12. 13 1月, 2011 1 次提交
  13. 12 1月, 2011 4 次提交
  14. 22 12月, 2010 2 次提交
  15. 15 12月, 2010 1 次提交
  16. 06 12月, 2010 1 次提交
  17. 04 12月, 2010 3 次提交
  18. 03 12月, 2010 1 次提交
  19. 30 11月, 2010 1 次提交
  20. 29 11月, 2010 2 次提交
  21. 11 11月, 2010 1 次提交
    • D
      ASoC: soc-cache: Add support for rbtree based register caching · a7f387d5
      Dimitris Papastamos 提交于
      This patch adds support for rbtree compression when storing the
      register cache.  It does this by not adding any uninitialized registers
      (those whose value is 0).  If any of those registers is written
      with a nonzero value they get added into the rbtree.
      
      Consider a sample device with a large sparse register map.  The
      register indices are between [0, 0x31ff].  An array of 12800 registers
      is thus created each of which is 2 bytes.  This results in a 25kB
      region.  This array normally lives outside soc-core, normally in the
      driver itself.  The original soc-core code would kmemdup this region
      resulting in 50kB total memory.  When using the rbtree compression
      technique and __devinitconst on the original array the figures are
      as follows.  For this typical device, you might have 100 initialized
      registers, that is registers that are nonzero by default.  We build
      an rbtree with 100 nodes, each of which is 24 bytes.  This results
      in ~2kB of memory.  Assuming that the target arch can freeup the
      memory used by the initial __devinitconst array, we end up using
      about ~2kB bytes of actual memory.  The memory footprint will increase
      as uninitialized registers get written and thus new nodes created in
      the rbtree.  In practice, most of those registers are never changed.
      If the target arch can't freeup the __devinitconst array, we end up
      using a total of ~27kB.  The difference between the rbtree and the LZO
      caching techniques, is that if using the LZO technique the size of
      the cache will increase slower as more uninitialized registers get
      changed.
      Signed-off-by: NDimitris Papastamos <dp@opensource.wolfsonmicro.com>
      Acked-by: NLiam Girdwood <lrg@slimlogic.co.uk>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      a7f387d5