The mfd mc13xxx interrupt handling was migrated to regmap with commit 10f9edaeaa30 ("mfd: mc13xxx: Use regmap irq framework for interrupts"). As a consequence, button_irq() will get called with virtual irq instead of chip-internal irq now. Add wrappers for the three supported interrupts. Signed-off-by: Alexander Kurz <akurz@xxxxxxxx> --- drivers/input/misc/mc13783-pwrbutton.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/input/misc/mc13783-pwrbutton.c b/drivers/input/misc/mc13783-pwrbutton.c index 1c7faa9b7afe..4765b25bc9f6 100644 --- a/drivers/input/misc/mc13783-pwrbutton.c +++ b/drivers/input/misc/mc13783-pwrbutton.c @@ -88,6 +88,21 @@ static irqreturn_t button_irq(int irq, void *_priv) return IRQ_HANDLED; } +static irqreturn_t button1_irq(int irq, void *_priv) +{ + return button_irq(MC13783_IRQ_ONOFD1, _priv); +} + +static irqreturn_t button2_irq(int irq, void *_priv) +{ + return button_irq(MC13783_IRQ_ONOFD2, _priv); +} + +static irqreturn_t button3_irq(int irq, void *_priv) +{ + return button_irq(MC13783_IRQ_ONOFD3, _priv); +} + static int mc13783_pwrbutton_probe(struct platform_device *pdev) { const struct mc13xxx_buttons_platform_data *pdata; @@ -137,7 +152,7 @@ static int mc13783_pwrbutton_probe(struct platform_device *pdev) reg |= MC13783_POWER_CONTROL_2_ON1BRSTEN; err = mc13xxx_irq_request(mc13783, MC13783_IRQ_ONOFD1, - button_irq, "b1on", priv); + button1_irq, "b1on", priv); if (err) { dev_dbg(&pdev->dev, "Can't request irq\n"); goto free_priv; @@ -156,7 +171,7 @@ static int mc13783_pwrbutton_probe(struct platform_device *pdev) reg |= MC13783_POWER_CONTROL_2_ON2BRSTEN; err = mc13xxx_irq_request(mc13783, MC13783_IRQ_ONOFD2, - button_irq, "b2on", priv); + button2_irq, "b2on", priv); if (err) { dev_dbg(&pdev->dev, "Can't request irq\n"); goto free_irq_b1; @@ -175,7 +190,7 @@ static int mc13783_pwrbutton_probe(struct platform_device *pdev) reg |= MC13783_POWER_CONTROL_2_ON3BRSTEN; err = mc13xxx_irq_request(mc13783, MC13783_IRQ_ONOFD3, - button_irq, "b3on", priv); + button3_irq, "b3on", priv); if (err) { dev_dbg(&pdev->dev, "Can't request irq: %d\n", err); goto free_irq_b2; -- 2.39.5