superio: Replace D1/D2 power states with D3

Spec says if any object to control the power state exists, at least
D0 and D3 must be supported. And it seems Windows complains about the
missing D3 support: https://ticket.coreboot.org/issues/257

Windows reported `*** STOP: 0x000000A5` with the first parameter
`0x000000000000000D` (refers to a missing ACPI object) and the
third parameter `0x000000003353505F` which is the name of the
object in ASCII, little-endian (`_PS3`).

Change-Id: Ifa28a7c56575848e76e4a1c542866413b4c44d50
Signed-off-by: Nico Huber <nico.h@gmx.de>
Closes: https://ticket.coreboot.org/issues/257
Reviewed-on: https://review.coreboot.org/c/coreboot/+/39746
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
Nico Huber 2020-03-22 01:17:54 +01:00
parent ddb4cf08f7
commit 79dfa909bb
6 changed files with 29 additions and 29 deletions

View File

@ -69,7 +69,7 @@
/*
* Current power state (returns the chip's state, if it's in
* power saving mode, 1 if this LDN is in power saving mode,
* power saving mode, 3 if this LDN is in power saving mode,
* 0 else)
*
* PM_REG Identifier of a register which powers down the device
@ -82,7 +82,7 @@
ENTER_CONFIG_MODE (PM_LDN)\
Store (PM_REG, Local0)\
EXIT_CONFIG_MODE ()\
If (LEqual(Local0, PM_VAL)) { Return (1) }\
If (LEqual(Local0, PM_VAL)) { Return (3) }\
Else { Return (0) }\
/* Disable power saving mode */
@ -92,7 +92,7 @@
EXIT_CONFIG_MODE ()
/* Enable power saving mode */
#define PNP_GENERIC_PS1(PM_REG, PM_VAL, PM_LDN) \
#define PNP_GENERIC_PS3(PM_REG, PM_VAL, PM_LDN) \
ENTER_CONFIG_MODE (PM_LDN)\
Store (PM_VAL, PM_REG)\
EXIT_CONFIG_MODE ()

View File

