struct sdhci_host *host =
container_of(work, struct sdhci_host, clk_worker.work);
- spin_lock_irqsave(&host->lock, flags);
if (host->ops->platform_clk_ctrl && host->clk_status)
host->ops->platform_clk_ctrl(host, false);
- spin_unlock_irqrestore(&host->lock, flags);
}
static inline bool sdhci_is_sdio_attached(struct sdhci_host *host)
struct sdhci_host *host = container_of(led, struct sdhci_host, led);
unsigned long flags;
- spin_lock_irqsave(&host->lock, flags);
sdhci_enable_clk(host);
+ spin_lock_irqsave(&host->lock, flags);
if (brightness == LED_OFF)
sdhci_deactivate_led(host);
else
sdhci_activate_led(host);
- sdhci_disable_clk(host, CLK_TIMEOUT);
spin_unlock_irqrestore(&host->lock, flags);
+ sdhci_disable_clk(host, CLK_TIMEOUT);
}
#endif
host = mmc_priv(mmc);
+ sdhci_enable_clk(host);
spin_lock_irqsave(&host->lock, flags);
WARN_ON(host->mrq != NULL);
}
host->mrq = mrq;
- sdhci_enable_clk(host);
/* If polling, assume that the card is always present. */
if (host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION)
host = mmc_priv(mmc);
- spin_lock_irqsave(&host->lock, flags);
sdhci_enable_clk(host);
+ spin_lock_irqsave(&host->lock, flags);
if (host->flags & SDHCI_DEVICE_DEAD)
goto out;
out:
mmiowb();
+ spin_unlock_irqrestore(&host->lock, flags);
+
if (ios->power_mode == MMC_POWER_OFF)
sdhci_disable_clk(host, 0);
-
- spin_unlock_irqrestore(&host->lock, flags);
}
static int check_ro(struct sdhci_host *host)
unsigned long flags;
int is_readonly;
- spin_lock_irqsave(&host->lock, flags);
sdhci_enable_clk(host);
+ spin_lock_irqsave(&host->lock, flags);
if (host->flags & SDHCI_DEVICE_DEAD)
is_readonly = 0;
& SDHCI_WRITE_PROTECT);
spin_unlock_irqrestore(&host->lock, flags);
+ sdhci_disable_clk(host, CLK_TIMEOUT);
/* This quirk needs to be replaced by a callback-function later */
return host->quirks & SDHCI_QUIRK_INVERTED_WRITE_PROTECT ?
host = mmc_priv(mmc);
- spin_lock_irqsave(&host->lock, flags);
sdhci_enable_clk(host);
+ spin_lock_irqsave(&host->lock, flags);
if (host->flags & SDHCI_DEVICE_DEAD)
goto out;
#endif
mmiowb();
- sdhci_disable_clk(host, CLK_TIMEOUT);
spin_unlock_irqrestore(&host->lock, flags);
+ sdhci_disable_clk(host, CLK_TIMEOUT);
mmc_request_done(host->mmc, mrq);
}
{
unsigned long flags;
+ sdhci_enable_clk(host);
+
if (dead) {
spin_lock_irqsave(&host->lock, flags);
" transfer!\n", mmc_hostname(host->mmc));
host->mrq->cmd->error = -ENOMEDIUM;
- sdhci_enable_clk(host);
tasklet_schedule(&host->finish_tasklet);
}