linux/drivers/base/regmap
Charles Keepax 9ae27a8d1f
regmap: Don't use format_val in regmap_bulk_read
A bulk read can be implemented either through regmap_raw_read, or
by reading each register individually using regmap_read.  Both
regmap_read and regmap_bulk_read should return values in native
endian. In the individual case the current implementation calls
format_val to put the data into the output array, which can cause
endian issues. The regmap_read will have already converted the data
into native endian, if the hosts endian differs from the device then
format_val will switch the endian back again.

Rather than using format_val simply use the code that is called if
there is no format_val function. This code supports all cases except
24-bit but there don't appear to be any users of regmap_bulk_read for
24-bit. Additionally, it would have to be a big endian host for the
old code to actually function correctly anyway.

Fixes: 15b8d2c41f ("regmap: Fix regmap_bulk_read in BE mode")
Reported-by: David Rhodes <david.rhodes@cirrus.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2018-02-13 12:27:44 +00:00
..
internal.h regmap: Disable debugfs when locking is disabled 2017-12-13 16:22:31 +00:00
Kconfig Char/Misc driver patches for 4.16-rc1 2018-02-01 10:31:17 -08:00
Makefile Char/Misc driver patches for 4.16-rc1 2018-02-01 10:31:17 -08:00
regcache-flat.c regcache: flat: Un-inline index lookup from cache access 2018-01-08 12:08:57 +00:00
regcache-lzo.c regmap: cache: Remove unused 'blksize' variable 2016-11-25 13:01:36 +00:00
regcache-rbtree.c regmap: use rb_entry() 2016-12-19 15:42:26 +00:00
regcache.c regmap: Fix typo in IS_ENABLED() check 2017-06-08 15:43:19 +01:00
regmap-ac97.c regmap: Move documentation to regmap.h 2015-08-11 17:21:44 +01:00
regmap-debugfs.c regmap: debugfs: document why we don't create the debugfs entries 2017-12-27 10:33:24 +00:00
regmap-i2c.c regmap-i2c: Use i2c block command only if register value width is 8 bit 2016-06-22 13:50:51 +01:00
regmap-irq.c regmap: irq: add chip option mask_writeonly 2017-06-28 20:11:07 +01:00
regmap-mmio.c Merge remote-tracking branches 'regmap/fix/be', 'regmap/fix/doc' and 'regmap/fix/spmi' into regmap-linus 2016-05-13 10:36:10 +01:00
regmap-sdw.c regmap: Add SoundWire bus support 2018-01-08 11:27:18 +00:00
regmap-slimbus.c regmap: add SLIMbus support 2017-12-19 11:01:03 +01:00
regmap-spi.c regmap: constify regmap_bus structures 2017-08-14 17:36:29 +01:00
regmap-spmi.c regmap: constify regmap_bus structures 2017-08-14 17:36:29 +01:00
regmap-w1.c regmap: regmap-w1: Fix build troubles 2017-07-17 15:53:00 +01:00
regmap.c regmap: Don't use format_val in regmap_bulk_read 2018-02-13 12:27:44 +00:00
trace.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00