Rockchip平台cpu散热风扇随温度自动调速的配置方法
CPU的散热风扇硬件是有一个PWM来控制转速,Android的内核中有对应的驱动,Rockchip RK3588上面已经实现根据cpu温度自动调速的功能,下面介绍rockchip平台上面如何进行软件配置。
注:根据cpu温度调整风扇转速的功能在RK3588 Android2的 SDK的RKR12版本上才有支持。
1,确认kernel的config配置打开如下配置:
arch/arm64/configs/rockchip_defconfig
CONFIG_SENSORS_PWM_FAN=y
2,DTS中加入fan的配置
fan: pwm-fan {
compatible = "pwm-fan";
#cooling-cells = <2>;
pwms = <&pwm9 0 50000 0>;
cooling-levels = <0 50 100 150 200 255>;
rockchip,temp-trips = <
50000 1
55000 2
60000 3
65000 4
70000 5
>;
};
其中:
- pwms = <&pwm11 0 50000 0>; 是配置使用那个pwm
- cooling-levels = <0 50 100 150 200 255>;是配置转速(pwm的占空比)的档位,档位数量和大小可以自己定义,这里配置6个档位,转速的范围是0-255。
- rockchip,temp-trips 是配置cpu温度和风扇转速档位的对应关系,可以根据实际需要进行调整,如50度对应档位1。
3,配置打开PWM
这里风扇接的pwm11,所以dts中要配置打开pwm11,并配置对应的pinctrl。 不同的硬件设计使用的pwm可能不一样,需要根据实际硬件设计来对应配置。
&pwm11 {
pinctrl-0 = <&pwm11m1_pins>;
status = "okay";
};
4,调试
可以通过下面的节点查看风扇与温度对应的档位信息
rk3588_s:/ # cat /sys/class/thermal/cooling_device0/
cur_state max_state power/ subsystem/ type uevent
//当前风扇档位
1|rk3588_s:/ # cat /sys/class/thermal/cooling_device0/cur_state
0
//最新档位数
rk3588_s:/ # cat /sys/class/thermal/cooling_device0/max_state
6
可以echo 0-6的值到/sys/class/thermal/cooling_device0/cur_state进行手动调试转速