[PATCH v4 0/4] DMA Engine: switch PL330 driver to non-irq-safe runtime PM
flat view
STALE3565d
From: Ulf Hansson <hidden>
Date: 2017-01-13 13:59:38
Also in:
linux-pm, linux-samsung-soc
Revision v4 of 2 in this series.
Revisions (2)
- v4 current
- v4
+Arnd On 13 January 2017 at 08:26, Marek Szyprowski [off-list ref] wrote:
Hello, This patchset changes the way the runtime PM is implemented in the PL330 DMA engine driver. The main goal of such change is to add support for the audio power domain to Exynos5 SoCs (5250, 542x, 5433, probably others) and let it to be properly turned off, when no audio is being used. Switching to non-irq-safe runtime PM is required to properly let power domain to be turned off (irq-safe runtime PM keeps power domain turned on all the time) and to integrate with clock controller's runtime PM (this cannot be workarounded any other way, PL330 uses clocks from the controller, which belongs to the same power domain). For more details of the proposed change to the PL330 driver see patch #4. Audio power domain on Exynos5 SoCs contains following hardware modules: 1. clock controller 2. pin controller 3. PL330 DMA controller 4. I2S audio controller Patches for adding or fixing runtime PM for each of the above devices is handled separately. Runtime PM patches for clock controllers is possible and has been proposed in the following thread (pending review): "[PATCH v4 0/4] Add runtime PM support for clocks (on Exynos SoC example)", http://www.spinics.net/lists/arm-kernel/msg550747.html Runtime PM support for Exynos pin controller has been posted in the following thread: "[PATCH 0/9] Runtime PM for Exynos pin controller driver", http://www.spinics.net/lists/arm-kernel/msg550161.html Exynos I2S driver supports runtime PM, but some fixes were needed for it and they are already queued to linux-next. This patchset is based on linux-next from 13th January 2017 with "dmaengine: pl330: fix double lock" patch applied. Best regards Marek Szyprowski Samsung R&D Institute Poland
Marek, this is great work! It's been on my TODO list forever, so I really appreciate your work here. I did only a brief review so far, particularly concentrating on the changes for device links and runtime PM. I like it! Perhaps we can get someone like Arnd/Vinod to comment in general idea from a DT and DMA slave channel point of view. I don't know that stuff good enough to give good opinion. A couple of things that crosses my mind so far: 1) I have planned to extend pm_runtime_force_suspend|resume() to cover also device links. Seems like that becomes really useful together with these changes. 2) I think there will be some corner cases during system suspend/resume for pl330. Not sure yet though. However, fixing 1) and converting the driver to use pm_runtime_force_suspend|resume() should probably work anyway. Allow me to help out looking into 1) and 2). If not for pl330, I am pretty sure it will be useful for other DMA controllers that implements device links and runtime PM. [...] Kind regards Uffe