1 /**************************************************************************; 2 ;* *; 3 ;* *; 4 ;* Intel Corporation - ACPI Reference Code for the Sandy Bridge *; 5 ;* Family of Customer Reference Boards. *; 6 ;* *; 7 ;* *; 8 ;* Copyright (c) 2012 - 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(\_SB) 23 { 24 //RTC 25 Device(RTC) // RTC 26 { 27 Name(_HID,EISAID("PNP0B00")) 28 29 Name(_CRS,ResourceTemplate() 30 { 31 IO(Decode16,0x70,0x70,0x01,0x08) 32 }) 33 34 Method(_STA,0,Serialized) { 35 36 // 37 // Report RTC Battery is Prensent or Not Present. 38 // 39 If (LEqual(BATT, 1)) { 40 Return (0xF) 41 } 42 Return (0x0) 43 } 44 } 45 //RTC 46 47 Device(HPET) // High Performance Event Timer 48 { 49 Name (_HID, EisaId ("PNP0103")) 50 Name (_UID, 0x00) 51 Method (_STA, 0, NotSerialized) 52 { 53 Return (0x0F) 54 } 55 56 Method (_CRS, 0, Serialized) 57 { 58 Name (RBUF, ResourceTemplate () 59 { 60 Memory32Fixed (ReadWrite, 61 0xFED00000, // Address Base 62 0x00000400, // Address Length 63 ) 64 Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, ) 65 { 66 0x00000008, //0xB HPET-2 67 } 68 }) 69 Return (RBUF) 70 } 71 } 72 //HPET 73 74 Name(PR00, Package() 75 { 76 // SD Host #0 - eMMC 77 Package() {0x0010FFFF, 0, LNKA, 0 }, 78 // SD Host #1 - SDIO 79 Package() {0x0011FFFF, 0, LNKB, 0 }, 80 // SD Host #2 - SD Card 81 Package() {0x0012FFFF, 0, LNKC, 0 }, 82 // SATA Controller 83 Package() {0x0013FFFF, 0, LNKD, 0 }, 84 // xHCI Host 85 Package() {0x0014FFFF, 0, LNKE, 0 }, 86 // Low Power Audio Engine 87 Package() {0x0015FFFF, 0, LNKF, 0 }, 88 // USB OTG 89 Package() {0x0016FFFF, 0, LNKG, 0 }, 90 // MIPI-HSI/eMMC4.5 91 Package() {0x0017FFFF, 0, LNKH, 0 }, 92 // LPSS2 DMA 93 // LPSS2 I2C #4 94 Package() {0x0018FFFF, 0, LNKB, 0 }, 95 // LPSS2 I2C #1 96 // LPSS2 I2C #5 97 Package() {0x0018FFFF, 2, LNKD, 0 }, 98 // LPSS2 I2C #2 99 // LPSS2 I2C #6 100 Package() {0x0018FFFF, 3, LNKC, 0 }, 101 // LPSS2 I2C #3 102 // LPSS2 I2C #7 103 Package() {0x0018FFFF, 1, LNKA, 0 }, 104 // SeC 105 Package() {0x001AFFFF, 0, LNKF, 0 }, 106 // 107 // High Definition Audio Controller 108 Package() {0x001BFFFF, 0, LNKG, 0 }, 109 // 110 // EHCI Controller 111 Package() {0x001DFFFF, 0, LNKH, 0 }, 112 // LPSS DMA 113 Package() {0x001EFFFF, 0, LNKD, 0 }, 114 // LPSS I2C #0 115 Package() {0x001EFFFF, 3, LNKA, 0 }, 116 // LPSS I2C #1 117 Package() {0x001EFFFF, 1, LNKB, 0 }, 118 // LPSS PCM 119 Package() {0x001EFFFF, 2, LNKC, 0 }, 120 // LPSS I2S 121 // LPSS HS-UART #0 122 // LPSS HS-UART #1 123 // LPSS SPI 124 // LPC Bridge 125 // 126 // SMBus Controller 127 Package() {0x001FFFFF, 1, LNKC, 0 }, 128 // 129 // PCIE Root Port #1 130 Package() {0x001CFFFF, 0, LNKA, 0 }, 131 // PCIE Root Port #2 132 Package() {0x001CFFFF, 1, LNKB, 0 }, 133 // PCIE Root Port #3 134 Package() {0x001CFFFF, 2, LNKC, 0 }, 135 // PCIE Root Port #4 136 Package() {0x001CFFFF, 3, LNKD, 0 }, 137 138 // Host Bridge 139 // Mobile IGFX 140 Package() {0x0002FFFF, 0, LNKA, 0 }, 141 }) 142 143 Name(AR00, Package() 144 { 145 // SD Host #0 - eMMC 146 Package() {0x0010FFFF, 0, 0, 16 }, 147 // SD Host #1 - SDIO 148 Package() {0x0011FFFF, 0, 0, 17 }, 149 // SD Host #2 - SD Card 150 Package() {0x0012FFFF, 0, 0, 18 }, 151 // SATA Controller 152 Package() {0x0013FFFF, 0, 0, 19 }, 153 // xHCI Host 154 Package() {0x0014FFFF, 0, 0, 20 }, 155 // Low Power Audio Engine 156 Package() {0x0015FFFF, 0, 0, 21 }, 157 // USB OTG 158 Package() {0x0016FFFF, 0, 0, 22 }, 159 // 160 // MIPI-HSI 161 Package() {0x0017FFFF, 0, 0, 23 }, 162 // 163 // LPSS2 DMA 164 // LPSS2 I2C #4 165 Package() {0x0018FFFF, 0, 0, 17 }, 166 // LPSS2 I2C #1 167 // LPSS2 I2C #5 168 Package() {0x0018FFFF, 2, 0, 19 }, 169 // LPSS2 I2C #2 170 // LPSS2 I2C #6 171 Package() {0x0018FFFF, 3, 0, 18 }, 172 // LPSS2 I2C #3 173 // LPSS2 I2C #7 174 Package() {0x0018FFFF, 1, 0, 16 }, 175 176 // SeC 177 Package() {0x001AFFFF, 0, 0, 21 }, 178 // 179 // High Definition Audio Controller 180 Package() {0x001BFFFF, 0, 0, 22 }, 181 // 182 // EHCI Controller 183 Package() {0x001DFFFF, 0, 0, 23 }, 184 // LPSS DMA 185 Package() {0x001EFFFF, 0, 0, 19 }, 186 // LPSS I2C #0 187 Package() {0x001EFFFF, 3, 0, 16 }, 188 // LPSS I2C #1 189 Package() {0x001EFFFF, 1, 0, 17 }, 190 // LPSS PCM 191 Package() {0x001EFFFF, 2, 0, 18 }, 192 // LPSS I2S 193 // LPSS HS-UART #0 194 // LPSS HS-UART #1 195 // LPSS SPI 196 // LPC Bridge 197 // 198 // SMBus Controller 199 Package() {0x001FFFFF, 1, 0, 18 }, 200 // 201 // PCIE Root Port #1 202 Package() {0x001CFFFF, 0, 0, 16 }, 203 // PCIE Root Port #2 204 Package() {0x001CFFFF, 1, 0, 17 }, 205 // PCIE Root Port #3 206 Package() {0x001CFFFF, 2, 0, 18 }, 207 // PCIE Root Port #4 208 Package() {0x001CFFFF, 3, 0, 19 }, 209 // Host Bridge 210 // Mobile IGFX 211 Package() {0x0002FFFF, 0, 0, 16 }, 212 }) 213 214 Name(PR04, Package() 215 { 216 // PCIE Port #1 Slot 217 Package() {0x0000FFFF, 0, LNKA, 0 }, 218 Package() {0x0000FFFF, 1, LNKB, 0 }, 219 Package() {0x0000FFFF, 2, LNKC, 0 }, 220 Package() {0x0000FFFF, 3, LNKD, 0 }, 221 }) 222 223 Name(AR04, Package() 224 { 225 // PCIE Port #1 Slot 226 Package() {0x0000FFFF, 0, 0, 16 }, 227 Package() {0x0000FFFF, 1, 0, 17 }, 228 Package() {0x0000FFFF, 2, 0, 18 }, 229 Package() {0x0000FFFF, 3, 0, 19 }, 230 }) 231 232 Name(PR05, Package() 233 { 234 // PCIE Port #2 Slot 235 Package() {0x0000FFFF, 0, LNKB, 0 }, 236 Package() {0x0000FFFF, 1, LNKC, 0 }, 237 Package() {0x0000FFFF, 2, LNKD, 0 }, 238 Package() {0x0000FFFF, 3, LNKA, 0 }, 239 }) 240 241 Name(AR05, Package() 242 { 243 // PCIE Port #2 Slot 244 Package() {0x0000FFFF, 0, 0, 17 }, 245 Package() {0x0000FFFF, 1, 0, 18 }, 246 Package() {0x0000FFFF, 2, 0, 19 }, 247 Package() {0x0000FFFF, 3, 0, 16 }, 248 }) 249 250 Name(PR06, Package() 251 { 252 // PCIE Port #3 Slot 253 Package() {0x0000FFFF, 0, LNKC, 0 }, 254 Package() {0x0000FFFF, 1, LNKD, 0 }, 255 Package() {0x0000FFFF, 2, LNKA, 0 }, 256 Package() {0x0000FFFF, 3, LNKB, 0 }, 257 }) 258 259 Name(AR06, Package() 260 { 261 // PCIE Port #3 Slot 262 Package() {0x0000FFFF, 0, 0, 18 }, 263 Package() {0x0000FFFF, 1, 0, 19 }, 264 Package() {0x0000FFFF, 2, 0, 16 }, 265 Package() {0x0000FFFF, 3, 0, 17 }, 266 }) 267 268 Name(PR07, Package() 269 { 270 // PCIE Port #4 Slot 271 Package() {0x0000FFFF, 0, LNKD, 0 }, 272 Package() {0x0000FFFF, 1, LNKA, 0 }, 273 Package() {0x0000FFFF, 2, LNKB, 0 }, 274 Package() {0x0000FFFF, 3, LNKC, 0 }, 275 }) 276 277 Name(AR07, Package() 278 { 279 // PCIE Port #4 Slot 280 Package() {0x0000FFFF, 0, 0, 19 }, 281 Package() {0x0000FFFF, 1, 0, 16 }, 282 Package() {0x0000FFFF, 2, 0, 17 }, 283 Package() {0x0000FFFF, 3, 0, 18 }, 284 }) 285 286 Name(PR01, Package() 287 { 288 // PCI slot 1 289 Package() {0x0000FFFF, 0, LNKF, 0 }, 290 Package() {0x0000FFFF, 1, LNKG, 0 }, 291 Package() {0x0000FFFF, 2, LNKH, 0 }, 292 Package() {0x0000FFFF, 3, LNKE, 0 }, 293 // PCI slot 2 294 Package() {0x0001FFFF, 0, LNKG, 0 }, 295 Package() {0x0001FFFF, 1, LNKF, 0 }, 296 Package() {0x0001FFFF, 2, LNKE, 0 }, 297 Package() {0x0001FFFF, 3, LNKH, 0 }, 298 // PCI slot 3 299 Package() {0x0002FFFF, 0, LNKC, 0 }, 300 Package() {0x0002FFFF, 1, LNKD, 0 }, 301 Package() {0x0002FFFF, 2, LNKB, 0 }, 302 Package() {0x0002FFFF, 3, LNKA, 0 }, 303 // PCI slot 4 304 Package() {0x0003FFFF, 0, LNKD, 0 }, 305 Package() {0x0003FFFF, 1, LNKC, 0 }, 306 Package() {0x0003FFFF, 2, LNKF, 0 }, 307 Package() {0x0003FFFF, 3, LNKG, 0 }, 308 }) 309 310 Name(AR01, Package() 311 { 312 // PCI slot 1 313 Package() {0x0000FFFF, 0, 0, 21 }, 314 Package() {0x0000FFFF, 1, 0, 22 }, 315 Package() {0x0000FFFF, 2, 0, 23 }, 316 Package() {0x0000FFFF, 3, 0, 20 }, 317 // PCI slot 2 318 Package() {0x0001FFFF, 0, 0, 22 }, 319 Package() {0x0001FFFF, 1, 0, 21 }, 320 Package() {0x0001FFFF, 2, 0, 20 }, 321 Package() {0x0001FFFF, 3, 0, 23 }, 322 // PCI slot 3 323 Package() {0x0002FFFF, 0, 0, 18 }, 324 Package() {0x0002FFFF, 1, 0, 19 }, 325 Package() {0x0002FFFF, 2, 0, 17 }, 326 Package() {0x0002FFFF, 3, 0, 16 }, 327 // PCI slot 4 328 Package() {0x0003FFFF, 0, 0, 19 }, 329 Package() {0x0003FFFF, 1, 0, 18 }, 330 Package() {0x0003FFFF, 2, 0, 21 }, 331 Package() {0x0003FFFF, 3, 0, 22 }, 332 }) 333 //--------------------------------------------------------------------------- 334 // List of IRQ resource buffers compatible with _PRS return format. 335 //--------------------------------------------------------------------------- 336 // Naming legend: 337 // RSxy, PRSy - name of the IRQ resource buffer to be returned by _PRS, "xy" - last two characters of IRQ Link name. 338 // Note. PRSy name is generated if IRQ Link name starts from "LNK". 339 // HLxy , LLxy - reference names, can be used to access bit mask of available IRQs. HL and LL stand for active High(Low) Level triggered Irq model. 340 //--------------------------------------------------------------------------- 341 Name(PRSA, ResourceTemplate() // Link name: LNKA 342 { 343 IRQ(Level, ActiveLow, Shared, LLKA) {3,4,5,6,10,11,12,14,15} 344 }) 345 Alias(PRSA,PRSB) // Link name: LNKB 346 Alias(PRSA,PRSC) // Link name: LNKC 347 Alias(PRSA,PRSD) // Link name: LNKD 348 Alias(PRSA,PRSE) // Link name: LNKE 349 Alias(PRSA,PRSF) // Link name: LNKF 350 Alias(PRSA,PRSG) // Link name: LNKG 351 Alias(PRSA,PRSH) // Link name: LNKH 352 //--------------------------------------------------------------------------- 353 // Begin PCI tree object scope 354 //--------------------------------------------------------------------------- 355 356 Device(PCI0) // PCI Bridge "Host Bridge" 357 { 358 Name(_HID, EISAID("PNP0A08")) // Indicates PCI Express/PCI-X Mode2 host hierarchy 359 Name(_CID, EISAID("PNP0A03")) // To support legacy OS that doesn't understand the new HID 360 Name(_ADR, 0x00000000) 361 Method(^BN00, 0) { return(0x0000) } // Returns default Bus number for Peer PCI busses. Name can be overriden with control method placed directly under Device scope 362 Method(_BBN, 0) { return(BN00()) } // Bus number, optional for the Root PCI Bus 363 Name(_UID, 0x0000) // Unique Bus ID, optional 364 Name(_DEP, Package(0x1) 365 { 366 PEPD 367 }) 368 369 Method(_PRT,0) 370 { 371 If(PICM) {Return(AR00)} // APIC mode 372 Return (PR00) // PIC Mode 373 } // end _PRT 374 375 include("HOST_BUS.ASL") 376 Device(LPCB) // LPC Bridge 377 { 378 Name(_ADR, 0x001F0000) 379 include("LpcB.asl") 380 } // end "LPC Bridge" 381 382 } // end PCI0 Bridge "Host Bridge" 383 } // end _SB scope 384