Home | History | Annotate | Download | only in AcpiTablesPCAT
      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