arm64: tegra: Add OPP tables on Tegra132
authorThierry Reding <treding@nvidia.com>
Tue, 7 Dec 2021 13:17:07 +0000 (14:17 +0100)
committerThierry Reding <treding@nvidia.com>
Thu, 16 Dec 2021 15:51:01 +0000 (16:51 +0100)
Add peripheral OPP tables on Tegra132 and wire them up to ACTMON and the
EMC. While at it, add the missing "#interconnect-cells" properties to
the memory controller and external memory controller nodes. Also set the
"#reset-cells" property for the memory controller because it exports the
hotflush reset controls.

Signed-off-by: Thierry Reding <treding@nvidia.com>
arch/arm64/boot/dts/nvidia/tegra132-peripherals-opp.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/nvidia/tegra132.dtsi

diff --git a/arch/arm64/boot/dts/nvidia/tegra132-peripherals-opp.dtsi b/arch/arm64/boot/dts/nvidia/tegra132-peripherals-opp.dtsi
new file mode 100644 (file)
index 0000000..66ffb7f
--- /dev/null
@@ -0,0 +1,426 @@
+// SPDX-License-Identifier: GPL-2.0
+
+/ {
+       /* EMC DVFS OPP table */
+       emc_icc_dvfs_opp_table: opp-table-dvfs0 {
+               compatible = "operating-points-v2";
+
+               opp-12750000-800 {
+                       opp-microvolt = <800000 800000 1150000>;
+                       opp-hz = /bits/ 64 <12750000>;
+                       opp-supported-hw = <0x0003>;
+               };
+
+               opp-12750000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <12750000>;
+                       opp-supported-hw = <0x0008>;
+               };
+
+               opp-12750000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <12750000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-12750000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <12750000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-20400000-800 {
+                       opp-microvolt = <800000 800000 1150000>;
+                       opp-hz = /bits/ 64 <20400000>;
+                       opp-supported-hw = <0x0003>;
+               };
+
+               opp-20400000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <20400000>;
+                       opp-supported-hw = <0x0008>;
+               };
+
+               opp-20400000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <20400000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-20400000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <20400000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-40800000-800 {
+                       opp-microvolt = <800000 800000 1150000>;
+                       opp-hz = /bits/ 64 <40800000>;
+                       opp-supported-hw = <0x0003>;
+               };
+
+               opp-40800000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <40800000>;
+                       opp-supported-hw = <0x0008>;
+               };
+
+               opp-40800000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <40800000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-40800000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <40800000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-68000000-800 {
+                       opp-microvolt = <800000 800000 1150000>;
+                       opp-hz = /bits/ 64 <68000000>;
+                       opp-supported-hw = <0x0003>;
+               };
+
+               opp-68000000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <68000000>;
+                       opp-supported-hw = <0x0008>;
+               };
+
+               opp-68000000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <68000000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-68000000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <68000000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-102000000-800 {
+                       opp-microvolt = <800000 800000 1150000>;
+                       opp-hz = /bits/ 64 <102000000>;
+                       opp-supported-hw = <0x0003>;
+               };
+
+               opp-102000000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <102000000>;
+                       opp-supported-hw = <0x0008>;
+               };
+
+               opp-102000000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <102000000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-102000000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <102000000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-204000000-800 {
+                       opp-microvolt = <800000 800000 1150000>;
+                       opp-hz = /bits/ 64 <204000000>;
+                       opp-supported-hw = <0x0003>;
+                       opp-suspend;
+               };
+
+               opp-204000000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <204000000>;
+                       opp-supported-hw = <0x0008>;
+                       opp-suspend;
+               };
+
+               opp-204000000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <204000000>;
+                       opp-supported-hw = <0x0010>;
+                       opp-suspend;
+               };
+
+               opp-204000000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <204000000>;
+                       opp-supported-hw = <0x0004>;
+                       opp-suspend;
+               };
+
+               opp-264000000-800 {
+                       opp-microvolt = <800000 800000 1150000>;
+                       opp-hz = /bits/ 64 <264000000>;
+                       opp-supported-hw = <0x0003>;
+               };
+
+               opp-264000000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <264000000>;
+                       opp-supported-hw = <0x0008>;
+               };
+
+               opp-264000000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <264000000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-264000000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <264000000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-300000000-850 {
+                       opp-microvolt = <850000 850000 1150000>;
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-supported-hw = <0x0003>;
+               };
+
+               opp-300000000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-supported-hw = <0x0008>;
+               };
+
+               opp-300000000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-300000000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-348000000-850 {
+                       opp-microvolt = <850000 850000 1150000>;
+                       opp-hz = /bits/ 64 <348000000>;
+                       opp-supported-hw = <0x0003>;
+               };
+
+               opp-348000000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <348000000>;
+                       opp-supported-hw = <0x0008>;
+               };
+
+               opp-348000000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <348000000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-348000000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <348000000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-396000000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-supported-hw = <0x0008>;
+               };
+
+               opp-396000000-1000 {
+                       opp-microvolt = <1000000 1000000 1150000>;
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-supported-hw = <0x0003>;
+               };
+
+               opp-396000000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-396000000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-528000000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <528000000>;
+                       opp-supported-hw = <0x0008>;
+               };
+
+               opp-528000000-1000 {
+                       opp-microvolt = <1000000 1000000 1150000>;
+                       opp-hz = /bits/ 64 <528000000>;
+                       opp-supported-hw = <0x0003>;
+               };
+
+               opp-528000000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <528000000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-528000000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <528000000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-600000000-950 {
+                       opp-microvolt = <950000 950000 1150000>;
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-supported-hw = <0x0008>;
+               };
+
+               opp-600000000-1000 {
+                       opp-microvolt = <1000000 1000000 1150000>;
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-supported-hw = <0x0003>;
+               };
+
+               opp-600000000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-600000000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-792000000-1000 {
+                       opp-microvolt = <1000000 1000000 1150000>;
+                       opp-hz = /bits/ 64 <792000000>;
+                       opp-supported-hw = <0x000B>;
+               };
+
+               opp-792000000-1050 {
+                       opp-microvolt = <1050000 1050000 1150000>;
+                       opp-hz = /bits/ 64 <792000000>;
+                       opp-supported-hw = <0x0010>;
+               };
+
+               opp-792000000-1110 {
+                       opp-microvolt = <1110000 1110000 1150000>;
+                       opp-hz = /bits/ 64 <792000000>;
+                       opp-supported-hw = <0x0004>;
+               };
+
+               opp-924000000-1100 {
+                       opp-microvolt = <1100000 1100000 1150000>;
+                       opp-hz = /bits/ 64 <924000000>;
+                       opp-supported-hw = <0x0013>;
+               };
+
+               opp-1200000000-1100 {
+                       opp-microvolt = <1100000 1100000 1150000>;
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-supported-hw = <0x0003>;
+               };
+       };
+
+       /* EMC bandwidth OPP table */
+       emc_bw_dfs_opp_table: opp-table-dvfs1 {
+               compatible = "operating-points-v2";
+
+               opp-12750000 {
+                       opp-hz = /bits/ 64 <12750000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <204000>;
+               };
+
+               opp-20400000 {
+                       opp-hz = /bits/ 64 <20400000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <326400>;
+               };
+
+               opp-40800000 {
+                       opp-hz = /bits/ 64 <40800000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <652800>;
+               };
+
+               opp-68000000 {
+                       opp-hz = /bits/ 64 <68000000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <1088000>;
+               };
+
+               opp-102000000 {
+                       opp-hz = /bits/ 64 <102000000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <1632000>;
+               };
+
+               opp-204000000 {
+                       opp-hz = /bits/ 64 <204000000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <3264000>;
+                       opp-suspend;
+               };
+
+               opp-264000000 {
+                       opp-hz = /bits/ 64 <264000000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <4224000>;
+               };
+
+               opp-300000000 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <4800000>;
+               };
+
+               opp-348000000 {
+                       opp-hz = /bits/ 64 <348000000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <5568000>;
+               };
+
+               opp-396000000 {
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <6336000>;
+               };
+
+               opp-528000000 {
+                       opp-hz = /bits/ 64 <528000000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <8448000>;
+               };
+
+               opp-600000000 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <9600000>;
+               };
+
+               opp-792000000 {
+                       opp-hz = /bits/ 64 <792000000>;
+                       opp-supported-hw = <0x001F>;
+                       opp-peak-kBps = <12672000>;
+               };
+
+               opp-924000000 {
+                       opp-hz = /bits/ 64 <924000000>;
+                       opp-supported-hw = <0x0013>;
+                       opp-peak-kBps = <14784000>;
+               };
+
+               opp-1200000000 {
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-supported-hw = <0x0003>;
+                       opp-peak-kBps = <19200000>;
+               };
+       };
+};
index 95bdcc8..7f5cbcd 100644 (file)
@@ -8,6 +8,8 @@
 #include <dt-bindings/thermal/tegra124-soctherm.h>
 #include <dt-bindings/soc/tegra-pmc.h>
 
+#include "tegra132-peripherals-opp.dtsi"
+
 / {
        compatible = "nvidia,tegra132", "nvidia,tegra124";
        interrupt-parent = <&lic>;
                clock-names = "actmon", "emc";
                resets = <&tegra_car 119>;
                reset-names = "actmon";
+               operating-points-v2 = <&emc_bw_dfs_opp_table>;
+               interconnects = <&mc TEGRA124_MC_MPCORER &emc>;
+               interconnect-names = "cpu-read";
+               #cooling-cells = <2>;
        };
 
        gpio: gpio@6000d000 {
                interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
 
                #iommu-cells = <1>;
+               #reset-cells = <1>;
+               #interconnect-cells = <1>;
        };
 
        emc: external-memory-controller@7001b000 {
-               compatible = "nvidia,tegra132-emc";
+               compatible = "nvidia,tegra132-emc", "nvidia,tegra124-emc";
                reg = <0x0 0x7001b000 0x0 0x1000>;
                clocks = <&tegra_car TEGRA124_CLK_EMC>;
                clock-names = "emc";
 
                nvidia,memory-controller = <&mc>;
+               operating-points-v2 = <&emc_icc_dvfs_opp_table>;
+
+               #interconnect-cells = <0>;
        };
 
        sata@70020000 {