aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Zhu <r65037@freescale.com>2010-04-02 15:14:03 +0800
committerRichard Zhu <r65037@freescale.com>2010-04-02 16:57:53 +0800
commitb9cd0e9360abeb1e83df755ac24e0888277a8e48 (patch)
tree2c2a5a84481b9f82cd4dfb7203d92a27f2289df5
parent08aabfa5a61c9d6e047bf5d3e4732599603a0b48 (diff)
ENGR00122018 [MX53] SDIO wifi use result in error msg flooding
Disable the ACMD12 error status INT when SDIO wifi used the multi-blk transfer mode Signed-off-by: Richard Zhu <r65037@freescale.com>
-rw-r--r--drivers/mmc/host/mx_sdhci.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/mmc/host/mx_sdhci.c b/drivers/mmc/host/mx_sdhci.c
index 6f5d5ef84f2b..805c3e91748d 100644
--- a/drivers/mmc/host/mx_sdhci.c
+++ b/drivers/mmc/host/mx_sdhci.c
@@ -634,7 +634,7 @@ static void sdhci_finish_data(struct sdhci_host *host)
static void sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd)
{
- int flags;
+ int flags, tmp;
u32 mask;
u32 mode = 0;
unsigned long timeout;
@@ -678,8 +678,18 @@ static void sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd)
/* Set up the transfer mode */
if (cmd->data != NULL) {
mode = SDHCI_TRNS_BLK_CNT_EN | SDHCI_TRNS_DPSEL;
- if (cmd->data->blocks > 1)
+ if (cmd->data->blocks > 1) {
mode |= SDHCI_TRNS_MULTI | SDHCI_TRNS_ACMD12;
+ if (cmd->opcode == 0x35) {
+ tmp = readl(host->ioaddr + SDHCI_INT_ENABLE);
+ tmp &= ~SDHCI_INT_ACMD12ERR;
+ writel(tmp, host->ioaddr + SDHCI_INT_ENABLE);
+ } else {
+ tmp = readl(host->ioaddr + SDHCI_INT_ENABLE);
+ tmp |= SDHCI_INT_ACMD12ERR;
+ writel(tmp, host->ioaddr + SDHCI_INT_ENABLE);
+ }
+ }
if (cmd->data->flags & MMC_DATA_READ)
mode |= SDHCI_TRNS_READ;
else