lkml.org 
[lkml]   [2006]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 05/21] [MMC] Fix sdhci reset timeout
    Date
    The reset register is automatically cleared when the reset has completed.
    Hence, we should busy wait and not have a fixed delay.

    Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
    ---

    drivers/mmc/sdhci.c | 21 +++++++++++++++++----
    1 files changed, 17 insertions(+), 4 deletions(-)

    diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
    index b68ca02..d904435 100644
    --- a/drivers/mmc/sdhci.c
    +++ b/drivers/mmc/sdhci.c
    @@ -94,12 +94,27 @@ static void sdhci_dumpregs(struct sdhci_

    static void sdhci_reset(struct sdhci_host *host, u8 mask)
    {
    + unsigned long timeout;
    +
    writeb(mask, host->ioaddr + SDHCI_SOFTWARE_RESET);

    - if (mask & SDHCI_RESET_ALL) {
    + if (mask & SDHCI_RESET_ALL)
    host->clock = 0;

    - mdelay(50);
    + /* Wait max 100 ms */
    + timeout = 100;
    +
    + /* hw clears the bit when it's done */
    + while (readb(host->ioaddr + SDHCI_SOFTWARE_RESET) & mask) {
    + if (timeout == 0) {
    + printk(KERN_ERR "%s: Reset 0x%x never completed. "
    + "Please report this to " BUGMAIL ".\n",
    + mmc_hostname(host->mmc), (int)mask);
    + sdhci_dumpregs(host);
    + return;
    + }
    + timeout--;
    + mdelay(1);
    }
    }

    @@ -619,9 +634,7 @@ static void sdhci_set_ios(struct mmc_hos
    */
    if (ios->power_mode == MMC_POWER_OFF) {
    writel(0, host->ioaddr + SDHCI_SIGNAL_ENABLE);
    - spin_unlock_irqrestore(&host->lock, flags);
    sdhci_init(host);
    - spin_lock_irqsave(&host->lock, flags);
    }

    sdhci_set_clock(host, ios->clock);
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-06-21 16:30    [W:0.021 / U:0.256 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site