On Wed, Jul 27, 2011 at 03:14:27PM +0900, Chanwoo Choi wrote: > +#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. -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html