[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <AA845A5E-65BE-41A4-A2CC-37C6DA432E6E@goldelico.com>
Date: Mon, 3 Jun 2019 10:08:08 +0200
From: "H. Nikolaus Schaller" <hns@...delico.com>
To: Linus Walleij <linus.walleij@...aro.org>
Cc: Bartosz Golaszewski <bgolaszewski@...libre.com>,
Nandor Han <nandor.han@...sala.com>,
Mark Brown <broonie@...nel.org>,
Andy Shevchenko <andy.shevchenko@...il.com>,
Tony Lindgren <tony@...mide.com>,
Discussions about the Letux Kernel
<letux-kernel@...nphoenux.org>, kernel@...a-handheld.com,
"open list:GPIO SUBSYSTEM" <linux-gpio@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: BUG: gpio: pca953x: 24 bit expanders broken since v5.2-rc1
> Am 01.06.2019 um 23:57 schrieb Linus Walleij <linus.walleij@...aro.org>:
>
> On Fri, May 31, 2019 at 7:06 PM H. Nikolaus Schaller <hns@...delico.com> 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.
BR,
Nikolaus
Powered by blists - more mailing lists