Skip to content

NVIDIA Tegra core power domain driver and OPP helper

Dmitry Osipenko linux-devicetree linux-pm linux-tegra lkml 2 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest6 patches 8 repliesIn review
  2. v36 patches 2 repliesSuperseded

Patches in v4 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/6soc/tegra: Add devm_tegra_core_dev_init_opp_table()drivers/soc/tegra/common.c include/soc/tegra/common.h+167 -04 replies
2/6soc/tegra: Add CONFIG_SOC_TEGRA_COMMON and select PM_OPP by defaultdrivers/soc/tegra/Kconfig+13 -00 replies
3/6dt-bindings: power: tegra: Add binding for core power domainDocumentation/devicetree/bindings/power/nvidia,tegra20-core-domain.yaml+51 -04 replies
4/6soc/tegra: Introduce core power domain driverdrivers/soc/tegra/Kconfig drivers/soc/tegra/Makefile drivers/soc/tegra/core-power-domain.c +1 more+166 -00 replies
5/6soc/tegra: regulators: Support Core domain state syncingdrivers/soc/tegra/regulators-tegra20.c drivers/soc/tegra/regulators-tegra30.c+35 -20 replies
6/6soc/tegra: pmc: Link children power domains to the parent domaindrivers/soc/tegra/pmc.c+16 -00 replies

Reviews trailers per patch

1 of 6 patches has a Reviewed-by or Acked-by.

PatchPeter GeisPaul FertserNicolas ChauvetMatt MerharUlf Hansson
1/6T-b T-b T-b T-b
2/6T-b T-b T-b T-b
3/6
4/6T-b T-b T-b T-b
5/6T-b T-b T-b T-b R-b
6/6T-b T-b T-b T-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 5 reviewers.

Read the v4 thread

Cover letter [PATCH v4 0/6] NVIDIA Tegra core power domain driver and OPP helper

Hello,

This series adds Core power domain driver for NVIDIA Tegra SoCs and a common OPP helper which initializes OPP table specifically for Tegra drivers. The patches depend on the ongoing series [1] which adds resource-managed OPP API.

[1] https://patchwork.kernel.org/project/linux-pm/list/?series=447801

NVIDIA Tegra SoCs have a dedicated "Core" power domain to which majority of SoC peripherals belong. The core domain is connected to a dedicated voltage rail, which is exposed as a voltage regulator to the Linux kernel. Adding support for power management (i.e. voltage scaling) of the Core domain allows to significantly improve power consumption of the Tegra chip.

In particular this PM work solves the overheating problem on Tegra30 devices. It allows Ouya Tegra30 game console to run at 40C during system idle in oppose to going over 60C. Matt Merhar collected temperature stats on his Ouya [2] which show a very significant improvement.

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

Changelog:

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/[email protected]/
[4] https://lore.kernel.org/linux-pm/[email protected]/

- 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 (6):
soc/tegra: Add devm_tegra_core_dev_init_opp_table() soc/tegra: Add CONFIG_SOC_TEGRA_COMMON and select PM_OPP by default
dt-bindings: power: tegra: Add binding for core power domain soc/tegra: Introduce core power domain driver
soc/tegra: regulators: Support Core domain state syncing soc/tegra: pmc: Link children power domains to the parent domain

 .../power/nvidia,tegra20-core-domain.yaml     |  51 ++++++
 drivers/soc/tegra/Kconfig                     |  19 +++
 drivers/soc/tegra/Makefile                    |   1 +
 drivers/soc/tegra/common.c                    | 137 ++++++++++++++++
 drivers/soc/tegra/core-power-domain.c         | 153 ++++++++++++++++++
 drivers/soc/tegra/pmc.c                       |  16 ++
 drivers/soc/tegra/regulators-tegra20.c        |  19 ++-
 drivers/soc/tegra/regulators-tegra30.c        |  18 ++-
 include/soc/tegra/common.h                    |  36 +++++
 9 files changed, 448 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/power/nvidia,tegra20-core-domain.yaml
 create mode 100644 drivers/soc/tegra/core-power-domain.c
Signature · 1 line
2.30.2