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 12/21] [MMC] Check only relevant inhibit bits
    Date
    Conform to the sdhci specification as to which inhibit bits should be
    checked at different times.

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

    drivers/mmc/sdhci.c | 16 +++++++++++++---
    1 files changed, 13 insertions(+), 3 deletions(-)

    diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
    index 919d60f..41addde 100644
    --- a/drivers/mmc/sdhci.c
    +++ b/drivers/mmc/sdhci.c
    @@ -465,6 +465,7 @@ static void sdhci_finish_data(struct sdh
    static void sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd)
    {
    int flags;
    + u32 mask;
    unsigned long timeout;

    WARN_ON(host->cmd);
    @@ -473,11 +474,20 @@ static void sdhci_send_command(struct sd

    /* Wait max 10 ms */
    timeout = 10;
    - while (readl(host->ioaddr + SDHCI_PRESENT_STATE) &
    - (SDHCI_CMD_INHIBIT | SDHCI_DATA_INHIBIT)) {
    +
    + mask = SDHCI_CMD_INHIBIT;
    + if ((cmd->data != NULL) || (cmd->flags & MMC_RSP_BUSY))
    + mask |= SDHCI_DATA_INHIBIT;
    +
    + /* We shouldn't wait for data inihibit for stop commands, even
    + though they might use busy signaling */
    + if (host->mrq->data && (cmd == host->mrq->data->stop))
    + mask &= ~SDHCI_DATA_INHIBIT;
    +
    + while (readl(host->ioaddr + SDHCI_PRESENT_STATE) & mask) {
    if (timeout == 0) {
    printk(KERN_ERR "%s: Controller never released "
    - "inhibit bits. Please report this to "
    + "inhibit bit(s). Please report this to "
    BUGMAIL ".\n", mmc_hostname(host->mmc));
    sdhci_dumpregs(host);
    cmd->error = MMC_ERR_FAILED;
    -
    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:33    [W:0.033 / U:1.580 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site