Commit 081f1af7 authored by Mark Brown's avatar Mark Brown Committed by Greg Kroah-Hartman

regmap: Fix handling of volatile registers for format_write() chips

commit 5844a8b9 upstream.

A previous over-zealous factorisation of code means that we only treat
registers as volatile if they are readable. For most devices this is fine
since normally most registers can be read and volatility implies
readability but for format_write() devices where there is no readback from
the hardware and we use volatility to mean simply uncacheability this means
that we end up treating all registers as cacheble.

A bigger refactoring of the code to clarify this is in order but as a fix
make a minimal change and only check readability when checking volatility
if there is no format_write() operation defined for the device.
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
Tested-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 9d734ff1
...@@ -109,7 +109,7 @@ bool regmap_readable(struct regmap *map, unsigned int reg) ...@@ -109,7 +109,7 @@ bool regmap_readable(struct regmap *map, unsigned int reg)
bool regmap_volatile(struct regmap *map, unsigned int reg) bool regmap_volatile(struct regmap *map, unsigned int reg)
{ {
if (!regmap_readable(map, reg)) if (!map->format.format_write && !regmap_readable(map, reg))
return false; return false;
if (map->volatile_reg) if (map->volatile_reg)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment