Linux Tegra architecture development
 help / color / mirror / Atom feed
From: Mikko Perttunen <mperttunen@nvidia.com>
To: Svyatoslav Ryhel <clamor95@gmail.com>
Cc: Krzysztof Kozlowski <krzk@kernel.org>,
	Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
	Thierry Reding <treding@nvidia.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Prashant Gaikwad <pgaikwad@nvidia.com>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>,
	Dmitry Osipenko <digetx@gmail.com>,
	MyungJoo Ham <myungjoo.ham@samsung.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Chanwoo Choi <cw00.choi@samsung.com>,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-tegra@vger.kernel.org, linux-clk@vger.kernel.org,
	linux-pm@vger.kernel.org
Subject: Re: [PATCH v4 11/12] ARM: tegra: Add EMC OPP and ICC properties to Tegra114 EMC and ACTMON device-tree nodes
Date: Thu, 22 Jan 2026 14:45:48 +0900	[thread overview]
Message-ID: <7678982.MhkbZ0Pkbq@senjougahara> (raw)
In-Reply-To: <CAPVz0n1zqo1TyaV=+fc6YzOKH9TqOBEatruZTAVGg9hFEWmXsQ@mail.gmail.com>

On Thursday, January 22, 2026 1:57 AM Svyatoslav Ryhel wrote:
> ср, 21 січ. 2026 р. о 09:56 Mikko Perttunen <mperttunen@nvidia.com> пише:
> >
> > On Tuesday, November 25, 2025 9:05 PM Svyatoslav Ryhel wrote:
> > > Add EMC OPP tables and interconnect paths that will be used for
> > > dynamic memory bandwidth scaling based on memory utilization statistics.
> > >
> > > Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
> > > ---
> > >  .../dts/nvidia/tegra114-peripherals-opp.dtsi  | 151 ++++++++++++++++++
> > >  arch/arm/boot/dts/nvidia/tegra114.dtsi        |   9 ++
> > >  2 files changed, 160 insertions(+)
> > >  create mode 100644 arch/arm/boot/dts/nvidia/tegra114-peripherals-opp.dtsi
> > >
> > > diff --git a/arch/arm/boot/dts/nvidia/tegra114-peripherals-opp.dtsi b/arch/arm/boot/dts/nvidia/tegra114-peripherals-opp.dtsi
> > > new file mode 100644
> > > index 000000000000..1a0e68f22039
> > > --- /dev/null
> > > +++ b/arch/arm/boot/dts/nvidia/tegra114-peripherals-opp.dtsi
> > > @@ -0,0 +1,151 @@
> > > +// SPDX-License-Identifier: GPL-2.0
> > > +
> > > +/ {
> > > +     emc_icc_dvfs_opp_table: opp-table-emc {
> > > +             compatible = "operating-points-v2";
> > > +
> > > +             opp-12750000-900 {
> > > +                     opp-microvolt = <900000 900000 1390000>;
> > > +                     opp-hz = /bits/ 64 <12750000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +             };
> >
> > What's the source of the opp data?
> >
> 
> I have used tf701t (T40X) and tegratab (T40S) kernel sources, to be
> more specific board-*-memory.c files. Timing struct for each clock
> contains min voltage field which was used to compose these opps.
> 1390000 is the max core regulator voltage, taken from tegra11_dvfs.c

Thanks! I also looked through SHIELD Portable (roth, T40T) memory tables and this appears to match except for the 528MHz opp.

The opp table here is setting the voltage for the 528MHz opp to 1050mV for the high end SKUs (T40X and T40T)[1] and 1100mV for the lower end T40S, which makes sense. However, the roth memory table (rel-roth branch) specifies 1100mV for the 528MHz opp. My understanding is T40T is supposed to be at least as good silicon as T40X, so it doesn't make sense to me that it would require a higher voltage, but memory timings are a dark art and I would err on the baseline side and keep the voltage at 1100mV. Let me know what you think or if you have additional information.

FWIW, roth also specifies a 900MHz opp. I think in principle T40X/T40T in general can reach this but it might only have been characterized for roth.

[1] T40X is SKU 0x3 and T40T is SKU 0x4, and these are mapped to soc_speedo_id=1 -> supported_hw BIT(1).

> 
> I have converted an entire core_dvfs_table table from tegra11_dvfs.c
> and I am planning to submit those later on too along with
> powergates/domains configuration for tegra114, but that is for another
> time :)

Sounds good!

Thanks,
Mikko

> 
> > Cheers,
> > Mikko
> >
> > > +
> > > +             opp-20400000-900 {
> > > +                     opp-microvolt = <900000 900000 1390000>;
> > > +                     opp-hz = /bits/ 64 <20400000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +             };
> > > +
> > > +             opp-40800000-900 {
> > > +                     opp-microvolt = <900000 900000 1390000>;
> > > +                     opp-hz = /bits/ 64 <40800000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +             };
> > > +
> > > +             opp-68000000-900 {
> > > +                     opp-microvolt = <900000 900000 1390000>;
> > > +                     opp-hz = /bits/ 64 <68000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +             };
> > > +
> > > +             opp-102000000-900 {
> > > +                     opp-microvolt = <900000 900000 1390000>;
> > > +                     opp-hz = /bits/ 64 <102000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +             };
> > > +
> > > +             opp-204000000-900 {
> > > +                     opp-microvolt = <900000 900000 1390000>;
> > > +                     opp-hz = /bits/ 64 <204000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-suspend;
> > > +             };
> > > +
> > > +             opp-312000000-1000 {
> > > +                     opp-microvolt = <1000000 1000000 1390000>;
> > > +                     opp-hz = /bits/ 64 <312000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +             };
> > > +
> > > +             opp-408000000-1000 {
> > > +                     opp-microvolt = <1000000 1000000 1390000>;
> > > +                     opp-hz = /bits/ 64 <408000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +             };
> > > +
> > > +             opp-528000000-1050 {
> > > +                     opp-microvolt = <1050000 1050000 1390000>;
> > > +                     opp-hz = /bits/ 64 <528000000>;
> > > +                     opp-supported-hw = <0x000E>;
> > > +             };
> > > +
> > > +             opp-528000000-1100 {
> > > +                     opp-microvolt = <1100000 1100000 1390000>;
> > > +                     opp-hz = /bits/ 64 <528000000>;
> > > +                     opp-supported-hw = <0x0001>;
> > > +             };
> > > +
> > > +             opp-624000000-1100 {
> > > +                     opp-microvolt = <1100000 1100000 1390000>;
> > > +                     opp-hz = /bits/ 64 <624000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +             };
> > > +
> > > +             opp-792000000-1100 {
> > > +                     opp-microvolt = <1100000 1100000 1390000>;
> > > +                     opp-hz = /bits/ 64 <792000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +             };
> > > +     };
> > > +
> > > +     emc_bw_dfs_opp_table: opp-table-actmon {
> > > +             compatible = "operating-points-v2";
> > > +
> > > +             opp-12750000 {
> > > +                     opp-hz = /bits/ 64 <12750000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-peak-kBps = <204000>;
> > > +             };
> > > +
> > > +             opp-20400000 {
> > > +                     opp-hz = /bits/ 64 <20400000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-peak-kBps = <326400>;
> > > +             };
> > > +
> > > +             opp-40800000 {
> > > +                     opp-hz = /bits/ 64 <40800000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-peak-kBps = <652800>;
> > > +             };
> > > +
> > > +             opp-68000000 {
> > > +                     opp-hz = /bits/ 64 <68000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-peak-kBps = <1088000>;
> > > +             };
> > > +
> > > +             opp-102000000 {
> > > +                     opp-hz = /bits/ 64 <102000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-peak-kBps = <1632000>;
> > > +             };
> > > +
> > > +             opp-204000000 {
> > > +                     opp-hz = /bits/ 64 <204000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-peak-kBps = <3264000>;
> > > +                     opp-suspend;
> > > +             };
> > > +
> > > +             opp-312000000 {
> > > +                     opp-hz = /bits/ 64 <312000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-peak-kBps = <4992000>;
> > > +             };
> > > +
> > > +             opp-408000000 {
> > > +                     opp-hz = /bits/ 64 <408000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-peak-kBps = <6528000>;
> > > +             };
> > > +
> > > +             opp-528000000 {
> > > +                     opp-hz = /bits/ 64 <528000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-peak-kBps = <8448000>;
> > > +             };
> > > +
> > > +             opp-624000000 {
> > > +                     opp-hz = /bits/ 64 <624000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-peak-kBps = <9984000>;
> > > +             };
> > > +
> > > +             opp-792000000 {
> > > +                     opp-hz = /bits/ 64 <792000000>;
> > > +                     opp-supported-hw = <0x000F>;
> > > +                     opp-peak-kBps = <12672000>;
> > > +             };
> > > +     };
> > > +};
> > > diff --git a/arch/arm/boot/dts/nvidia/tegra114.dtsi b/arch/arm/boot/dts/nvidia/tegra114.dtsi
> > > index a920ad041c14..6221423b81d1 100644
> > > --- a/arch/arm/boot/dts/nvidia/tegra114.dtsi
> > > +++ b/arch/arm/boot/dts/nvidia/tegra114.dtsi
> > > @@ -8,6 +8,8 @@
> > >  #include <dt-bindings/soc/tegra-pmc.h>
> > >  #include <dt-bindings/thermal/tegra114-soctherm.h>
> > >
> > > +#include "tegra114-peripherals-opp.dtsi"
> > > +
> > >  / {
> > >       compatible = "nvidia,tegra114";
> > >       interrupt-parent = <&lic>;
> > > @@ -323,6 +325,9 @@ actmon: actmon@6000c800 {
> > >               clock-names = "actmon", "emc";
> > >               resets = <&tegra_car TEGRA114_CLK_ACTMON>;
> > >               reset-names = "actmon";
> > > +             operating-points-v2 = <&emc_bw_dfs_opp_table>;
> > > +             interconnects = <&mc TEGRA114_MC_MPCORER &emc>;
> > > +             interconnect-names = "cpu-read";
> > >               #cooling-cells = <2>;
> > >       };
> > >
> > > @@ -655,6 +660,7 @@ mc: memory-controller@70019000 {
> > >
> > >               #reset-cells = <1>;
> > >               #iommu-cells = <1>;
> > > +             #interconnect-cells = <1>;
> > >       };
> > >
> > >       emc: external-memory-controller@7001b000 {
> > > @@ -665,6 +671,9 @@ emc: external-memory-controller@7001b000 {
> > >               clock-names = "emc";
> > >
> > >               nvidia,memory-controller = <&mc>;
> > > +             operating-points-v2 = <&emc_icc_dvfs_opp_table>;
> > > +
> > > +             #interconnect-cells = <0>;
> > >       };
> > >
> > >       hda@70030000 {
> > >
> >
> >
> >
> >





  reply	other threads:[~2026-01-22  5:46 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-25 12:05 [PATCH v4 00/12] Tegra114: implement EMC support Svyatoslav Ryhel
2025-11-25 12:05 ` [PATCH v4 01/12] devfreq: tegra30-devfreq: add support for Tegra114 Svyatoslav Ryhel
2026-01-20  6:56   ` Mikko Perttunen
2025-11-25 12:05 ` [PATCH v4 02/12] ARM: tegra: Add ACTMON node to Tegra114 device tree Svyatoslav Ryhel
2025-11-25 12:05 ` [PATCH v4 03/12] dt-bindings: memory: Document Tegra114 Memory Controller Svyatoslav Ryhel
2025-12-04 18:11   ` Rob Herring (Arm)
2025-11-25 12:05 ` [PATCH v4 04/12] memory: tegra: implement EMEM regs and ICC ops for Tegra114 Svyatoslav Ryhel
2025-11-25 12:05 ` [PATCH v4 05/12] dt-bindings: memory: Add Tegra114 memory client IDs Svyatoslav Ryhel
2025-11-25 12:05 ` [PATCH v4 06/12] clk: tegra: set up proper EMC clock implementation for Tegra114 Svyatoslav Ryhel
2026-01-20  7:01   ` Mikko Perttunen
2025-11-25 12:05 ` [PATCH v4 07/12] dt-bindings: memory: Document Tegra114 External Memory Controller Svyatoslav Ryhel
2025-12-04 18:12   ` Rob Herring (Arm)
2025-11-25 12:05 ` [PATCH v4 08/12] soc: tegra: common: add Tegra114 support to devm_tegra_core_dev_init_opp_table Svyatoslav Ryhel
2026-01-20  7:05   ` Mikko Perttunen
2025-11-25 12:05 ` [PATCH v4 09/12] memory: tegra: Add Tegra114 EMC driver Svyatoslav Ryhel
2026-01-20  7:07   ` Mikko Perttunen
2025-11-25 12:05 ` [PATCH v4 10/12] ARM: tegra: Add External Memory Controller node on Tegra114 Svyatoslav Ryhel
2026-01-20  7:15   ` Mikko Perttunen
2025-11-25 12:05 ` [PATCH v4 11/12] ARM: tegra: Add EMC OPP and ICC properties to Tegra114 EMC and ACTMON device-tree nodes Svyatoslav Ryhel
2026-01-21  7:55   ` Mikko Perttunen
2026-01-21 16:57     ` Svyatoslav Ryhel
2026-01-22  5:45       ` Mikko Perttunen [this message]
2026-01-22  8:13         ` Svyatoslav Ryhel
2025-11-25 12:05 ` [PATCH v4 12/12] ARM: tegra: add DC interconnections for Tegra114 Svyatoslav Ryhel
2026-01-21  7:58   ` Mikko Perttunen
2025-11-26  8:47 ` [PATCH v4 00/12] Tegra114: implement EMC support Krzysztof Kozlowski
2025-12-01  6:12   ` Svyatoslav Ryhel
2025-12-01  7:18     ` Krzysztof Kozlowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7678982.MhkbZ0Pkbq@senjougahara \
    --to=mperttunen@nvidia.com \
    --cc=clamor95@gmail.com \
    --cc=conor+dt@kernel.org \
    --cc=cw00.choi@samsung.com \
    --cc=devicetree@vger.kernel.org \
    --cc=digetx@gmail.com \
    --cc=jonathanh@nvidia.com \
    --cc=krzk@kernel.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=myungjoo.ham@samsung.com \
    --cc=pgaikwad@nvidia.com \
    --cc=robh@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=thierry.reding@gmail.com \
    --cc=treding@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox