On Thu, 2021-10-28 at 13:23 +0300, Andy Shevchenko wrote: > On Thu, Oct 28, 2021 at 11:52 AM Sander Vanheule <sander@xxxxxxxxxxxxx> wrote: > > > > The irqchip uses one domain for all GPIO lines, so the line offset > > should be determined w.r.t. the first line of the first port, not the > > first line of the triggered port. > > > > Fixes: 0d82fb1127fb ("gpio: Add Realtek Otto GPIO support") > > Not sure it fixes anything (it wasn't working from day 1), but in any > case the patch is good. The original patch was tested using a GPIO line on port A, so the missing offset was irrelevant there (as it was zero). After recently acquiring a new device, I was trying to use a line on port C, which resulted in unhandled interrupts. > > > Signed-off-by: Sander Vanheule <sander@xxxxxxxxxxxxx> > > --- > > drivers/gpio/gpio-realtek-otto.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/gpio/gpio-realtek-otto.c b/drivers/gpio/gpio-realtek-otto.c > > index eeeb39bc171d..bd75401b549d 100644 > > --- a/drivers/gpio/gpio-realtek-otto.c > > +++ b/drivers/gpio/gpio-realtek-otto.c > > @@ -205,7 +205,7 @@ static void realtek_gpio_irq_handler(struct irq_desc *desc) > > status = realtek_gpio_read_isr(ctrl, lines_done / 8); > > port_pin_count = min(gc->ngpio - lines_done, 8U); > > for_each_set_bit(offset, &status, port_pin_count) > > - generic_handle_domain_irq(gc->irq.domain, offset); > > + generic_handle_domain_irq(gc->irq.domain, offset + > > lines_done); > > Looking into these '/ 8', '8U' sounds to me that it may be a good idea > to switch to for_each_set_clump8(). But it's out of scope here. For the current code, I could indeed have used for_each_set_clump8, instead of the u8 read_isr() accessor. However, I'm also preparing support for the RTL9302 device I have recently acquired. On RTL930x and RTL931x the port order is reversed, requiring different port order handling. My plan is to provide different port_read_isr() functions for the different port orders, that return the requested u8. I'll try to get that patch set out today as well. Best, Sander