Skip to content

RFC CPUFREQ OPP's, DVFS and Tegra30 support by tegra20-cpufreq driver

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. v2 RFC Latest17 patches 15 repliesIn review
  2. v15 patches 24 repliesSuperseded

Changes in v2 from the cover letter

- Implemented DVFS support. Currently only CPU rail changes voltage, while CORE/RTC locked to maximum. The CORE can be unlocked once all of peripheral drivers will gain support for DVFS. See "TODO" comment in the driver. On Tegra20 CPU temperature is lower by 5-6 C during idling with DVFS. On Tegra30 CPU temperature is lower by 1-2 C, and it drops by 6-7 C if CORE rail scaling is unlocked.

- Device-tree binding has been reworked to support voltage regulators and HW versioning. Now CPU OPP's are specified per HW version and include voltage entry. OPP values are taken from downstream kernel [2][3]. The "backup" clock has been renamed to "intermediate".

[0] https://lkml.org/lkml/2018/8/30/960
[1] https://lkml.org/lkml/2018/10/5/682
[2] https://nv-tegra.nvidia.com/gitweb/?p=linux-2.6.git;a=blob;f=arch/arm/mach-tegra/tegra2_dvfs.c;hb=l4t/l4t-r16-r2
[3] https://nv-tegra.nvidia.com/gitweb/?p=linux-2.6.git;a=blob;f=arch/arm/mach-tegra/tegra3_dvfs.c;hb=l4t/l4t-r16-r2

Patches in v2 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/17OPP: Allow to request stub voltage regulatorsdrivers/cpufreq/cpufreq-dt.c drivers/cpufreq/ti-cpufreq.c drivers/opp/core.c +1 more+12 -610 replies
2/17soc/tegra: fuse: Export tegra_get_chip_id()drivers/soc/tegra/fuse/tegra-apbmisc.c+1 -01 reply
3/17dt-bindings: cpufreq: Add binding for NVIDIA Tegra20/30Documentation/devicetree/bindings/cpufreq/nvidia,tegra20-cpufreq.txt+96 -02 replies
4/17cpufreq: tegra20: Support OPP, thermal cooling, DVFS and Tegra30drivers/cpufreq/Kconfig.arm drivers/cpufreq/cpufreq-dt-platdev.c drivers/cpufreq/tegra20-cpufreq.c+734 -1020 replies
5/17ARM: tegra: Create tegra20-cpufreq device on Tegra30arch/arm/mach-tegra/tegra.c+4 -00 replies
6/17ARM: dts: tegra20: Add CPU Operating Performance Pointsarch/arm/boot/dts/tegra20.dtsi+277 -00 replies
7/17ARM: dts: tegra30: Add CPU Operating Performance Pointsarch/arm/boot/dts/tegra30.dtsi+688 -00 replies
8/17ARM: dts: tegra20: colibri: Setup voltage regulators for DVFSarch/arm/boot/dts/tegra20-colibri.dtsi+22 -90 replies
9/17ARM: dts: tegra20: harmony: Setup voltage regulators for DVFSarch/arm/boot/dts/tegra20-harmony.dts+22 -92 replies
10/17ARM: dts: tegra20: paz00: Setup voltage regulators for DVFSarch/arm/boot/dts/tegra20-paz00.dts+22 -90 replies
11/17ARM: dts: tegra20: seaboard: Setup voltage regulators for DVFSarch/arm/boot/dts/tegra20-seaboard.dts+20 -70 replies
12/17ARM: dts: tegra20: tamonten: Setup voltage regulators for DVFSarch/arm/boot/dts/tegra20-tamonten.dtsi+22 -90 replies
13/17ARM: dts: tegra20: ventana: Setup voltage regulators for DVFSarch/arm/boot/dts/tegra20-ventana.dts+22 -90 replies
14/17ARM: dts: tegra30: apalis: Setup voltage regulators for DVFSarch/arm/boot/dts/tegra30-apalis.dtsi+16 -30 replies
15/17ARM: dts: tegra30: beaver: Setup voltage regulators for DVFSarch/arm/boot/dts/tegra30-beaver.dts+16 -30 replies
16/17ARM: dts: tegra30: cardhu: Setup voltage regulators for DVFSarch/arm/boot/dts/tegra30-cardhu.dtsi+16 -30 replies
17/17ARM: dts: tegra30: colibri: Setup voltage regulators for DVFSarch/arm/boot/dts/tegra30-colibri.dtsi+16 -30 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.

Read the v2 thread

Cover letter [RFC PATCH v2 00/17] CPUFREQ OPP's, DVFS and Tegra30 support by tegra20-cpufreq driver

Hello,

