arm64: dts: imx8mq-phanbell: Add gpio-fan/thermal support
authorVitor Massaru Iha <vitor@massaru.org>
Tue, 3 Mar 2020 01:15:16 +0000 (22:15 -0300)
committerShawn Guo <shawnguo@kernel.org>
Wed, 11 Mar 2020 08:25:29 +0000 (16:25 +0800)
It was based on Google Source Code for Coral Edge TPU Mendel release:
https://coral.googlesource.com/linux-imx/

It was tested on Coral Dev Board using this command:
  sudo stress --cpu 4 --timeout 3600

Signed-off-by: Vitor Massaru Iha <vitor@massaru.org>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx8mq-phanbell.dts
arch/arm64/boot/dts/freescale/imx8mq.dtsi

index 16ed13c..1a04d01 100644 (file)
                gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
                enable-active-high;
        };
+
+       fan: gpio-fan {
+               compatible = "gpio-fan";
+               gpio-fan,speed-map = <0 0 8600 1>;
+               gpios = <&gpio3 5 GPIO_ACTIVE_HIGH>;
+               #cooling-cells = <2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_fan>;
+               status = "okay";
+       };
 };
 
 &A53_0 {
        cpu-supply = <&buck2>;
 };
 
+&cpu_thermal {
+       trips {
+               cpu_alert0: trip0 {
+                       temperature = <75000>;
+                       hysteresis = <2000>;
+                       type = "passive";
+               };
+
+               cpu_alert1: trip1 {
+                       temperature = <80000>;
+                       hysteresis = <2000>;
+                       type = "passive";
+               };
+
+               cpu_crit0: trip3 {
+                       temperature = <90000>;
+                       hysteresis = <2000>;
+                       type = "critical";
+               };
+
+               fan_toggle0: trip4 {
+                       temperature = <65000>;
+                       hysteresis = <10000>;
+                       type = "active";
+               };
+       };
+
+       cooling-maps {
+               map0 {
+                       trip = <&cpu_alert0>;
+                       cooling-device =
+                       <&A53_0 0 1>; /* Exclude highest OPP */
+               };
+
+               map1 {
+                       trip = <&cpu_alert1>;
+                       cooling-device =
+                       <&A53_0 0 2>; /* Exclude two highest OPPs */
+               };
+
+               map4 {
+                       trip = <&fan_toggle0>;
+                       cooling-device = <&fan 0 1>;
+               };
+       };
+};
+
 &i2c1 {
        clock-frequency = <400000>;
        pinctrl-names = "default";
                >;
        };
 
+       pinctrl_gpio_fan: gpiofangrp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_NAND_CLE_GPIO3_IO5                 0x16
+               >;
+       };
+
        pinctrl_i2c1: i2c1grp {
                fsl,pins = <
                        MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL                  0x4000007f
index 985a1a6..9bbdaf2 100644 (file)
        };
 
        thermal-zones {
-               cpu-thermal {
+               cpu_thermal: cpu-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <2000>;
                        thermal-sensors = <&tmu 0>;