P0P1 is 0x00010000. P0Pn are used on AMI motherboards, but apparently not on Gigabyte motherboards.
GFX0 is 0x00020000, and is usually associated with a GMA950 or similar on-motherboard GPU. Might also be used for accommodating unusual graphics configurations, such as dual graphics cards and multiple monitors per card.
I have no comment about speedstep and the ALIAS statements.
I think you have to start with your own DSDT. However, many if not all of the changes will be the same.
I have indeed encountered situations where a DSDT for one motherboard is perfectly adequate for another, but I would not want to take that to the bank.
(This situation is probably more likely to occur on Gigabyte motherboards which are externally and internally quite similar, such as the GA-H55M-S2H and the GA-P55M-UD2. Both have ALC888b codecs and R8111 LANs. Sure, the -UD2 has on-motherboard Firewire, but that doesn't affect the DSDT. Also the GSATA2 of the -UD2 is adequately handled by the GSATA2 kext, and not through the DSDT).
Here is a more complete Guide which is the same as before, but was revised and extended to include all the indicated additions:
Guide for Hacking AMI BIOS DSDTs for OSx86 using DSDTSE
1) extract the original DSDT using the Ubuntu technique and write it to an MBR- initialized USB flash drive,
2) transport the USB flash drive to a working Intel-based MacOS X system and deposit the extracted DSDT.aml file on the Desktop,
3) launch DSDTSE, pointing it to the .aml file on the Desktop,
4) perform the required edits, which are, at least these:
5) add the DTGP method immediately after the definition block statement if the DTGP method is not already included,
Name (PHID, "ASRock SATA Device Tree 4i + 2e by
[email protected] 2010-11-11") // My comment ... PH's ID ... which describes the most significant modification
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)
}
6) delete all "Alias (P00n, CPUn)" statements within the Scope (_PR) block,
Scope (_PR)
{
Processor (P001, 0x01, 0x00000810, 0x06) {}
Processor (P002, 0x02, 0x00000000, 0x00) {}
Processor (P003, 0x03, 0x00000000, 0x00) {}
Processor (P004, 0x04, 0x00000000, 0x00) {}
Processor (P005, 0x05, 0x00000000, 0x00) {}
Processor (P006, 0x06, 0x00000000, 0x00) {}
Processor (P007, 0x07, 0x00000000, 0x00) {}
Processor (P008, 0x08, 0x00000000, 0x00) {}
}
7) change all _T_0 and _T_1 occurrences to T_0 and T_1, respectively, as required,
8) change all "MUTE, 0x0nnn" occurrences to "MUTE, 0xFFFF", as required,
9) there may be one or perhaps several VERY compounded IF ... THEN ... ELSE statements present which do not return a value for the final case; find these using the Compile DSDT command and add the required final Return (Zero) statement, as required,
10 lots of work is usually necessary on the USB devices; change EUSB to EHC1 and USBE to EHC2; change USB0 to UHC1, USB1 to UHC2, etcetera, until all have been changed; add the required AAPL stuff to each right after the final Method (_PRW, 0, NotSerialized) block in each of those devices (use the Gigabyte USB device modifications as a reference),
Method (_DSM, 4, NotSerialized) // For each UHCn
{
Store (Package (0x02)
{
"device-id",
Buffer (0x04)
{
0x34, 0x3A, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Method (_DSM, 4, NotSerialized) // For each EHCn
{
Store (Package (0x08)
{
"AAPL,current-available",
0x05DC,
"AAPL,current-extra",
0x044C,
"AAPL,current-in-sleep",
0x09C4,
"device-id",
Buffer (0x04)
{
0x3A, 0x3A, 0x00, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
11) add the HDEF device (usually 0x001B0000), but keep it as simple as possible, usually just the layout ID and pin configurations blocks; add the call to HDEF, usually within the Method (_L0D, 0, NotSerialized) block,
Device (HDEF) // Insert before BR20 device
{
Name (_ADR, 0x001B0000)
Method (_PRW, 0, NotSerialized)
{
Return (Package (0x02)
{
0x0D,
0x05
})
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x04)
{
"layout-id",
Buffer (0x04)
{
0x78, 0x03, 0x00, 0x00 // 0x78 for an ALC888, others as required
},
"PinConfigurations",
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
12) change the SBRG device (usually 0x001F0000) to LPCB,
13) replace the IDE0/SATA (usually 0x001F0002) device with a true SATA device,
Device (SATA) // 4 internal plus 2 external; Replace IDE0/SATA device
{
Name (_ADR, 0x001F0002)
Name (_SUN, One)
Device (PRT0)
{
Name (_ADR, Zero)
Method (_GTF, 0, NotSerialized)
{
Name (PIB0, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
})
Return (PIB0)
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Int 1"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (PRT1)
{
Name (_ADR, One)
Method (_GTF, 0, NotSerialized)
{
Name (PIB1, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xF5
})
Return (PIB1)
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Int 2"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (PRT2)
{
Name (_ADR, 0x02)
Method (_GTF, 0, NotSerialized)
{
Name (PIB2, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
})
Return (PIB2)
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Int 3"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (PRT3)
{
Name (_ADR, 0x03)
Method (_GTF, 0, NotSerialized)
{
Name (PIB3, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xF5
})
Return (PIB3)
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Int 4"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (PRT4)
{
Name (_ADR, 0x04)
Method (_GTF, 0, NotSerialized)
{
Name (PIB4, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xF5
})
Return (PIB4)
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Ext 5"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Device (PRT5)
{
Name (_ADR, 0x05)
Method (_GTF, 0, NotSerialized)
{
Name (PIB5, Buffer (0x07)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xF5
})
Return (PIB5)
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"io-device-location",
Buffer (0x06)
{
"Ext 6"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"device_type",
Buffer (0x10)
{
"AHCI Controller"
},
"model",
Buffer (0x1D)
{
"ICH10-R SATA/AHCI Controller"
},
"name",
Buffer (0x1D)
{
"ICH10-R SATA/AHCI Controller"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
14) add a true SBUS device (usually 0x001F0003), particularly including the AAPL stuff, if it is missing (and it usually IS missing),
Device (SBUS) // Insert before HDEF device
{
Name (_ADR, 0x001F0003)
OperationRegion (PBAS, PCI_Config, 0x20, 0x02)
Field (PBAS, ByteAcc, NoLock, Preserve)
{
BAS0, 16
}
Method (SMBB, 0, NotSerialized)
{
And (BAS0, 0xFFFE, Local0)
Return (Local0)
}
Device (BUS0)
{
Name (_CID, "smbus")
Name (_ADR, Zero)
Device (DVL0)
{
Name (_ADR, 0x57)
Name (_CID, "diagsvault")
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x02)
{
"address",
0x57
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}
15) comment-out the entire IDE1/SAT1 device (usually 0x001F0005).
I'm sure there are additional tweaks possible, and possibly even necessary, but these are the biggies.
Peter (
[email protected])