2013-10-10 05:26:52

by Alexey Neyman

[permalink] [raw]
Subject: Avoid needless loop in sdhci_irq() for Card Interrupt

Hi all,

I've discovered that the sdhci_irq() function needlessly iterates re-reading
the interrupt status and doing nothing (until it runs out of max_loops) when
it handles the "Card Interrupt" status in the interrupt status register.

The reason is that the "Card Interrupt" bit is not cleared until the
sdhci_irq() calls mmc_signal_sdio_irq(), so if Card Interrupt was asserted,
re-reading the interrupt status will find this bit set over and over, even if
no other bits are reported.

The fix: ignore Card Interrupt bits in the interrupt status if we already know
that mmc_signal_sdio_irq() is going to be called at the end of sdhci_irq().

Signed-off-by: Alexey Neyman <[email protected]>


Attachments:
sdhci.c.diff (688.00 B)