dmaengine: ep93xx: Treat STALL and NFB IRQs same way
authorAlexander Sverdlin <alexander.sverdlin@gmx.de>
Thu, 7 Jan 2016 22:05:48 +0000 (23:05 +0100)
committerVinod Koul <vinod.koul@intel.com>
Mon, 25 Jan 2016 04:19:55 +0000 (09:49 +0530)
commit94901e1b24496f04bd59176b7f87406e71505e27
tree60da68d4d132eaae4e13092fe932e2f5fedd9a1b
parentc9784a467380dfbd8070c735e651af07331172d9
dmaengine: ep93xx: Treat STALL and NFB IRQs same way

Debugging ALSA hangups it was found that EP9302 (latest E2 rev.) DMA controller
sometimes asserts STALL interrupt instead of NFB interrupt. Simply ignoring the
difference and simply acting upon the amount of data we still have to transfer
seems to work fine. This somehow sounds similar to M2M issue which is already
dealt with in the driver, when the controller asserts DONE interrupt too early.

The issue is not documented in Cirrus Logic erratas for EP93XX, but original
Cirrus DMA driver from 2003 (not based on DMA API) did the similar handling
of STALL interrupt. In-tree driver (6d831c65) did it also, before conversion to
DMA engine API.

Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/ep93xx_dma.c