Re: register access issues in pca953x gpio driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 27, 2020 at 08:49:22AM +0100, Uwe Kleine-König wrote:
> Hello,
> 
> I have an issue with an pca9505 when the .set_multiple callback is used.
> That chip has a bit ("AI") in the register address that makes the
> address increment automatically on subsequent reads and writes.
> 
> The problem (that was already noticed in commit 3b00691cc46a ("gpio:
> pca953x: hack to fix 24 bit gpio expanders")) is that the regmap stuff
> isn't aware of this bit and so register accesses that make use of the auto
> incrementing are not matched to those without it.
> 
> Additionally there is a bug in pca953x_recalc_addr() that results in the
> AI bit only be set for register writes. (That's the issue that made me
> notice this problem. The result is that in .set_multiple the read
> accesses bank 0's register only (when the hardware is hit) or uses the
> read cache from a location without AI set and then writes using AI set.)
> 
> I didn't try to understand if fixing pca953x_recalc_addr() to not set AI
> depending on write fixes all issues. But to make the register access in
> the driver robust I'm convinced we need to fix the regmap stuff to
> understand the AI bit.
> 
> @broonie: I don't know regmap good enough to instantly know the right
> magic to do this. Can you give a rough overview what would be needed?

Uwe, thank you for the report. Personally I didn't try set_multiple() with this
driver and as you noticed Marek did a big refactoring to the driver to that
part in particular.

So, I guess he may shed a light a bit on this.

-- 
With Best Regards,
Andy Shevchenko





[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux