Re: [PATCH] dmaengine: pl330: get rid of pm_runtime_irq_safe()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 04/10/2015 08:57 AM, Robert Baldyga wrote:
As using pm_runtime_irq_safe() causes power domain is always enabled,
we want to get rid of it to reach better power efficiency. For this purpose
we call pm_runtime_get()/pm_runtime_put() only in DMA channel allocate/free
code. DMA channels are always requested and freed in non-atomic context,
so we don't need pm_runtime_irq_safe().

I wonder how useful this is considering that pretty much always a channel is requested. I think we need an extension to the dmaengine API that allows a channel consumer to notify the driver that the channel that it requested is currently not in use. E.g. something like dmaengine_pm_{get,put}(struct dma_chan *). These functions would have the restriction that they can only be called from a non-atomic context, whereas issue_pending() and friends can still be called from a atomic context. So dmaengine_pm_get() would kind of be a notification that consumer intends to do something in the near future whereas dmaengine_pm_put() would be a notification that it is not going to use the channel in the near future.

E.g. for audio DMA the audio driver could call dmaengine_pm_get() when the PCM device is opened and dmaengine_pm_put() when it is closed. Whereas issue_pending is called when the audio is started.

- Lars

--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux