arm64: tegra: Hook up EMC cooling device
authorThierry Reding <treding@nvidia.com>
Thu, 9 Apr 2020 17:34:29 +0000 (19:34 +0200)
committerThierry Reding <treding@nvidia.com>
Wed, 20 May 2020 13:26:08 +0000 (15:26 +0200)
The external memory controller can be used as a cooling device for the
LPDDR chips. Hook it up to the "mem" thermal zone of the SOCTHERM block
so that temperature polling can be enabled on the EMC when a given
temperature is exceeded.

Signed-off-by: Thierry Reding <treding@nvidia.com>
arch/arm64/boot/dts/nvidia/tegra210.dtsi

index 3fa92dd..a550e7b 100644 (file)
                #iommu-cells = <1>;
        };
 
-       external-memory-controller@7001b000 {
+       emc: external-memory-controller@7001b000 {
                compatible = "nvidia,tegra210-emc";
                reg = <0x0 0x7001b000 0x0 0x1000>,
                      <0x0 0x7001e000 0x0 0x1000>,
                clock-names = "emc";
                interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
                nvidia,memory-controller = <&mc>;
+               #cooling-cells = <2>;
        };
 
        sata@70020000 {
                                <&soctherm TEGRA124_SOCTHERM_SENSOR_MEM>;
 
                        trips {
+                               dram_nominal: mem-nominal-trip {
+                                       temperature = <50000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               dram_throttle: mem-throttle-trip {
+                                       temperature = <70000>;
+                                       hysteresis = <1000>;
+                                       type = "active";
+                               };
+
                                mem-shutdown-trip {
                                        temperature = <103000>;
                                        hysteresis = <0>;
                        };
 
                        cooling-maps {
-                               /*
-                                * There are currently no cooling maps,
-                                * because there are no cooling devices.
-                                */
+                               dram-passive {
+                                       cooling-device = <&emc 0 0>;
+                                       trip = <&dram_nominal>;
+                               };
+
+                               dram-active {
+                                       cooling-device = <&emc 1 1>;
+                                       trip = <&dram_throttle>;
+                               };
                        };
                };