This series adds support for CPU frequency/voltage scaling on Tegra20/30, it adds device tree support that allow to specify clock rate/voltages per board and to implement thermal throttling. The tegra20-cpufreq driver has been re-worked to support that all.

Note that this series depends on in-progress clock [0] and regulator [1] patches.

Changelog:

v2:
- Implemented DVFS support. Currently only CPU rail changes voltage, while CORE/RTC locked to maximum. The CORE can be unlocked once all of peripheral drivers will gain support for DVFS. See "TODO" comment in the driver. On Tegra20 CPU temperature is lower by 5-6 C during idling with DVFS. On Tegra30 CPU temperature is lower by 1-2 C, and it drops by 6-7 C if CORE rail scaling is unlocked.

- Device-tree binding has been reworked to support voltage regulators and HW versioning. Now CPU OPP's are specified per HW version and include voltage entry. OPP values are taken from downstream kernel [2][3]. The "backup" clock has been renamed to "intermediate".

[0] https://lkml.org/lkml/2018/8/30/960
[1] https://lkml.org/lkml/2018/10/5/682
[2] https://nv-tegra.nvidia.com/gitweb/?p=linux-2.6.git;a=blob;f=arch/arm/mach-tegra/tegra2_dvfs.c;hb=l4t/l4t-r16-r2
[3] https://nv-tegra.nvidia.com/gitweb/?p=linux-2.6.git;a=blob;f=arch/arm/mach-tegra/tegra3_dvfs.c;hb=l4t/l4t-r16-r2

Dmitry Osipenko (17):
OPP: Allow to request stub voltage regulators soc/tegra: fuse: Export tegra_get_chip_id()
dt-bindings: cpufreq: Add binding for NVIDIA Tegra20/30
cpufreq: tegra20: Support OPP, thermal cooling, DVFS and Tegra30
ARM: tegra: Create tegra20-cpufreq device on Tegra30
ARM: dts: tegra20: Add CPU Operating Performance Points
ARM: dts: tegra30: Add CPU Operating Performance Points
ARM: dts: tegra20: colibri: Setup voltage regulators for DVFS
ARM: dts: tegra20: harmony: Setup voltage regulators for DVFS
ARM: dts: tegra20: paz00: Setup voltage regulators for DVFS
ARM: dts: tegra20: seaboard: Setup voltage regulators for DVFS
ARM: dts: tegra20: tamonten: Setup voltage regulators for DVFS
ARM: dts: tegra20: ventana: Setup voltage regulators for DVFS
ARM: dts: tegra30: apalis: Setup voltage regulators for DVFS
ARM: dts: tegra30: beaver: Setup voltage regulators for DVFS
ARM: dts: tegra30: cardhu: Setup voltage regulators for DVFS
ARM: dts: tegra30: colibri: Setup voltage regulators for DVFS

 .../cpufreq/nvidia,tegra20-cpufreq.txt        |  96 ++
 arch/arm/boot/dts/tegra20-colibri.dtsi        |  31 +-
 arch/arm/boot/dts/tegra20-harmony.dts         |  31 +-
 arch/arm/boot/dts/tegra20-paz00.dts           |  31 +-
 arch/arm/boot/dts/tegra20-seaboard.dts        |  27 +-
 arch/arm/boot/dts/tegra20-tamonten.dtsi       |  31 +-
 arch/arm/boot/dts/tegra20-ventana.dts         |  31 +-
 arch/arm/boot/dts/tegra20.dtsi                | 277 ++++++
 arch/arm/boot/dts/tegra30-apalis.dtsi         |  19 +-
 arch/arm/boot/dts/tegra30-beaver.dts          |  19 +-
 arch/arm/boot/dts/tegra30-cardhu.dtsi         |  19 +-
 arch/arm/boot/dts/tegra30-colibri.dtsi        |  19 +-
 arch/arm/boot/dts/tegra30.dtsi                | 688 +++++++++++++++
 arch/arm/mach-tegra/tegra.c                   |   4 +
 drivers/cpufreq/Kconfig.arm                   |   2 +
 drivers/cpufreq/cpufreq-dt-platdev.c          |   2 +
 drivers/cpufreq/cpufreq-dt.c                  |   2 +-
 drivers/cpufreq/tegra20-cpufreq.c             | 832 +++++++++++++++---
 drivers/cpufreq/ti-cpufreq.c                  |   3 +-
 drivers/opp/core.c                            |   9 +-
 drivers/soc/tegra/fuse/tegra-apbmisc.c        |   1 +
 include/linux/pm_opp.h                        |   4 +-
 22 files changed, 2006 insertions(+), 172 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/cpufreq/nvidia,tegra20-cpufreq.txt
Signature · 1 line
2.19.0