diff options
Diffstat (limited to 'drivers/mmc/host/omap_hsmmc.c')
| -rw-r--r-- | drivers/mmc/host/omap_hsmmc.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index d183be6f2a5f..e62a22a7f00c 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c | |||
| @@ -298,7 +298,6 @@ mmc_omap_xfer_done(struct mmc_omap_host *host, struct mmc_data *data) | |||
| 298 | struct mmc_request *mrq = host->mrq; | 298 | struct mmc_request *mrq = host->mrq; |
| 299 | 299 | ||
| 300 | host->mrq = NULL; | 300 | host->mrq = NULL; |
| 301 | mmc_omap_fclk_lazy_disable(host); | ||
| 302 | mmc_request_done(host->mmc, mrq); | 301 | mmc_request_done(host->mmc, mrq); |
| 303 | return; | 302 | return; |
| 304 | } | 303 | } |
| @@ -434,6 +433,8 @@ static irqreturn_t mmc_omap_irq(int irq, void *dev_id) | |||
| 434 | if (host->mrq == NULL) { | 433 | if (host->mrq == NULL) { |
| 435 | OMAP_HSMMC_WRITE(host->base, STAT, | 434 | OMAP_HSMMC_WRITE(host->base, STAT, |
| 436 | OMAP_HSMMC_READ(host->base, STAT)); | 435 | OMAP_HSMMC_READ(host->base, STAT)); |
| 436 | /* Flush posted write */ | ||
| 437 | OMAP_HSMMC_READ(host->base, STAT); | ||
| 437 | return IRQ_HANDLED; | 438 | return IRQ_HANDLED; |
| 438 | } | 439 | } |
| 439 | 440 | ||
| @@ -489,8 +490,10 @@ static irqreturn_t mmc_omap_irq(int irq, void *dev_id) | |||
| 489 | } | 490 | } |
| 490 | 491 | ||
| 491 | OMAP_HSMMC_WRITE(host->base, STAT, status); | 492 | OMAP_HSMMC_WRITE(host->base, STAT, status); |
| 493 | /* Flush posted write */ | ||
| 494 | OMAP_HSMMC_READ(host->base, STAT); | ||
| 492 | 495 | ||
| 493 | if (end_cmd || (status & CC)) | 496 | if (end_cmd || ((status & CC) && host->cmd)) |
| 494 | mmc_omap_cmd_done(host, host->cmd); | 497 | mmc_omap_cmd_done(host, host->cmd); |
| 495 | if (end_trans || (status & TC)) | 498 | if (end_trans || (status & TC)) |
| 496 | mmc_omap_xfer_done(host, data); | 499 | mmc_omap_xfer_done(host, data); |
