google/panther: Re-read temperature if current reading would cause power-off
Sometimes the SuperIO seems to provide wrong readings, especially early on after a resume from suspend. This will cause the system to power off. If that happens, wait for 1s and read again, to make sure the high temperature value was not just a flaky read. BUG=chrome-os-partner:24918 BRANCH=panther TEST=Boot tested on Panther. Change-Id: Ib3768528d90e34448e96ad587b2503d8d8b1a775 Signed-off-by: Stefan Reinauer <reinauer@google.com> Signed-off-by: Stefan Reinauer <reinauer@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/182188 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Duncan Laurie <dlaurie@chromium.org> Tested-by: Stefan Reinauer <reinauer@chromium.org> Commit-Queue: Stefan Reinauer <reinauer@chromium.org> Reviewed-on: http://review.coreboot.org/6001 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
This commit is contained in:
parent
06946cabd9
commit
a0819eb38d
|
@ -61,7 +61,7 @@ Scope (\_TZ)
|
||||||
Return (\PPKG ())
|
Return (\PPKG ())
|
||||||
}
|
}
|
||||||
|
|
||||||
Method (_TMP, 0, Serialized)
|
Method (TCHK, 0, Serialized)
|
||||||
{
|
{
|
||||||
// Get CPU Temperature from PECI via SuperIO TMPIN3
|
// Get CPU Temperature from PECI via SuperIO TMPIN3
|
||||||
Store (\_SB.PCI0.LPCB.SIO.ENVC.TIN3, Local0)
|
Store (\_SB.PCI0.LPCB.SIO.ENVC.TIN3, Local0)
|
||||||
|
@ -84,6 +84,31 @@ Scope (\_TZ)
|
||||||
Return (CTOK (Local0))
|
Return (CTOK (Local0))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Method (_TMP, 0, Serialized)
|
||||||
|
{
|
||||||
|
// Get temperature from SuperIO in deci-kelvin
|
||||||
|
Store (TCHK (), Local0)
|
||||||
|
|
||||||
|
// Critical temperature in deci-kelvin
|
||||||
|
Store (CTOK (\TMAX), Local1)
|
||||||
|
|
||||||
|
If (LGreaterEqual (Local0, Local1)) {
|
||||||
|
Store ("CRITICAL TEMPERATURE", Debug)
|
||||||
|
Store (Local0, Debug)
|
||||||
|
|
||||||
|
// Wait 1 second for SuperIO to re-poll
|
||||||
|
Sleep (1000)
|
||||||
|
|
||||||
|
// Re-read temperature from SuperIO
|
||||||
|
Store (TCHK (), Local0)
|
||||||
|
|
||||||
|
Store ("RE-READ TEMPERATURE", Debug)
|
||||||
|
Store (Local0, Debug)
|
||||||
|
}
|
||||||
|
|
||||||
|
Return (Local0)
|
||||||
|
}
|
||||||
|
|
||||||
Method (_AC0) {
|
Method (_AC0) {
|
||||||
If (LLessEqual (\FLVL, 0)) {
|
If (LLessEqual (\FLVL, 0)) {
|
||||||
Return (CTOK (\F0OF))
|
Return (CTOK (\F0OF))
|
||||||
|
|
Loading…
Reference in New Issue