/**************************************************************************; | |
;* *; | |
;* *; | |
;* Intel Corporation - ACPI Reference Code for the Haswell *; | |
;* Family of Customer Reference Boards. *; | |
;* *; | |
;* *; | |
;* Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved *; | |
; | |
; This program and the accompanying materials are licensed and made available under | |
; the terms and conditions of the BSD License that accompanies this distribution. | |
; The full text of the license may be found at | |
; http://opensource.org/licenses/bsd-license.php. | |
; | |
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
; | |
;* *; | |
;* *; | |
;**************************************************************************/ | |
//scope is \_SB.PCI0.XHC | |
Device(XHC1) | |
{ | |
Name(_ADR, 0x00140000) //Device 20, Function 0 | |
//When it is in Host mode, USH core is connected to USB3 microAB(USB3 P1 and USB2 P0) | |
Name (_DDN, "Baytrail XHCI controller (CCG core/Host only)" ) | |
Method(XDEP, 0) | |
{ | |
If(LEqual(OSYS,2013)) | |
{ | |
Name(_DEP, Package(0x1) | |
{ | |
PEPD | |
}) | |
} | |
} | |
Name (_STR, Unicode ("Baytrail XHCI controller (CCG core/Host only)")) | |
Name(_PRW, Package() {0xD,4}) | |
Method(_PSW,1) | |
{ | |
If (LAnd (PMES, PMEE)) { | |
Store (0, PMEE) | |
Store (1, PMES) | |
} | |
} | |
OperationRegion (PMEB, PCI_Config, 0x74, 0x04) // Power Management Control/Status | |
Field (PMEB, WordAcc, NoLock, Preserve) | |
{ | |
, 8, | |
PMEE, 1, //bit8 PME_En | |
, 6, | |
PMES, 1 //bit15 PME_Status | |
} | |
Method(_STA, 0) | |
{ | |
If(LNotEqual(XHCI, 0)) //NVS variable controls present of XHCI controller | |
{ | |
Return (0xF) | |
} Else | |
{ | |
Return (0x0) | |
} | |
} | |
OperationRegion(XPRT,PCI_Config,0xD0,0x10) | |
Field(XPRT,DWordAcc,NoLock,Preserve) //usbx_top.doc.xml | |
{ | |
PR2, 32, //bit[8:0] USB2HCSEL | |
PR2M, 32, //bit[8:0] USB2HCSELM | |
PR3, 32, //bit[3:0] USB3SSEN | |
PR3M, 32 //bit[3:0] USB3SSENM | |
} | |
Device(RHUB) | |
{ | |
Name(_ADR, Zero) //address 0 is reserved for root hub | |
// | |
// Super Speed Ports - must match _UPC declarations of the coresponding Full Speed Ports. | |
// Paired with Port 1 | |
Device(SSP1) | |
{ | |
Name(_ADR, 0x07) | |
Method(_UPC,0,Serialized) | |
{ | |
Name(UPCP, Package() | |
{ | |
0xFF, // Port is connectable if non-zero | |
0x06, // USB3 uAB connector | |
0x00, | |
0x00 | |
}) | |
Return(UPCP) | |
} | |
Method(_PLD,0,Serialized) | |
{ | |
Name(PLDP, Package() //pls check ACPI 5.0 section 6.1.8 | |
{ | |
Buffer(0x14) | |
{ | |
//31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored | |
0x82, 0x00, 0x00, 0x00, | |
//63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 | |
0x00, 0x00, 0x00, 0x00, | |
//95:64 - bit[66:64]=b'011 visiable/docking/no lid bit[69:67]=b'001 bottom panel bit[71:70]=b'01 Center bit[73:72]=b'01 Center | |
// bit[77:74]=6 Horizontal Trapezoid bit[78]=0 bit[86:79]=0 bit[94:87]='0 no group info' bit[95]=0 not a bay | |
0x4B, 0x19, 0x00, 0x00, | |
//127:96 -bit[96]=1 Ejectable bit[97]=1 OSPM Ejection required Bit[105:98]=0 no Cabinet Number | |
// bit[113:106]=0 no Card cage Number bit[114]=0 no reference shape Bit[118:115]=0 no rotation Bit[123:119]=0 no order | |
0x03, 0x00, 0x00, 0x00, | |
//159:128 Vert. and Horiz. Offsets not supplied | |
0xFF, 0xFF, 0xFF, 0xFF | |
} | |
}) | |
Return (PLDP) | |
} | |
} | |
// | |
// High Speed Ports | |
// pair port with port 7 (SS) | |
// The UPC declarations for LS/FS/HS and SS ports that are paired to form a USB3.0 compatible connector. | |
// A "pair" is defined by two ports that declare _PLDs with identical Panel, Vertical Position, Horizontal Postion, Shape, Group Orientation | |
// and Group Token | |
Device(HS01) | |
{ | |
Name(_ADR, 0x01) | |
Method(_UPC,0,Serialized) | |
{ | |
Name(UPCP, Package() { 0xFF,0x06,0x00,0x00 }) | |
Return(UPCP) | |
} | |
Method(_PLD,0,Serialized) | |
{ | |
Name(PLDP, Package() //pls check ACPI 5.0 section 6.1.8 | |
{ | |
Buffer(0x14) | |
{ | |
//31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored | |
0x82, 0x00, 0x00, 0x00, | |
//63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 | |
0x00, 0x00, 0x00, 0x00, | |
//95:64 - bit[66:64]=b'011 visiable/docking/no lid bit[69:67]=b'001 bottom panel bit[71:70]=b'01 Center bit[73:72]=b'01 Center | |
// bit[77:74]=6 Horizontal Trapezoid bit[78]=0 bit[86:79]=0 bit[94:87]='0 no group info' bit[95]=0 not a bay | |
0x4B, 0x19, 0x00, 0x00, | |
//127:96 -bit[96]=1 Ejectable bit[97]=1 OSPM Ejection required Bit[105:98]=0 no Cabinet Number | |
// bit[113:106]=0 no Card cage Number bit[114]=0 no reference shape Bit[118:115]=0 no rotation Bit[123:119]=0 no order | |
0x03, 0x00, 0x00, 0x00, | |
//159:128 Vert. and Horiz. Offsets not supplied | |
0xFF, 0xFF, 0xFF, 0xFF | |
} | |
}) | |
Return (PLDP) | |
} | |
}//end of HS01 | |
// USB2 Type-A/USB2 only | |
// EHCI debug capable | |
Device(HS02) | |
{ | |
Name(_ADR, 0x02) // 0 is for root hub so physical port index starts from 1 (it is port1 in schematic) | |
Method(_UPC,0,Serialized) | |
{ | |
Name(UPCP, Package() | |
{ | |
0xFF, // connectable | |
0xFF, // | |
0x00, | |
0x00 | |
}) | |
Return(UPCP) | |
} | |
Method(_PLD,0,Serialized) | |
{ | |
Name(PLDP, Package() | |
{ | |
Buffer(0x14) | |
{ | |
//31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored | |
0x82, 0x00, 0x00, 0x00, | |
//63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 | |
0x00, 0x00, 0x00, 0x00, | |
//95:64 - bit[66:64]=b'000 not visiable/no docking/no lid bit[69:67]=b'000 top bit[71:70]=b'01 Center bit[73:72]=b'00 Left | |
// bit[77:74]=2 Square bit[78]=0 bit[86:79]=0 bit[94:87]='0 no group info' bit[95]=0 not a bay | |
0x40, 0x08, 0x00, 0x00, | |
//127:96 -bit[96]=0 not Ejectable bit[97]=0 no OSPM Ejection required Bit[105:98]=0 no Cabinet Number | |
// bit[113:106]=0 no Card cage Number bit[114]=0 no reference shape Bit[118:115]=0 no rotation Bit[123:119]=0 no order | |
0x00, 0x00, 0x00, 0x00, | |
//159:128 Vert. and Horiz. Offsets not supplied | |
0xFF, 0xFF, 0xFF, 0xFF | |
} | |
}) | |
Return (PLDP) | |
} | |
}//end of HS02 | |
// high speed port 3 | |
Device(HS03) | |
{ | |
Name(_ADR, 0x03) | |
Method(_UPC,0,Serialized) | |
{ | |
Name(UPCP, Package() | |
{ | |
0xFF, // connectable | |
0xFF, | |
0x00, | |
0x00 | |
}) | |
Return(UPCP) | |
} | |
Method(_RMV, 0) // for XHCICV debug purpose | |
{ | |
Return(0x0) | |
} | |
Method(_PLD,0,Serialized) | |
{ | |
Name(PLDP, Package() | |
{ | |
Buffer(0x14) | |
{ | |
//31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored | |
0x82, 0x00, 0x00, 0x00, | |
//63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 | |
0x00, 0x00, 0x00, 0x00, | |
//95:64 - bit[66:64]=b'000 not Visible/no docking/no lid bit[69:67]=6 (b'110) unknown(Vertical Position and Horizontal Position will be ignored) | |
// bit[71:70]=b'00 Vertical Position ignore bit[73:72]=b'00 Horizontal Position ignore | |
// bit[77:74]=2 Square bit[78]=0 bit[86:79]=0 bit[94:87]='0 no group info' bit[95]=0 not a bay | |
0x30, 0x08, 0x00, 0x00, | |
//127:96 -bit[96]=0 not Ejectable bit[97]=0 OSPM Ejection not required Bit[105:98]=0 no Cabinet Number | |
// bit[113:106]=0 no Card cage Number bit[114]=0 no reference shape Bit[118:115]=0 no rotation Bit[123:119]=0 no order | |
0x00, 0x00, 0x00, 0x00, | |
//159:128 Vert. and Horiz. Offsets not supplied | |
0xFF, 0xFF, 0xFF, 0xFF | |
} | |
}) | |
Return (PLDP) | |
} | |
} | |
Device(HS04) | |
{ | |
Name(_ADR, 0x04) | |
Method(_UPC,0,Serialized) | |
{ | |
Name(UPCP, Package() | |
{ | |
0xFF, //connectable | |
0xFF, //Proprietary connector (FPC connector) | |
0x00, | |
0x00 | |
}) | |
Return(UPCP) | |
} | |
Method(_PLD,0,Serialized) | |
{ | |
Name(PLDP, Package() | |
{ | |
Buffer(0x14) | |
{ | |
//31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored | |
0x82, 0x00, 0x00, 0x00, | |
//63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 | |
0x00, 0x00, 0x00, 0x00, | |
//95:64 - bit[66:64]=b'000 not Visible/no docking/no lid bit[69:67]=6 (b'110) unknown(Vertical Position and Horizontal Position will be ignored) | |
// bit[71:70]=b'00 Vertical Position ignore bit[73:72]=b'00 Horizontal Position ignore | |
// bit[77:74]=2 Square bit[78]=0 bit[86:79]=0 bit[94:87]='0 no group info' bit[95]=0 not a bay | |
0x30, 0x08, 0x00, 0x00, | |
//127:96 -bit[96]=0 not Ejectable bit[97]=0 OSPM Ejection not required Bit[105:98]=0 no Cabinet Number | |
// bit[113:106]=0 no Card cage Number bit[114]=0 no reference shape Bit[118:115]=0 no rotation Bit[123:119]=0 no order | |
0x00, 0x00, 0x00, 0x00, | |
//159:128 Vert. and Horiz. Offsets not supplied | |
0xFF, 0xFF, 0xFF, 0xFF | |
} | |
}) | |
Return (PLDP) | |
} | |
} | |
Device(HSC1) // USB2 HSIC 01 | |
{ | |
Name(_ADR, 0x05) | |
Method(_UPC,0,Serialized) | |
{ | |
Name(UPCP, Package() | |
{ | |
0xFF, //connectable | |
0xFF, //Proprietary connector (FPC connector) | |
0x00, | |
0x00 | |
}) | |
Return(UPCP) | |
} | |
Method(_PLD,0,Serialized) | |
{ | |
Name(PLDP, Package() | |
{ | |
Buffer(0x14) | |
{ | |
//31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored | |
0x82, 0x00, 0x00, 0x00, | |
//63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 | |
0x00, 0x00, 0x00, 0x00, | |
//95:64 - bit[66:64]=b'000 not Visible/no docking/no lid bit[69:67]=6 (b'110) unknown(Vertical Position and Horizontal Position will be ignored) | |
// bit[71:70]=b'00 Vertical Position ignore bit[73:72]=b'00 Horizontal Position ignore | |
// bit[77:74]=2 Square bit[78]=0 bit[86:79]=0 bit[94:87]='0 no group info' bit[95]=0 not a bay | |
0x30, 0x08, 0x00, 0x00, | |
//127:96 -bit[96]=0 not Ejectable bit[97]=0 OSPM Ejection not required Bit[105:98]=0 no Cabinet Number | |
// bit[113:106]=0 no Card cage Number bit[114]=0 no reference shape Bit[118:115]=0 no rotation Bit[123:119]=0 no order | |
0x00, 0x00, 0x00, 0x00, | |
//159:128 Vert. and Horiz. Offsets not supplied | |
0xFF, 0xFF, 0xFF, 0xFF | |
} | |
}) | |
Return (PLDP) | |
} | |
} | |
Device(HSC2) // USB2 HSIC 02 | |
{ | |
Name(_ADR, 0x06) | |
Method(_UPC,0,Serialized) | |
{ | |
Name(UPCP, Package() | |
{ | |
0xFF, //connectable | |
0xFF, //Proprietary connector (FPC connector) | |
0x00, | |
0x00 | |
}) | |
Return(UPCP) | |
} | |
Method(_PLD,0,Serialized) | |
{ | |
Name(PLDP, Package() | |
{ | |
Buffer(0x14) | |
{ | |
//31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored | |
0x82, 0x00, 0x00, 0x00, | |
//63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 | |
0x00, 0x00, 0x00, 0x00, | |
//95:64 - bit[66:64]=b'000 not Visible/no docking/no lid bit[69:67]=6 (b'110) unknown(Vertical Position and Horizontal Position will be ignored) | |
// bit[71:70]=b'00 Vertical Position ignore bit[73:72]=b'00 Horizontal Position ignore | |
// bit[77:74]=2 Square bit[78]=0 bit[86:79]=0 bit[94:87]='0 no group info' bit[95]=0 not a bay | |
0x30, 0x08, 0x00, 0x00, | |
//127:96 -bit[96]=0 not Ejectable bit[97]=0 OSPM Ejection not required Bit[105:98]=0 no Cabinet Number | |
// bit[113:106]=0 no Card cage Number bit[114]=0 no reference shape Bit[118:115]=0 no rotation Bit[123:119]=0 no order | |
0x00, 0x00, 0x00, 0x00, | |
//159:128 Vert. and Horiz. Offsets not supplied | |
0xFF, 0xFF, 0xFF, 0xFF | |
} | |
}) | |
Return (PLDP) | |
} | |
} | |
} //end of root hub | |
} // end of XHC1 | |