OSDN Git Service

mmc: jz4740: Reset the device requesting the interrupt
authorZubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
Wed, 28 Mar 2018 21:00:47 +0000 (18:00 -0300)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 2 May 2018 13:08:31 +0000 (15:08 +0200)
In case a bootloader leaves the device in a bad state,
requesting the interrupt before resetting results in a bad
interrupt loop.

Signed-off-by: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
[Ezequiel: cleanup commit description]
Tested-by: Mathieu Malaterre <malat@debian.org>
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.co.uk>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/jz4740_mmc.c

index b11f650..9f316d9 100644 (file)
@@ -1027,6 +1027,8 @@ static int jz4740_mmc_probe(struct platform_device* pdev)
        spin_lock_init(&host->lock);
        host->irq_mask = 0xffff;
 
+       jz4740_mmc_reset(host);
+
        ret = request_threaded_irq(host->irq, jz_mmc_irq, jz_mmc_irq_worker, 0,
                        dev_name(&pdev->dev), host);
        if (ret) {
@@ -1034,7 +1036,6 @@ static int jz4740_mmc_probe(struct platform_device* pdev)
                goto err_free_gpios;
        }
 
-       jz4740_mmc_reset(host);
        jz4740_mmc_clock_disable(host);
        timer_setup(&host->timeout_timer, jz4740_mmc_timeout, 0);