Change-Id: Ie7d3b0bccacb7568cd4523483452eb386d21fc9etirimbino
parent
01daaa0a6d
commit
55be8ed074
@ -0,0 +1,40 @@ |
|||||||
|
# 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. |
@ -0,0 +1,160 @@ |
|||||||
|
{ |
||||||
|
"Sensors":[ |
||||||
|
{ |
||||||
|
"Name":"therm_zone0", |
||||||
|
"Type":"CPU", |
||||||
|
"HotThreshold":[ |
||||||
|
"NAN", |
||||||
|
76.0, |
||||||
|
81.0, |
||||||
|
86.0, |
||||||
|
96.0, |
||||||
|
101.0, |
||||||
|
115.0 |
||||||
|
], |
||||||
|
"VrThreshold":"NAN", |
||||||
|
"Multiplier":0.001 |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"therm_zone1", |
||||||
|
"Type":"CPU", |
||||||
|
"HotThreshold":[ |
||||||
|
"NAN", |
||||||
|
76.0, |
||||||
|
81.0, |
||||||
|
86.0, |
||||||
|
96.0, |
||||||
|
101.0, |
||||||
|
115.0 |
||||||
|
], |
||||||
|
"VrThreshold":"NAN", |
||||||
|
"Multiplier":0.001 |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"therm_zone2", |
||||||
|
"Type":"CPU", |
||||||
|
"HotThreshold":[ |
||||||
|
"NAN", |
||||||
|
76.0, |
||||||
|
81.0, |
||||||
|
86.0, |
||||||
|
96.0, |
||||||
|
101.0, |
||||||
|
115.0 |
||||||
|
], |
||||||
|
"VrThreshold":"NAN", |
||||||
|
"Multiplier":0.001 |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"therm_zone3", |
||||||
|
"Type":"CPU", |
||||||
|
"HotThreshold":[ |
||||||
|
"NAN", |
||||||
|
76.0, |
||||||
|
81.0, |
||||||
|
86.0, |
||||||
|
96.0, |
||||||
|
101.0, |
||||||
|
115.0 |
||||||
|
], |
||||||
|
"VrThreshold":"NAN", |
||||||
|
"Multiplier":0.001 |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"therm_zone4", |
||||||
|
"Type":"CPU", |
||||||
|
"HotThreshold":[ |
||||||
|
"NAN", |
||||||
|
76.0, |
||||||
|
81.0, |
||||||
|
86.0, |
||||||
|
96.0, |
||||||
|
101.0, |
||||||
|
115.0 |
||||||
|
], |
||||||
|
"VrThreshold":"NAN", |
||||||
|
"Multiplier":0.001 |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"ac", |
||||||
|
"Type":"USB_PORT", |
||||||
|
"HotThreshold":[ |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"60.0", |
||||||
|
"NAN" |
||||||
|
], |
||||||
|
"HotHysteresis":[ |
||||||
|
0.0, |
||||||
|
0.0, |
||||||
|
0.0, |
||||||
|
0.0, |
||||||
|
0.0, |
||||||
|
5.0, |
||||||
|
0.0 |
||||||
|
], |
||||||
|
"VrThreshold":"NAN", |
||||||
|
"Multiplier":0.001, |
||||||
|
"Monitor": true |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"max77854-fuelgauge", |
||||||
|
"Type":"UNKNOWN", |
||||||
|
"HotThreshold":[ |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN" |
||||||
|
], |
||||||
|
"VrThreshold":"NAN", |
||||||
|
"Multiplier":0.001 |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"battery", |
||||||
|
"Type":"BATTERY", |
||||||
|
"HotThreshold":[ |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
"NAN", |
||||||
|
60.0 |
||||||
|
], |
||||||
|
"VrThreshold":"NAN", |
||||||
|
"Multiplier":0.001 |
||||||
|
} |
||||||
|
], |
||||||
|
"CoolingDevices":[ |
||||||
|
{ |
||||||
|
"Name":"thermal-cpufreq-0", |
||||||
|
"Type":"CPU" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"thermal-cpufreq-1", |
||||||
|
"Type":"CPU" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"thermal-cpufreq-2", |
||||||
|
"Type":"CPU" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"thermal-gpufreq-0", |
||||||
|
"Type":"GPU" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"thermal-isp-0", |
||||||
|
"Type":"COMPONENT" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Name":"battery", |
||||||
|
"Type":"BATTERY" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
Loading…
Reference in new issue