Felix Held has submitted this change. ( https://review.coreboot.org/c/coreboot/+/80496?usp=email )
Change subject: superio/acpi: Add SUPERIO_PNP_NO_DIS to support always active LDNs ......................................................................
superio/acpi: Add SUPERIO_PNP_NO_DIS to support always active LDNs
Some LDNs do not implement the activate bit at all, e.g. ITE GPIO LDNs are an example where the LDN is always active. The pnp_generic.asl can be used to describe the GPIO LDN resources configured by the platform, however the register 0x30 is always 0 for these LDNs, so OS will not claim the reported resource for the GPIO device, because _STA will return inactive LDN.
Add SUPERIO_PNP_NO_DIS macro to generate _STA method returning an always active LDN and skip _DIS generation. Define the SUPERIO_PNP_NO_DIS for SIOs which use the pnp_generic.asl preserving the previous states, except the ITE GPIO LDNs.
Change-Id: Ieb827fdffe7660b875cba6ca99b0560b4cab66b4 Signed-off-by: Michał Żygowski michal.zygowski@3mdeb.com Reviewed-on: https://review.coreboot.org/c/coreboot/+/80496 Reviewed-by: Nico Huber nico.h@gmx.de Reviewed-by: Felix Held felix-coreboot@felixheld.de Tested-by: build bot (Jenkins) no-reply@coreboot.org --- M src/superio/acpi/pnp_generic.asl M src/superio/ite/it8720f/acpi/superio.asl M src/superio/ite/it8721f/acpi/superio.asl M src/superio/ite/it8784e/acpi/superio.asl M src/superio/nuvoton/nct6687d/acpi/superio.asl M src/superio/nuvoton/nct6776/acpi/superio.asl M src/superio/winbond/w83627dhg/acpi/superio.asl 7 files changed, 21 insertions(+), 0 deletions(-)
Approvals: Felix Held: Looks good to me, approved build bot (Jenkins): Verified Nico Huber: Looks good to me, but someone else must approve
diff --git a/src/superio/acpi/pnp_generic.asl b/src/superio/acpi/pnp_generic.asl index a5540e3..ebefd2a 100644 --- a/src/superio/acpi/pnp_generic.asl +++ b/src/superio/acpi/pnp_generic.asl @@ -13,6 +13,7 @@ * chip for this device (required) * SUPERIO_PNP_DDN A string literal that identifies the dos device * name (DDN) of this device (e.g. "COM1", optional) + * SUPERIO_PNP_NO_DIS If defined, the PNP device has no Enable/Disable methods * SUPERIO_PNP_PM_REG Identifier of a 1-bit register to power down * the logical device (optional) * SUPERIO_PNP_PM_VAL The value for SUPERIO_PNP_PM_REG to power the logical @@ -54,6 +55,13 @@ Name (_DDN, SUPERIO_PNP_DDN) #endif
+ +#ifdef SUPERIO_PNP_NO_DIS + Method (_STA) + { + Return (DEVICE_PRESENT_ACTIVE) + } +#else Method (_STA) { PNP_GENERIC_STA(SUPERIO_PNP_LDN) @@ -63,6 +71,7 @@ { PNP_GENERIC_DIS(SUPERIO_PNP_LDN) } +#endif
#ifdef SUPERIO_PNP_PM_REG Method (_PSC) { diff --git a/src/superio/ite/it8720f/acpi/superio.asl b/src/superio/ite/it8720f/acpi/superio.asl index fdd8f7e..95b09e1 100644 --- a/src/superio/ite/it8720f/acpi/superio.asl +++ b/src/superio/ite/it8720f/acpi/superio.asl @@ -127,6 +127,7 @@ #undef SUPERIO_PNP_HID #undef SUPERIO_PNP_LDN #undef SUPERIO_PNP_DDN + #undef SUPERIO_PNP_NO_DIS #undef SUPERIO_PNP_PM_REG #undef SUPERIO_PNP_PM_VAL #undef SUPERIO_PNP_PM_LDN @@ -158,6 +159,7 @@ #undef SUPERIO_PNP_HID #undef SUPERIO_PNP_LDN #undef SUPERIO_PNP_DDN + #undef SUPERIO_PNP_NO_DIS #undef SUPERIO_PNP_PM_REG #undef SUPERIO_PNP_PM_VAL #undef SUPERIO_PNP_PM_LDN @@ -167,6 +169,7 @@ #undef SUPERIO_PNP_IRQ0 #undef SUPERIO_PNP_IRQ1 #undef SUPERIO_PNP_DMA + #define SUPERIO_PNP_NO_DIS #define SUPERIO_PNP_LDN 7 #define SUPERIO_PNP_IO0 0x08, 0x08 #define SUPERIO_PNP_IO1 0x08, 0x08 @@ -178,6 +181,7 @@ #undef SUPERIO_PNP_HID #undef SUPERIO_PNP_LDN #undef SUPERIO_PNP_DDN + #undef SUPERIO_PNP_NO_DIS #undef SUPERIO_PNP_PM_REG #undef SUPERIO_PNP_PM_VAL #undef SUPERIO_PNP_PM_LDN diff --git a/src/superio/ite/it8721f/acpi/superio.asl b/src/superio/ite/it8721f/acpi/superio.asl index 065ec52..22746ed 100644 --- a/src/superio/ite/it8721f/acpi/superio.asl +++ b/src/superio/ite/it8721f/acpi/superio.asl @@ -127,6 +127,7 @@ #undef SUPERIO_PNP_HID #undef SUPERIO_PNP_LDN #undef SUPERIO_PNP_DDN + #undef SUPERIO_PNP_NO_DIS #undef SUPERIO_PNP_PM_REG #undef SUPERIO_PNP_PM_VAL #undef SUPERIO_PNP_PM_LDN diff --git a/src/superio/ite/it8784e/acpi/superio.asl b/src/superio/ite/it8784e/acpi/superio.asl index c145a2b..f79fc32 100644 --- a/src/superio/ite/it8784e/acpi/superio.asl +++ b/src/superio/ite/it8784e/acpi/superio.asl @@ -122,6 +122,7 @@ #undef SUPERIO_PNP_HID #undef SUPERIO_PNP_LDN #undef SUPERIO_PNP_DDN + #undef SUPERIO_PNP_NO_DIS #undef SUPERIO_PNP_PM_REG #undef SUPERIO_PNP_PM_VAL #undef SUPERIO_PNP_PM_LDN diff --git a/src/superio/nuvoton/nct6687d/acpi/superio.asl b/src/superio/nuvoton/nct6687d/acpi/superio.asl index ebddeae..9de8729 100644 --- a/src/superio/nuvoton/nct6687d/acpi/superio.asl +++ b/src/superio/nuvoton/nct6687d/acpi/superio.asl @@ -102,6 +102,7 @@ #undef SUPERIO_PNP_HID #undef SUPERIO_PNP_LDN #undef SUPERIO_PNP_DDN + #undef SUPERIO_PNP_NO_DIS #undef SUPERIO_PNP_PM_REG #undef SUPERIO_PNP_PM_VAL #undef SUPERIO_PNP_PM_LDN @@ -157,6 +158,7 @@ #undef SUPERIO_PNP_HID #undef SUPERIO_PNP_LDN #undef SUPERIO_PNP_DDN + #undef SUPERIO_PNP_NO_DIS #undef SUPERIO_PNP_PM_REG #undef SUPERIO_PNP_PM_VAL #undef SUPERIO_PNP_PM_LDN diff --git a/src/superio/nuvoton/nct6776/acpi/superio.asl b/src/superio/nuvoton/nct6776/acpi/superio.asl index b8c396f..1297aa1 100644 --- a/src/superio/nuvoton/nct6776/acpi/superio.asl +++ b/src/superio/nuvoton/nct6776/acpi/superio.asl @@ -100,6 +100,7 @@ #undef SUPERIO_PNP_HID #undef SUPERIO_PNP_LDN #undef SUPERIO_PNP_DDN + #undef SUPERIO_PNP_NO_DIS #undef SUPERIO_PNP_PM_REG #undef SUPERIO_PNP_PM_VAL #undef SUPERIO_PNP_PM_LDN @@ -145,6 +146,7 @@ #undef SUPERIO_PNP_HID #undef SUPERIO_PNP_LDN #undef SUPERIO_PNP_DDN + #undef SUPERIO_PNP_NO_DIS #undef SUPERIO_PNP_PM_REG #undef SUPERIO_PNP_PM_VAL #undef SUPERIO_PNP_PM_LDN @@ -165,6 +167,7 @@ #undef SUPERIO_PNP_HID #undef SUPERIO_PNP_LDN #undef SUPERIO_PNP_DDN + #undef SUPERIO_PNP_NO_DIS #undef SUPERIO_PNP_PM_REG #undef SUPERIO_PNP_PM_VAL #undef SUPERIO_PNP_PM_LDN diff --git a/src/superio/winbond/w83627dhg/acpi/superio.asl b/src/superio/winbond/w83627dhg/acpi/superio.asl index 298e9a7..18ce2c0 100644 --- a/src/superio/winbond/w83627dhg/acpi/superio.asl +++ b/src/superio/winbond/w83627dhg/acpi/superio.asl @@ -192,6 +192,7 @@ #ifdef W83627DHG_SHOW_HWMON #undef SUPERIO_PNP_LDN #undef SUPERIO_PNP_DDN + #undef SUPERIO_PNP_NO_DIS #undef SUPERIO_PNP_PM_REG #undef SUPERIO_PNP_PM_VAL #undef SUPERIO_PNP_PM_LDN