mfd: max8907: Remove IRQF_NO_AUTOEN flag
authorSergey Larin <cerg2010cerg2010@mail.ru>
Mon, 14 Jun 2021 22:24:20 +0000 (01:24 +0300)
committerLee Jones <lee.jones@linaro.org>
Tue, 15 Jun 2021 12:18:58 +0000 (13:18 +0100)
IRQF_NO_AUTOEN flag doesn't go well with IRQF_SHARED flag - the
check in request_threaded_irq fails and exits with EINVAL.

So we ignore the flag and enable it on the first IRQ request. No
interrupt should arrive from the chip as all interrupts are masked
by default.

Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/max8907.c

index 40e70ab889569ba0c178ef5eb0197d0209d28134..41f566e6a0965fd655f1f9d9f47d6fa9426741d0 100644 (file)
@@ -229,7 +229,7 @@ static int max8907_i2c_probe(struct i2c_client *i2c,
        }
 
        ret = regmap_add_irq_chip(max8907->regmap_gen, max8907->i2c_gen->irq,
-                                 IRQF_ONESHOT | IRQF_SHARED | IRQF_NO_AUTOEN,
+                                 IRQF_ONESHOT | IRQF_SHARED,
                                  -1, &max8907_chg_irq_chip,
                                  &max8907->irqc_chg);
        if (ret != 0) {
@@ -253,8 +253,6 @@ static int max8907_i2c_probe(struct i2c_client *i2c,
                goto err_irqc_rtc;
        }
 
-       enable_irq(max8907->i2c_gen->irq);
-
        ret = mfd_add_devices(max8907->dev, -1, max8907_cells,
                              ARRAY_SIZE(max8907_cells), NULL, 0, NULL);
        if (ret != 0) {