mmc: at91_mci: fix timeout errors
authorWolfgang Muees <wolfgang.mues@auerswald.de>
Fri, 5 Mar 2010 21:43:39 +0000 (13:43 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 6 Mar 2010 19:26:39 +0000 (11:26 -0800)
Fix two timeout errors, one for slow SDHC cards and one for slow users
while inserting SD cards.

Signed-off-by: Wolfgang Muees <wolfgang.mues@auerswald.de>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: Andrew Victor <avictor.za@gmail.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/host/at91_mci.c

index 4e1b2e6..37efe6b 100644 (file)
@@ -756,7 +756,8 @@ static void at91_mci_request(struct mmc_host *mmc, struct mmc_request *mrq)
        host->request = mrq;
        host->flags = 0;
 
-       mod_timer(&host->timer, jiffies +  HZ);
+       /* more than 1s timeout needed with slow SD cards */
+       mod_timer(&host->timer, jiffies +  msecs_to_jiffies(2000));
 
        at91_mci_process_next(host);
 }
@@ -944,7 +945,8 @@ static irqreturn_t at91_mmc_det_irq(int irq, void *_host)
                        pr_debug("****** Resetting SD-card bus width ******\n");
                        at91_mci_write(host, AT91_MCI_SDCR, at91_mci_read(host, AT91_MCI_SDCR) & ~AT91_MCI_SDCBUS);
                }
-               mmc_detect_change(host->mmc, msecs_to_jiffies(100));
+               /* 0.5s needed because of early card detect switch firing */
+               mmc_detect_change(host->mmc, msecs_to_jiffies(500));
        }
        return IRQ_HANDLED;
 }