]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit - include/linux/regmap.h
regmap: Add regmap_noinc_read API
authorCrestez Dan Leonard <leonard.crestez@intel.com>
Tue, 7 Aug 2018 14:52:17 +0000 (17:52 +0300)
committerMark Brown <broonie@kernel.org>
Thu, 9 Aug 2018 10:00:15 +0000 (11:00 +0100)
commit74fe7b551f3385fa585d92616c85b3a575b2b2cb
tree2fe5ebf48c6f242e0cfe54bfa6350e3e06975fa1
parentce397d215ccd07b8ae3f71db689aedb85d56ab40
regmap: Add regmap_noinc_read API

The regmap API usually assumes that bulk read operations will read a
range of registers but some I2C/SPI devices have certain registers for
which a such a read operation will return data from an internal FIFO
instead. Add an explicit API to support bulk read without range semantics.

Some linux drivers use regmap_bulk_read or regmap_raw_read for such
registers, for example mpu6050 or bmi150 from IIO. This only happens to
work because when caching is disabled a single regmap read op will map
to a single bus read op (as desired). This breaks if caching is enabled and
reg+1 happens to be a cacheable register.

Without regmap support refactoring a driver to enable regmap caching
requires separate I2C and SPI paths. This is exactly what regmap is
supposed to help avoid.

Suggested-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Crestez Dan Leonard <leonard.crestez@intel.com>
Signed-off-by: Stefan Popa <stefan.popa@analog.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/internal.h
drivers/base/regmap/regmap.c
include/linux/regmap.h