diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-09-25 08:41:02 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-09-25 08:41:02 -0400 |
commit | ac48f6cb5f268daff06b636444819e5ffb462611 (patch) | |
tree | 56bcc8b2de42738764ac65056067a17cb97609f4 /drivers/mmc/host/mxs-mmc.c | |
parent | e64d07a2dae569fc3c938adac777562a1d6f151e (diff) | |
parent | 5698bd757d55b1bb87edd1a9744ab09c142abfc2 (diff) |
Merge tag 'v3.6-rc6' into spi-mxs
Linux 3.6-rc6
Conflicts (overlap between moving code that accesses registers around
and factoring the register access out into a SSP layer):
drivers/mmc/host/mxs-mmc.c
Diffstat (limited to 'drivers/mmc/host/mxs-mmc.c')
-rw-r--r-- | drivers/mmc/host/mxs-mmc.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c index 4da99665477..bb4c2bf04d0 100644 --- a/drivers/mmc/host/mxs-mmc.c +++ b/drivers/mmc/host/mxs-mmc.c | |||
@@ -197,11 +197,11 @@ static irqreturn_t mxs_mmc_irq_handler(int irq, void *dev_id) | |||
197 | writel(stat & MXS_MMC_IRQ_BITS, | 197 | writel(stat & MXS_MMC_IRQ_BITS, |
198 | ssp->base + HW_SSP_CTRL1(ssp) + STMP_OFFSET_REG_CLR); | 198 | ssp->base + HW_SSP_CTRL1(ssp) + STMP_OFFSET_REG_CLR); |
199 | 199 | ||
200 | spin_unlock(&host->lock); | ||
201 | |||
200 | if ((stat & BM_SSP_CTRL1_SDIO_IRQ) && (stat & BM_SSP_CTRL1_SDIO_IRQ_EN)) | 202 | if ((stat & BM_SSP_CTRL1_SDIO_IRQ) && (stat & BM_SSP_CTRL1_SDIO_IRQ_EN)) |
201 | mmc_signal_sdio_irq(host->mmc); | 203 | mmc_signal_sdio_irq(host->mmc); |
202 | 204 | ||
203 | spin_unlock(&host->lock); | ||
204 | |||
205 | if (stat & BM_SSP_CTRL1_RESP_TIMEOUT_IRQ) | 205 | if (stat & BM_SSP_CTRL1_RESP_TIMEOUT_IRQ) |
206 | cmd->error = -ETIMEDOUT; | 206 | cmd->error = -ETIMEDOUT; |
207 | else if (stat & BM_SSP_CTRL1_RESP_ERR_IRQ) | 207 | else if (stat & BM_SSP_CTRL1_RESP_ERR_IRQ) |
@@ -525,12 +525,7 @@ static void mxs_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable) | |||
525 | writel(BM_SSP_CTRL0_SDIO_IRQ_CHECK, | 525 | writel(BM_SSP_CTRL0_SDIO_IRQ_CHECK, |
526 | ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); | 526 | ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); |
527 | writel(BM_SSP_CTRL1_SDIO_IRQ_EN, | 527 | writel(BM_SSP_CTRL1_SDIO_IRQ_EN, |
528 | ssp->base + HW_SSP_CTRL1(ssp) + STMP_OFFSET_REG_SET); | 528 | host->base + HW_SSP_CTRL1(host) + STMP_OFFSET_REG_SET); |
529 | |||
530 | if (readl(ssp->base + HW_SSP_STATUS(ssp)) & | ||
531 | BM_SSP_STATUS_SDIO_IRQ) | ||
532 | mmc_signal_sdio_irq(host->mmc); | ||
533 | |||
534 | } else { | 529 | } else { |
535 | writel(BM_SSP_CTRL0_SDIO_IRQ_CHECK, | 530 | writel(BM_SSP_CTRL0_SDIO_IRQ_CHECK, |
536 | ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR); | 531 | ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR); |
@@ -539,6 +534,11 @@ static void mxs_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable) | |||
539 | } | 534 | } |
540 | 535 | ||
541 | spin_unlock_irqrestore(&host->lock, flags); | 536 | spin_unlock_irqrestore(&host->lock, flags); |
537 | |||
538 | if (enable && readl(ssp->base + HW_SSP_STATUS(ssp)) & | ||
539 | BM_SSP_STATUS_SDIO_IRQ) | ||
540 | mmc_signal_sdio_irq(host->mmc); | ||
541 | |||
542 | } | 542 | } |
543 | 543 | ||
544 | static const struct mmc_host_ops mxs_mmc_ops = { | 544 | static const struct mmc_host_ops mxs_mmc_ops = { |