On Mon, Jan 25, 2021 at 7:22 PM AngeloGioacchino Del Regno
[off-list ref] 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 <redacted>
(...)
+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