00:1e.0 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e] (rev e1)
You've placed it under P0P9 which (on your motherboard) is a PCI Express port, and you can clearly see that if you compare the address in DSDT with your LSPCI output.
DTGP is not a device, it's a "method". I don't know what it does, but it's used when adding new devices, or adding code to existing devices. It's present in DSDTs from real Macs but never on PCs. You put DTGP there yourself in the first place. If you have it in your DSDT then it needs to be there, you can't just go deleting random bits of code to get rid of error messages! If there's a problem with the code, go back to where you copied and pasted it from and recheck that it looks like it should.
Here's the entire method:
Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, Buffer (0x10)
{
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
/* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
}))
{
If (LEqual (Arg1, One))
{
If (LEqual (Arg2, Zero))
{
Store (Buffer (One)
{
0x03
}, Arg4)
Return (One)
}
If (LEqual (Arg2, One))
{
Return (One)
}
}
}
Store (Buffer (One)
{
0x00
}, Arg4)
Return (Zero)
}
You can place it anywhere in your DSDT. Don't place it inside another method or device.
Here's the DSDT replacement for HDAEnabler.kext, with the DTGP caller at the end:
Device (HDEF)
{
Name (_ADR, 0x001B0000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x08)
{
"subsystem-id",
Buffer (0x04)
{
0xA0, 0x00, 0x00, 0x00
},
"subsystem-vendor-id",
Buffer (0x04)
{
0x6B, 0x10, 0x00, 0x00
},
"layout-id",
Buffer (0x04)
{
0x0C, 0x00, 0x00, 0x00
},
"PinConfigurations",
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Here it is at the end of an ethernet device:
Device (LAN0)
{
Name (_ADR, Zero)
Name (_PRW, Package (0x02)
{
0x09,
0x03
})
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x04)
{
"built-in",
Buffer (One)
{
0x01
},
"location",
Buffer (0x02)
{
"1"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
The DTGP method and caller "DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))" is always the same for every modified or added device and it's always placed at the end right before the last Return statement.
I have no idea what it does or why it's necessary though. Maybe someone here knows what it does..



Sign In
Create Account












