|
@@ -864,6 +864,8 @@ static void omap_hsmmc_request_done(struct omap_hsmmc_host *host, struct mmc_req
|
|
|
return;
|
|
|
host->mrq = NULL;
|
|
|
mmc_request_done(host->mmc, mrq);
|
|
|
+ pm_runtime_mark_last_busy(host->dev);
|
|
|
+ pm_runtime_put_autosuspend(host->dev);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -1309,6 +1311,8 @@ static void omap_hsmmc_dma_callback(void *param)
|
|
|
|
|
|
host->mrq = NULL;
|
|
|
mmc_request_done(host->mmc, mrq);
|
|
|
+ pm_runtime_mark_last_busy(host->dev);
|
|
|
+ pm_runtime_put_autosuspend(host->dev);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1541,6 +1545,7 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
|
|
|
|
|
|
BUG_ON(host->req_in_progress);
|
|
|
BUG_ON(host->dma_ch != -1);
|
|
|
+ pm_runtime_get_sync(host->dev);
|
|
|
if (host->protect_card) {
|
|
|
if (host->reqs_blocked < 3) {
|
|
|
/*
|
|
@@ -1557,6 +1562,8 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
|
|
|
req->data->error = -EBADF;
|
|
|
req->cmd->retries = 0;
|
|
|
mmc_request_done(mmc, req);
|
|
|
+ pm_runtime_mark_last_busy(host->dev);
|
|
|
+ pm_runtime_put_autosuspend(host->dev);
|
|
|
return;
|
|
|
} else if (host->reqs_blocked)
|
|
|
host->reqs_blocked = 0;
|
|
@@ -1570,6 +1577,8 @@ static void omap_hsmmc_request(struct mmc_host *mmc, struct mmc_request *req)
|
|
|
req->data->error = err;
|
|
|
host->mrq = NULL;
|
|
|
mmc_request_done(mmc, req);
|
|
|
+ pm_runtime_mark_last_busy(host->dev);
|
|
|
+ pm_runtime_put_autosuspend(host->dev);
|
|
|
return;
|
|
|
}
|
|
|
if (req->sbc && !(host->flags & AUTO_CMD23)) {
|
|
@@ -1773,25 +1782,6 @@ static void omap_hsmmc_conf_bus_power(struct omap_hsmmc_host *host)
|
|
|
set_sd_bus_power(host);
|
|
|
}
|
|
|
|
|
|
-static int omap_hsmmc_enable_fclk(struct mmc_host *mmc)
|
|
|
-{
|
|
|
- struct omap_hsmmc_host *host = mmc_priv(mmc);
|
|
|
-
|
|
|
- pm_runtime_get_sync(host->dev);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-static int omap_hsmmc_disable_fclk(struct mmc_host *mmc)
|
|
|
-{
|
|
|
- struct omap_hsmmc_host *host = mmc_priv(mmc);
|
|
|
-
|
|
|
- pm_runtime_mark_last_busy(host->dev);
|
|
|
- pm_runtime_put_autosuspend(host->dev);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
static int omap_hsmmc_multi_io_quirk(struct mmc_card *card,
|
|
|
unsigned int direction, int blk_size)
|
|
|
{
|
|
@@ -1803,8 +1793,6 @@ static int omap_hsmmc_multi_io_quirk(struct mmc_card *card,
|
|
|
}
|
|
|
|
|
|
static struct mmc_host_ops omap_hsmmc_ops = {
|
|
|
- .enable = omap_hsmmc_enable_fclk,
|
|
|
- .disable = omap_hsmmc_disable_fclk,
|
|
|
.post_req = omap_hsmmc_post_req,
|
|
|
.pre_req = omap_hsmmc_pre_req,
|
|
|
.request = omap_hsmmc_request,
|