On Wed, Jun 29, 2011 at 02:29:42PM +0200, Wolfram Sang wrote:
quoted
quoted
Still, the problem exists: When a second channel GPMI channel is
requested, dmaengine will return -EBUSY, because the DMAIRQ is already
taken.
Yes, we should change the DMA code, it is a DMA bug.
I ever submitted a patch about the issue:
http://patchwork.ozlabs.org/patch/87145/
That approach was rejected because it would register the same handler
n-times where one time would do. Your other approach puts too much
mach-specific details into the driver IMO and probably won't scale very
well. Maybe we should add something to the private dma_data (like flags
indicating SHARED) and then do some refcounting?
Why not just request the interrupt once when the mxs-dma stuff probes,
rather than requesting it every time a channel is allocated?
The interrupt handler itself is written to process all channels on the
device anyway, so you only need it registered once. Using IRQF_SHARED
to register multiple identical handlers is just idiotic, and adding
refcounting is needless complexity.