[PATCH v5 0/3] Add support for NVIDIA Tegra SoC core power domain

From: Dmitry Osipenko
Date: Sun May 16 2021 - 20:00:10 EST


Add GENPD driver for the core power domain of NVIDIA Tegra SoCs. It's
needed for enabling of SoC core voltage scaling, resolving overheating
problems of the Tegra SoCs.

Note that this series is made on top of [1]. It doesn't have any other
dependencies, core PD and voltage scaling will become active once all
other related patches will be applied, meaning that this series could be
applied at any time.

[1] https://patchwork.ozlabs.org/project/linux-tegra/list/?series=244075

These and other power-related patches got more testing on more devices,
like Transformer and Lenovo tablets. I haven't updated tested-bys since
these devices are out-of-tree yet.

Ouya Tegra30 game console runs at 40C during system idle in oppose
to going over 60C with the enabled core voltage scaling. Matt Merhar
collected temperature stats on his Ouya [2], showing a very significant
improvement.

[2] https://imgur.com/a/z4NDWqk

Changelog:

v5: - The core power domain node is now placed within the PMC PDs.
This was suggested by Thierry Reding to v4, we don't need to
add a virtual device-tree node for the domain anymore.

v4: - Rebased on top of a new version of the OPP patches [1].

- Fixed new DT binding warning which was reported by the bot for v3.

v3: - This series is a continuation of [3][4]. I factored out and grouped
these soc/tegra patches since they have a common dependency on the
OPP API patches [1] and the rest of PM patches depend on this series.

[3] https://lore.kernel.org/lkml/20201217180638.22748-1-digetx@xxxxxxxxx/
[4] https://lore.kernel.org/linux-pm/20210121191410.13781-1-digetx@xxxxxxxxx/

- Added locking around regulators syncing, which was previously done by
the OPP core, but then we (me and Viresh) figured out that it will be
better to do it within the PD driver.

- The Core-PD driver now restores the boot voltage level before
shutdown/reboot, which may help some devices not to hang on reboot,
like Nexus 7 for example.

- Added r-b from Ulf Hansson to "regulators: Support Core domain state
syncing" patch, which he gave to v2.

- It should be cleaner to add the Core OPP tables and power domain to
the device-trees once all drivers will get the PM support, so this
series adds the driver and the binding for now.

- Added t-b from Paul Fertser, who tested the complete patchset on his
AC100 netbook and helped to spot compatibility problem with older DTBs
in the patch that will add PM support to the GPU driver.

- The DT binding now follows the power-domain spec, which was suggested
by Krzysztof Kozlowski in his comment to v2.

Dmitry Osipenko (3):
dt-bindings: soc: tegra-pmc: Document core power domain
soc/tegra: pmc: Add core power domain
soc/tegra: regulators: Support Core domain state syncing

.../arm/tegra/nvidia,tegra20-pmc.yaml | 35 +++++
drivers/soc/tegra/Kconfig | 14 ++
drivers/soc/tegra/pmc.c | 143 ++++++++++++++++++
drivers/soc/tegra/regulators-tegra20.c | 19 ++-
drivers/soc/tegra/regulators-tegra30.c | 18 ++-
include/soc/tegra/common.h | 6 +
6 files changed, 233 insertions(+), 2 deletions(-)

--
2.30.2