• 周五. 5月 2nd, 2025

rk3288 — thermal dts配置

3月 19, 2020

关键词:rk3288; thermal; tsadc;rockchip,px30-tsadc;rockchip,rk3228-tsadc;rockchip,rk3288-tsadc;rockchip,rk3308-tsadc;rockchip,rk3328-tsadc;rockchip,rk3366-tsadc;rockchip,rk3368-tsadc;rockchip,rk3399-tsadc  

rk3288 — thermal dts配置

1、TSADC简介:

TSADC (Temperature Sensor ADC) 即在rockchip芯片内部的温度传感器

2、属性值配置:

- compatible : 可以配置成"rockchip,<name>-tsadc"
   "rockchip,px30-tsadc":   found on PX30 SoCs
   "rockchip,rk3228-tsadc": found on RK3228 SoCs
   "rockchip,rk3288-tsadc": found on RK3288 SoCs
   "rockchip,rk3308-tsadc": found on RK3308 SoCs
   "rockchip,rk3328-tsadc": found on RK3328 SoCs
   "rockchip,rk3366-tsadc": found on RK3366 SoCs
   "rockchip,rk3368-tsadc": found on RK3368 SoCs
   "rockchip,rk3399-tsadc": found on RK3399 SoCs
- reg : 配置寄存器的物理基地址,以及寄存器的空间大小;
- interrupts : 配置thermal的中断号;
- clocks : 配置thermal 相关的时钟,与clock-names 一一对应;
- clock-names : tsadc是转换时钟,apb_pclk是外设时钟;
- resets : 配置thermal的复位控制器;
- reset-names : 配置复位名称"tsadc-apb".
- pinctrl-names : pinctrl的名称;
- pinctrl-0 : init代表在设备初始化之前会被设置;
- pinctrl-1 : default代表在设备复位时会被设置;
- pinctrl-2 : sleep代表在suspend时被设置;
- #thermal-sensor-cells : 配置成1;

可选属性配置
- rockchip,hw-tshut-temp : 配置硬件控制关机的温度值;
- rockchip,hw-tshut-mode : 配置硬件控制关机的模式,0:CRU,1:GPIO;
- rockchip,hw-tshut-polarity : 配置硬件控制关机的极性,0:低电平,1:高电平;
- rockchip,grf : 配置grf;
3、以rk3288为例:
Exiample:
tsadc: tsadc@ff280000 {
	compatible = "rockchip,rk3288-tsadc";
	reg = <0xff280000 0x100>;
	interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
	clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
	clock-names = "tsadc", "apb_pclk";
	resets = <&cru SRST_TSADC>;
	reset-names = "tsadc-apb";
	pinctrl-names = "init", "default", "sleep";
	pinctrl-0 = <&otp_gpio>;
	pinctrl-1 = <&otp_out>;
	pinctrl-2 = <&otp_gpio>;
	#thermal-sensor-cells = <1>;
	rockchip,hw-tshut-temp = <95000>;
	rockchip,hw-tshut-mode = <0>;
	rockchip,hw-tshut-polarity = <0>;
};

Example: referring to thermal sensors:
thermal-zones {
	cpu_thermal: cpu_thermal {
		polling-delay-passive = <1000>; /* milliseconds */
		polling-delay = <5000>; /* milliseconds */

		/* sensor	ID */
		thermal-sensors = <&tsadc	1>;

		trips {
			cpu_alert0: cpu_alert {
				temperature = <70000>; /* millicelsius */
				hysteresis = <2000>; /* millicelsius */
				type = "passive";
			};
			cpu_crit: cpu_crit {
				temperature = <90000>; /* millicelsius */
				hysteresis = <2000>; /* millicelsius */
				type = "critical";
			};
		};

		cooling-maps {
			map0 {
				trip = <&cpu_alert0>;
				cooling-device =
				    <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
			};
		};
	};
};