sdio: kick the interrupt thread upon a resume
authorNicolas Pitre <nico@fluxnic.net>
Fri, 5 Mar 2010 21:43:34 +0000 (13:43 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Mar 2010 19:26:37 +0000 (11:26 -0800)
Some SDIO cards may suspend while keeping function interrupts active
especially in the powered suspend case.  Upon resume we need to kick the
SDIO interrupt thread to check for pending interrupts and to restart card
IRQ detection at the host controller level.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Cc: <linux-mmc@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/mmc/core/sdio.c

index 7d8ba64b0170ae849405c9b1f6358a04f64bf1ca..5840de106b691bfad7514ac898f02ffd0b5fdc60 100644 (file)
@@ -441,6 +441,8 @@ static int mmc_sdio_resume(struct mmc_host *host)
        mmc_claim_host(host);
        err = mmc_sdio_init_card(host, host->ocr, host->card,
                                 (host->pm_flags & MMC_PM_KEEP_POWER));
+       if (!err && host->sdio_irqs)
+               mmc_signal_sdio_irq(host);
        mmc_release_host(host);
 
        /*