diff options
-rw-r--r-- | drivers/mmc/host/dw_mmc.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 250aa1836591..4b2bedc887ba 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c | |||
@@ -2228,6 +2228,21 @@ int dw_mci_probe(struct dw_mci *host) | |||
2228 | else | 2228 | else |
2229 | host->num_slots = ((mci_readl(host, HCON) >> 1) & 0x1F) + 1; | 2229 | host->num_slots = ((mci_readl(host, HCON) >> 1) & 0x1F) + 1; |
2230 | 2230 | ||
2231 | /* | ||
2232 | * Enable interrupts for command done, data over, data empty, card det, | ||
2233 | * receive ready and error such as transmit, receive timeout, crc error | ||
2234 | */ | ||
2235 | mci_writel(host, RINTSTS, 0xFFFFFFFF); | ||
2236 | mci_writel(host, INTMASK, SDMMC_INT_CMD_DONE | SDMMC_INT_DATA_OVER | | ||
2237 | SDMMC_INT_TXDR | SDMMC_INT_RXDR | | ||
2238 | DW_MCI_ERROR_FLAGS | SDMMC_INT_CD); | ||
2239 | mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE); /* Enable mci interrupt */ | ||
2240 | |||
2241 | dev_info(host->dev, "DW MMC controller at irq %d, " | ||
2242 | "%d bit host data width, " | ||
2243 | "%u deep fifo\n", | ||
2244 | host->irq, width, fifo_size); | ||
2245 | |||
2231 | /* We need at least one slot to succeed */ | 2246 | /* We need at least one slot to succeed */ |
2232 | for (i = 0; i < host->num_slots; i++) { | 2247 | for (i = 0; i < host->num_slots; i++) { |
2233 | ret = dw_mci_init_slot(host, i); | 2248 | ret = dw_mci_init_slot(host, i); |
@@ -2257,20 +2272,6 @@ int dw_mci_probe(struct dw_mci *host) | |||
2257 | else | 2272 | else |
2258 | host->data_offset = DATA_240A_OFFSET; | 2273 | host->data_offset = DATA_240A_OFFSET; |
2259 | 2274 | ||
2260 | /* | ||
2261 | * Enable interrupts for command done, data over, data empty, card det, | ||
2262 | * receive ready and error such as transmit, receive timeout, crc error | ||
2263 | */ | ||
2264 | mci_writel(host, RINTSTS, 0xFFFFFFFF); | ||
2265 | mci_writel(host, INTMASK, SDMMC_INT_CMD_DONE | SDMMC_INT_DATA_OVER | | ||
2266 | SDMMC_INT_TXDR | SDMMC_INT_RXDR | | ||
2267 | DW_MCI_ERROR_FLAGS | SDMMC_INT_CD); | ||
2268 | mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE); /* Enable mci interrupt */ | ||
2269 | |||
2270 | dev_info(host->dev, "DW MMC controller at irq %d, " | ||
2271 | "%d bit host data width, " | ||
2272 | "%u deep fifo\n", | ||
2273 | host->irq, width, fifo_size); | ||
2274 | if (host->quirks & DW_MCI_QUIRK_IDMAC_DTO) | 2275 | if (host->quirks & DW_MCI_QUIRK_IDMAC_DTO) |
2275 | dev_info(host->dev, "Internal DMAC interrupt fix enabled.\n"); | 2276 | dev_info(host->dev, "Internal DMAC interrupt fix enabled.\n"); |
2276 | 2277 | ||