All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/8] Generic I2C and SPI register map library
@ 2011-06-20 12:46 Mark Brown
  2011-06-20 12:54 ` [PATCH 1/8] regmap: Add generic non-memory mapped register access API Mark Brown
  0 siblings, 1 reply; 31+ messages in thread
From: Mark Brown @ 2011-06-20 12:46 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dimitris Papastamos, Liam Girdwood, Samuel Oritz,
	Lars-Peter Clausen, Graeme Gregory

Many I2C and SPI based devices implement register maps on top of the raw
wire interface.  This is generally done in a very standard fashion by
devices, resulting in a lot of very similar code in drivers.  For some
time now ASoC has factored this code out into the subsystem but that's
only useful for audio devices.  The intention with this series is to
generalise the concept so that it can be used throughout the kernel.

It's not intended that this be suitable for all devices - some devices
have things that are hard to generalise like registers with variable
size and paging which are hard to support genericly.  At the minute the
code is focused on the common cases.  It is likely that the same code
could be used with other buses with similar properties to I2C and SPI.

Currently only physical I/O is handled, the intention is that once this
support has been reviewed and merged the generic register cache code
that ASoC includes will also be factored out too.  For devices with read
heavy workloads (especially those that need a lot of read/modify/write
cycles) or which don't support read at all this can provide a useful
performance improvement and for sparse register maps there's a lot of
benefit in relatively complex cache code.

I'm not entirely happy with the implementation currently but am fairly
happy with the external interfaces.

A semi-random set of driver conversions have been included in the series
with various degrees of testing including the subsystem wide ASoC code.
Far more drivers could use the code, these have mostly just been done as
samples in a minimally invasive fashion.

There's a git branch at:

   git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git for-next

but due to various -next dependencies this does not currently include
all of the patches posted here.  I've also created a regmap-asoc branch
there which merges current ASoC code with the regmap code.

 MAINTAINERS                            |    7 +
 drivers/Kconfig                        |    1 +
 drivers/Makefile                       |    1 +
 drivers/mfd/Kconfig                    |    4 +
 drivers/mfd/pcf50633-core.c            |  114 ++------
 drivers/mfd/wm831x-core.c              |   97 +++----
 drivers/mfd/wm831x-i2c.c               |   56 ----
 drivers/mfd/wm831x-spi.c               |   48 ----
 drivers/mfd/wm8994-core.c              |  175 ++----------
 drivers/regmap/Kconfig                 |    6 +
 drivers/regmap/Makefile                |    3 +
 drivers/regmap/regmap-i2c.c            |  112 ++++++++
 drivers/regmap/regmap-spi.c            |   75 +++++
 drivers/regmap/regmap.c                |  478 ++++++++++++++++++++++++++++++++
 drivers/regulator/Kconfig              |    1 +
 drivers/regulator/tps65023-regulator.c |   98 ++-----
 include/linux/mfd/pcf50633/core.h      |    3 +-
 include/linux/mfd/wm831x/core.h        |    7 +-
 include/linux/mfd/wm8994/core.h        |    9 +-
 include/linux/regmap.h                 |   75 +++++
 include/sound/soc.h                    |    2 +
 sound/soc/Kconfig                      |    1 +
 sound/soc/soc-io.c                     |  316 ++-------------------
 23 files changed, 920 insertions(+), 769 deletions(-)

^ permalink raw reply	[flat|nested] 31+ messages in thread
* [PATCH 0/8] Generic I2C and SPI register map library
@ 2011-06-22 18:44 Mark Brown
  2011-06-22 18:45 ` [PATCH 1/8] regmap: Add generic non-memory mapped register access API Mark Brown
  0 siblings, 1 reply; 31+ messages in thread
From: Mark Brown @ 2011-06-22 18:44 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dimitris Papastamos, Liam Girdwood, Samuel Oritz,
	Lars-Peter Clausen, Graeme Gregory

[This reposting of the series should address all the review comments on
the series so far.]

Many I2C and SPI based devices implement register maps on top of the raw
wire interface.  This is generally done in a very standard fashion by
devices, resulting in a lot of very similar code in drivers.  For some
time now ASoC has factored this code out into the subsystem but that's
only useful for audio devices.  The intention with this series is to
generalise the concept so that it can be used throughout the kernel.

It's not intended that this be suitable for all devices - some devices
have things that are hard to generalise like registers with variable
size and paging which are hard to support genericly.  At the minute the
code is focused on the common cases.  It is likely that the same code
could be used with other buses with similar properties to I2C and SPI.

Currently only physical I/O is handled, the intention is that once this
support has been reviewed and merged the generic register cache code
that ASoC includes will also be factored out too.  For devices with read
heavy workloads (especially those that need a lot of read/modify/write
cycles) or which don't support read at all this can provide a useful
performance improvement and for sparse register maps there's a lot of
benefit in relatively complex cache code.

