summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/southbridge/intel/lynxpoint/acpi/serialio.asl44
-rw-r--r--src/southbridge/intel/lynxpoint/serialio.c10
2 files changed, 44 insertions, 10 deletions
diff --git a/src/southbridge/intel/lynxpoint/acpi/serialio.asl b/src/southbridge/intel/lynxpoint/acpi/serialio.asl
index 4c0d36bcc6..59228d6cf5 100644
--- a/src/southbridge/intel/lynxpoint/acpi/serialio.asl
+++ b/src/southbridge/intel/lynxpoint/acpi/serialio.asl
@@ -211,6 +211,28 @@ Device (I2C0)
Return (0xF)
}
}
+
+ // Access to PCI Config in ACPI mode
+ OperationRegion (KEYS, SystemMemory, \S1B1, 0x100)
+ Field (KEYS, DWordAcc, NoLock, Preserve)
+ {
+ Offset (0x84),
+ PSAT, 32,
+ }
+
+ // Put controller in D0 state
+ Method (_PS0, 0, Serialized)
+ {
+ And (^PSAT, 0xfffffffc, ^PSAT)
+ Store (^PSAT, Local0)
+ }
+
+ // Put controller in D3Hot state
+ Method (_PS3, 0, Serialized)
+ {
+ Or (^PSAT, 0x00000003, ^PSAT)
+ Store (^PSAT, Local0)
+ }
}
Device (I2C1)
@@ -262,6 +284,28 @@ Device (I2C1)
Return (0xF)
}
}
+
+ // Access to PCI Config in ACPI mode
+ OperationRegion (KEYS, SystemMemory, \S2B1, 0x100)
+ Field (KEYS, DWordAcc, NoLock, Preserve)
+ {
+ Offset (0x84),
+ PSAT, 32,
+ }
+
+ // Put controller in D0 state
+ Method (_PS0, 0, Serialized)
+ {
+ And (^PSAT, 0xfffffffc, ^PSAT)
+ Store (^PSAT, Local0)
+ }
+
+ // Put controller in D3Hot state
+ Method (_PS3, 0, Serialized)
+ {
+ Or (^PSAT, 0x00000003, ^PSAT)
+ Store (^PSAT, Local0)
+ }
}
Device (SPI0)
diff --git a/src/southbridge/intel/lynxpoint/serialio.c b/src/southbridge/intel/lynxpoint/serialio.c
index 8257cc2f6f..75edf5c9db 100644
--- a/src/southbridge/intel/lynxpoint/serialio.c
+++ b/src/southbridge/intel/lynxpoint/serialio.c
@@ -29,14 +29,6 @@
#include "pch.h"
#include "nvs.h"
-/* Set D3Hot Power State in ACPI mode */
-static void serialio_enable_d3hot(struct device *dev)
-{
- u32 reg32 = pci_read_config32(dev, PCH_PCS);
- reg32 |= PCH_PCS_PS_D3HOT;
- pci_write_config32(dev, PCH_PCS, reg32);
-}
-
/* Enable clock in PCI mode */
static void serialio_enable_clock(struct resource *bar0)
{
@@ -178,8 +170,6 @@ static void serialio_init(struct device *dev)
if (!config->sio_acpi_mode)
serialio_enable_clock(bar0);
- else if (dev->path.pci.devfn != PCI_DEVFN(21, 0))
- serialio_enable_d3hot(dev); /* all but SDMA */
switch (dev->path.pci.devfn) {
case PCI_DEVFN(21, 0): /* SDMA */