[PATCH 00/20] Regmap max_raw_io and bmc150 SPI support

Markus Pargmann
2015-08-12T10:14:33Z

Hi,

this series was created to add SPI support to the bmc150 accelerometer driver.
To not add any regressions, I had to add some infrastructure that allows to use
regmap with busses that do limit the size of transfers (block smbus). I hope
this is sufficient to not break anything.

The series has several different parts for regmap and the iio driver:

Patches 1-4 fix some minor things in the regmap core code.

Patches 5-11 fix some issues with regmap busses that do not have an
implementation of read() or write(). Currently a lot of the regmap API
functions simply fail for those busses.

Patches 12-14 introduce 'max_raw_io' for busses which defines the max number of
bytes that may be send or received by this bus. This includes handling in
regmap_bulk_read/write and reporting an error for raw_read/writes that are
above this limit (E2BIG).

Patch 15 makes use of max_raw_io by adding smbus i2c block bus driver. This
patch is created to avoid regressions in the bmc150 driver.

Patches 16-20 move bmc150 to use regmap and add SPI support.

As I don't have a bmc150 connected via smbus I am not able to test Patch 14 and
the resulting I2C part of the bmc150 driver. It would be great if someone with
the hardware could test it. Also it would be great to have some test coverage
for all other regmap setups.

Best Regards,

Markus

Markus Pargmann (20):
regmap: Add missing comments about struct regmap_bus
regmap: Remove regmap_bulk_write 64bit support
regmap: Fix integertypes for register address and value
regmap: Do not skip format initialization
regmap: Restructure writes in _regmap_raw_write()
regmap: Fix regmap_bulk_write for bus writes
regmap: Without bus read() or write(), force use_single_rw
regmap: Fix regmap_can_raw_write check
regmap: _regmap_raw_write fix for busses without write()
regmap: _regmap_raw_multi_reg_write: Add reg_write() support
regmap: _regmap_raw_read: Add handling of busses without bus->read()
regmap: Introduce max_raw_io for regmap_bulk_read/write
regmap: regmap max_raw_io getter function
regmap: Add raw_write/read checks for max_raw_write/read sizes
regmap-i2c: Add smbus i2c block support
iio: bmc150: Fix irq checks
iio: bmc150: Use i2c regmap
iio: bcm150: Remove i2c_client from private data
iio: bmc150: Split the driver into core and i2c
iio: bmc150: Add SPI driver

drivers/base/regmap/internal.h | 3 +
drivers/base/regmap/regmap-i2c.c | 46 +++
drivers/base/regmap/regmap.c | 221 ++++++++---
drivers/iio/accel/Kconfig | 32 +-
drivers/iio/accel/Makefile | 4 +-
.../accel/{bmc150-accel.c => bmc150-accel-core.c} | 404 ++++++++-------------
drivers/iio/accel/bmc150-accel-i2c.c | 101 ++++++
drivers/iio/accel/bmc150-accel-spi.c | 86 +++++
drivers/iio/accel/bmc150-accel.h | 21 ++
include/linux/regmap.h | 8 +-
10 files changed, 622 insertions(+), 304 deletions(-)
rename drivers/iio/accel/{bmc150-accel.c => bmc150-accel-core.c} (82%)
create mode 100644 drivers/iio/accel/bmc150-accel-i2c.c
create mode 100644 drivers/iio/accel/bmc150-accel-spi.c
create mode 100644 drivers/iio/accel/bmc150-accel.h

--
2.4.6