1. 20 9月, 2011 1 次提交
  2. 06 9月, 2011 2 次提交
    • L
      regmap: Add support for device specific write and read flag masks. · 6f306441
      Lars-Peter Clausen 提交于
      Some buses like SPI have no standard notation of read or write operations.
      The general scheme here is to set or clear specific bits in the register
      address to indicate whether the operation is a read or write. We already
      support having a read flag mask per bus, but as there is no standard
      the bits which need to be set or cleared differ between devices and vendors,
      thus we need a mechanism to specify them per device.
      
      This patch adds two new entries to the regmap_config struct, read_flag_mask and
      write_flag_mask. These will be or'ed onto the top byte when doing a read or
      write operation. If both masks are empty the device will fallback to the
      regmap_bus masks.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      6f306441
    • M
      regmap: Remove bitrotted module_put()s · 5204f5e3
      Mark Brown 提交于
      The conversion to per bus type registration functions means we don't need
      to do module_get()s to hold the bus types in memory (their users will link
      to them) so we removed all those calls. This left module_put() calls in
      the cleanup paths which aren't needed and which cause unbalanced puts if
      we ever try to unload anything.
      Reported-by: NJonathan Cameron <jic23@cam.ac.uk>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      5204f5e3
  3. 14 8月, 2011 1 次提交
  4. 08 8月, 2011 7 次提交
  5. 25 7月, 2011 1 次提交
  6. 23 7月, 2011 1 次提交
    • M
      regmap: Add generic non-memory mapped register access API · b83a313b
      Mark Brown 提交于
      There are many places in the tree where we implement register access for
      devices on non-memory mapped buses, especially I2C and SPI. Since hardware
      designers seem to have settled on a relatively consistent set of register
      interfaces this can be effectively factored out into shared code.  There
      are a standard set of formats for marshalling data for exchange with the
      device, with the actual I/O mechanisms generally being simple byte
      streams.
      
      We create an abstraction for marshaling data into formats which can be
      sent on the control interfaces, and create a standard method for
      plugging in actual transport underneath that.
      
      This is mostly a refactoring and renaming of the bottom level of the
      existing code for sharing register I/O which we have in ASoC. A
      subsequent patch in this series converts ASoC to use this.  The main
      difference in interface is that reads return values by writing to a
      location provided by a pointer rather than in the return value, ensuring
      we can use the full range of the type for register data.  We also use
      unsigned types rather than ints for the same reason.
      
      As some of the devices can have very large register maps the existing
      ASoC code also contains infrastructure for managing register caches.
      This cache work will be moved over in a future stage to allow for
      separate review, the current patch only deals with the physical I/O.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Acked-by: NLiam Girdwood <lrg@ti.com>
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Acked-by: NWolfram Sang <w.sang@pengutronix.de>
      Acked-by: NGrant Likely <grant.likely@secretlab.ca>
      b83a313b