Add thermal cooling support to NVIDIA Tegra devfreq
Subsystems (5)
Dmitry Osipenko
maintainercover Add thermal cooling support to NVIDIA Tegra devfreq
Hi,
Some hardware versions of NVIDIA Tegra SoCs support higher freqs and they are producing much more heat than the other versions. We found that CPU throttling may be not enough on devices like Asus Transformer TF700T, which is Tegra30 tablet device. This series adds thermal cooling support to the NVIDIA Tegra30+ devfreq which cools down SoC by throttling memory frequency on overheat.
Dmitry Osipenko (7):
PM / devfreq: tegra30: Support thermal cooling
ARM: tegra_defconfig: Enable CONFIG_DEVFREQ_THERMAL
dt-bindings: devfreq: tegra30-actmon: Convert to schema
dt-bindings: devfreq: tegra30-actmon: Add cooling-cells
ARM: tegra: Add cooling cells to ACTMON device-tree node
ARM: tegra: nexus7: Enable memory frequency thermal throttling using
ACTMON
ARM: tegra: ouya: Enable memory frequency thermal throttling using
ACTMON
.../arm/tegra/nvidia,tegra30-actmon.txt | 57 -------- .../devfreq/nvidia,tegra30-actmon.yaml | 126 ++++++++++++++++++ arch/arm/boot/dts/tegra124.dtsi | 3 +- .../tegra30-asus-nexus7-grouper-common.dtsi | 3 +- arch/arm/boot/dts/tegra30-ouya.dts | 3 +- arch/arm/boot/dts/tegra30.dtsi | 3 +- arch/arm/configs/tegra_defconfig | 1 + drivers/devfreq/tegra30-devfreq.c | 1 + 8 files changed, 136 insertions(+), 61 deletions(-) delete mode 100644 Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt create mode 100644 Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
Signature · 1 line
2.30.2
Dmitry Osipenko
maintainerPATCH 1/7 PM / devfreq: tegra30: Support thermal cooling
Expose ACTMON devfreq device as a cooling device in order to throttle memory freq on overheat. Throttling of memory freq has a significant cooling effect on NVIDIA Tegra SoCs since higher memory freqs require higher SoC core voltage which is one of the main causes of the heating.
--- drivers/devfreq/tegra30-devfreq.c | 1 + 1 file changed, 1 insertion(+)
drivers/devfreq/tegra30-devfreq.c +1 -0
@@ -688,6 +688,7 @@ static struct devfreq_dev_profile tegra_devfreq_profile = { .polling_ms = ACTMON_SAMPLING_PERIOD, .target = tegra_devfreq_target, .get_dev_status = tegra_devfreq_get_dev_status, + .is_cooling_device = true, }; static int tegra_governor_get_target(struct devfreq *devfreq,
Signature · 1 line
2.30.2
Re: [PATCH v1 1/7] PM / devfreq: tegra30: Support thermal cooling
Quoted 16 lines · Dmitry Osipenko
Expose ACTMON devfreq device as a cooling device in order to throttle memory freq on overheat. Throttling of memory freq has a significant cooling effect on NVIDIA Tegra SoCs since higher memory freqs require higher SoC core voltage which is one of the main causes of the heating.
Signed-off-by Dmitry Osipenko <[email protected]>--- drivers/devfreq/tegra30-devfreq.c | 1 + 1 file changed, 1 insertion(+)drivers/devfreq/tegra30-devfreq.c +0
-0
drivers/devfreq/tegra30-devfreq.c static struct devfreq_dev_profile tegra_devfreq_profile = { · line 694
Quoted 7 lines
drivers/devfreq/tegra30-devfreq.c +1
-0@@ -688,6 +688,7 @@ static struct devfreq_dev_profile tegra_devfreq_profile = { .polling_ms = ACTMON_SAMPLING_PERIOD, .target = tegra_devfreq_target, .get_dev_status = tegra_devfreq_get_dev_status, + .is_cooling_device = true, }; static int tegra_governor_get_target(struct devfreq *devfreq,
Applied it. Thanks.
Signature · 3 lines
Best Regards, Chanwoo Choi Samsung Electronics
Dmitry Osipenko
maintainerPATCH 2/7 ARM: tegra_defconfig: Enable CONFIG_DEVFREQ_THERMAL
In reply to Dmitry OsipenkoMemory-related Tegra devfreq devices now could be used as a cooling devices. Enable CONFIG_DEVFREQ_THERMAL by default since this option enables cooling functionality of the devfreq drivers.
--- arch/arm/configs/tegra_defconfig | 1 + 1 file changed, 1 insertion(+)
arch/arm/configs/tegra_defconfig +1 -0
@@ -167,6 +167,7 @@ CONFIG_SENSORS_LM95245=y CONFIG_THERMAL=y CONFIG_THERMAL_STATISTICS=y CONFIG_CPU_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y CONFIG_TEGRA_SOCTHERM=m CONFIG_WATCHDOG=y CONFIG_MAX77620_WATCHDOG=y
Signature · 1 line
2.30.2
Dmitry Osipenko
maintainerPATCH 3/7 dt-bindings: devfreq: tegra30-actmon: Convert to schema
In reply to Dmitry OsipenkoConvert NVIDIA Tegra ACTMON binding to schema.
--- .../arm/tegra/nvidia,tegra30-actmon.txt | 57 --------- .../devfreq/nvidia,tegra30-actmon.yaml | 121 ++++++++++++++++++ 2 files changed, 121 insertions(+), 57 deletions(-) delete mode 100644 Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt create mode 100644 Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt deleted +0 -57
@@ -1,57 +0,0 @@ -NVIDIA Tegra Activity Monitor - -The activity monitor block collects statistics about the behaviour of other -components in the system. This information can be used to derive the rate at -which the external memory needs to be clocked in order to serve all requests -from the monitored clients. - -Required properties: -- compatible: should be "nvidia,tegra<chip>-actmon" -- reg: offset and length of the register set for the device -- interrupts: standard interrupt property -- clocks: Must contain a phandle and clock specifier pair for each entry in -clock-names. See ../../clock/clock-bindings.txt for details. -- clock-names: Must include the following entries: - - actmon - - emc -- resets: Must contain an entry for each entry in reset-names. See -../../reset/reset.txt for details. -- reset-names: Must include the following entries: - - actmon -- operating-points-v2: See ../bindings/opp/opp.txt for details. -- interconnects: Should contain entries for memory clients sitting on - MC->EMC memory interconnect path. -- interconnect-names: Should include name of the interconnect path for each - interconnect entry. Consult TRM documentation for - information about available memory clients, see MEMORY - CONTROLLER section. - -For each opp entry in 'operating-points-v2' table: -- opp-supported-hw: bitfield indicating SoC speedo ID mask -- opp-peak-kBps: peak bandwidth of the memory channel - -Example: - dfs_opp_table: opp-table { - compatible = "operating-points-v2"; - - opp@12750000 { - opp-hz = /bits/ 64 <12750000>; - opp-supported-hw = <0x000F>; - opp-peak-kBps = <51000>; - }; - ... - }; - - actmon@6000c800 { - compatible = "nvidia,tegra124-actmon"; - reg = <0x0 0x6000c800 0x0 0x400>; - interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&tegra_car TEGRA124_CLK_ACTMON>, - <&tegra_car TEGRA124_CLK_EMC>; - clock-names = "actmon", "emc"; - resets = <&tegra_car 119>; - reset-names = "actmon"; - operating-points-v2 = <&dfs_opp_table>; - interconnects = <&mc TEGRA124_MC_MPCORER &emc>; - interconnect-names = "cpu"; - };
Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml new file +121 -0
121 lines not on this page · raw message
Signature · 1 line
2.30.2
Re: [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema
Quoted 10 lines · Dmitry Osipenko
Convert NVIDIA Tegra ACTMON binding to schema.
Signed-off-by Dmitry Osipenko <[email protected]>--- .../arm/tegra/nvidia,tegra30-actmon.txt | 57 --------- .../devfreq/nvidia,tegra30-actmon.yaml | 121 ++++++++++++++++++ 2 files changed, 121 insertions(+), 57 deletions(-) delete mode 100644 Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt create mode 100644 Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
Re: [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema
In reply to Dmitry OsipenkoQuoted 191 lines · Dmitry Osipenko
Convert NVIDIA Tegra ACTMON binding to schema.
Signed-off-by Dmitry Osipenko <[email protected]>--- .../arm/tegra/nvidia,tegra30-actmon.txt | 57 --------- .../devfreq/nvidia,tegra30-actmon.yaml | 121 ++++++++++++++++++ 2 files changed, 121 insertions(+), 57 deletions(-) delete mode 100644 Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt create mode 100644 Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yamlDocumentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt deleted +0
-57@@ -1,57 +0,0 @@ -NVIDIA Tegra Activity Monitor - -The activity monitor block collects statistics about the behaviour of other -components in the system. This information can be used to derive the rate at -which the external memory needs to be clocked in order to serve all requests -from the monitored clients. - -Required properties: -- compatible: should be "nvidia,tegra<chip>-actmon" -- reg: offset and length of the register set for the device -- interrupts: standard interrupt property -- clocks: Must contain a phandle and clock specifier pair for each entry in -clock-names. See ../../clock/clock-bindings.txt for details. -- clock-names: Must include the following entries: - - actmon - - emc -- resets: Must contain an entry for each entry in reset-names. See -../../reset/reset.txt for details. -- reset-names: Must include the following entries: - - actmon -- operating-points-v2: See ../bindings/opp/opp.txt for details. -- interconnects: Should contain entries for memory clients sitting on - MC->EMC memory interconnect path. -- interconnect-names: Should include name of the interconnect path for each - interconnect entry. Consult TRM documentation for - information about available memory clients, see MEMORY - CONTROLLER section. - -For each opp entry in 'operating-points-v2' table: -- opp-supported-hw: bitfield indicating SoC speedo ID mask -- opp-peak-kBps: peak bandwidth of the memory channel - -Example: - dfs_opp_table: opp-table { - compatible = "operating-points-v2"; - - opp@12750000 { - opp-hz = /bits/ 64 <12750000>; - opp-supported-hw = <0x000F>; - opp-peak-kBps = <51000>; - }; - ... - }; - - actmon@6000c800 { - compatible = "nvidia,tegra124-actmon"; - reg = <0x0 0x6000c800 0x0 0x400>; - interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&tegra_car TEGRA124_CLK_ACTMON>, - <&tegra_car TEGRA124_CLK_EMC>; - clock-names = "actmon", "emc"; - resets = <&tegra_car 119>; - reset-names = "actmon"; - operating-points-v2 = <&dfs_opp_table>; - interconnects = <&mc TEGRA124_MC_MPCORER &emc>; - interconnect-names = "cpu"; - };Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml new file +111
-0@@ -0,0 +1,121 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: https://protect2.fireeye.com/v1/url?k=45c89d0a-1a53a410-45c91645-000babff24ad-23dabc3fb0c14687&q=1&e=3278a7b6-8f85-494f-a1fa-d926c45f4529&u=http%3A%2F%2Fdevicetree.org%2Fschemas%2Fdevfreq%2Fnvidia%2Ctegra30-actmon.yaml%23 +$schema: https://protect2.fireeye.com/v1/url?k=f9f2037e-a6693a64-f9f38831-000babff24ad-e0e7e870e2aea6e2&q=1&e=3278a7b6-8f85-494f-a1fa-d926c45f4529&u=http%3A%2F%2Fdevicetree.org%2Fmeta-schemas%2Fcore.yaml%23 + +title: NVIDIA Tegra30 Activity Monitor + +maintainers: + - Dmitry Osipenko <[email protected]> + - Jon Hunter <[email protected]> + - Thierry Reding <[email protected]> + +description: | + The activity monitor block collects statistics about the behaviour of other + components in the system. This information can be used to derive the rate at + which the external memory needs to be clocked in order to serve all requests + from the monitored clients. + +properties: + compatible: + enum: + - nvidia,tegra30-actmon + - nvidia,tegra114-actmon + - nvidia,tegra124-actmon + - nvidia,tegra210-actmon + + reg: + maxItems: 1 + + clocks: + maxItems: 2 + + clock-names: + items: + - const: actmon + - const: emc + + resets: + maxItems: 1 + + reset-names: + items: + - const: actmon + + interrupts: + maxItems: 1 + + interconnects: + minItems: 1 + maxItems: 12 + + interconnect-names: + minItems: 1 + maxItems: 12 + description: + Should include name of the interconnect path for each interconnect + entry. Consult TRM documentation for information about available + memory clients, see ACTIVITY MONITOR section. + + operating-points-v2: + description: + Should contain freqs and voltages and opp-supported-hw property, which + is a bitfield indicating SoC speedo ID mask. + +required: + - compatible + - reg + - clocks + - clock-names + - resets + - reset-names + - interrupts + - interconnects + - interconnect-names + - operating-points-v2 + +additionalProperties: false + +examples: + - | + #include <dt-bindings/memory/tegra30-mc.h> + + mc: memory-controller@7000f000 { + compatible = "nvidia,tegra30-mc"; + reg = <0x7000f000 0x400>; + clocks = <&clk 32>; + clock-names = "mc"; + + interrupts = <0 77 4>; + + #iommu-cells = <1>; + #reset-cells = <1>; + #interconnect-cells = <1>; + }; + + emc: external-memory-controller@7000f400 { + compatible = "nvidia,tegra30-emc"; + reg = <0x7000f400 0x400>; + interrupts = <0 78 4>; + clocks = <&clk 57>; + + nvidia,memory-controller = <&mc>; + operating-points-v2 = <&dvfs_opp_table>; + power-domains = <&domain>; + + #interconnect-cells = <0>; + }; + + actmon@6000c800 { + compatible = "nvidia,tegra30-actmon";
Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml line 121
Quoted 10 lines
Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml new file +10
-0+ reg = <0x6000c800 0x400>; + interrupts = <0 45 4>; + clocks = <&clk 119>, <&clk 57>; + clock-names = "actmon", "emc"; + resets = <&rst 119>; + reset-names = "actmon"; + operating-points-v2 = <&dvfs_opp_table>; + interconnects = <&mc TEGRA30_MC_MPCORER &emc>; + interconnect-names = "cpu-read"; + };
After tegra SoC maintainer review this patch, I'll take it.
Signature · 3 lines
Best Regards, Chanwoo Choi Samsung Electronics
Re: [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema
In reply to Dmitry OsipenkoQuoted 128 lines · Dmitry Osipenko
Convert NVIDIA Tegra ACTMON binding to schema.
Signed-off-by Dmitry Osipenko <[email protected]>--- .../arm/tegra/nvidia,tegra30-actmon.txt | 57 --------- .../devfreq/nvidia,tegra30-actmon.yaml | 121 ++++++++++++++++++ 2 files changed, 121 insertions(+), 57 deletions(-) delete mode 100644 Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt create mode 100644 Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yamlDocumentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt deleted +0
-57@@ -1,57 +0,0 @@ -NVIDIA Tegra Activity Monitor - -The activity monitor block collects statistics about the behaviour of other -components in the system. This information can be used to derive the rate at -which the external memory needs to be clocked in order to serve all requests -from the monitored clients. - -Required properties: -- compatible: should be "nvidia,tegra<chip>-actmon" -- reg: offset and length of the register set for the device -- interrupts: standard interrupt property -- clocks: Must contain a phandle and clock specifier pair for each entry in -clock-names. See ../../clock/clock-bindings.txt for details. -- clock-names: Must include the following entries: - - actmon - - emc -- resets: Must contain an entry for each entry in reset-names. See -../../reset/reset.txt for details. -- reset-names: Must include the following entries: - - actmon -- operating-points-v2: See ../bindings/opp/opp.txt for details. -- interconnects: Should contain entries for memory clients sitting on - MC->EMC memory interconnect path. -- interconnect-names: Should include name of the interconnect path for each - interconnect entry. Consult TRM documentation for - information about available memory clients, see MEMORY - CONTROLLER section. - -For each opp entry in 'operating-points-v2' table: -- opp-supported-hw: bitfield indicating SoC speedo ID mask -- opp-peak-kBps: peak bandwidth of the memory channel - -Example: - dfs_opp_table: opp-table { - compatible = "operating-points-v2"; - - opp@12750000 { - opp-hz = /bits/ 64 <12750000>; - opp-supported-hw = <0x000F>; - opp-peak-kBps = <51000>; - }; - ... - }; - - actmon@6000c800 { - compatible = "nvidia,tegra124-actmon"; - reg = <0x0 0x6000c800 0x0 0x400>; - interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&tegra_car TEGRA124_CLK_ACTMON>, - <&tegra_car TEGRA124_CLK_EMC>; - clock-names = "actmon", "emc"; - resets = <&tegra_car 119>; - reset-names = "actmon"; - operating-points-v2 = <&dfs_opp_table>; - interconnects = <&mc TEGRA124_MC_MPCORER &emc>; - interconnect-names = "cpu"; - };Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml new file +49
-0@@ -0,0 +1,121 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/devfreq/nvidia,tegra30-actmon.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: NVIDIA Tegra30 Activity Monitor + +maintainers: + - Dmitry Osipenko <[email protected]> + - Jon Hunter <[email protected]> + - Thierry Reding <[email protected]> + +description: | + The activity monitor block collects statistics about the behaviour of other + components in the system. This information can be used to derive the rate at + which the external memory needs to be clocked in order to serve all requests + from the monitored clients. + +properties: + compatible: + enum: + - nvidia,tegra30-actmon + - nvidia,tegra114-actmon + - nvidia,tegra124-actmon + - nvidia,tegra210-actmon + + reg: + maxItems: 1 + + clocks: + maxItems: 2 + + clock-names: + items: + - const: actmon + - const: emc + + resets: + maxItems: 1 + + reset-names: + items: + - const: actmon + + interrupts: + maxItems: 1 + + interconnects:
Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml line 59
Quoted 10 lines
Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml new file +10
-0+ minItems: 1 + maxItems: 12 + + interconnect-names: + minItems: 1 + maxItems: 12 + description: + Should include name of the interconnect path for each interconnect + entry. Consult TRM documentation for information about available + memory clients, see ACTIVITY MONITOR section.
This used to be "see MEMORY CONTROLLER section", so I looked at the TRM to see if this was perhaps a fix for an earlier typo, but looking at the TRM (v3) I can't find a section named "ACTIVITY MONITOR".
Should this be changed back to "MEMORY CONTROLLER"?
Thierry
Dmitry Osipenko
maintainerRe: [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema
31.05.2021 12:36, Thierry Reding пишет:
Quoted 144 lines · Dmitry Osipenko
Quoted 128 lines
Convert NVIDIA Tegra ACTMON binding to schema.
Signed-off-by Dmitry Osipenko <[email protected]>--- .../arm/tegra/nvidia,tegra30-actmon.txt | 57 --------- .../devfreq/nvidia,tegra30-actmon.yaml | 121 ++++++++++++++++++ 2 files changed, 121 insertions(+), 57 deletions(-) delete mode 100644 Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt create mode 100644 Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yamlDocumentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt deleted +0
-57@@ -1,57 +0,0 @@ -NVIDIA Tegra Activity Monitor - -The activity monitor block collects statistics about the behaviour of other -components in the system. This information can be used to derive the rate at -which the external memory needs to be clocked in order to serve all requests -from the monitored clients. - -Required properties: -- compatible: should be "nvidia,tegra<chip>-actmon" -- reg: offset and length of the register set for the device -- interrupts: standard interrupt property -- clocks: Must contain a phandle and clock specifier pair for each entry in -clock-names. See ../../clock/clock-bindings.txt for details. -- clock-names: Must include the following entries: - - actmon - - emc -- resets: Must contain an entry for each entry in reset-names. See -../../reset/reset.txt for details. -- reset-names: Must include the following entries: - - actmon -- operating-points-v2: See ../bindings/opp/opp.txt for details. -- interconnects: Should contain entries for memory clients sitting on - MC->EMC memory interconnect path. -- interconnect-names: Should include name of the interconnect path for each - interconnect entry. Consult TRM documentation for - information about available memory clients, see MEMORY - CONTROLLER section. - -For each opp entry in 'operating-points-v2' table: -- opp-supported-hw: bitfield indicating SoC speedo ID mask -- opp-peak-kBps: peak bandwidth of the memory channel - -Example: - dfs_opp_table: opp-table { - compatible = "operating-points-v2"; - - opp@12750000 { - opp-hz = /bits/ 64 <12750000>; - opp-supported-hw = <0x000F>; - opp-peak-kBps = <51000>; - }; - ... - }; - - actmon@6000c800 { - compatible = "nvidia,tegra124-actmon"; - reg = <0x0 0x6000c800 0x0 0x400>; - interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&tegra_car TEGRA124_CLK_ACTMON>, - <&tegra_car TEGRA124_CLK_EMC>; - clock-names = "actmon", "emc"; - resets = <&tegra_car 119>; - reset-names = "actmon"; - operating-points-v2 = <&dfs_opp_table>; - interconnects = <&mc TEGRA124_MC_MPCORER &emc>; - interconnect-names = "cpu"; - };Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml new file +49
-0@@ -0,0 +1,121 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/devfreq/nvidia,tegra30-actmon.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: NVIDIA Tegra30 Activity Monitor + +maintainers: + - Dmitry Osipenko <[email protected]> + - Jon Hunter <[email protected]> + - Thierry Reding <[email protected]> + +description: | + The activity monitor block collects statistics about the behaviour of other + components in the system. This information can be used to derive the rate at + which the external memory needs to be clocked in order to serve all requests + from the monitored clients. + +properties: + compatible: + enum: + - nvidia,tegra30-actmon + - nvidia,tegra114-actmon + - nvidia,tegra124-actmon + - nvidia,tegra210-actmon + + reg: + maxItems: 1 + + clocks: + maxItems: 2 + + clock-names: + items: + - const: actmon + - const: emc + + resets: + maxItems: 1 + + reset-names: + items: + - const: actmon + + interrupts: + maxItems: 1 + + interconnects:Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml line 59
Quoted 10 lines
Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml new file +10
-0+ minItems: 1 + maxItems: 12 + + interconnect-names: + minItems: 1 + maxItems: 12 + description: + Should include name of the interconnect path for each interconnect + entry. Consult TRM documentation for information about available + memory clients, see ACTIVITY MONITOR section.This used to be "see MEMORY CONTROLLER section", so I looked at the TRM to see if this was perhaps a fix for an earlier typo, but looking at the TRM (v3) I can't find a section named "ACTIVITY MONITOR".
Quoted 1 line
Should this be changed back to "MEMORY CONTROLLER"?
The "ACTIVITY MONITOR" is documented only in the T124/210 TRMs, the h/w modules supported by ACTMON are enumerated there. Both "ACTIVITY MONITOR" and "MEMORY CONTROLLER" could be mentioned for completeness.
Dmitry Osipenko
maintainerPATCH 4/7 dt-bindings: devfreq: tegra30-actmon: Add cooling-cells
In reply to Dmitry OsipenkoThe ACTMON watches activity of memory clients. Decisions about a minimum required frequency are made based on the info from ACTMON. We can use ACTMON as a thermal cooling device by limiting the required frequency. Document new cooling-cells property of NVIDIA Tegra ACTMON hardware unit.
--- .../devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml | 5 +++++ 1 file changed, 5 insertions(+)
Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml +5 -0
@@ -63,6 +63,9 @@ properties: Should contain freqs and voltages and opp-supported-hw property, which is a bitfield indicating SoC speedo ID mask. + "#cooling-cells": + const: 2 + required: - compatible - reg
@@ -74,6 +77,7 @@ required: - interconnects - interconnect-names - operating-points-v2 + - "#cooling-cells" additionalProperties: false
@@ -118,4 +122,5 @@ examples: operating-points-v2 = <&dvfs_opp_table>; interconnects = <&mc TEGRA30_MC_MPCORER &emc>; interconnect-names = "cpu-read"; + #cooling-cells = <2>; };
Signature · 1 line
2.30.2
Re: [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells
Quoted 10 lines · Dmitry Osipenko
The ACTMON watches activity of memory clients. Decisions about a minimum required frequency are made based on the info from ACTMON. We can use ACTMON as a thermal cooling device by limiting the required frequency. Document new cooling-cells property of NVIDIA Tegra ACTMON hardware unit.
Signed-off-by Dmitry Osipenko <[email protected]>--- .../devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml | 5 +++++ 1 file changed, 5 insertions(+)
Re: [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells
In reply to Dmitry OsipenkoQuoted 34 lines · Dmitry Osipenko
The ACTMON watches activity of memory clients. Decisions about a minimum required frequency are made based on the info from ACTMON. We can use ACTMON as a thermal cooling device by limiting the required frequency. Document new cooling-cells property of NVIDIA Tegra ACTMON hardware unit.
Signed-off-by Dmitry Osipenko <[email protected]>--- .../devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml | 5 +++++ 1 file changed, 5 insertions(+)Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml +4
-0@@ -63,6 +63,9 @@ properties: Should contain freqs and voltages and opp-supported-hw property, which is a bitfield indicating SoC speedo ID mask. + "#cooling-cells": + const: 2 + required: - compatible - reg@@ -74,6 +77,7 @@ required: - interconnects - interconnect-names - operating-points-v2 + - "#cooling-cells" additionalProperties: false
Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml examples: · line 126
Quoted 5 lines
Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml +1
-0@@ -118,4 +122,5 @@ examples: operating-points-v2 = <&dvfs_opp_table>; interconnects = <&mc TEGRA30_MC_MPCORER &emc>; interconnect-names = "cpu-read"; + #cooling-cells = <2>; };
Signature · 3 lines
Best Regards, Chanwoo Choi Samsung Electronics
Re: [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells
In reply to Dmitry OsipenkoQuoted 9 lines · Dmitry Osipenko
The ACTMON watches activity of memory clients. Decisions about a minimum required frequency are made based on the info from ACTMON. We can use ACTMON as a thermal cooling device by limiting the required frequency. Document new cooling-cells property of NVIDIA Tegra ACTMON hardware unit.
Signed-off-by Dmitry Osipenko <[email protected]>--- .../devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml | 5 +++++ 1 file changed, 5 insertions(+)
Dmitry Osipenko
maintainerPATCH 5/7 ARM: tegra: Add cooling cells to ACTMON device-tree node
In reply to Dmitry OsipenkoThe ACTMON module monitors activity of memory clients and decisions about a minimum required memory frequency are made based on info from ACTMON. Add cooling cells to ACTMON device-tree node in order to turn it into a cooling device that will throttle memory freq on overheat.
--- arch/arm/boot/dts/tegra124.dtsi | 3 ++- arch/arm/boot/dts/tegra30.dtsi | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-)
arch/arm/boot/dts/tegra124.dtsi +2 -1
@@ -283,7 +283,7 @@ flow-controller@60007000 { reg = <0x0 0x60007000 0x0 0x1000>; }; - actmon@6000c800 { + actmon: actmon@6000c800 { compatible = "nvidia,tegra124-actmon"; reg = <0x0 0x6000c800 0x0 0x400>; interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
@@ -295,6 +295,7 @@ actmon@6000c800 { operating-points-v2 = <&emc_bw_dfs_opp_table>; interconnects = <&mc TEGRA124_MC_MPCORER &emc>; interconnect-names = "cpu-read"; + #cooling-cells = <2>; }; gpio: gpio@6000d000 {
arch/arm/boot/dts/tegra30.dtsi +2 -1
@@ -410,7 +410,7 @@ ahb: ahb@6000c000 { reg = <0x6000c000 0x150>; /* AHB Arbitration + Gizmo Controller */ }; - actmon@6000c800 { + actmon: actmon@6000c800 { compatible = "nvidia,tegra30-actmon"; reg = <0x6000c800 0x400>; interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
@@ -422,6 +422,7 @@ actmon@6000c800 { operating-points-v2 = <&emc_bw_dfs_opp_table>; interconnects = <&mc TEGRA30_MC_MPCORER &emc>; interconnect-names = "cpu-read"; + #cooling-cells = <2>; }; gpio: gpio@6000d000 {
Signature · 1 line
2.30.2
Dmitry Osipenko
maintainerPATCH 6/7 ARM: tegra: nexus7: Enable memory frequency thermal throttling using ACTMON
In reply to Dmitry OsipenkoThe ACTMON module monitors activity of memory clients and then devfreq driver makes decisions about a required memory frequency based on info from ACTMON. Add ACTMON device to the thermal zone of Nexus 7 in order to use it as a cooling device which throttles memory freq on overheat.
--- arch/arm/boot/dts/tegra30-asus-nexus7-grouper-common.dtsi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
arch/arm/boot/dts/tegra30-asus-nexus7-grouper-common.dtsi +2 -1
@@ -1279,7 +1279,8 @@ map0 { cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, - <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, + <&actmon THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; }; }; };
Signature · 1 line
2.30.2
Dmitry Osipenko
maintainerPATCH 7/7 ARM: tegra: ouya: Enable memory frequency thermal throttling using ACTMON
In reply to Dmitry OsipenkoThe ACTMON module monitors activity of memory clients and then devfreq driver makes decisions about a required memory frequency based on info from ACTMON. Add ACTMON device to the thermal zone of Ouya in order to use it as a cooling device which throttles memory freq on overheat.
--- arch/arm/boot/dts/tegra30-ouya.dts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
arch/arm/boot/dts/tegra30-ouya.dts +2 -1
@@ -463,7 +463,8 @@ map1 { cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, - <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; + <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, + <&actmon THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; }; }; };
Signature · 1 line
2.30.2
Thierry Reding
AppliedRe: (subset) [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq
In reply to Dmitry OsipenkoFrom: Thierry Reding <[email protected]>
Quoted 8 lines · Dmitry Osipenko
Some hardware versions of NVIDIA Tegra SoCs support higher freqs and they are producing much more heat than the other versions. We found that CPU throttling may be not enough on devices like Asus Transformer TF700T, which is Tegra30 tablet device. This series adds thermal cooling support to the NVIDIA Tegra30+ devfreq which cools down SoC by throttling memory frequency on overheat.
[...]
Applied, thanks!
[5/7] ARM: tegra: Add cooling cells to ACTMON device-tree node
commit: 592b74b1f0ebfe49d2e66b2b4bd95ff3678c5696
[6/7] ARM: tegra: nexus7: Enable memory frequency thermal throttling using ACTMON
commit: fe7482b88590635939c4bb786e1cd3bbd9ea1682
[7/7] ARM: tegra: ouya: Enable memory frequency thermal throttling using ACTMON
commit: 4c101a4466983abe7798493ef17279cc3f8eb028Best regards,
Signature · 1 line
Thierry Reding <[email protected]>
Thierry Reding
AppliedRe: (subset) [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq
In reply to Dmitry OsipenkoFrom: Thierry Reding <[email protected]>
Quoted 8 lines · Dmitry Osipenko
Some hardware versions of NVIDIA Tegra SoCs support higher freqs and they are producing much more heat than the other versions. We found that CPU throttling may be not enough on devices like Asus Transformer TF700T, which is Tegra30 tablet device. This series adds thermal cooling support to the NVIDIA Tegra30+ devfreq which cools down SoC by throttling memory frequency on overheat.
[...]
Applied, thanks!
[2/7] ARM: tegra_defconfig: Enable CONFIG_DEVFREQ_THERMAL
commit: 4302331fdf4440b96dba583384a0e2b759cb13bd
Best regards,
Signature · 1 line
Thierry Reding <[email protected]>