-
Notifications
You must be signed in to change notification settings - Fork 86
/
SSDT-LPC.dsl
49 lines (47 loc) · 1.63 KB
/
SSDT-LPC.dsl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// To fix unsupported 8-series LPC devices
//DefinitionBlock("", "SSDT", 2, "hack", "_LPC", 0)
//{
External(_SB.PCI0.LPCB, DeviceObj)
Scope(_SB.PCI0.LPCB)
{
OperationRegion(RMP2, PCI_Config, 2, 2)
Field(RMP2, AnyAcc, NoLock, Preserve)
{
LDID,16
}
Name(LPDL, Package()
{
// list of 8-series LPC device-ids not natively supported
// inject 0x8c4b for unsupported LPC device-id
0x8c46, 0x8c49, 0x8c4a, 0x8c4c, 0x8c4e, 0x8c4f,
0x8c50, 0x8c52, 0x8c54, 0x8c56, 0x8c5c, 0,
Package()
{
"device-id", Buffer() { 0x4b, 0x8c, 0, 0 },
"compatible", Buffer() { "pci8086,8c4b" },
},
// list of 100-series LPC device-ids not natively supported (partial list)
0x9d48, 0xa14e, 0x9d4e, 0,
Package()
{
"device-id", Buffer() { 0xc1, 0x9c, 0, 0 },
"compatible", Buffer() { "pci8086,9cc1" },
},
})
Method(_DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
// search for matching device-id in device-id list, LPDL
Local0 = Match(LPDL, MEQ, LDID, MTR, 0, 0)
If (Ones != Local0)
{
// start search for zero-terminator (prefix to injection package)
Local0 = Match(LPDL, MEQ, 0, MTR, 0, Local0+1)
Return (DerefOf(LPDL[Local0+1]))
}
// if no match, assume it is supported natively... no inject
Return (Package() { })
}
}
//}
//EOF