Skip to content

Commit ed8a4ef

Browse files
committed
Input: gpio_keys - fall back to platform_get_irq() for interrupt-only keys
To allow transitioning away from gpio-keys platform data attempt to retrieve IRQ for interrupt-only keys using platform_get_irq_optional() if interrupt is not specified in platform data. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
1 parent 7ff5745 commit ed8a4ef

1 file changed

Lines changed: 12 additions & 5 deletions

File tree

drivers/input/keyboard/gpio_keys.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -616,12 +616,19 @@ static int gpio_keys_setup_key(struct platform_device *pdev,
616616
break;
617617
}
618618
} else {
619-
if (!button->irq) {
620-
dev_err(dev, "Found button without gpio or irq\n");
621-
return -EINVAL;
622-
}
619+
if (button->irq) {
620+
bdata->irq = button->irq;
621+
} else {
622+
irq = platform_get_irq_optional(pdev, idx);
623+
if (irq < 0) {
624+
error = irq;
625+
return dev_err_probe(dev, error,
626+
"Unable to determine IRQ# for button #%d",
627+
idx);
628+
}
623629

624-
bdata->irq = button->irq;
630+
bdata->irq = irq;
631+
}
625632

626633
if (button->type && button->type != EV_KEY) {
627634
dev_err(dev, "Only EV_KEY allowed for IRQ buttons.\n");

0 commit comments

Comments
 (0)