You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
2.1 KiB
40 lines
2.1 KiB
# 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.
|
|
|