On 04/01/12 04:07, Aaron Lu wrote: > V3: Rework on top of Adrian's vmmc patch > > V2: Error processing code in sdhci_pci_suspend should not be deleted, > it is used to resume hosts which are already successfully suspended for > a multi slot pci device as suggested by Adrian. > > If there are errors happened in sdhci_suspend_host, handle it so that > when the function returns with an error, the host's behaviour is the > same before this function call, e.g. card detection is enabled and > tuning timer is active, etc. > > Signed-off-by: Philip Rakity <prakity@xxxxxxxxxxx> > Signed-off-by: Aaron Lu <aaron.lu@xxxxxxx> > Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx> Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> > --- > drivers/mmc/host/sdhci.c | 18 ++++++++++++++---- > 1 files changed, 14 insertions(+), 4 deletions(-) > > diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c > index 988ae06..823b83e 100644 > --- a/drivers/mmc/host/sdhci.c > +++ b/drivers/mmc/host/sdhci.c > @@ -2349,20 +2349,30 @@ out: > > int sdhci_suspend_host(struct sdhci_host *host) > { > - int ret; > + int ret, has_tuning_timer; > > sdhci_disable_card_detection(host); > > /* Disable tuning since we are suspending */ > - if (host->version >= SDHCI_SPEC_300 && host->tuning_count && > - host->tuning_mode == SDHCI_TUNING_MODE_1) { > + has_tuning_timer = host->version >= SDHCI_SPEC_300 && > + host->tuning_count && host->tuning_mode == SDHCI_TUNING_MODE_1; > + if (has_tuning_timer) { > del_timer_sync(&host->tuning_timer); > host->flags &= ~SDHCI_NEEDS_RETUNING; > } > > ret = mmc_suspend_host(host->mmc); > - if (ret) > + if (ret) { > + if (has_tuning_timer) { > + host->flags |= SDHCI_NEEDS_RETUNING; > + mod_timer(&host->tuning_timer, jiffies + > + host->tuning_count * HZ); > + } > + > + sdhci_enable_card_detection(host); > + > return ret; > + } > > free_irq(host->irq, host); > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html