/* SPDX-License-Identifier: GPL-2.0-only */ | |
/* SuperIO control port */ | |
Name (SPIO, 0x2E) | |
/* SuperIO control map */ | |
OperationRegion (SPIM, SystemIO, SPIO, 0x02) | |
Field (SPIM, ByteAcc, NoLock, Preserve) { | |
SIOI, 8, | |
SIOD, 8 | |
} | |
/* SuperIO control registers */ | |
IndexField (SIOI, SIOD, ByteAcc, NoLock, Preserve) { | |
Offset (0x2A), | |
CR2A, 8, /* Pin function selection */ | |
} | |
Device (PS2K) // Keyboard | |
{ | |
Name(_HID, EISAID("PNP0303")) | |
Name(_CID, EISAID("PNP030B")) | |
Name(_CRS, ResourceTemplate() | |
{ | |
IO (Decode16, 0x60, 0x60, 0x01, 0x01) | |
IO (Decode16, 0x64, 0x64, 0x01, 0x01) | |
IRQ (Edge, ActiveHigh, Exclusive) { 0x01 } // IRQ 1 | |
}) | |
Method (_STA, 0) | |
{ | |
Return (0xf) | |
} | |
} | |
Device (PS2M) // Mouse | |
{ | |
Name(_HID, EISAID("PNP0F13")) | |
Name(_CRS, ResourceTemplate() | |
{ | |
IRQ (Edge, ActiveHigh, Exclusive) { 0x0c } // IRQ 12 | |
}) | |
Method(_STA, 0) | |
{ | |
/* Access SuperIO ACPI device */ | |
SIOI = 0x87 | |
SIOI = 0x87 | |
/* Read Pin56 function select */ | |
And(CR2A, 0x2, Local0) | |
/* Restore default SuperIO access */ | |
SIOI = 0xAA | |
if (Local0 == 0) { | |
/* Mouse function selected */ | |
Return (0xf) | |
} | |
Return (0x0) | |
} | |
} |