# Maintained by: PJALM for: PJALM Intel7 at: Thu Aug 15 09:07:46 UTC 2013# Patch Name : USB Multiplex
# Intel z77 USB2/USB3 Multiplexing Fix
# USB3 patches in thanks to SJ_Underwater and Mieze
# Code optimizations thanks to RehabMan and PikeRAlpha
# Add method OSDW to the main block, it's used by the USB3 patches
into method label OSDW remove_entry;
into definitionblock code_regex . insert
begin
Method (OSDW, 0, NotSerialized)\n
{\n
If (LEqual (OSYS, 0x2710))\n
{\n
Return (One)\n
}\n
Else\n
{\n
Return (Zero)\n
}\n
}
end;
# Fix method _OSC
into method label _OSC parent_label PCI0 remove_entry;
into device label PCI0 parent_label _SB insert
begin
Method (_OSC, 4, Serialized)\n
{\n
Store (Arg3, Local0)\n
CreateDWordField (Local0, Zero, CDW1)\n
CreateDWordField (Local0, 0x04, CDW2)\n
CreateDWordField (Local0, 0x08, CDW3)\n
Store (CDW2, SUPP)\n
Store (CDW3, CTRL)\n
If (LEqual (One, OSDW ()))\n
{\n
If (LAnd (LEqual (Arg0, GUID), NEXP))\n
{\n
If (Not (And (CDW1, One)))\n
{\n
If (And (CTRL, 0x02))\n
{\n
NHPG ()\n
}\n
\n
If (And (CTRL, 0x04))\n
{\n
NPME ()\n
}\n
}\n
\n
If (LNotEqual (Arg1, One))\n
{\n
Or (CDW1, 0x08, CDW1)\n
}\n
\n
If (LNotEqual (CDW3, CTRL))\n
{\n
Or (CDW1, 0x10, CDW1)\n
}\n
\n
Store (CTRL, CDW3)\n
Store (CTRL, OSCC)\n
Return (Local0)\n
}\n
Else\n
{\n
Or (CDW1, 0x04, CDW1)\n
Return (Local0)\n
}\n
}\n
Else\n
{\n
If (LEqual (Arg0, Buffer (0x10)\n
{\n
/* 0000 */ 0xA9, 0x12, 0x95, 0x7C, 0x05, 0x17, 0xB4, 0x4C,\n
/* 0008 */ 0xAF, 0x7D, 0x50, 0x6A, 0x24, 0x23, 0xAB, 0x71\n
}))\n
{\n
Store (One, ^XHC1.PASS)\n
Store (One, ^XHC1.PAHC)\n
Store (One, ^XHC1.PBSS)\n
Store (One, ^XHC1.PBHC)\n
Store (One, ^XHC1.PCSS)\n
Store (One, ^XHC1.PCHC)\n
Store (One, ^XHC1.PDSS)\n
Store (One, ^XHC1.PDHC)\n
}\n
Return (Local0)\n
}\n
}
end;
# Fix EHC1
into Device label PR11 code_regex Name\s\(MUXS[^)]+\) remove_matched;
into device label PR11 parent_label PR01 insert begin Name (MUXS, "XHCA") end;
into Device label PR12 code_regex Name\s\(MUXS[^)]+\) remove_matched;
into device label PR12 parent_label PR01 insert begin Name (MUXS, "XHCB") end;
into Device label PR13 code_regex Name\s\(MUXS[^)]+\) remove_matched;
into device label PR13 parent_label PR01 insert begin Name (MUXS, "XHCC") end;
into Device label PR18 code_regex Name\s\(MUXS[^)]+\) remove_matched;
into device label PR18 parent_label PR01 insert begin Name (MUXS, "XHCD") end;
into method label XHCA parent_label EHC1 remove_entry;
into method label XHCB parent_label EHC1 remove_entry;
into method label XHCC parent_label EHC1 remove_entry;
into method label XHCD parent_label EHC1 remove_entry;
into method label EHCA parent_label EHC1 remove_entry;
into method label EHCB parent_label EHC1 remove_entry;
into method label EHCC parent_label EHC1 remove_entry;
into method label EHCD parent_label EHC1 remove_entry;
into method label XHCN parent_label EHC1 remove_entry;
into device label EHC1 code_regex Name\s\(XHCN,\sOne\) remove_matched;
into device label EHC1 insert begin
Name (XHCN, One)\n
Method (XHCA, 0, NotSerialized)\n
{\n
Store (One, ^^XHC1.PAHC)\n
}\n
Method (XHCB, 0, NotSerialized)\n
{\n
Store (One, ^^XHC1.PBHC)\n
}\n
Method (XHCC, 0, NotSerialized)\n
{\n
Store (One, ^^XHC1.PCHC)\n
}\n
Method (XHCD, 0, NotSerialized)\n
{\n
Store (One, ^^XHC1.PDHC)\n
}\n
Method (EHCA, 0, NotSerialized)\n
{\n
Store (Zero, ^^XHC1.PAHC)\n
}\n
Method (EHCB, 0, NotSerialized)\n
{\n
Store (Zero, ^^XHC1.PBHC)\n
}\n
Method (EHCC, 0, NotSerialized)\n
{\n
Store (Zero, ^^XHC1.PCHC)\n
}\n
Method (EHCD, 0, NotSerialized)\n
{\n
Store (Zero, ^^XHC1.PDHC)\n
}\n
end;
# Fix EHC2
into method label XHCN parent_label EHC2 remove_entry;
into device label EHC2 code_regex Name\s\(XHCN,\sOne\) remove_matched;
into device label EHC2 insert begin Name (XHCN, One)\n end;
# Fix XHC1
into device label XHC set_label begin XHC1 end;
into_all all code_regex XHC(?=\W) replaceall_matched begin XHC1 end;
into method label _WAK code_regex \_SB.PCI0.XHC1.XWAK replace_matched begin _SB.PCI0.XHC1._INI end;
into device label XHC1 replace_content begin
Name (_ADR, 0x00140000)\n
Name (_S3D, 0x02)\n
Name (_S4D, 0x02)\n
Name (XRST, Zero)\n
\n
OperationRegion (XPRT, PCI_Config, 0x74, 0x10)\n
Field (XPRT, DWordAcc, NoLock, Preserve)\n
{\n
Offset (0x01),\n
PMEE, 1,\n
, 6,\n
PMES, 1\n
}\n
\n
OperationRegion (XH1C, PCI_Config, 0xD0, 0x10)\n
Field (XH1C, ByteAcc, NoLock, Preserve)\n
{\n
PAHC, 1,\n
PBHC, 1,\n
PCHC, 1,\n
PDHC, 1,\n
Offset (0x08),\n
PASS, 1,\n
PBSS, 1,\n
PCSS, 1,\n
PDSS, 1\n
}\n
\n
OperationRegion (XHC2, PCI_Config, 0x44, 0x04)\n
Field (XHC2, ByteAcc, NoLock, Preserve)\n
{\n
Offset (0x01),\n
MIAI, 2\n
}\n
\n
Method (_INI, 0, NotSerialized)\n
{\n
If (OSDW ())\n
{\n
Store (Zero, MIAI)\n
}\n
\n
If (LAnd (LGreaterEqual (OSYS, 0x07DC), LLess (OSYS, 0x2710)))\n
{\n
Store (One, PASS)\n
Store (One, PAHC)\n
Store (One, PBSS)\n
Store (One, PBHC)\n
Store (One, PCSS)\n
Store (One, PCHC)\n
Store (One, PDSS)\n
Store (One, PDHC)\n
}\n
}\n
\n
Device (RHUB)\n
{\n
Name (_ADR, Zero)\n
Device (PRT1)\n
{\n
Name (_ADR, One)\n
Method (_UPC, 0, Serialized)\n
{\n
Name (UPCP, Package (0x04)\n
{\n
0xFF,\n
0x03,\n
Zero,\n
Zero\n
})\n
Return (UPCP)\n
}\n
\n
Method (_PLD, 0, Serialized)\n
{\n
Name (PLDP, Package (0x01)\n
{\n
Buffer (0x10)\n
{\n
/* 0000 */ 0x01, 0xC6, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00,\n
/* 0008 */ 0x69, 0x0C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00\n
}\n
})\n
Return (PLDP)\n
}\n
Name (MUXS, "EHCA")\n
}\n
\n
Device (PRT2)\n
{\n
Name (_ADR, 0x02)\n
Method (_UPC, 0, Serialized)\n
{\n
Name (UPCP, Package (0x04)\n
{\n
0xFF,\n
0x03,\n
Zero,\n
Zero\n
})\n
Return (UPCP)\n
}\n
\n
Method (_PLD, 0, Serialized)\n
{\n
Name (PLDP, Package (0x01)\n
{\n
Buffer (0x10)\n
{\n
/* 0000 */ 0x01, 0xC6, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00,\n
/* 0008 */ 0x69, 0x0C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00\n
}\n
})\n
Return (PLDP)\n
}\n
Name (MUXS, "EHCB")\n
}\n
\n
Device (PRT3)\n
{\n
Name (_ADR, 0x03)\n
Method (_UPC, 0, Serialized)\n
{\n
Name (UPCP, Package (0x04)\n
{\n
0xFF,\n
0x03,\n
Zero,\n
Zero\n
})\n
Return (UPCP)\n
}\n
\n
Method (_PLD, 0, Serialized)\n
{\n
Name (PLDP, Package (0x01)\n
{\n
Buffer (0x10)\n
{\n
/* 0000 */ 0x01, 0xC6, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00,\n
/* 0008 */ 0x69, 0x0C, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00\n
}\n
})\n
Return (PLDP)\n
}\n
Name (MUXS, "EHCC")\n
}\n
\n
Device (PRT4)\n
{\n
Name (_ADR, 0x04)\n
Method (_UPC, 0, Serialized)\n
{\n
Name (UPCP, Package (0x04)\n
{\n
0xFF,\n
0x03,\n
Zero,\n
Zero\n
})\n
Return (UPCP)\n
}\n
\n
Method (_PLD, 0, Serialized)\n
{\n
Name (PLDP, Package (0x01)\n
{\n
Buffer (0x10)\n
{\n
/* 0000 */ 0x01, 0xC6, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00,\n
/* 0008 */ 0x69, 0x0C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00\n
}\n
})\n
Return (PLDP)\n
}\n
Name (MUXS, "EHCD")\n
}\n
}\n
\n
Method (_PRW, 0, NotSerialized)\n
{\n
Return (GPRW (0x0D, 0x04))\n
}\n
\n
Method (XHCA, 0, NotSerialized)\n
{\n
Store (One, PAHC)\n
}\n
\n
Method (XHCB, 0, NotSerialized)\n
{\n
Store (One, PBHC)\n
}\n
\n
Method (XHCC, 0, NotSerialized)\n
{\n
Store (One, PCHC)\n
}\n
\n
Method (XHCD, 0, NotSerialized)\n
{\n
Store (One, PDHC)\n
}\n
\n
Method (EHCA, 0, NotSerialized)\n
{\n
Store (Zero, PAHC)\n
}\n
\n
Method (EHCB, 0, NotSerialized)\n
{\n
Store (Zero, PBHC)\n
}\n
\n
Method (EHCC, 0, NotSerialized)\n
{\n
Store (Zero, PCHC)\n
}\n
\n
Method (EHCD, 0, NotSerialized)\n
{\n
Store (Zero, PDHC)\n
}\n
\n
Method (_DSM, 4, NotSerialized)\n
{\n
Store (Package (0x15)\n
{\n
"AAPL,slot-name", "Built In",\n
"name", "Intel xHCI Controller",\n
"model", "Intel 7 Series Chipset Family USB xHCI Host Controller",\n
"device_type", "USB Controller",\n
"AAPL,current-available", 0x0834,\n
"AAPL,current-extra", 0x0A8C,\n
"AAPL,current-in-sleep", 0x03E8,\n
"AAPL,current-extra-in-sleep", 0x0834,\n
"AAPL,max-port-current-in-sleep", 0x0A8C,\n
"AAPL,device-internal", 0x02,\n
Buffer (One) {0x00}\n
}, Local0)\n
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
Return (Local0)\n
}
end;