@ -74,8 +74,8 @@ Device (SUPERIO_ID(PN, SUPERIO_PNP_LDN)) {
PNP_GENERIC_PS0(SUPERIO_PNP_PM_REG, SUPERIO_PNP_PM_VAL, SUPERIO_PNP_PM_LDN)
}
Method (_PS1) {
PNP_GENERIC_PS1(SUPERIO_PNP_PM_REG, SUPERIO_PNP_PM_VAL, SUPERIO_PNP_PM_LDN)
Method (_PS3) {
PNP_GENERIC_PS3(SUPERIO_PNP_PM_REG, SUPERIO_PNP_PM_VAL, SUPERIO_PNP_PM_LDN)
}
#else
Method (_PSC) {

View File

@ -57,8 +57,8 @@ Device (SUPERIO_ID(SER, SUPERIO_UART_LDN)) {
PNP_GENERIC_PS0(SUPERIO_UART_PM_REG, SUPERIO_UART_PM_VAL, SUPERIO_UART_PM_LDN)
}
Method (_PS1) {
PNP_GENERIC_PS1(SUPERIO_UART_PM_REG, SUPERIO_UART_PM_VAL, SUPERIO_UART_PM_LDN)
Method (_PS3) {
PNP_GENERIC_PS3(SUPERIO_UART_PM_REG, SUPERIO_UART_PM_VAL, SUPERIO_UART_PM_LDN)
}
#else
Method (_PSC) {

View File

@ -109,12 +109,12 @@ Device(SUPERIO_DEV) {
#define PNP_EXIT_MAGIC_1ST 0xaa
#include <superio/acpi/pnp_config.asl>
/* PM: indicate IPD (Immediate Power Down) bit state as D0/D2 */
/* PM: indicate IPD (Immediate Power Down) bit state as D0/D3 */
Method (_PSC) {
ENTER_CONFIG_MODE (PNP_NO_LDN_CHANGE)
Store (IPD, Local0)
EXIT_CONFIG_MODE ()
If (Local0) { Return (2) }
If (Local0) { Return (3) }
Else { Return (0) }
}
@ -125,8 +125,8 @@ Device(SUPERIO_DEV) {
EXIT_CONFIG_MODE ()
}
/* PM: Switch to D2 by setting IPD high */
Method (_PS2) {
/* PM: Switch to D3 by setting IPD high */
Method (_PS3) {
ENTER_CONFIG_MODE (PNP_NO_LDN_CHANGE)
Store (One, IPD)
EXIT_CONFIG_MODE ()

View File

@ -166,12 +166,12 @@ Device(SIO) {
Release (CRMX)
}
/* PM: indicate IPD (Immediate Power Down) bit state as D0/D2 */
/* PM: indicate IPD (Immediate Power Down) bit state as D0/D3 */
Method (_PSC) {
ENCM (0xFF)
Store (IPD, Local0)
EXCM ()
If (Local0) { Return (2) }
If (Local0) { Return (3) }
Else { Return (0) }
}
@ -182,8 +182,8 @@ Device(SIO) {
EXCM ()
}
/* PM: Switch to D2 by setting IPD high */
Method (_PS2) {
/* PM: Switch to D3 by setting IPD high */
Method (_PS3) {
ENCM (0xFF)
Store (One, IPD)
EXCM ()
@ -220,7 +220,7 @@ Device(SIO) {
ENCM (0xFF)
Store (FDPW, Local0)
EXCM ()
If (Local0) { Return (1) }
If (Local0) { Return (3) }
Else { Return (0) }
}
/* Disable power saving mode */
@ -230,7 +230,7 @@ Device(SIO) {
EXCM ()
}
/* Enable power saving mode */
Method (_PS1) {
Method (_PS3) {
ENCM (0xFF)
Store (Zero, FDPW)
EXCM ()
@ -441,7 +441,7 @@ Device(SIO) {
ENCM (0xFF)
Store (PRPW, Local0)
EXCM ()
If (Local0) { Return (1) }
If (Local0) { Return (3) }
Else { Return (0) }
}
Method (_PS0) {
@ -449,7 +449,7 @@ Device(SIO) {
Store (One, PRPW)
EXCM ()
}
Method (_PS1) {
Method (_PS3) {
ENCM (0xFF)
Store (Zero, PRPW)
EXCM ()
@ -618,7 +618,7 @@ Device(SIO) {
ENCM (0xFF)
Store (UAPW, Local0)
EXCM ()
If (Local0) { Return (1) }
If (Local0) { Return (3) }
Else { Return (0) }
}
Method (_PS0) {
@ -626,7 +626,7 @@ Device(SIO) {
Store (One, UAPW)
EXCM ()
}
Method (_PS1) {
Method (_PS3) {
ENCM (0xFF)
Store (Zero, UAPW)
EXCM ()
@ -743,7 +743,7 @@ Device(SIO) {
ENCM (0xFF)
Store (UBPW, Local0)
EXCM ()
If (Local0) { Return (1) }
If (Local0) { Return (3) }
Else { Return (0) }
}
Method (_PS0) {
@ -751,7 +751,7 @@ Device(SIO) {
Store (One, UBPW)
EXCM ()
}
Method (_PS1) {
Method (_PS3) {
ENCM (0xFF)
Store (Zero, UBPW)
EXCM ()
@ -868,7 +868,7 @@ Device(SIO) {
ENCM (0xFF)
Store (UBPW, Local0)
EXCM ()
If (Local0) { Return (1) }
If (Local0) { Return (3) }
Else { Return (0) }
}
Method (_PS0) {
@ -876,7 +876,7 @@ Device(SIO) {
Store (One, UBPW)
EXCM ()
}
Method (_PS1) {
Method (_PS3) {
ENCM (0xFF)
Store (Zero, UBPW)
EXCM ()
@ -1391,7 +1391,7 @@ Device(SIO) {
ENCM (0xFF)
Store (HWPW, Local0)
EXCM ()
If (Local0) { Return (1) }
If (Local0) { Return (3) }
Else { Return (0) }
}
@ -1402,7 +1402,7 @@ Device(SIO) {
EXCM ()
}
Method (_PS1)
Method (_PS3)
{
ENCM (0xFF)
Store (Zero, HWPW)

View File

@ -72,12 +72,12 @@ IndexField (PNP_ADDR_REG, PNP_DATA_REG, ByteAcc, NoLock, Preserve)
#define PNP_EXIT_MAGIC_1ST 0xaa
#include <superio/acpi/pnp_config.asl>
/* PM: indicate IPD (Immediate Power Down) bit state as D0/D2 */
/* PM: indicate IPD (Immediate Power Down) bit state as D0/D3 */
Method (_PSC) {
ENTER_CONFIG_MODE (0xFF)
Store (IPD, Local0)
EXIT_CONFIG_MODE ()
If (Local0) { Return (2) }
If (Local0) { Return (3) }
Else { Return (0) }
}