1. 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
  2. 06 9月, 2011 5 次提交
  3. 14 8月, 2011 3 次提交
  4. 12 8月, 2011 1 次提交
  5. 09 8月, 2011 2 次提交
  6. 08 8月, 2011 7 次提交
  7. 06 8月, 2011 2 次提交
    • K
      PM / Runtime: Allow _put_sync() from interrupts-disabled context · 02b26774
      Kevin Hilman 提交于
      Currently the use of pm_runtime_put_sync() is not safe from
      interrupts-disabled context because rpm_idle() will release the
      spinlock and enable interrupts for the idle callbacks.  This enables
      interrupts during a time where interrupts were expected to be
      disabled, and can have strange side effects on drivers that expected
      interrupts to be disabled.
      
      This is not a bug since the documentation clearly states that only
      _put_sync_suspend() is safe in IRQ-safe mode.
      
      However, pm_runtime_put_sync() could be made safe when in IRQ-safe
      mode by releasing the spinlock but not re-enabling interrupts, which
      is what this patch aims to do.
      
      Problem was found when using some buggy drivers that set
      pm_runtime_irq_safe() and used _put_sync() in interrupts-disabled
      context.
      Reported-by: NColin Cross <ccross@google.com>
      Tested-by: NNishanth Menon <nm@ti.com>
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      02b26774
    • R
      PM / Domains: Fix pm_genpd_poweron() · fe202fde
      Rafael J. Wysocki 提交于
      The local variable ret is defined twice in pm_genpd_poweron(), which
      causes this function to always return 0, even if the PM domain's
      .power_on() callback fails, in which case an error code should be
      returned.
      
      Remove the wrong second definition of ret and additionally remove an
      unnecessary definition of wait from pm_genpd_poweron().
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      fe202fde
  8. 28 7月, 2011 1 次提交
    • A
      devtmpfs: missing initialialization in never-hit case · 9d108d25
      Al Viro 提交于
      create_path() on something without a single / in it will return err
      without initializing it.  It actually can't happen (we call that thing
      only if create on the same path returns -ENOENT, which won't happen
      happen for single-component path), but in this case initializing err
      to 0 is more than making compiler to STFU - would be the right thing
      to return on such paths; the function creates a parent directory of
      given pathname and in that case it has no work to do...
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      9d108d25
  9. 27 7月, 2011 2 次提交
  10. 26 7月, 2011 1 次提交
    • A
      fix devtmpfs race · e13889ba
      Al Viro 提交于
      After we's done complete(&req->done), there's nothing to prevent the
      scope containing *req from being gone and *req overwritten by any
      kind of junk.  So we must read req->next before that...
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      e13889ba
  11. 25 7月, 2011 1 次提交
  12. 23 7月, 2011 3 次提交
  13. 20 7月, 2011 3 次提交
  14. 16 7月, 2011 2 次提交
  15. 15 7月, 2011 2 次提交
  16. 13 7月, 2011 1 次提交