Skip to content
Commit 3b00691c authored by H. Nikolaus Schaller's avatar H. Nikolaus Schaller Committed by Linus Walleij
Browse files

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 b32cecb4 ("gpio: pca953x: Extract the register address mangling to single function")

but only became visible by

	commit 8b9f9d4d ("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: default avatarH. Nikolaus Schaller <hns@goldelico.com>
Suggested-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarH. Nikolaus Schaller <hns@goldelico.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent f2c7c76c
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