On Mon, Jan 25, 2021 at 7:22 PM AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxxx> wrote: > The Awinic AW9523(B) is a multi-function I2C gpio expander in a > TQFN-24L package, featuring PWM (max 37mA per pin, or total max > power 3.2Watts) for LED driving capability. > > It has two ports with 8 pins per port (for a total of 16 pins), > configurable as either PWM with 1/256 stepping or GPIO input/output, > 1.8V logic input; each GPIO can be configured as input or output > independently from each other. > > This IC also has an internal interrupt controller, which is capable > of generating an interrupt for each GPIO, depending on the > configuration, and will raise an interrupt on the INTN pin to > advertise this to an external interrupt controller. > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxxx> (...) > +static int aw9523_gpio_irq_type(struct irq_data *d, unsigned int type) > +{ > + switch (type) { > + case IRQ_TYPE_NONE: > + case IRQ_TYPE_EDGE_BOTH: > + return 0; > + default: > + return -EINVAL; > + }; > +} This looks better. > +static int aw9523_init_irq(struct aw9523 *awi, int irq) > +{ (...) > + gpioirq = &awi->gpio.irq; > + gpioirq->chip = irqchip; > + gpioirq->parent_handler = NULL; > + gpioirq->num_parents = 0; > + gpioirq->parents = NULL; > + gpioirq->default_type = IRQ_TYPE_LEVEL_MASK; This looks wrong. IRQ_TYPE_EDGE_BOTH? Yours, Linus Walleij