H. Nikolaus Schaller 3b00691cc4 gpio: pca953x: hack to fix 24 bit gpio expanders
24 bit expanders use REG_ADDR_AI in combination with register addressing. This
conflicts with regmap which takes this bit as part of the register number,
i.e. a second cache entry is defined for accessed with REG_ADDR_AI being
set although on the chip it is the same register as with REG_ADDR_AI being
cleared.

The problem was introduced by

	commit b32cecb46bdc ("gpio: pca953x: Extract the register address mangling to single function")

but only became visible by

	commit 8b9f9d4dc511 ("regmap: verify if register is writeable before writing operations")

because before, the regmap size was effectively ignored and
pca953x_writeable_register() did know to ignore REG_ADDR_AI. Still, there
were two separate cache entries created.

Since the use of REG_ADDR_AI seems to be static we can work around this
issue by simply increasing the size of the regmap to cover the "virtual"
registers with REG_ADDR_AI being set. This only means that half of the
regmap buffer will be unused.

Reported-by: H. Nikolaus Schaller <hns@goldelico.com>
Suggested-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2019-06-08 00:03:18 +02:00
..
2018-03-19 01:50:07 +01:00
2018-05-16 14:35:24 +02:00
2018-08-10 23:19:17 +02:00
2018-12-14 14:27:41 +01:00
2019-02-14 15:14:37 +01:00
2019-04-23 13:02:15 +02:00
2017-12-22 15:24:31 +01:00
2019-04-08 15:48:11 +02:00
2018-01-09 14:51:00 +01:00
2019-05-28 09:33:05 -07:00
2019-05-16 08:31:32 -07:00
2018-11-05 08:54:40 +01:00