I'm not entirely happy with the implementation currently but am fairly
happy with the external interfaces.

A semi-random set of driver conversions have been included in the series
with various degrees of testing including the subsystem wide ASoC code.
Far more drivers could use the code, these have mostly just been done as
samples in a minimally invasive fashion.

There's a git branch at:

   git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git for-next

but due to various -next dependencies this does not currently include
all of the patches posted here.  I've also created a regmap-asoc branch
there which merges current ASoC code with the regmap code.

Mark Brown (8):
      regmap: Add generic non-memory mapped register access API
      regmap: Add I2C bus support
      regmap: Add SPI bus support
      ASoC: Use new register map API for ASoC generic physical I/O
      mfd: Convert WM831x to use regmap API
      mfd: Convert WM8994 to use new register map API
      mfd: Convert pcf50633 to use new register map API
      regulator: Convert tps65023 to use regmap API

 MAINTAINERS                            |    7 +
 drivers/Kconfig                        |    1 +
 drivers/Makefile                       |    1 +
 drivers/mfd/Kconfig                    |    4 +
 drivers/mfd/pcf50633-core.c            |  114 ++------
 drivers/mfd/wm831x-core.c              |   97 +++----
 drivers/mfd/wm831x-i2c.c               |   56 ----
 drivers/mfd/wm831x-spi.c               |   48 ----
 drivers/mfd/wm8994-core.c              |  175 ++----------
 drivers/regmap/Kconfig                 |    6 +
 drivers/regmap/Makefile                |    3 +
 drivers/regmap/regmap-i2c.c            |  113 ++++++++
 drivers/regmap/regmap-spi.c            |   75 +++++
 drivers/regmap/regmap.c                |  484 ++++++++++++++++++++++++++++++++
 drivers/regulator/Kconfig              |    1 +
 drivers/regulator/tps65023-regulator.c |   98 ++-----
 include/linux/mfd/pcf50633/core.h      |    3 +-
 include/linux/mfd/wm831x/core.h        |    7 +-
 include/linux/mfd/wm8994/core.h        |    9 +-
 include/linux/regmap.h                 |   77 +++++
 include/sound/soc.h                    |    2 +
 sound/soc/Kconfig                      |    1 +
 sound/soc/soc-io.c                     |  316 ++-------------------
 23 files changed, 929 insertions(+), 769 deletions(-)

^ permalink raw reply	[flat|nested] 31+ messages in thread
* [PATCH 0/8] regmap: Generic I2C and SPI register map library
@ 2011-06-30  5:58 Mark Brown
  2011-06-30  6:00 ` [PATCH 1/8] regmap: Add generic non-memory mapped register access API Mark Brown
  0 siblings, 1 reply; 31+ messages in thread
From: Mark Brown @ 2011-06-30  5:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: Dimitris Papastamos, Liam Girdwood, Samuel Oritz,
	Lars-Peter Clausen, Graeme Gregory

[This revision of the series has some minor updates to the SPI code.]

Many I2C and SPI based devices implement register maps on top of the raw
wire interface.  This is generally done in a very standard fashion by
devices, resulting in a lot of very similar code in drivers.  For some
time now ASoC has factored this code out into the subsystem but that's
only useful for audio devices.  The intention with this series is to
generalise the concept so that it can be used throughout the kernel.

It's not intended that this be suitable for all devices - some devices
have things that are hard to generalise like registers with variable
size and paging which are hard to support genericly.  At the minute the
code is focused on the common cases.  It is likely that the same code
could be used with other buses with similar properties to I2C and SPI.

Currently only physical I/O is handled, the intention is that once this
support has been reviewed and merged the generic register cache code
that ASoC includes will also be factored out too.  For devices with read
heavy workloads (especially those that need a lot of read/modify/write
cycles) or which don't support read at all this can provide a useful
performance improvement and for sparse register maps there's a lot of
benefit in relatively complex cache code.

I'm not entirely happy with the implementation currently but am fairly
happy with the external interfaces.

A semi-random set of driver conversions have been included in the series
with various degrees of testing including the subsystem wide ASoC code.
Far more drivers could use the code, these have mostly just been done as
samples in a minimally invasive fashion.

There's a git branch at:

   git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git for-next

but due to various -next dependencies this does not currently include
all of the patches posted here.  I've also created a regmap-asoc branch
there which merges current ASoC code with the regmap code.

Mark Brown (8):
      regmap: Add generic non-memory mapped register access API
      regmap: Add I2C bus support
      regmap: Add SPI bus support
      ASoC: Use new register map API for ASoC generic physical I/O
      mfd: Convert WM831x to use regmap API
      mfd: Convert WM8994 to use new register map API
      mfd: Convert pcf50633 to use new register map API
      regulator: Convert tps65023 to use regmap API

 MAINTAINERS                            |    7 +
 drivers/Kconfig                        |    1 +
 drivers/Makefile                       |    1 +
 drivers/mfd/Kconfig                    |    4 +
 drivers/mfd/pcf50633-core.c            |  114 ++------
 drivers/mfd/wm831x-core.c              |   97 +++----
 drivers/mfd/wm831x-i2c.c               |   56 ----
 drivers/mfd/wm831x-spi.c               |   48 ----
 drivers/mfd/wm8994-core.c              |  175 ++----------
 drivers/regmap/Kconfig                 |    6 +
 drivers/regmap/Makefile                |    3 +
 drivers/regmap/regmap-i2c.c            |  113 ++++++++
 drivers/regmap/regmap-spi.c            |   75 +++++
 drivers/regmap/regmap.c                |  481 ++++++++++++++++++++++++++++++++
 drivers/regulator/Kconfig              |    1 +
 drivers/regulator/tps65023-regulator.c |   98 ++-----
 include/linux/mfd/pcf50633/core.h      |    3 +-
 include/linux/mfd/wm831x/core.h        |    7 +-
 include/linux/mfd/wm8994/core.h        |    9 +-
 include/linux/regmap.h                 |   76 +++++
 include/sound/soc.h                    |    2 +
 sound/soc/Kconfig                      |    1 +
 sound/soc/soc-io.c                     |  316 ++-------------------
 23 files changed, 925 insertions(+), 769 deletions(-)
 create mode 100644 drivers/regmap/Kconfig
 create mode 100644 drivers/regmap/Makefile
 create mode 100644 drivers/regmap/regmap-i2c.c
 create mode 100644 drivers/regmap/regmap-spi.c
 create mode 100644 drivers/regmap/regmap.c
 create mode 100644 include/linux/regmap.h

^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2011-07-01  2:38 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-20 12:46 [PATCH 0/8] Generic I2C and SPI register map library Mark Brown
2011-06-20 12:54 ` [PATCH 1/8] regmap: Add generic non-memory mapped register access API Mark Brown
2011-06-20 12:54   ` [PATCH 2/8] regmap: Add I2C bus support Mark Brown
2011-06-20 23:22     ` Lars-Peter Clausen
2011-06-20 23:41       ` Mark Brown
2011-06-21  0:01         ` Lars-Peter Clausen
2011-06-20 12:54   ` [PATCH 3/8] regmap: Add SPI " Mark Brown
2011-06-20 23:26     ` Lars-Peter Clausen
2011-06-20 23:45       ` Mark Brown
2011-06-21  0:00         ` Lars-Peter Clausen
2011-06-20 12:54   ` [PATCH 4/8] ASoC: Use new register map API for ASoC generic physical I/O Mark Brown
2011-06-20 12:54   ` [PATCH 5/8] mfd: Convert WM831x to use regmap API Mark Brown
2011-06-20 12:54   ` [PATCH 6/8] mfd: Convert WM8994 to use new register map API Mark Brown
2011-06-20 12:54   ` [PATCH 7/8] mfd: Convert pcf50633 " Mark Brown
2011-06-20 12:54   ` [PATCH 8/8] regulator: Convert tps65023 to use regmap API Mark Brown
2011-06-20 23:15   ` [PATCH 1/8] regmap: Add generic non-memory mapped register access API Lars-Peter Clausen
2011-06-21  0:14     ` Mark Brown
2011-06-21  0:45       ` Lars-Peter Clausen
2011-06-21  1:24         ` Mark Brown
2011-06-21 11:47           ` Dimitris Papastamos
2011-06-21 12:07             ` Mark Brown
2011-06-21 11:43   ` Dimitris Papastamos
2011-06-21 12:07     ` Mark Brown
2011-06-22 18:44 [PATCH 0/8] Generic I2C and SPI register map library Mark Brown
2011-06-22 18:45 ` [PATCH 1/8] regmap: Add generic non-memory mapped register access API Mark Brown
2011-06-22 19:03   ` Lars-Peter Clausen
2011-06-22 19:11     ` Mark Brown
2011-06-22 19:20       ` Lars-Peter Clausen
2011-06-22 19:42         ` Mark Brown
2011-07-01  0:22   ` Ben Hutchings
2011-07-01  2:38     ` Mark Brown
2011-06-30  5:58 [PATCH 0/8] regmap: Generic I2C and SPI register map library Mark Brown
2011-06-30  6:00 ` [PATCH 1/8] regmap: Add generic non-memory mapped register access API Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.