Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 53d1e137 authored by Kyungmin Park's avatar Kyungmin Park Committed by David Woodhouse
Browse files

mtd: OneNAND: Fix loop hang when DMA error at Samsung SoCs



When DMA error occurs. it's loop hang since it can't exit the loop.
and it's the right DMA handling code as Spec.

Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent 9aba97ad
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -554,13 +554,12 @@ static int s5pc110_dma_ops(void *dst, void *src, size_t count, int direction)

	do {
		status = readl(base + S5PC110_DMA_TRANS_STATUS);
	} while (!(status & S5PC110_DMA_TRANS_STATUS_TD));

		if (status & S5PC110_DMA_TRANS_STATUS_TE) {
		writel(S5PC110_DMA_TRANS_CMD_TEC, base + S5PC110_DMA_TRANS_CMD);
		writel(S5PC110_DMA_TRANS_CMD_TDC, base + S5PC110_DMA_TRANS_CMD);
			writel(S5PC110_DMA_TRANS_CMD_TEC,
					base + S5PC110_DMA_TRANS_CMD);
			return -EIO;
		}
	} while (!(status & S5PC110_DMA_TRANS_STATUS_TD));

	writel(S5PC110_DMA_TRANS_CMD_TDC, base + S5PC110_DMA_TRANS_CMD);