Russell King - ARM Linux wrote:
On Wed, Jul 27, 2011 at 03:14:27PM +0900, Chanwoo Choi wrote:
quoted
+#ifdef CONFIG_PM_RUNTIME
+ struct dma_pl330_chan *pch;
+ struct dma_pl330_dmac *pdmac;
+#endif
dma_cap_zero(mask);
dma_cap_set(info->cap, mask);
chan = dma_request_channel(mask, pl330_filter, (void *)dma_ch);
+#ifdef CONFIG_PM_RUNTIME
+ pch = container_of(chan, struct dma_pl330_chan, chan);
+ pdmac = pch->dmac;
+
+ pm_runtime_get_sync(pdmac->pif.dev);
+#endif
This is not the right way to do this. The pm runtime stuff should be
internal to the PL330 driver. Take a moment to think about this:
You need to wake it up just before a transfer starts. You need to
put it back to sleep just after the last transfer has finished.
That gives you a hint where the calls need to be.
That can only be done from within the PL330 driver.
Thanks for your comment&hint.
I will repost the patch which support runtime pm of PL330 in internal to the PL330 driver.
Regards,
Chanwoo Choi