Re: BUG: gpio: pca953x: 24 bit expanders broken since v5.2-rc1

From: H. Nikolaus Schaller
Date: Mon Jun 03 2019 - 04:11:47 EST

> Am 01.06.2019 um 23:57 schrieb Linus Walleij <linus.walleij@xxxxxxxxxx>:
> On Fri, May 31, 2019 at 7:06 PM H. Nikolaus Schaller <hns@xxxxxxxxxxxxx> wrote:
>> Now, this was not a (visible) problem until patch
>> 8b9f9d4dc511 regmap: verify if register is writeable before writing operations
>> enforces to check the register number before invoking the
>> callback pca953x_writeable_register(). pca953x_writeable_register()
>> seems to know about REG_ADDR_AI (through reg & REG_ADDR_MASK) and
>> accepts 0x88 as a valid register number.
>> After the regmap patch the register is checked against
>> pca953x_i2c_regmap.max_register before applying REG_ADDR_MASK
>> and 0x88 is obviously beyond, explaining the symptom.
> Can we simply bump the .max_register in
> pca953x_i2c_regmap to 0xff for a quick fix with a comment
> FIXME to figure it out the right way?

Yes, that might be a quick workaround closer to the correct code location
in the driver.

There seem not to be many regmap accesses with randomly toggled REG_ADDR_AI
bit and therefore risk of seeing two different cache entries where they would
assume the same is low (and not higher than before we fix anything).

I'll give it a try asap.