1 /**************************************************************************; 2 ;* *; 3 ;* *; 4 ;* Intel Corporation - ACPI Reference Code for the Haswell *; 5 ;* Family of Customer Reference Boards. *; 6 ;* *; 7 ;* *; 8 ;* Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved *; 9 ; 10 ; This program and the accompanying materials are licensed and made available under 11 ; the terms and conditions of the BSD License that accompanies this distribution. 12 ; The full text of the license may be found at 13 ; http://opensource.org/licenses/bsd-license.php. 14 ; 15 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 16 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 17 ; 18 ;* *; 19 ;* *; 20 ;**************************************************************************/ 21 22 //scope is \_SB.PCI0.XHC 23 Device(XHC1) 24 { 25 Name(_ADR, 0x00140000) //Device 20, Function 0 26 27 //When it is in Host mode, USH core is connected to USB3 microAB(USB3 P1 and USB2 P0) 28 Name (_DDN, "Baytrail XHCI controller (CCG core/Host only)" ) 29 30 Method(XDEP, 0) 31 { 32 If(LEqual(OSYS,2013)) 33 { 34 Name(_DEP, Package(0x1) 35 { 36 PEPD 37 }) 38 } 39 } 40 41 Name (_STR, Unicode ("Baytrail XHCI controller (CCG core/Host only)")) 42 Name(_PRW, Package() {0xD,4}) 43 44 Method(_PSW,1) 45 { 46 If (LAnd (PMES, PMEE)) { 47 Store (0, PMEE) 48 Store (1, PMES) 49 } 50 } 51 52 OperationRegion (PMEB, PCI_Config, 0x74, 0x04) // Power Management Control/Status 53 Field (PMEB, WordAcc, NoLock, Preserve) 54 { 55 , 8, 56 PMEE, 1, //bit8 PME_En 57 , 6, 58 PMES, 1 //bit15 PME_Status 59 } 60 61 Method(_STA, 0) 62 { 63 If(LNotEqual(XHCI, 0)) //NVS variable controls present of XHCI controller 64 { 65 Return (0xF) 66 } Else 67 { 68 Return (0x0) 69 } 70 } 71 72 OperationRegion(XPRT,PCI_Config,0xD0,0x10) 73 Field(XPRT,DWordAcc,NoLock,Preserve) //usbx_top.doc.xml 74 { 75 PR2, 32, //bit[8:0] USB2HCSEL 76 PR2M, 32, //bit[8:0] USB2HCSELM 77 PR3, 32, //bit[3:0] USB3SSEN 78 PR3M, 32 //bit[3:0] USB3SSENM 79 } 80 81 Device(RHUB) 82 { 83 Name(_ADR, Zero) //address 0 is reserved for root hub 84 85 // 86 // Super Speed Ports - must match _UPC declarations of the coresponding Full Speed Ports. 87 // Paired with Port 1 88 Device(SSP1) 89 { 90 Name(_ADR, 0x07) 91 92 Method(_UPC,0,Serialized) 93 { 94 Name(UPCP, Package() 95 { 96 0xFF, // Port is connectable if non-zero 97 0x06, // USB3 uAB connector 98 0x00, 99 0x00 100 }) 101 Return(UPCP) 102 } 103 104 Method(_PLD,0,Serialized) 105 { 106 Name(PLDP, Package() //pls check ACPI 5.0 section 6.1.8 107 { 108 Buffer(0x14) 109 { 110 //31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored 111 0x82, 0x00, 0x00, 0x00, 112 //63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 113 0x00, 0x00, 0x00, 0x00, 114 //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 115 // 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 116 0x4B, 0x19, 0x00, 0x00, 117 //127:96 -bit[96]=1 Ejectable bit[97]=1 OSPM Ejection required Bit[105:98]=0 no Cabinet Number 118 // 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 119 0x03, 0x00, 0x00, 0x00, 120 //159:128 Vert. and Horiz. Offsets not supplied 121 0xFF, 0xFF, 0xFF, 0xFF 122 } 123 }) 124 Return (PLDP) 125 } 126 } 127 // 128 // High Speed Ports 129 // pair port with port 7 (SS) 130 // The UPC declarations for LS/FS/HS and SS ports that are paired to form a USB3.0 compatible connector. 131 // A "pair" is defined by two ports that declare _PLDs with identical Panel, Vertical Position, Horizontal Postion, Shape, Group Orientation 132 // and Group Token 133 Device(HS01) 134 { 135 Name(_ADR, 0x01) 136 137 Method(_UPC,0,Serialized) 138 { 139 Name(UPCP, Package() { 0xFF,0x06,0x00,0x00 }) 140 Return(UPCP) 141 } 142 143 Method(_PLD,0,Serialized) 144 { 145 Name(PLDP, Package() //pls check ACPI 5.0 section 6.1.8 146 { 147 Buffer(0x14) 148 { 149 //31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored 150 0x82, 0x00, 0x00, 0x00, 151 //63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 152 0x00, 0x00, 0x00, 0x00, 153 //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 154 // 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 155 0x4B, 0x19, 0x00, 0x00, 156 //127:96 -bit[96]=1 Ejectable bit[97]=1 OSPM Ejection required Bit[105:98]=0 no Cabinet Number 157 // 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 158 0x03, 0x00, 0x00, 0x00, 159 //159:128 Vert. and Horiz. Offsets not supplied 160 0xFF, 0xFF, 0xFF, 0xFF 161 } 162 }) 163 Return (PLDP) 164 } 165 }//end of HS01 166 167 // USB2 Type-A/USB2 only 168 // EHCI debug capable 169 Device(HS02) 170 { 171 Name(_ADR, 0x02) // 0 is for root hub so physical port index starts from 1 (it is port1 in schematic) 172 173 Method(_UPC,0,Serialized) 174 { 175 Name(UPCP, Package() 176 { 177 0xFF, // connectable 178 0xFF, // 179 0x00, 180 0x00 181 }) 182 183 Return(UPCP) 184 } 185 186 Method(_PLD,0,Serialized) 187 { 188 Name(PLDP, Package() 189 { 190 Buffer(0x14) 191 { 192 //31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored 193 0x82, 0x00, 0x00, 0x00, 194 //63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 195 0x00, 0x00, 0x00, 0x00, 196 //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'00 Left 197 // 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 198 0x4B, 0x08, 0x00, 0x00, 199 //127:96 -bit[96]=1 Ejectable bit[97]=1 OSPM Ejection required Bit[105:98]=0 no Cabinet Number 200 // 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 201 0x03, 0x00, 0x00, 0x00, 202 //159:128 Vert. and Horiz. Offsets not supplied 203 0xFF, 0xFF, 0xFF, 0xFF 204 } 205 }) 206 207 Return (PLDP) 208 } 209 }//end of HS02 210 // high speed port 3 211 Device(HS03) 212 { 213 Name(_ADR, 0x03) 214 215 Method(_UPC,0,Serialized) 216 { 217 Name(UPCP, Package() 218 { 219 0xFF, // connectable 220 0xFF, 221 0x00, 222 0x00 223 }) 224 225 Return(UPCP) 226 } 227 228 Method(_RMV, 0) // for XHCICV debug purpose 229 { 230 Return(0x0) 231 } 232 233 Method(_PLD,0,Serialized) 234 { 235 Name(PLDP, Package() 236 { 237 Buffer(0x14) 238 { 239 //31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored 240 0x82, 0x00, 0x00, 0x00, 241 //63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 242 0x00, 0x00, 0x00, 0x00, 243 //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) 244 // bit[71:70]=b'00 Vertical Position ignore bit[73:72]=b'00 Horizontal Position ignore 245 // 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 246 0x30, 0x08, 0x00, 0x00, 247 //127:96 -bit[96]=0 not Ejectable bit[97]=0 OSPM Ejection not required Bit[105:98]=0 no Cabinet Number 248 // 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 249 0x00, 0x00, 0x00, 0x00, 250 //159:128 Vert. and Horiz. Offsets not supplied 251 0xFF, 0xFF, 0xFF, 0xFF 252 } 253 }) 254 Return (PLDP) 255 } 256 } 257 258 Device(HS04) 259 { 260 Name(_ADR, 0x04) 261 262 Method(_UPC,0,Serialized) 263 { 264 Name(UPCP, Package() 265 { 266 0xFF, //connectable 267 0xFF, //Proprietary connector (FPC connector) 268 0x00, 269 0x00 270 }) 271 272 Return(UPCP) 273 } 274 Method(_PLD,0,Serialized) 275 { 276 Name(PLDP, Package() 277 { 278 Buffer(0x14) 279 { 280 //31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored 281 0x82, 0x00, 0x00, 0x00, 282 //63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 283 0x00, 0x00, 0x00, 0x00, 284 //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) 285 // bit[71:70]=b'00 Vertical Position ignore bit[73:72]=b'00 Horizontal Position ignore 286 // 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 287 0x30, 0x08, 0x00, 0x00, 288 //127:96 -bit[96]=0 not Ejectable bit[97]=0 OSPM Ejection not required Bit[105:98]=0 no Cabinet Number 289 // 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 290 0x00, 0x00, 0x00, 0x00, 291 //159:128 Vert. and Horiz. Offsets not supplied 292 0xFF, 0xFF, 0xFF, 0xFF 293 } 294 }) 295 296 Return (PLDP) 297 } 298 } 299 300 301 Device(HSC1) // USB2 HSIC 01 302 { 303 Name(_ADR, 0x05) 304 305 Method(_UPC,0,Serialized) 306 { 307 Name(UPCP, Package() 308 { 309 0xFF, //connectable 310 0xFF, //Proprietary connector (FPC connector) 311 0x00, 312 0x00 313 }) 314 315 Return(UPCP) 316 } 317 Method(_PLD,0,Serialized) 318 { 319 Name(PLDP, Package() 320 { 321 Buffer(0x14) 322 { 323 //31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored 324 0x82, 0x00, 0x00, 0x00, 325 //63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 326 0x00, 0x00, 0x00, 0x00, 327 //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) 328 // bit[71:70]=b'00 Vertical Position ignore bit[73:72]=b'00 Horizontal Position ignore 329 // 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 330 0x30, 0x08, 0x00, 0x00, 331 //127:96 -bit[96]=0 not Ejectable bit[97]=0 OSPM Ejection not required Bit[105:98]=0 no Cabinet Number 332 // 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 333 0x00, 0x00, 0x00, 0x00, 334 //159:128 Vert. and Horiz. Offsets not supplied 335 0xFF, 0xFF, 0xFF, 0xFF 336 } 337 }) 338 Return (PLDP) 339 } 340 } 341 342 Device(HSC2) // USB2 HSIC 02 343 { 344 Name(_ADR, 0x06) 345 346 Method(_UPC,0,Serialized) 347 { 348 Name(UPCP, Package() 349 { 350 0xFF, //connectable 351 0xFF, //Proprietary connector (FPC connector) 352 0x00, 353 0x00 354 }) 355 356 Return(UPCP) 357 } 358 Method(_PLD,0,Serialized) 359 { 360 Name(PLDP, Package() 361 { 362 Buffer(0x14) 363 { 364 //31:0 - Bit[6:0]=2 revision is 0x2, Bit[7]=1 Ignore Color Bit[31:8]=0 RGB color is ignored 365 0x82, 0x00, 0x00, 0x00, 366 //63:32 - Bit[47:32]=0 width: 0x0000 Bit[63:48]=0 Height:0x0000 367 0x00, 0x00, 0x00, 0x00, 368 //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) 369 // bit[71:70]=b'00 Vertical Position ignore bit[73:72]=b'00 Horizontal Position ignore 370 // 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 371 0x30, 0x08, 0x00, 0x00, 372 //127:96 -bit[96]=0 not Ejectable bit[97]=0 OSPM Ejection not required Bit[105:98]=0 no Cabinet Number 373 // 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 374 0x00, 0x00, 0x00, 0x00, 375 //159:128 Vert. and Horiz. Offsets not supplied 376 0xFF, 0xFF, 0xFF, 0xFF 377 } 378 }) 379 Return (PLDP) 380 } 381 } 382 } //end of root hub 383 384 } // end of XHC1 385 386