|
@@ -166,7 +166,9 @@ static int dwmci_data_transfer(struct dwmci_host *host, struct mmc_data *data)
|
|
|
if (host->fifo_mode && size) {
|
|
|
len = 0;
|
|
|
if (data->flags == MMC_DATA_READ &&
|
|
|
- (mask & DWMCI_INTMSK_RXDR)) {
|
|
|
+ (mask & (DWMCI_INTMSK_RXDR | DWMCI_INTMSK_DTO))) {
|
|
|
+ dwmci_writel(host, DWMCI_RINTSTS,
|
|
|
+ DWMCI_INTMSK_RXDR | DWMCI_INTMSK_DTO);
|
|
|
while (size) {
|
|
|
ret = dwmci_fifo_ready(host,
|
|
|
DWMCI_FIFO_EMPTY,
|
|
@@ -182,8 +184,6 @@ static int dwmci_data_transfer(struct dwmci_host *host, struct mmc_data *data)
|
|
|
dwmci_readl(host, DWMCI_DATA);
|
|
|
size = size > len ? (size - len) : 0;
|
|
|
}
|
|
|
- dwmci_writel(host, DWMCI_RINTSTS,
|
|
|
- DWMCI_INTMSK_RXDR);
|
|
|
} else if (data->flags == MMC_DATA_WRITE &&
|
|
|
(mask & DWMCI_INTMSK_TXDR)) {
|
|
|
while (size) {
|