* [PATCH v1 1/7] PM / devfreq: tegra30: Support thermal cooling
2021-05-10 21:10 [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq Dmitry Osipenko
@ 2021-05-10 21:10 ` Dmitry Osipenko
2021-05-20 2:50 ` Chanwoo Choi
2021-05-10 21:10 ` [PATCH v1 2/7] ARM: tegra_defconfig: Enable CONFIG_DEVFREQ_THERMAL Dmitry Osipenko
` (7 subsequent siblings)
8 siblings, 1 reply; 18+ messages in thread
From: Dmitry Osipenko @ 2021-05-10 21:10 UTC (permalink / raw)
To: Thierry Reding, Jonathan Hunter, Rob Herring, MyungJoo Ham,
Kyungmin Park, Chanwoo Choi, Peter Geis, Matt Merhar
Cc: linux-tegra, linux-pm, linux-kernel, devicetree
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 <digetx@gmail.com>
---
drivers/devfreq/tegra30-devfreq.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c
index ce83f883ca65..10661eb2aed8 100644
--- a/drivers/devfreq/tegra30-devfreq.c
+++ b/drivers/devfreq/tegra30-devfreq.c
@@ -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,
--
2.30.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH v1 1/7] PM / devfreq: tegra30: Support thermal cooling
2021-05-10 21:10 ` [PATCH v1 1/7] PM / devfreq: tegra30: Support thermal cooling Dmitry Osipenko
@ 2021-05-20 2:50 ` Chanwoo Choi
0 siblings, 0 replies; 18+ messages in thread
From: Chanwoo Choi @ 2021-05-20 2:50 UTC (permalink / raw)
To: Dmitry Osipenko, Thierry Reding, Jonathan Hunter, Rob Herring,
MyungJoo Ham, Kyungmin Park, Peter Geis, Matt Merhar
Cc: linux-tegra, linux-pm, linux-kernel, devicetree
On 5/11/21 6:10 AM, Dmitry Osipenko wrote:
> 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 <digetx@gmail.com>
> ---
> drivers/devfreq/tegra30-devfreq.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c
> index ce83f883ca65..10661eb2aed8 100644
> --- a/drivers/devfreq/tegra30-devfreq.c
> +++ b/drivers/devfreq/tegra30-devfreq.c
> @@ -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.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v1 2/7] ARM: tegra_defconfig: Enable CONFIG_DEVFREQ_THERMAL
2021-05-10 21:10 [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq Dmitry Osipenko
2021-05-10 21:10 ` [PATCH v1 1/7] PM / devfreq: tegra30: Support thermal cooling Dmitry Osipenko
@ 2021-05-10 21:10 ` Dmitry Osipenko
2021-05-10 21:10 ` [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema Dmitry Osipenko
` (6 subsequent siblings)
8 siblings, 0 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2021-05-10 21:10 UTC (permalink / raw)
To: Thierry Reding, Jonathan Hunter, Rob Herring, MyungJoo Ham,
Kyungmin Park, Chanwoo Choi, Peter Geis, Matt Merhar
Cc: linux-tegra, linux-pm, linux-kernel, devicetree
Memory-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.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
arch/arm/configs/tegra_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/configs/tegra_defconfig b/arch/arm/configs/tegra_defconfig
index 13ef3e4dcbb7..3d8d8af9524d 100644
--- a/arch/arm/configs/tegra_defconfig
+++ b/arch/arm/configs/tegra_defconfig
@@ -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
--
2.30.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema
2021-05-10 21:10 [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq Dmitry Osipenko
2021-05-10 21:10 ` [PATCH v1 1/7] PM / devfreq: tegra30: Support thermal cooling Dmitry Osipenko
2021-05-10 21:10 ` [PATCH v1 2/7] ARM: tegra_defconfig: Enable CONFIG_DEVFREQ_THERMAL Dmitry Osipenko
@ 2021-05-10 21:10 ` Dmitry Osipenko
2021-05-17 21:34 ` Rob Herring
` (2 more replies)
2021-05-10 21:10 ` [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells Dmitry Osipenko
` (5 subsequent siblings)
8 siblings, 3 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2021-05-10 21:10 UTC (permalink / raw)
To: Thierry Reding, Jonathan Hunter, Rob Herring, MyungJoo Ham,
Kyungmin Park, Chanwoo Choi, Peter Geis, Matt Merhar
Cc: linux-tegra, linux-pm, linux-kernel, devicetree
Convert NVIDIA Tegra ACTMON binding to schema.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
.../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
diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt
deleted file mode 100644
index 897eedfa2bc8..000000000000
--- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt
+++ /dev/null
@@ -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";
- };
diff --git a/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
new file mode 100644
index 000000000000..2a940d5d7ab4
--- /dev/null
+++ b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
@@ -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 <digetx@gmail.com>
+ - Jon Hunter <jonathanh@nvidia.com>
+ - Thierry Reding <thierry.reding@gmail.com>
+
+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";
+ 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";
+ };
--
2.30.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema
2021-05-10 21:10 ` [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema Dmitry Osipenko
@ 2021-05-17 21:34 ` Rob Herring
2021-05-20 2:50 ` Chanwoo Choi
2021-05-31 9:36 ` Thierry Reding
2 siblings, 0 replies; 18+ messages in thread
From: Rob Herring @ 2021-05-17 21:34 UTC (permalink / raw)
To: Dmitry Osipenko
Cc: Kyungmin Park, Jonathan Hunter, devicetree, Peter Geis,
linux-kernel, Thierry Reding, Matt Merhar, linux-pm, linux-tegra,
MyungJoo Ham, Chanwoo Choi, Rob Herring
On Tue, 11 May 2021 00:10:04 +0300, Dmitry Osipenko wrote:
> Convert NVIDIA Tegra ACTMON binding to schema.
>
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
> .../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
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema
2021-05-10 21:10 ` [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema Dmitry Osipenko
2021-05-17 21:34 ` Rob Herring
@ 2021-05-20 2:50 ` Chanwoo Choi
2021-05-31 9:36 ` Thierry Reding
2 siblings, 0 replies; 18+ messages in thread
From: Chanwoo Choi @ 2021-05-20 2:50 UTC (permalink / raw)
To: Dmitry Osipenko, Thierry Reding, Jonathan Hunter, Rob Herring,
MyungJoo Ham, Kyungmin Park, Peter Geis, Matt Merhar
Cc: linux-tegra, linux-pm, linux-kernel, devicetree
On 5/11/21 6:10 AM, Dmitry Osipenko wrote:
> Convert NVIDIA Tegra ACTMON binding to schema.
>
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
> .../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
>
> diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt
> deleted file mode 100644
> index 897eedfa2bc8..000000000000
> --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt
> +++ /dev/null
> @@ -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";
> - };
> diff --git a/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
> new file mode 100644
> index 000000000000..2a940d5d7ab4
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
> @@ -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 <digetx@gmail.com>
> + - Jon Hunter <jonathanh@nvidia.com>
> + - Thierry Reding <thierry.reding@gmail.com>
> +
> +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";
> + 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";
> + };
>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
After tegra SoC maintainer review this patch, I'll take it.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema
2021-05-10 21:10 ` [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema Dmitry Osipenko
2021-05-17 21:34 ` Rob Herring
2021-05-20 2:50 ` Chanwoo Choi
@ 2021-05-31 9:36 ` Thierry Reding
2021-05-31 19:21 ` Dmitry Osipenko
2 siblings, 1 reply; 18+ messages in thread
From: Thierry Reding @ 2021-05-31 9:36 UTC (permalink / raw)
To: Dmitry Osipenko
Cc: Jonathan Hunter, Rob Herring, MyungJoo Ham, Kyungmin Park,
Chanwoo Choi, Peter Geis, Matt Merhar, linux-tegra, linux-pm,
linux-kernel, devicetree
[-- Attachment #1: Type: text/plain, Size: 5433 bytes --]
On Tue, May 11, 2021 at 12:10:04AM +0300, Dmitry Osipenko wrote:
> Convert NVIDIA Tegra ACTMON binding to schema.
>
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
> .../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
>
> diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt
> deleted file mode 100644
> index 897eedfa2bc8..000000000000
> --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt
> +++ /dev/null
> @@ -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";
> - };
> diff --git a/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
> new file mode 100644
> index 000000000000..2a940d5d7ab4
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
> @@ -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 <digetx@gmail.com>
> + - Jon Hunter <jonathanh@nvidia.com>
> + - Thierry Reding <thierry.reding@gmail.com>
> +
> +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.
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
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema
2021-05-31 9:36 ` Thierry Reding
@ 2021-05-31 19:21 ` Dmitry Osipenko
0 siblings, 0 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2021-05-31 19:21 UTC (permalink / raw)
To: Thierry Reding
Cc: Jonathan Hunter, Rob Herring, MyungJoo Ham, Kyungmin Park,
Chanwoo Choi, Peter Geis, Matt Merhar, linux-tegra, linux-pm,
linux-kernel, devicetree
31.05.2021 12:36, Thierry Reding пишет:
> On Tue, May 11, 2021 at 12:10:04AM +0300, Dmitry Osipenko wrote:
>> Convert NVIDIA Tegra ACTMON binding to schema.
>>
>> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
>> ---
>> .../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
>>
>> diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt
>> deleted file mode 100644
>> index 897eedfa2bc8..000000000000
>> --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra30-actmon.txt
>> +++ /dev/null
>> @@ -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";
>> - };
>> diff --git a/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
>> new file mode 100644
>> index 000000000000..2a940d5d7ab4
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
>> @@ -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 <digetx@gmail.com>
>> + - Jon Hunter <jonathanh@nvidia.com>
>> + - Thierry Reding <thierry.reding@gmail.com>
>> +
>> +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.
>
> 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"?
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.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells
2021-05-10 21:10 [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq Dmitry Osipenko
` (2 preceding siblings ...)
2021-05-10 21:10 ` [PATCH v1 3/7] dt-bindings: devfreq: tegra30-actmon: Convert to schema Dmitry Osipenko
@ 2021-05-10 21:10 ` Dmitry Osipenko
2021-05-17 21:34 ` Rob Herring
` (2 more replies)
2021-05-10 21:10 ` [PATCH v1 5/7] ARM: tegra: Add cooling cells to ACTMON device-tree node Dmitry Osipenko
` (4 subsequent siblings)
8 siblings, 3 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2021-05-10 21:10 UTC (permalink / raw)
To: Thierry Reding, Jonathan Hunter, Rob Herring, MyungJoo Ham,
Kyungmin Park, Chanwoo Choi, Peter Geis, Matt Merhar
Cc: linux-tegra, linux-pm, linux-kernel, devicetree
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 <digetx@gmail.com>
---
.../devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
index 2a940d5d7ab4..0aa9459b7751 100644
--- a/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
+++ b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
@@ -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>;
};
--
2.30.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells
2021-05-10 21:10 ` [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells Dmitry Osipenko
@ 2021-05-17 21:34 ` Rob Herring
2021-05-20 2:49 ` Chanwoo Choi
2021-05-31 9:37 ` Thierry Reding
2 siblings, 0 replies; 18+ messages in thread
From: Rob Herring @ 2021-05-17 21:34 UTC (permalink / raw)
To: Dmitry Osipenko
Cc: Rob Herring, Kyungmin Park, Thierry Reding, Matt Merhar,
linux-tegra, linux-kernel, Chanwoo Choi, linux-pm, devicetree,
Jonathan Hunter, Peter Geis, MyungJoo Ham
On Tue, 11 May 2021 00:10:05 +0300, Dmitry Osipenko wrote:
> 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 <digetx@gmail.com>
> ---
> .../devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml | 5 +++++
> 1 file changed, 5 insertions(+)
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells
2021-05-10 21:10 ` [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells Dmitry Osipenko
2021-05-17 21:34 ` Rob Herring
@ 2021-05-20 2:49 ` Chanwoo Choi
2021-05-31 9:37 ` Thierry Reding
2 siblings, 0 replies; 18+ messages in thread
From: Chanwoo Choi @ 2021-05-20 2:49 UTC (permalink / raw)
To: Dmitry Osipenko, Thierry Reding, Jonathan Hunter, Rob Herring,
MyungJoo Ham, Kyungmin Park, Peter Geis, Matt Merhar
Cc: linux-tegra, linux-pm, linux-kernel, devicetree
On 5/11/21 6:10 AM, Dmitry Osipenko wrote:
> 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 <digetx@gmail.com>
> ---
> .../devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
> index 2a940d5d7ab4..0aa9459b7751 100644
> --- a/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
> +++ b/Documentation/devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml
> @@ -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>;
> };
>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells
2021-05-10 21:10 ` [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells Dmitry Osipenko
2021-05-17 21:34 ` Rob Herring
2021-05-20 2:49 ` Chanwoo Choi
@ 2021-05-31 9:37 ` Thierry Reding
2 siblings, 0 replies; 18+ messages in thread
From: Thierry Reding @ 2021-05-31 9:37 UTC (permalink / raw)
To: Dmitry Osipenko
Cc: Jonathan Hunter, Rob Herring, MyungJoo Ham, Kyungmin Park,
Chanwoo Choi, Peter Geis, Matt Merhar, linux-tegra, linux-pm,
linux-kernel, devicetree
[-- Attachment #1: Type: text/plain, Size: 590 bytes --]
On Tue, May 11, 2021 at 12:10:05AM +0300, Dmitry Osipenko wrote:
> 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 <digetx@gmail.com>
> ---
> .../devicetree/bindings/devfreq/nvidia,tegra30-actmon.yaml | 5 +++++
> 1 file changed, 5 insertions(+)
Acked-by: Thierry Reding <treding@nvidia.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v1 5/7] ARM: tegra: Add cooling cells to ACTMON device-tree node
2021-05-10 21:10 [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq Dmitry Osipenko
` (3 preceding siblings ...)
2021-05-10 21:10 ` [PATCH v1 4/7] dt-bindings: devfreq: tegra30-actmon: Add cooling-cells Dmitry Osipenko
@ 2021-05-10 21:10 ` Dmitry Osipenko
2021-05-10 21:10 ` [PATCH v1 6/7] ARM: tegra: nexus7: Enable memory frequency thermal throttling using ACTMON Dmitry Osipenko
` (3 subsequent siblings)
8 siblings, 0 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2021-05-10 21:10 UTC (permalink / raw)
To: Thierry Reding, Jonathan Hunter, Rob Herring, MyungJoo Ham,
Kyungmin Park, Chanwoo Choi, Peter Geis, Matt Merhar
Cc: linux-tegra, linux-pm, linux-kernel, devicetree
The 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.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
arch/arm/boot/dts/tegra124.dtsi | 3 ++-
arch/arm/boot/dts/tegra30.dtsi | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/tegra124.dtsi b/arch/arm/boot/dts/tegra124.dtsi
index 0b678afb2a5c..8b38f123f554 100644
--- a/arch/arm/boot/dts/tegra124.dtsi
+++ b/arch/arm/boot/dts/tegra124.dtsi
@@ -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 {
diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi
index 44a6dbba7081..c577c191be4b 100644
--- a/arch/arm/boot/dts/tegra30.dtsi
+++ b/arch/arm/boot/dts/tegra30.dtsi
@@ -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 {
--
2.30.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v1 6/7] ARM: tegra: nexus7: Enable memory frequency thermal throttling using ACTMON
2021-05-10 21:10 [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq Dmitry Osipenko
` (4 preceding siblings ...)
2021-05-10 21:10 ` [PATCH v1 5/7] ARM: tegra: Add cooling cells to ACTMON device-tree node Dmitry Osipenko
@ 2021-05-10 21:10 ` Dmitry Osipenko
2021-05-10 21:10 ` [PATCH v1 7/7] ARM: tegra: ouya: " Dmitry Osipenko
` (2 subsequent siblings)
8 siblings, 0 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2021-05-10 21:10 UTC (permalink / raw)
To: Thierry Reding, Jonathan Hunter, Rob Herring, MyungJoo Ham,
Kyungmin Park, Chanwoo Choi, Peter Geis, Matt Merhar
Cc: linux-tegra, linux-pm, linux-kernel, devicetree
The 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.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
arch/arm/boot/dts/tegra30-asus-nexus7-grouper-common.dtsi | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/tegra30-asus-nexus7-grouper-common.dtsi b/arch/arm/boot/dts/tegra30-asus-nexus7-grouper-common.dtsi
index c6264738f593..27adca7f4175 100644
--- a/arch/arm/boot/dts/tegra30-asus-nexus7-grouper-common.dtsi
+++ b/arch/arm/boot/dts/tegra30-asus-nexus7-grouper-common.dtsi
@@ -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>;
};
};
};
--
2.30.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v1 7/7] ARM: tegra: ouya: Enable memory frequency thermal throttling using ACTMON
2021-05-10 21:10 [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq Dmitry Osipenko
` (5 preceding siblings ...)
2021-05-10 21:10 ` [PATCH v1 6/7] ARM: tegra: nexus7: Enable memory frequency thermal throttling using ACTMON Dmitry Osipenko
@ 2021-05-10 21:10 ` Dmitry Osipenko
2021-05-31 9:41 ` (subset) [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq Thierry Reding
2021-05-31 9:43 ` Thierry Reding
8 siblings, 0 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2021-05-10 21:10 UTC (permalink / raw)
To: Thierry Reding, Jonathan Hunter, Rob Herring, MyungJoo Ham,
Kyungmin Park, Chanwoo Choi, Peter Geis, Matt Merhar
Cc: linux-tegra, linux-pm, linux-kernel, devicetree
The 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.
Tested-by: Peter Geis <pgwipeout@gmail.com>
Tested-by: Matt Merhar <mattmerhar@protonmail.com>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
arch/arm/boot/dts/tegra30-ouya.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/tegra30-ouya.dts b/arch/arm/boot/dts/tegra30-ouya.dts
index 9a10e0d69762..e767ac227a81 100644
--- a/arch/arm/boot/dts/tegra30-ouya.dts
+++ b/arch/arm/boot/dts/tegra30-ouya.dts
@@ -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>;
};
};
};
--
2.30.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: (subset) [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq
2021-05-10 21:10 [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq Dmitry Osipenko
` (6 preceding siblings ...)
2021-05-10 21:10 ` [PATCH v1 7/7] ARM: tegra: ouya: " Dmitry Osipenko
@ 2021-05-31 9:41 ` Thierry Reding
2021-05-31 9:43 ` Thierry Reding
8 siblings, 0 replies; 18+ messages in thread
From: Thierry Reding @ 2021-05-31 9:41 UTC (permalink / raw)
To: Thierry Reding, MyungJoo Ham, Dmitry Osipenko, Rob Herring,
Peter Geis, Jonathan Hunter, Matt Merhar, Kyungmin Park,
Chanwoo Choi
Cc: linux-kernel, linux-tegra, linux-pm, devicetree
From: Thierry Reding <treding@nvidia.com>
On Tue, 11 May 2021 00:10:01 +0300, Dmitry Osipenko wrote:
> 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: 4c101a4466983abe7798493ef17279cc3f8eb028
Best regards,
--
Thierry Reding <treding@nvidia.com>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: (subset) [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq
2021-05-10 21:10 [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq Dmitry Osipenko
` (7 preceding siblings ...)
2021-05-31 9:41 ` (subset) [PATCH v1 0/7] Add thermal cooling support to NVIDIA Tegra devfreq Thierry Reding
@ 2021-05-31 9:43 ` Thierry Reding
8 siblings, 0 replies; 18+ messages in thread
From: Thierry Reding @ 2021-05-31 9:43 UTC (permalink / raw)
To: Jonathan Hunter, Kyungmin Park, Matt Merhar, Peter Geis,
Chanwoo Choi, Dmitry Osipenko, Rob Herring, MyungJoo Ham,
Thierry Reding
Cc: devicetree, linux-tegra, linux-pm, linux-kernel
From: Thierry Reding <treding@nvidia.com>
On Tue, 11 May 2021 00:10:01 +0300, Dmitry Osipenko wrote:
> 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,
--
Thierry Reding <treding@nvidia.com>
^ permalink raw reply [flat|nested] 18+ messages in thread