README.md
Samsung HIDL thermal HAL
The HAL uses the standard linux thermal interface and can be configured by
adding thermal zones and cooling devices present on the device in a
thermal_info_config.json
file.
To probe them, just connect the phone via ADB and check the nodes available
under /sys/class/thermal/
. The name of each thermal zone and cooling device
can be found in the type node, e.g.
/sys/class/thermal/thermal_zone0/type
/sys/class/thermal/cooling_device0/type
For each thermal device it is possible to configure a "Sensor" node in
thermal_info_config.json
, and setting up to 7 throttling levels, from NONE to
SHUTDOWN. At each severity level, the hal send signals to throttle the device to the
framework, according to : https://source.android.com/devices/architecture/hidl/thermal-mitigation
In order to set temperature curve for the desired component you can
took as a refererence the kernel trip points temperatures, for the specific devices,
available in the thermal_zoneX sysfs.
Each sensor can be classified as CPU, GPU, USB_PORT or BATTERY type.
If you have a thermal monitor which does not belong to any of this categories you can
classify it as UNKNOWN.
You can specify hysteresis as well as if the interface should be monitored.
If you monitor the interface, the HAL takes action when the specifc treshold is passed.
You should not enable monitor if your kernel already implement thermal mitigatoin for
the specified component.
Since each device reports temperatures multiplied by different factor of 10,
you should set the Multipler field such as
/sys/class/thermal/thermal_zoneX/temp
is reported in Celusis degrees (e.g.
25100 reported by sysfs, multiplied by 0.001 is 25.1).
The same can be said for cooling devices. For each cooling devices can be
created a CoolingDevices node in thermal_info_config.json
.
Each cooling interface can be classified as CPU, GPU or BATTERY type.
If you have a cooling device which does not belong to any of this categories you can
classify it as COMPONENT.
The thermal_info_config.json
should be copied under /vendor/etc.
For more details, refer on the sample config schema.