From aa95af6bf0a35a82ed9ae97893e8812e80648b8d Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Thu, 6 Jul 2017 17:19:17 -0500 Subject: [PATCH] ec/mec1308: Fix fan control ACPI Returing FSL# for _STA causes Windows to BSOD. Re-work _STA to instead return 0/1 based on FLVL, using google/beltino as a model. Also correct serialization type for _CRS. Change-Id: Ibf3af15bab3590f7c1c4401e1978dbcf2a495216 Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/20482 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer --- src/ec/smsc/mec1308/acpi/ec.asl | 42 ++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/ec/smsc/mec1308/acpi/ec.asl b/src/ec/smsc/mec1308/acpi/ec.asl index a8de9fa1f8..39a27e1607 100644 --- a/src/ec/smsc/mec1308/acpi/ec.asl +++ b/src/ec/smsc/mec1308/acpi/ec.asl @@ -58,7 +58,7 @@ Device (EC0) FCOS, 1, // Fan Speed OS Control } - Method (_CRS, 0, NotSerialized) + Method (_CRS, 0, Serialized) { Name (ECMD, ResourceTemplate() { @@ -87,7 +87,13 @@ Device (EC0) PowerResource (FNP0, 0, 0) { - Method (_STA) { Return (FSL0) } + Method (_STA) { + If (LLessEqual (\FLVL, 0)) { + Return (One) + } Else { + Return (Zero) + } + } Method (_ON) { If (FCOS) { Store (One, FSL0) @@ -106,7 +112,13 @@ Device (EC0) PowerResource (FNP1, 0, 0) { - Method (_STA) { Return (FSL1) } + Method (_STA) { + If (LLessEqual (\FLVL, 1)) { + Return (One) + } Else { + Return (Zero) + } + } Method (_ON) { If (FCOS) { Store (One, FSL1) @@ -125,7 +137,13 @@ Device (EC0) PowerResource (FNP2, 0, 0) { - Method (_STA) { Return (FSL2) } + Method (_STA) { + If (LLessEqual (\FLVL, 2)) { + Return (One) + } Else { + Return (Zero) + } + } Method (_ON) { If (FCOS) { Store (One, FSL2) @@ -144,7 +162,13 @@ Device (EC0) PowerResource (FNP3, 0, 0) { - Method (_STA) { Return (FSL3) } + Method (_STA) { + If (LLessEqual (\FLVL, 3)) { + Return (One) + } Else { + Return (Zero) + } + } Method (_ON) { If (FCOS) { Store (One, FSL3) @@ -163,7 +187,13 @@ Device (EC0) PowerResource (FNP4, 0, 0) { - Method (_STA) { Return (FSL4) } + Method (_STA) { + If (LLessEqual (\FLVL, 4)) { + Return (One) + } Else { + Return (Zero) + } + } Method (_ON) { If (FCOS) { Store (One, FSL4)