Commit cdea1947 authored by Ludovic Barre's avatar Ludovic Barre Committed by Ulf Hansson
Browse files

mmc: mmci: internalize dma_inprogress into mmci dma functions



This patch internalizes the dma_inprogress into mmci dma interfaces.
This allows to simplify and prepare the next dma callbacks
for mmci host ops. dma_inprogress is called in mmci_dma_data_error
and mmci_dma_finalize.

Signed-off-by: default avatarLudovic Barre <ludovic.barre@st.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 7b2a6d51
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -496,6 +496,9 @@ static void mmci_dma_unmap(struct mmci_host *host, struct mmc_data *data)

static void mmci_dma_data_error(struct mmci_host *host)
{
	if (!dma_inprogress(host))
		return;

	dev_err(mmc_dev(host->mmc), "error during DMA transfer!\n");
	dmaengine_terminate_all(host->dma_current);
	host->dma_in_progress = false;
@@ -511,6 +514,9 @@ static void mmci_dma_finalize(struct mmci_host *host, struct mmc_data *data)
	u32 status;
	int i;

	if (!dma_inprogress(host))
		return;

	/* Wait up to 1ms for the DMA to complete */
	for (i = 0; ; i++) {
		status = readl(host->base + MMCISTATUS);
@@ -902,7 +908,6 @@ mmci_data_irq(struct mmci_host *host, struct mmc_data *data,
		u32 remain, success;

		/* Terminate the DMA transfer */
		if (dma_inprogress(host))
		mmci_dma_data_error(host);

		/*
@@ -941,8 +946,8 @@ mmci_data_irq(struct mmci_host *host, struct mmc_data *data,
		dev_err(mmc_dev(host->mmc), "stray MCI_DATABLOCKEND interrupt\n");

	if (status & MCI_DATAEND || data->error) {
		if (dma_inprogress(host))
		mmci_dma_finalize(host, data);

		mmci_stop_data(host);

		if (!data->error)
@@ -1049,7 +1054,6 @@ mmci_cmd_irq(struct mmci_host *host, struct mmc_command *cmd,
	if ((!sbc && !cmd->data) || cmd->error) {
		if (host->data) {
			/* Terminate the DMA transfer */
			if (dma_inprogress(host))
			mmci_dma_data_error(host);

			mmci_stop_data(host);
+0 −2
Original line number Diff line number Diff line
@@ -333,8 +333,6 @@ struct mmci_host {
	bool			dma_in_progress;

#define dma_inprogress(host)	((host)->dma_in_progress)
#else
#define dma_inprogress(host)	(0)
#endif
};