falco: Re-read critical temperatures in ACPI _TMP

There seem to be a significant number of shutdowns during suspend resume
tests related to critical temperatures.  It is possible that we are getting
a bad reading from PECI and shutting down prematurely in some cases.

If we get a reading that is above critical then wait for the EC to re-poll
and then re-check the temperature in case it was just a bad reading.

Also add some ACPI debug messages when this happens.

Original-Change-Id: I0ab7bdcc50d133981c0f36fc696b06d4a1d939a7
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/66937
Reviewed-by: Aaron Durbin <adurbin@chromium.org>

(cherry picked from commit a39d7b11dd7b2af37fc2658542d56b32e3966ed4)
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>

Change-Id: Ib612266511d90749ec6507f8467c71523ee8fb95
Reviewed-on: https://chromium-review.googlesource.com/66939
Tested-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Commit-Queue: Duncan Laurie <dlaurie@chromium.org>
(cherry picked from commit e98da983dca7819490464bddf08b9c53f28d2712)
Signed-off-by: Isaac Christensen <isaac.christensen@se-eng.com>
Reviewed-on: http://review.coreboot.org/6457
Tested-by: build bot (Jenkins)
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
Duncan Laurie 2013-08-26 08:33:56 -07:00 committed by Patrick Georgi
parent 1f68880e50
commit cc6b924042
1 changed files with 26 additions and 1 deletions

View File

@ -75,7 +75,7 @@ Scope (\_TZ)
Return (\PPKG ()) Return (\PPKG ())
} }
Method (_TMP, 0, Serialized) Method (TCHK, 0, Serialized)
{ {
// Get Temperature from TIN# set in NVS // Get Temperature from TIN# set in NVS
Store (\_SB.PCI0.LPCB.EC0.TINS (TMPS), Local0) Store (\_SB.PCI0.LPCB.EC0.TINS (TMPS), Local0)
@ -107,5 +107,30 @@ Scope (\_TZ)
Multiply (Local0, 10, Local0) Multiply (Local0, 10, Local0)
Return (Local0) Return (Local0)
} }
Method (_TMP, 0, Serialized)
{
// Get temperature from EC in deci-kelvin
Store (TCHK (), Local0)
// Critical temperature in deci-kelvin
Store (CTOK (\TCRT), Local1)
If (LGreaterEqual (Local0, Local1)) {
Store ("CRITICAL TEMPERATURE", Debug)
Store (Local0, Debug)
// Wait 1 second for EC to re-poll
Sleep (1000)
// Re-read temperature from EC
Store (TCHK (), Local0)
Store ("RE-READ TEMPERATURE", Debug)
Store (Local0, Debug)
}
Return (Local0)
}
} }
} }