Thread (16 messages) 16 messages, 3 authors, 2021-10-08

RE: [PATCH v3 1/2] gpio: mlxbf2: Introduce IRQ support

From: Asmaa Mnebhi <asmaa@nvidia.com>
Date: 2021-10-08 14:47:30
Also in: linux-acpi, linux-gpio, lkml

In KSZ9031, Register MII_KSZPHY_INTCS=0x1B reports all interrupt 
events and clear on read. So if there are 4 different interrupts, once it is read once, all 4 clear at once.
The micrel.c driver has defined ack_interrupt to read the above reg 
and is called every time the interrupt handler phy_interrupt is called. So in this case, we should be good.
The code flow in our case would look like this:
- 2 interrupt sources (for example, link down followed by link up) set 
in MII_KSZPHY_INTCS
- interrupt handler (phy_interrupt) reads MII_KSZPHY_INT which 
automatically clears both interrupts
- another internal source triggers and sets the register.
- The second edge will be caught accordingly by the GPIO.
I still think there is a small race window. You product manager needs to decide if that is acceptable, or if you should poll the PHY.
I talked to both our managers and the HW team and they said it is ok to use the interrupt for our product.
Anyway, it is clear the hardware only does level interrupts, so the GPIO driver should only accept level interrupts. -EINVAL otherwise.
There is an on going conversation with HW folks to address this for future BlueField generations.

Thank you.
Asmaa
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help