summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/southbridge/intel/lynxpoint/acpi/lpc.asl58
-rw-r--r--src/southbridge/intel/lynxpoint/acpi/serialio.asl50
2 files changed, 60 insertions, 48 deletions
diff --git a/src/southbridge/intel/lynxpoint/acpi/lpc.asl b/src/southbridge/intel/lynxpoint/acpi/lpc.asl
index f9bf57830f..7e2692637a 100644
--- a/src/southbridge/intel/lynxpoint/acpi/lpc.asl
+++ b/src/southbridge/intel/lynxpoint/acpi/lpc.asl
@@ -199,60 +199,22 @@ Device (LPCB)
0x1, 0xff)
// GPIO region may be 128 bytes or 4096 bytes
- IO (Decode16, DEFAULT_GPIOBASE, DEFAULT_GPIOBASE,
- 0x1, 0x00, GPR1)
- IO (Decode16, 0x0000, 0x0000, 0x1, 0x00, GPR2)
- IO (Decode16, 0x0000, 0x0000, 0x1, 0x00, GPR3)
- IO (Decode16, 0x0000, 0x0000, 0x1, 0x00, GPR4)
+ IO (Decode16, 0x0000, 0x0000, 0x1, 0x00, GPR1)
})
Method (_CRS, 0, NotSerialized)
{
- CreateByteField (^RBUF, ^GPR1._LEN, R1LN)
- CreateByteField (^RBUF, ^GPR2._LEN, R2LN)
- CreateByteField (^RBUF, ^GPR3._LEN, R3LN)
- CreateByteField (^RBUF, ^GPR4._LEN, R4LN)
+ // LynxPoint-LP GPIO resources are defined in the
+ // SerialIO GPIO device and LynxPoint-H GPIO resources
+ // are defined here.
+ If (LNot (\ISLP ())) {
+ CreateByteField (^RBUF, ^GPR1._LEN, R1LN)
+ CreateWordField (^RBUF, ^GPR1._MIN, R1MN)
+ CreateWordField (^RBUF, ^GPR1._MAX, R1MX)
- CreateWordField (^RBUF, ^GPR1._MIN, R1MN)
- CreateWordField (^RBUF, ^GPR2._MIN, R2MN)
- CreateWordField (^RBUF, ^GPR3._MIN, R3MN)
- CreateWordField (^RBUF, ^GPR4._MIN, R4MN)
-
- CreateWordField (^RBUF, ^GPR1._MAX, R1MX)
- CreateWordField (^RBUF, ^GPR2._MAX, R2MX)
- CreateWordField (^RBUF, ^GPR3._MAX, R3MX)
- CreateWordField (^RBUF, ^GPR4._MAX, R4MX)
-
- // Update GPIO region for LynxPoint-LP
- If (\ISLP ()) {
- // LynxPoint-LP
- Store (R1MN, Local0)
-
- // Update GPIO bank 1
- Store (Local0, R1MN)
- Store (Local0, R1MX)
- Store (0xff, R1LN)
-
- // Update GPIO bank 2
- Add (Local0, 0x100, Local0)
- Store (Local0, R2MN)
- Store (Local0, R2MX)
- Store (0xff, R2LN)
-
- // Update GPIO bank 3
- Add (Local0, 0x100, Local0)
- Store (Local0, R3MN)
- Store (Local0, R3MN)
- Store (0xff, R3LN)
-
- // Update GPIO bank 4
- Add (Local0, 0x100, Local0)
- Store (Local0, R4MN)
- Store (Local0, R4MN)
- Store (0xff, R4LN)
- } Else {
- // LynxPoint-H
// Update GPIO region length
+ Store (DEFAULT_GPIOBASE, R1MN)
+ Store (DEFAULT_GPIOBASE, R1MX)
Store (DEFAULT_GPIOSIZE, R1LN)
}
Return (RBUF)
diff --git a/src/southbridge/intel/lynxpoint/acpi/serialio.asl b/src/southbridge/intel/lynxpoint/acpi/serialio.asl
index 6ea23c69ea..03f6974a38 100644
--- a/src/southbridge/intel/lynxpoint/acpi/serialio.asl
+++ b/src/southbridge/intel/lynxpoint/acpi/serialio.asl
@@ -468,3 +468,53 @@ Device (SDIO)
}
}
}
+
+Device (GPIO)
+{
+ // GPIO Controller
+ Name (_HID, "INT33C7")
+ Name (_CID, "INT33C7")
+ Name (_UID, 1)
+
+ Name (RBUF, ResourceTemplate()
+ {
+ DWordIo (ResourceProducer,
+ MinFixed, // IsMinFixed
+ MaxFixed, // IsMaxFixed
+ PosDecode, // Decode
+ EntireRange, // ISARanges
+ 0x00000000, // AddressGranularity
+ 0x00000000, // AddressMinimum
+ 0x00000000, // AddressMaximum
+ 0x00000000, // AddressTranslation
+ 0x00000000, // RangeLength
+ , // ResourceSourceIndex
+ , // ResourceSource
+ BAR0)
+ })
+
+ Method (_CRS, 0, NotSerialized)
+ {
+ If (\ISLP ()) {
+ CreateDwordField (^RBUF, ^BAR0._MIN, BMIN)
+ CreateDwordField (^RBUF, ^BAR0._MAX, BMAX)
+ CreateDwordField (^RBUF, ^BAR0._LEN, BLEN)
+
+ Store (DEFAULT_GPIOSIZE, BLEN)
+ Store (DEFAULT_GPIOBASE, BMIN)
+ Store (Subtract (Add (DEFAULT_GPIOBASE,
+ DEFAULT_GPIOSIZE), 1), BMAX)
+ }
+
+ Return (RBUF)
+ }
+
+ Method (_STA, 0, NotSerialized)
+ {
+ If (\ISLP ()) {
+ Return (0xF)
+ } Else {
+ Return (0x0)
+ }
+ }
+}