mmc: meson-gx: improve interrupt handling
Disabling and immediately re-enabling interrupts in meson_mmc_request doesn't provide a benefit. Instead enable interrupts in probe already. And disable interrupts in remove, this was missing so far. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by: Kevin Hilman <khilman@baylibre.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
690f90b628
commit
92763b997e
@ -542,11 +542,6 @@ static void meson_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)
|
|||||||
/* Stop execution */
|
/* Stop execution */
|
||||||
writel(0, host->regs + SD_EMMC_START);
|
writel(0, host->regs + SD_EMMC_START);
|
||||||
|
|
||||||
/* clear, ack, enable all interrupts */
|
|
||||||
writel(0, host->regs + SD_EMMC_IRQ_EN);
|
|
||||||
writel(IRQ_EN_MASK, host->regs + SD_EMMC_STATUS);
|
|
||||||
writel(IRQ_EN_MASK, host->regs + SD_EMMC_IRQ_EN);
|
|
||||||
|
|
||||||
host->mrq = mrq;
|
host->mrq = mrq;
|
||||||
|
|
||||||
if (mrq->sbc)
|
if (mrq->sbc)
|
||||||
@ -775,6 +770,7 @@ static int meson_mmc_probe(struct platform_device *pdev)
|
|||||||
/* clear, ack, enable all interrupts */
|
/* clear, ack, enable all interrupts */
|
||||||
writel(0, host->regs + SD_EMMC_IRQ_EN);
|
writel(0, host->regs + SD_EMMC_IRQ_EN);
|
||||||
writel(IRQ_EN_MASK, host->regs + SD_EMMC_STATUS);
|
writel(IRQ_EN_MASK, host->regs + SD_EMMC_STATUS);
|
||||||
|
writel(IRQ_EN_MASK, host->regs + SD_EMMC_IRQ_EN);
|
||||||
|
|
||||||
ret = devm_request_threaded_irq(&pdev->dev, host->irq,
|
ret = devm_request_threaded_irq(&pdev->dev, host->irq,
|
||||||
meson_mmc_irq, meson_mmc_irq_thread,
|
meson_mmc_irq, meson_mmc_irq_thread,
|
||||||
@ -812,6 +808,9 @@ static int meson_mmc_remove(struct platform_device *pdev)
|
|||||||
if (WARN_ON(!host))
|
if (WARN_ON(!host))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
/* disable interrupts */
|
||||||
|
writel(0, host->regs + SD_EMMC_IRQ_EN);
|
||||||
|
|
||||||
if (host->bounce_buf)
|
if (host->bounce_buf)
|
||||||
dma_free_coherent(host->dev, host->bounce_buf_size,
|
dma_free_coherent(host->dev, host->bounce_buf_size,
|
||||||
host->bounce_buf, host->bounce_dma_addr);
|
host->bounce_buf, host->bounce_dma_addr);
|
||||||
|
Loading…
Reference in New Issue
Block a user