ARM: mmci: no need to call flush_dcache_page() with sg_miter API
The sg_miter API provides the required cache maintainence, so we don't need to do that ourselves. Remove the unnecessary additional cache maintainence. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>hifive-unleashed-5.1
parent
c8afc9d59c
commit
7d7aa23cf0
|
@ -311,22 +311,6 @@ mmci_data_irq(struct mmci_host *host, struct mmc_data *data,
|
||||||
data->error = -EIO;
|
data->error = -EIO;
|
||||||
}
|
}
|
||||||
host->data_xfered = round_down(success, data->blksz);
|
host->data_xfered = round_down(success, data->blksz);
|
||||||
|
|
||||||
/*
|
|
||||||
* We hit an error condition. Ensure that any data
|
|
||||||
* partially written to a page is properly coherent.
|
|
||||||
*/
|
|
||||||
if (data->flags & MMC_DATA_READ) {
|
|
||||||
struct sg_mapping_iter *sg_miter = &host->sg_miter;
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
||||||
if (sg_miter_next(sg_miter)) {
|
|
||||||
flush_dcache_page(sg_miter->page);
|
|
||||||
sg_miter_stop(sg_miter);
|
|
||||||
}
|
|
||||||
local_irq_restore(flags);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status & MCI_DATABLOCKEND)
|
if (status & MCI_DATABLOCKEND)
|
||||||
|
@ -510,9 +494,6 @@ static irqreturn_t mmci_pio_irq(int irq, void *dev_id)
|
||||||
if (remain)
|
if (remain)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (status & MCI_RXACTIVE)
|
|
||||||
flush_dcache_page(sg_miter->page);
|
|
||||||
|
|
||||||
status = readl(base + MMCISTATUS);
|
status = readl(base + MMCISTATUS);
|
||||||
} while (1);
|
} while (1);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue