mmc: s3cmci: move to use request_irq by IRQF_NO_AUTOEN flag
authorTian Tao <tiantao6@hisilicon.com>
Wed, 7 Apr 2021 03:15:39 +0000 (11:15 +0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 14 Jun 2021 11:57:34 +0000 (13: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>
Link: https://lore.kernel.org/r/1617765339-28946-1-git-send-email-tiantao6@hisilicon.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/s3cmci.c

index 0ca6f6d..8d5929a 100644 (file)
@@ -1578,17 +1578,12 @@ static int s3cmci_probe(struct platform_device *pdev)
                goto probe_iounmap;
        }
 
-       if (request_irq(host->irq, s3cmci_irq, 0, DRIVER_NAME, host)) {
+       if (request_irq(host->irq, s3cmci_irq, IRQF_NO_AUTOEN, DRIVER_NAME, host)) {
                dev_err(&pdev->dev, "failed to request mci interrupt.\n");
                ret = -ENOENT;
                goto probe_iounmap;
        }
 
-       /* We get spurious interrupts even when we have set the IMSK
-        * register to ignore everything, so use disable_irq() to make
-        * ensure we don't lock the system with un-serviceable requests. */
-
-       disable_irq(host->irq);
        host->irq_state = false;
 
        /* Depending on the dma state, get a DMA channel to use. */