k3dma: Fix occasional DMA ERR issue by using proper dma api
authorJohn Stultz <john.stultz@linaro.org>
Mon, 29 Aug 2016 17:30:50 +0000 (10:30 -0700)
committerVinod Koul <vinod.koul@intel.com>
Wed, 31 Aug 2016 04:39:32 +0000 (10:09 +0530)
commitb77f262ae351d467c22b056f6d13afeeab7ea69a
tree45ea8b7698e9e2084d045bc51016db3d6754d7f1
parent0173c895ed83f4654e7d6535088973725e76f304
k3dma: Fix occasional DMA ERR issue by using proper dma api

After lots of debugging on an occasional DMA ERR issue, I realized
that the desc structures which we point the dma hardware are being
allocated out of regular memory. This means when we fill the desc
structures, that data doesn't always get flushed out to memory by
the time we start the dma transfer, resulting in the dma engine getting
some null values, resulting in a DMA ERR on the first irq.

Thus, this patch adopts mechanism similar to the zx296702_dma of
allocating the desc structures from a dma pool, so the memory caching
rules are properly set to avoid this issue.

Cc: Zhangfei Gao <zhangfei.gao@linaro.org>
Cc: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Vinod Koul <vinod.koul@intel.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Andy Green <andy@warmcat.com>
Acked-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Signed-off-by: John Stutlz <john.stultz@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/k3dma.c