* [PATCH v5 0/3] arm64: tegra: Enable Tegra210 actmon for EMC scaling
@ 2025-10-22 3:13 Aaron Kling via B4 Relay
2025-10-22 3:13 ` [PATCH v5 1/3] arm64: tegra: tegra210: Add actmon Aaron Kling via B4 Relay
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Aaron Kling via B4 Relay @ 2025-10-22 3:13 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Thierry Reding,
Jonathan Hunter
Cc: devicetree, linux-tegra, linux-kernel, Aaron Kling
Bindings Dependencies:
- https://lore.kernel.org/r/20251021-t210-actmon-p1-v5-1-1bc8f9221917@gmail.com
Runtime/Probe Dependencies:
- https://lore.kernel.org/r/20251021-t210-actmon-p2-v5-1-a07dc70e948d@gmail.com
Logical Dependencies:
- https://lore.kernel.org/r/20251021-t210-actmon-p3-v5-1-e1ef5e93909d@gmail.com
Merge Strategy:
- Merge all patches only after all dependencies are picked up
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
---
Changes in v5:
- Split series
- Link to v4: https://lore.kernel.org/r/20250923-t210-actmon-v4-0-442d1eb6377c@gmail.com
Changes in v4:
- Various cleanups in patch 5 as requested by review
- Fix a couple typos in patch 4
- Link to v3: https://lore.kernel.org/r/20250906-t210-actmon-v3-0-1403365d571e@gmail.com
Changes in v3:
- In patch 5, don't fail mc probe if opp tables are missing
- Add more mc bindings to patch 1
- Add patch to use tegra210-mc bindings in the mc driver
- Re-order series to align patches within a subsystem to each other
- Link to v2: https://lore.kernel.org/r/20250903-t210-actmon-v2-0-e0d534d4f8ea@gmail.com
Changes in v2:
- Assume 64-bit dram bus width in patch 4
- Add dt-bindings patch to document the new properties on the
tegra210-emc node.
- Link to v1: https://lore.kernel.org/r/20250828-t210-actmon-v1-0-aeb19ec1f244@gmail.com
---
Aaron Kling (3):
arm64: tegra: tegra210: Add actmon
arm64: tegra: Add interconnect properties to Tegra210 device-tree
arm64: tegra: Add OPP tables on Tegra210
.../boot/dts/nvidia/tegra210-peripherals-opp.dtsi | 135 +++++++++++++++++++++
arch/arm64/boot/dts/nvidia/tegra210.dtsi | 43 +++++++
2 files changed, 178 insertions(+)
---
base-commit: 211ddde0823f1442e4ad052a2f30f050145ccada
change-id: 20251021-t210-actmon-p4-4ddcd0f7deab
Best regards,
--
Aaron Kling <webgeek1234@gmail.com>
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v5 1/3] arm64: tegra: tegra210: Add actmon 2025-10-22 3:13 [PATCH v5 0/3] arm64: tegra: Enable Tegra210 actmon for EMC scaling Aaron Kling via B4 Relay @ 2025-10-22 3:13 ` Aaron Kling via B4 Relay 2025-10-22 3:13 ` [PATCH v5 2/3] arm64: tegra: Add interconnect properties to Tegra210 device-tree Aaron Kling via B4 Relay 2025-10-22 3:13 ` [PATCH v5 3/3] arm64: tegra: Add OPP tables on Tegra210 Aaron Kling via B4 Relay 2 siblings, 0 replies; 7+ messages in thread From: Aaron Kling via B4 Relay @ 2025-10-22 3:13 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Thierry Reding, Jonathan Hunter Cc: devicetree, linux-tegra, linux-kernel, Aaron Kling From: Aaron Kling <webgeek1234@gmail.com> This enables the action monitor to facilitate dynamic frequency scaling. Signed-off-by: Aaron Kling <webgeek1234@gmail.com> --- arch/arm64/boot/dts/nvidia/tegra210.dtsi | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/arm64/boot/dts/nvidia/tegra210.dtsi b/arch/arm64/boot/dts/nvidia/tegra210.dtsi index 402b0ede1472af625d9d9e811f5af306d436cc98..6da10db893add44a98fde1666c382511212fd43c 100644 --- a/arch/arm64/boot/dts/nvidia/tegra210.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra210.dtsi @@ -485,6 +485,18 @@ flow-controller@60007000 { reg = <0x0 0x60007000 0x0 0x1000>; }; + actmon@6000c800 { + compatible = "nvidia,tegra210-actmon", "nvidia,tegra124-actmon"; + reg = <0x0 0x6000c800 0x0 0x400>; + interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&tegra_car TEGRA210_CLK_ACTMON>, + <&tegra_car TEGRA210_CLK_EMC>; + clock-names = "actmon", "emc"; + resets = <&tegra_car 119>; + reset-names = "actmon"; + #cooling-cells = <2>; + }; + gpio: gpio@6000d000 { compatible = "nvidia,tegra210-gpio", "nvidia,tegra30-gpio"; reg = <0x0 0x6000d000 0x0 0x1000>; -- 2.51.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 2/3] arm64: tegra: Add interconnect properties to Tegra210 device-tree 2025-10-22 3:13 [PATCH v5 0/3] arm64: tegra: Enable Tegra210 actmon for EMC scaling Aaron Kling via B4 Relay 2025-10-22 3:13 ` [PATCH v5 1/3] arm64: tegra: tegra210: Add actmon Aaron Kling via B4 Relay @ 2025-10-22 3:13 ` Aaron Kling via B4 Relay 2025-11-21 11:24 ` Jon Hunter 2025-10-22 3:13 ` [PATCH v5 3/3] arm64: tegra: Add OPP tables on Tegra210 Aaron Kling via B4 Relay 2 siblings, 1 reply; 7+ messages in thread From: Aaron Kling via B4 Relay @ 2025-10-22 3:13 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Thierry Reding, Jonathan Hunter Cc: devicetree, linux-tegra, linux-kernel, Aaron Kling From: Aaron Kling <webgeek1234@gmail.com> Add interconnect properties to the Memory Controller, External Memory Controller and the Display Controller nodes in order to describe hardware interconnection. Signed-off-by: Aaron Kling <webgeek1234@gmail.com> --- arch/arm64/boot/dts/nvidia/tegra210.dtsi | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/arch/arm64/boot/dts/nvidia/tegra210.dtsi b/arch/arm64/boot/dts/nvidia/tegra210.dtsi index 6da10db893add44a98fde1666c382511212fd43c..2fcc7a28690f7100d49e8b93c4fb77de7947b002 100644 --- a/arch/arm64/boot/dts/nvidia/tegra210.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra210.dtsi @@ -202,6 +202,19 @@ dc@54200000 { nvidia,outputs = <&dsia &dsib &sor0 &sor1>; nvidia,head = <0>; + + interconnects = <&mc TEGRA210_MC_DISPLAY0A &emc>, + <&mc TEGRA210_MC_DISPLAY0B &emc>, + <&mc TEGRA210_MC_DISPLAY0C &emc>, + <&mc TEGRA210_MC_DISPLAYHC &emc>, + <&mc TEGRA210_MC_DISPLAYD &emc>, + <&mc TEGRA210_MC_DISPLAYT &emc>; + interconnect-names = "wina", + "winb", + "winc", + "cursor", + "wind", + "wint"; }; dc@54240000 { @@ -217,6 +230,15 @@ dc@54240000 { nvidia,outputs = <&dsia &dsib &sor0 &sor1>; nvidia,head = <1>; + + interconnects = <&mc TEGRA210_MC_DISPLAY0AB &emc>, + <&mc TEGRA210_MC_DISPLAY0BB &emc>, + <&mc TEGRA210_MC_DISPLAY0CB &emc>, + <&mc TEGRA210_MC_DISPLAYHCB &emc>; + interconnect-names = "wina", + "winb", + "winc", + "cursor"; }; dsia: dsi@54300000 { @@ -990,6 +1012,7 @@ mc: memory-controller@70019000 { #iommu-cells = <1>; #reset-cells = <1>; + #interconnect-cells = <1>; }; emc: external-memory-controller@7001b000 { @@ -1001,6 +1024,7 @@ emc: external-memory-controller@7001b000 { clock-names = "emc"; interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; nvidia,memory-controller = <&mc>; + #interconnect-cells = <0>; #cooling-cells = <2>; }; -- 2.51.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 2/3] arm64: tegra: Add interconnect properties to Tegra210 device-tree 2025-10-22 3:13 ` [PATCH v5 2/3] arm64: tegra: Add interconnect properties to Tegra210 device-tree Aaron Kling via B4 Relay @ 2025-11-21 11:24 ` Jon Hunter 2025-11-21 19:32 ` Aaron Kling 0 siblings, 1 reply; 7+ messages in thread From: Jon Hunter @ 2025-11-21 11:24 UTC (permalink / raw) To: webgeek1234, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Thierry Reding Cc: devicetree, linux-tegra, linux-kernel On 22/10/2025 04:13, Aaron Kling via B4 Relay wrote: > From: Aaron Kling <webgeek1234@gmail.com> > > Add interconnect properties to the Memory Controller, External Memory > Controller and the Display Controller nodes in order to describe hardware > interconnection. > > Signed-off-by: Aaron Kling <webgeek1234@gmail.com> > --- > arch/arm64/boot/dts/nvidia/tegra210.dtsi | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/arch/arm64/boot/dts/nvidia/tegra210.dtsi b/arch/arm64/boot/dts/nvidia/tegra210.dtsi > index 6da10db893add44a98fde1666c382511212fd43c..2fcc7a28690f7100d49e8b93c4fb77de7947b002 100644 > --- a/arch/arm64/boot/dts/nvidia/tegra210.dtsi > +++ b/arch/arm64/boot/dts/nvidia/tegra210.dtsi > @@ -202,6 +202,19 @@ dc@54200000 { > > nvidia,outputs = <&dsia &dsib &sor0 &sor1>; > nvidia,head = <0>; > + > + interconnects = <&mc TEGRA210_MC_DISPLAY0A &emc>, > + <&mc TEGRA210_MC_DISPLAY0B &emc>, > + <&mc TEGRA210_MC_DISPLAY0C &emc>, > + <&mc TEGRA210_MC_DISPLAYHC &emc>, > + <&mc TEGRA210_MC_DISPLAYD &emc>, > + <&mc TEGRA210_MC_DISPLAYT &emc>; > + interconnect-names = "wina", > + "winb", > + "winc", > + "cursor", > + "wind", > + "wint"; > }; > > dc@54240000 { > @@ -217,6 +230,15 @@ dc@54240000 { > > nvidia,outputs = <&dsia &dsib &sor0 &sor1>; > nvidia,head = <1>; > + > + interconnects = <&mc TEGRA210_MC_DISPLAY0AB &emc>, > + <&mc TEGRA210_MC_DISPLAY0BB &emc>, > + <&mc TEGRA210_MC_DISPLAY0CB &emc>, > + <&mc TEGRA210_MC_DISPLAYHCB &emc>; > + interconnect-names = "wina", > + "winb", > + "winc", > + "cursor"; > }; > > dsia: dsi@54300000 { > @@ -990,6 +1012,7 @@ mc: memory-controller@70019000 { > > #iommu-cells = <1>; > #reset-cells = <1>; > + #interconnect-cells = <1>; > }; > > emc: external-memory-controller@7001b000 { > @@ -1001,6 +1024,7 @@ emc: external-memory-controller@7001b000 { > clock-names = "emc"; > interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; > nvidia,memory-controller = <&mc>; > + #interconnect-cells = <0>; > #cooling-cells = <2>; > }; I am seeing another failure on -next for Tegra210 and bisect is point to this commit ... # first bad commit: [3cad4369399a31277e9e20de723c665b30cba574] arm64: tegra: Add interconnect properties for Tegra210 The tegra-tests [0] devices test is failing and after this commit the DRM device is no longer bound to the driver. Jon [0] https://github.com/thierryreding/tegra-tests -- nvpublic ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 2/3] arm64: tegra: Add interconnect properties to Tegra210 device-tree 2025-11-21 11:24 ` Jon Hunter @ 2025-11-21 19:32 ` Aaron Kling 2025-12-09 4:27 ` Aaron Kling 0 siblings, 1 reply; 7+ messages in thread From: Aaron Kling @ 2025-11-21 19:32 UTC (permalink / raw) To: Jon Hunter Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Thierry Reding, devicetree, linux-tegra, linux-kernel On Fri, Nov 21, 2025 at 5:24 AM Jon Hunter <jonathanh@nvidia.com> wrote: > > > On 22/10/2025 04:13, Aaron Kling via B4 Relay wrote: > > From: Aaron Kling <webgeek1234@gmail.com> > > > > Add interconnect properties to the Memory Controller, External Memory > > Controller and the Display Controller nodes in order to describe hardware > > interconnection. > > > > Signed-off-by: Aaron Kling <webgeek1234@gmail.com> > > --- > > arch/arm64/boot/dts/nvidia/tegra210.dtsi | 24 ++++++++++++++++++++++++ > > 1 file changed, 24 insertions(+) > > > > diff --git a/arch/arm64/boot/dts/nvidia/tegra210.dtsi b/arch/arm64/boot/dts/nvidia/tegra210.dtsi > > index 6da10db893add44a98fde1666c382511212fd43c..2fcc7a28690f7100d49e8b93c4fb77de7947b002 100644 > > --- a/arch/arm64/boot/dts/nvidia/tegra210.dtsi > > +++ b/arch/arm64/boot/dts/nvidia/tegra210.dtsi > > @@ -202,6 +202,19 @@ dc@54200000 { > > > > nvidia,outputs = <&dsia &dsib &sor0 &sor1>; > > nvidia,head = <0>; > > + > > + interconnects = <&mc TEGRA210_MC_DISPLAY0A &emc>, > > + <&mc TEGRA210_MC_DISPLAY0B &emc>, > > + <&mc TEGRA210_MC_DISPLAY0C &emc>, > > + <&mc TEGRA210_MC_DISPLAYHC &emc>, > > + <&mc TEGRA210_MC_DISPLAYD &emc>, > > + <&mc TEGRA210_MC_DISPLAYT &emc>; > > + interconnect-names = "wina", > > + "winb", > > + "winc", > > + "cursor", > > + "wind", > > + "wint"; > > }; > > > > dc@54240000 { > > @@ -217,6 +230,15 @@ dc@54240000 { > > > > nvidia,outputs = <&dsia &dsib &sor0 &sor1>; > > nvidia,head = <1>; > > + > > + interconnects = <&mc TEGRA210_MC_DISPLAY0AB &emc>, > > + <&mc TEGRA210_MC_DISPLAY0BB &emc>, > > + <&mc TEGRA210_MC_DISPLAY0CB &emc>, > > + <&mc TEGRA210_MC_DISPLAYHCB &emc>; > > + interconnect-names = "wina", > > + "winb", > > + "winc", > > + "cursor"; > > }; > > > > dsia: dsi@54300000 { > > @@ -990,6 +1012,7 @@ mc: memory-controller@70019000 { > > > > #iommu-cells = <1>; > > #reset-cells = <1>; > > + #interconnect-cells = <1>; > > }; > > > > emc: external-memory-controller@7001b000 { > > @@ -1001,6 +1024,7 @@ emc: external-memory-controller@7001b000 { > > clock-names = "emc"; > > interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; > > nvidia,memory-controller = <&mc>; > > + #interconnect-cells = <0>; > > #cooling-cells = <2>; > > }; > > > I am seeing another failure on -next for Tegra210 and bisect is point to > this commit ... > > # first bad commit: [3cad4369399a31277e9e20de723c665b30cba574] arm64: > tegra: Add interconnect properties for Tegra210 > > The tegra-tests [0] devices test is failing and after this commit the > DRM device is no longer bound to the driver. Upon research, this one appears to be a bit more complicated. The dc code in tegra-drm sets up an icc connection per plane to emc, I presume in order to prevent underruns. If the icc path exists in the dt, but the emc driver has not added itself to icc, then dc will infinitely defer [0]. And per earlier statements on this list, the regression test setup for Tegra210 does not pass emc training data from the bootloader to the kernel, meaning the emc driver fails to probe. I am not sure how to handle this. As far as I know, the previous archs that the dc icc code was originally written for wouldn't ever have the emc driver fail, because the untrained tables are in the kernel dt, meaning that the driver could at least load that. On Tegra210 since the dt tables were rejected, there's nothing for the driver to fall back on, so it is possible to have a hard failure. Does anyone have ideas on how to handle this? To allow dc to report icc bw on Tegra210, but not fail probe if the emc is missing? Making the icc path lookup non-fatal isn't really an option. Aaron [0] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/tegra/plane.c?h=v6.18-rc6#n778 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 2/3] arm64: tegra: Add interconnect properties to Tegra210 device-tree 2025-11-21 19:32 ` Aaron Kling @ 2025-12-09 4:27 ` Aaron Kling 0 siblings, 0 replies; 7+ messages in thread From: Aaron Kling @ 2025-12-09 4:27 UTC (permalink / raw) To: Jon Hunter Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Thierry Reding, devicetree, linux-tegra, linux-kernel On Fri, Nov 21, 2025 at 1:32 PM Aaron Kling <webgeek1234@gmail.com> wrote: > > On Fri, Nov 21, 2025 at 5:24 AM Jon Hunter <jonathanh@nvidia.com> wrote: > > > > > > On 22/10/2025 04:13, Aaron Kling via B4 Relay wrote: > > > From: Aaron Kling <webgeek1234@gmail.com> > > > > > > Add interconnect properties to the Memory Controller, External Memory > > > Controller and the Display Controller nodes in order to describe hardware > > > interconnection. > > > > > > Signed-off-by: Aaron Kling <webgeek1234@gmail.com> > > > --- > > > arch/arm64/boot/dts/nvidia/tegra210.dtsi | 24 ++++++++++++++++++++++++ > > > 1 file changed, 24 insertions(+) > > > > > > diff --git a/arch/arm64/boot/dts/nvidia/tegra210.dtsi b/arch/arm64/boot/dts/nvidia/tegra210.dtsi > > > index 6da10db893add44a98fde1666c382511212fd43c..2fcc7a28690f7100d49e8b93c4fb77de7947b002 100644 > > > --- a/arch/arm64/boot/dts/nvidia/tegra210.dtsi > > > +++ b/arch/arm64/boot/dts/nvidia/tegra210.dtsi > > > @@ -202,6 +202,19 @@ dc@54200000 { > > > > > > nvidia,outputs = <&dsia &dsib &sor0 &sor1>; > > > nvidia,head = <0>; > > > + > > > + interconnects = <&mc TEGRA210_MC_DISPLAY0A &emc>, > > > + <&mc TEGRA210_MC_DISPLAY0B &emc>, > > > + <&mc TEGRA210_MC_DISPLAY0C &emc>, > > > + <&mc TEGRA210_MC_DISPLAYHC &emc>, > > > + <&mc TEGRA210_MC_DISPLAYD &emc>, > > > + <&mc TEGRA210_MC_DISPLAYT &emc>; > > > + interconnect-names = "wina", > > > + "winb", > > > + "winc", > > > + "cursor", > > > + "wind", > > > + "wint"; > > > }; > > > > > > dc@54240000 { > > > @@ -217,6 +230,15 @@ dc@54240000 { > > > > > > nvidia,outputs = <&dsia &dsib &sor0 &sor1>; > > > nvidia,head = <1>; > > > + > > > + interconnects = <&mc TEGRA210_MC_DISPLAY0AB &emc>, > > > + <&mc TEGRA210_MC_DISPLAY0BB &emc>, > > > + <&mc TEGRA210_MC_DISPLAY0CB &emc>, > > > + <&mc TEGRA210_MC_DISPLAYHCB &emc>; > > > + interconnect-names = "wina", > > > + "winb", > > > + "winc", > > > + "cursor"; > > > }; > > > > > > dsia: dsi@54300000 { > > > @@ -990,6 +1012,7 @@ mc: memory-controller@70019000 { > > > > > > #iommu-cells = <1>; > > > #reset-cells = <1>; > > > + #interconnect-cells = <1>; > > > }; > > > > > > emc: external-memory-controller@7001b000 { > > > @@ -1001,6 +1024,7 @@ emc: external-memory-controller@7001b000 { > > > clock-names = "emc"; > > > interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; > > > nvidia,memory-controller = <&mc>; > > > + #interconnect-cells = <0>; > > > #cooling-cells = <2>; > > > }; > > > > > > I am seeing another failure on -next for Tegra210 and bisect is point to > > this commit ... > > > > # first bad commit: [3cad4369399a31277e9e20de723c665b30cba574] arm64: > > tegra: Add interconnect properties for Tegra210 > > > > The tegra-tests [0] devices test is failing and after this commit the > > DRM device is no longer bound to the driver. > > Upon research, this one appears to be a bit more complicated. The dc > code in tegra-drm sets up an icc connection per plane to emc, I > presume in order to prevent underruns. If the icc path exists in the > dt, but the emc driver has not added itself to icc, then dc will > infinitely defer [0]. And per earlier statements on this list, the > regression test setup for Tegra210 does not pass emc training data > from the bootloader to the kernel, meaning the emc driver fails to > probe. > > I am not sure how to handle this. As far as I know, the previous archs > that the dc icc code was originally written for wouldn't ever have the > emc driver fail, because the untrained tables are in the kernel dt, > meaning that the driver could at least load that. On Tegra210 since > the dt tables were rejected, there's nothing for the driver to fall > back on, so it is possible to have a hard failure. > > Does anyone have ideas on how to handle this? To allow dc to report > icc bw on Tegra210, but not fail probe if the emc is missing? Making > the icc path lookup non-fatal isn't really an option. > > Aaron > > [0] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/tegra/plane.c?h=v6.18-rc6#n778 Are there any further thoughts on this patch? I would like to get this requeued as soon as possible. Aaron ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 3/3] arm64: tegra: Add OPP tables on Tegra210 2025-10-22 3:13 [PATCH v5 0/3] arm64: tegra: Enable Tegra210 actmon for EMC scaling Aaron Kling via B4 Relay 2025-10-22 3:13 ` [PATCH v5 1/3] arm64: tegra: tegra210: Add actmon Aaron Kling via B4 Relay 2025-10-22 3:13 ` [PATCH v5 2/3] arm64: tegra: Add interconnect properties to Tegra210 device-tree Aaron Kling via B4 Relay @ 2025-10-22 3:13 ` Aaron Kling via B4 Relay 2 siblings, 0 replies; 7+ messages in thread From: Aaron Kling via B4 Relay @ 2025-10-22 3:13 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Thierry Reding, Jonathan Hunter Cc: devicetree, linux-tegra, linux-kernel, Aaron Kling From: Aaron Kling <webgeek1234@gmail.com> This adds OPP tables for actmon and emc, enabling dynamic frequency scaling for ram. Signed-off-by: Aaron Kling <webgeek1234@gmail.com> --- .../boot/dts/nvidia/tegra210-peripherals-opp.dtsi | 135 +++++++++++++++++++++ arch/arm64/boot/dts/nvidia/tegra210.dtsi | 7 ++ 2 files changed, 142 insertions(+) diff --git a/arch/arm64/boot/dts/nvidia/tegra210-peripherals-opp.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-peripherals-opp.dtsi new file mode 100644 index 0000000000000000000000000000000000000000..bf2527d737932a1f41aa83d61f44d87ba52b0519 --- /dev/null +++ b/arch/arm64/boot/dts/nvidia/tegra210-peripherals-opp.dtsi @@ -0,0 +1,135 @@ +// SPDX-License-Identifier: GPL-2.0 + +/ { + /* EMC DVFS OPP table */ + emc_icc_dvfs_opp_table: opp-table-dvfs0 { + compatible = "operating-points-v2"; + + opp-40800000-800 { + opp-microvolt = <800000 800000 1150000>; + opp-hz = /bits/ 64 <40800000>; + opp-supported-hw = <0x0003>; + }; + + opp-68000000-800 { + opp-microvolt = <800000 800000 1150000>; + opp-hz = /bits/ 64 <68000000>; + opp-supported-hw = <0x0003>; + }; + + opp-102000000-800 { + opp-microvolt = <800000 800000 1150000>; + opp-hz = /bits/ 64 <102000000>; + opp-supported-hw = <0x0003>; + }; + + opp-204000000-800 { + opp-microvolt = <800000 800000 1150000>; + opp-hz = /bits/ 64 <204000000>; + opp-supported-hw = <0x0007>; + opp-suspend; + }; + + opp-408000000-812 { + opp-microvolt = <812000 812000 1150000>; + opp-hz = /bits/ 64 <408000000>; + opp-supported-hw = <0x0003>; + }; + + opp-665600000-825 { + opp-microvolt = <825000 825000 1150000>; + opp-hz = /bits/ 64 <665600000>; + opp-supported-hw = <0x0003>; + }; + + opp-800000000-825 { + opp-microvolt = <825000 825000 1150000>; + opp-hz = /bits/ 64 <800000000>; + opp-supported-hw = <0x0003>; + }; + + opp-1065600000-837 { + opp-microvolt = <837000 837000 1150000>; + opp-hz = /bits/ 64 <1065600000>; + opp-supported-hw = <0x0003>; + }; + + opp-1331200000-850 { + opp-microvolt = <850000 850000 1150000>; + opp-hz = /bits/ 64 <1331200000>; + opp-supported-hw = <0x0003>; + }; + + opp-1600000000-887 { + opp-microvolt = <887000 887000 1150000>; + opp-hz = /bits/ 64 <1600000000>; + opp-supported-hw = <0x0007>; + }; + }; + + /* EMC bandwidth OPP table */ + emc_bw_dfs_opp_table: opp-table-dvfs1 { + compatible = "operating-points-v2"; + + opp-40800000 { + opp-hz = /bits/ 64 <40800000>; + opp-supported-hw = <0x0003>; + opp-peak-kBps = <652800>; + }; + + opp-68000000 { + opp-hz = /bits/ 64 <68000000>; + opp-supported-hw = <0x0003>; + opp-peak-kBps = <1088000>; + }; + + opp-102000000 { + opp-hz = /bits/ 64 <102000000>; + opp-supported-hw = <0x0003>; + opp-peak-kBps = <1632000>; + }; + + opp-204000000 { + opp-hz = /bits/ 64 <204000000>; + opp-supported-hw = <0x0007>; + opp-peak-kBps = <3264000>; + opp-suspend; + }; + + opp-408000000 { + opp-hz = /bits/ 64 <408000000>; + opp-supported-hw = <0x0003>; + opp-peak-kBps = <6528000>; + }; + + opp-665600000 { + opp-hz = /bits/ 64 <665600000>; + opp-supported-hw = <0x0003>; + opp-peak-kBps = <10649600>; + }; + + opp-800000000 { + opp-hz = /bits/ 64 <800000000>; + opp-supported-hw = <0x001F>; + opp-peak-kBps = <12800000>; + }; + + opp-1065600000 { + opp-hz = /bits/ 64 <1065600000>; + opp-supported-hw = <0x0003>; + opp-peak-kBps = <17049600>; + }; + + opp-1331200000 { + opp-hz = /bits/ 64 <1331200000>; + opp-supported-hw = <0x0003>; + opp-peak-kBps = <21299200>; + }; + + opp-1600000000 { + opp-hz = /bits/ 64 <1600000000>; + opp-supported-hw = <0x0007>; + opp-peak-kBps = <25600000>; + }; + }; +}; diff --git a/arch/arm64/boot/dts/nvidia/tegra210.dtsi b/arch/arm64/boot/dts/nvidia/tegra210.dtsi index 2fcc7a28690f7100d49e8b93c4fb77de7947b002..f2961c9e12db1cf91254b75389779955f2a0956d 100644 --- a/arch/arm64/boot/dts/nvidia/tegra210.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra210.dtsi @@ -9,6 +9,8 @@ #include <dt-bindings/thermal/tegra124-soctherm.h> #include <dt-bindings/soc/tegra-pmc.h> +#include "tegra210-peripherals-opp.dtsi" + / { compatible = "nvidia,tegra210"; interrupt-parent = <&lic>; @@ -516,6 +518,9 @@ actmon@6000c800 { clock-names = "actmon", "emc"; resets = <&tegra_car 119>; reset-names = "actmon"; + operating-points-v2 = <&emc_bw_dfs_opp_table>; + interconnects = <&mc TEGRA210_MC_MPCORER &emc>; + interconnect-names = "cpu-read"; #cooling-cells = <2>; }; @@ -1024,6 +1029,8 @@ emc: external-memory-controller@7001b000 { clock-names = "emc"; interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; nvidia,memory-controller = <&mc>; + operating-points-v2 = <&emc_icc_dvfs_opp_table>; + #interconnect-cells = <0>; #cooling-cells = <2>; }; -- 2.51.0 ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-12-09 4:27 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2025-10-22 3:13 [PATCH v5 0/3] arm64: tegra: Enable Tegra210 actmon for EMC scaling Aaron Kling via B4 Relay 2025-10-22 3:13 ` [PATCH v5 1/3] arm64: tegra: tegra210: Add actmon Aaron Kling via B4 Relay 2025-10-22 3:13 ` [PATCH v5 2/3] arm64: tegra: Add interconnect properties to Tegra210 device-tree Aaron Kling via B4 Relay 2025-11-21 11:24 ` Jon Hunter 2025-11-21 19:32 ` Aaron Kling 2025-12-09 4:27 ` Aaron Kling 2025-10-22 3:13 ` [PATCH v5 3/3] arm64: tegra: Add OPP tables on Tegra210 Aaron Kling via B4 Relay
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®