Subject: [PATCH v2] dmaengine: sirf: add PM entries for sleep and runtime

From: [email-masked] (Vinod Koul)
Date: Tue, 13 Aug 2013 17:23:13 +0530

On Tue, Aug 13, 2013 at 01:18:13PM +0100, Russell King - ARM Linux wrote:
> On Tue, Aug 13, 2013 at 05:02:00PM +0530, Vinod Koul wrote:
> > On Tue, Jul 30, 2013 at 05:44:34PM +0800, Barry Song wrote:
> > Although putting runtime_get/put in submit and callback would be much more
> > better than alloc/free implementation
> 
> When the prepare/submit is called from non-process context, the runtime
> API tends to complain, so it's not that easy.
only the pm_runtime_get_sync() is the problem here. you can do pm_runtime_get() and
submit the descriptor

Then on .runtime_resume you can start the pending transaction.

I found it very useful when working with serial dma's where the serial driver
would like to keep the dma channel and not free it.

> Also you can end up in situations which cause lockdep to complain,
> especially when some of the runtime stuff calls out to an i2c controller
> which then uses the dmaengine, but the dma engine also calls out to the
> runtime api.  (I don't rememeber the exact details, I just remember having
> to drop the runtime API from such places in the past.)
hmmm, i havent seen such dependency. Can you recall what were you testing in
that scenario

~Vinod

--