i2c: qup: move to use request_irq by IRQF_NO_AUTOEN flag
authorTian Tao <tiantao6@hisilicon.com>
Fri, 19 Mar 2021 03:29:31 +0000 (11:29 +0800)
committerWolfram Sang <wsa@kernel.org>
Fri, 29 Oct 2021 19:57:33 +0000 (21:57 +0200)
disable_irq() after request_irq() still has a time gap in which
interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
disable IRQ auto-enable because of requesting.

Signed-off-by: Tian Tao <tiantao6@hisilicon.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-qup.c

index 95e7c44..69e9f3e 100644 (file)
@@ -1797,12 +1797,12 @@ nodma:
                goto fail;
 
        ret = devm_request_irq(qup->dev, qup->irq, qup_i2c_interrupt,
-                              IRQF_TRIGGER_HIGH, "i2c_qup", qup);
+                              IRQF_TRIGGER_HIGH | IRQF_NO_AUTOEN,
+                              "i2c_qup", qup);
        if (ret) {
                dev_err(qup->dev, "Request %d IRQ failed\n", qup->irq);
                goto fail;
        }
-       disable_irq(qup->irq);
 
        hw_ver = readl(qup->base + QUP_HW_VERSION);
        dev_dbg(qup->dev, "Revision %x\n", hw_ver);