arm64: dts: mba8mpxl: Add PWM fan support
authorAlexander Stein <alexander.stein@ew.tq-group.com>
Tue, 1 Nov 2022 09:06:42 +0000 (10:06 +0100)
committerShawn Guo <shawnguo@kernel.org>
Fri, 11 Nov 2022 05:01:44 +0000 (13:01 +0800)
This adds the support for optional PWM fan 422J/2HP.

Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx8mp-tqma8mpql-mba8mpxl.dts

index 3165044..6357f3d 100644 (file)
                clock-frequency = <25000000>;
        };
 
+       fan0: pwm-fan {
+               compatible = "pwm-fan";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pwmfan>;
+               fan-supply = <&reg_pwm_fan>;
+               #cooling-cells = <2>;
+               /* typical 25 kHz -> 40.000 nsec */
+               pwms = <&pwm3 0 40000 PWM_POLARITY_INVERTED>;
+               cooling-levels = <0 32 64 128 196 240>;
+               pulses-per-revolution = <2>;
+               interrupt-parent = <&gpio5>;
+               interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
+               status = "disabled";
+       };
+
        gpio-keys {
                compatible = "gpio-keys";
                pinctrl-names = "default";
                status = "disabled";
        };
 
+       reg_pwm_fan: regulator-pwm-fan {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_regpwmfan>;
+               regulator-name = "FAN_PWR";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&reg_vcc_12v0>;
+       };
+
        reg_usdhc2_vmmc: regulator-usdhc2 {
                compatible = "regulator-fixed";
                pinctrl-names = "default";
                        linux,cma-default;
                };
        };
+
+       thermal-zones {
+               soc-thermal {
+                       trips {
+                               soc_active0: trip-active0 {
+                                       temperature = <40000>;
+                                       hysteresis = <5000>;
+                                       type = "active";
+                               };
+
+                               soc_active1: trip-active1 {
+                                       temperature = <48000>;
+                                       hysteresis = <3000>;
+                                       type = "active";
+                               };
+
+                               soc_active2: trip-active2 {
+                                       temperature = <60000>;
+                                       hysteresis = <10000>;
+                                       type = "active";
+                               };
+                       };
+
+                       cooling-maps {
+                               map1 {
+                                       trip = <&soc_active0>;
+                                       cooling-device = <&fan0 1 1>;
+                               };
+
+                               map2 {
+                                       trip = <&soc_active1>;
+                                       cooling-device = <&fan0 2 2>;
+                               };
+
+                               map3 {
+                                       trip = <&soc_active2>;
+                                       cooling-device = <&fan0 3 3>;
+                               };
+                       };
+               };
+       };
 };
 
 &ecspi1 {
                fsl,pins = <MX8MP_IOMUXC_I2C3_SDA__PWM3_OUT             0x14>;
        };
 
+       pinctrl_pwmfan: pwmfangrp {
+               fsl,pins = <MX8MP_IOMUXC_I2C3_SCL__GPIO5_IO18           0x80>; /* FAN RPM */
+       };
+
        pinctrl_reg12v0: reg12v0grp {
                fsl,pins = <MX8MP_IOMUXC_SD1_DATA4__GPIO2_IO06          0x140>; /* VCC12V enable */
        };
 
+       pinctrl_regpwmfan: regpwmfangrp {
+               fsl,pins = <MX8MP_IOMUXC_SAI2_MCLK__GPIO4_IO27          0x80>;
+       };
+
        /* X61 */
        pinctrl_uart1: uart1grp {
                fsl,pins = <MX8MP_IOMUXC_SD1_CLK__UART1_DCE_TX          0x140>,