Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

regmap: fix bulk writes on paged registers

On buses like SlimBus and SoundWire which does not support
gather_writes yet in regmap, A bulk write on paged register
would be silently ignored after programming page.
This is because local variable 'ret' value in regmap_raw_write_impl()
gets reset to 0 once page register is written successfully and the
code below checks for 'ret' value to be -ENOTSUPP before linearising
the write buffer to send to bus->write().

Fix this by resetting the 'ret' value to -ENOTSUPP in cases where
gather_writes() is not supported or single register write is
not possible.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Srinivas Kandagatla and committed by
Mark Brown
db057679 2899872b

+2
+2
drivers/base/regmap/regmap.c
··· 1637 1637 map->format.reg_bytes + 1638 1638 map->format.pad_bytes, 1639 1639 val, val_len); 1640 + else 1641 + ret = -ENOTSUPP; 1640 1642 1641 1643 /* If that didn't work fall back on linearising by hand. */ 1642 1644 if (ret == -ENOTSUPP) {