Re: [PATCH v2] pinctrl: mcp23s08: Check only GPIOs which have interrupts enabled

From: Arturas Moskvinas
Date: Fri Feb 02 2024 - 05:40:35 EST



On 2/1/24 16:30, Andy Shevchenko wrote:
On Thu, Feb 01, 2024 at 04:14:07PM +0200, Arturas Moskvinas wrote:
GPINTEN register contains information about GPIOs with enabled
interrupts no need to check other GPIOs for changes.

Signed-off-by: Arturas Moskvinas<arturas.moskvinas@xxxxxxxxx>
---
You forgot to add a changelog here, but no need to resend, just you can respond
to the email since it's not a big issue in this case.
Ack.
+ if (mcp_read(mcp, MCP_GPINTEN, &gpinten))
+ goto unlock;
Do all hw variants have this register available?
Esp. I2C part, wouldn't it be problematic (exception with NACK on the bus)?
According to specification sheets MCP(s0)17 [1] page 19, MCP(s0)18 [2] page 19, MCP(s0)08 [3] page 11 - all supported expanders have that register also that register needs to be used [4] to mask/unmask interrupts on given GPIO, without it - expander won't even fire an interrupt. I tested on MCP23018 I2C expander though but module itself is not treating that expander differently for interrupt handling purposes.

Do you want that information to be added as part of commit message or information in the mailing thread will be enough?

[1] https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP23017-Data-Sheet-DS20001952.pdf
[2] https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP23018-Data-Sheet-DS20002103.pdf
[3] https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP23008-MCP23S08-Data-Sheet-DS20001919.pdf
[4] https://elixir.bootlin.com/linux/v6.7/source/drivers/pinctrl/pinctrl-mcp23s08.c#L473

Arturas Moskvinas