@@ -2224,20 +2224,28 @@ out:
int sdhci_suspend_host(struct sdhci_host *host, pm_message_t state)
{
int ret;
+ int cantune = 0;
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) {
- host->flags &= ~SDHCI_NEEDS_RETUNING;
- mod_timer(&host->tuning_timer, jiffies +
- host->tuning_count * HZ);
+ host->tuning_mode == SDHCI_TUNING_MODE_1) {
+ host->flags &= ~SDHCI_NEEDS_RETUNING;
+ del_timer_sync(&host->tuning_timer);
+ cantune= 1;
}
ret = mmc_suspend_host(host->mmc);
- if (ret)
+ if (ret) {
+ if (cantune) {
+ 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