BACKPORT: UPSTREAM: iommu/arm-smmu: Add pm_runtime/sleep ops
The smmu needs to be functional only when the respective master's using it are active. The device_link feature helps to track such functional dependencies, so that the iommu gets powered when the master device enables itself using pm_runtime. So by adapting the smmu driver for runtime pm, above said dependency can be addressed. This patch adds the pm runtime/sleep callbacks to the driver and the corresponding bulk clock handling for all the clocks needed by smmu. Also, while we enable the runtime pm, add a pm sleep suspend callback that pushes devices to low power state by turning the clocks off in a system sleep. Add corresponding clock enable path in resume callback as well. This backport fixes the previously merged ff0fa3d2 ("FROMLIST: iommu/arm-smmu: Add pm_runtime/sleep ops") to match the upstream result, without having to revert a series of FROMLIST. BUG=b:137202421 TEST=Run label_image in loop Signed-off-by:Sricharan R <sricharan@codeaurora.org> Signed-off-by:
Archit Taneja <architt@codeaurora.org> [Thor: Rework to get clocks from device tree] Signed-off-by:
Thor Thayer <thor.thayer@linux.intel.com> [vivek: rework for clock and pm ops] Signed-off-by:
Vivek Gautam <vivek.gautam@codeaurora.org> Reviewed-by:
Tomasz Figa <tfiga@chromium.org> Tested-by:
Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Reviewed-by:
Robin Murphy <robin.murphy@arm.com> Tested-by:
Thor Thayer <thor.thayer@linux.intel.com> Signed-off-by:
Will Deacon <will.deacon@arm.com> (cherry picked from commit dfa3261d319a2513314f3d88ab18871e5a8670af https://github.com/ldts/qualcomm-lt-kernel/commits/chromiumos-4.14-iommu-mmap-gw-rebased-for-next ) Signed-off-by:
Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by:
Abhinav Asati <asatiabhi@codeaurora.org> Change-Id: I7d9edebaf5638e832d59066ce51162cf3b57d06f Signed-off-by:
Vamsi Singamsetty <vamssi@codeaurora.org>
Loading
Please sign in to comment