dmaengine/dw_dmac: Replace spin_lock* with irqsave variants and enable submission...
authorViresh Kumar <viresh.kumar@st.com>
Fri, 15 Apr 2011 10:33:35 +0000 (16:03 +0530)
committerVinod Koul <vinod.koul@intel.com>
Fri, 13 May 2011 14:10:07 +0000 (19:40 +0530)
commit69cea5a00d3135677939fce1fefe54ed522055a0
tree2fa4752e87447f9d03828e0d11e04e37f41f0380
parent69dc14b51c1aad9d82afd8f96bf4e4835089bffc
dmaengine/dw_dmac: Replace spin_lock* with irqsave variants and enable submission from callback

dmaengine routines can be called from interrupt context and with interrupts
disabled.  Whereas spin_unlock_bh can't be called from such contexts. So this
patch converts all spin_*_bh routines to irqsave variants.

Also, spin_lock() used in tasklet is converted to irqsave variants, as tasklet
can be interrupted, and dma requests from such interruptions may also call
spin_lock.

Now, submission from callbacks are permitted as per dmaengine framework. So we
shouldn't hold any locks while calling callbacks. As locks were taken by parent
routines, so releasing them before calling callbacks doesn't look clean enough.
So, locks are taken inside all routine now, whereever they are required. And
dwc_descriptor_complete is always called without taking locks.

Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/dw_dmac.c