1 /**************************************************************************; 2 ;* *; 3 ;* *; 4 ;* Intel Corporation - ACPI Reference Code for the Baytrail *; 5 ;* Family of Customer Reference Boards. *; 6 ;* *; 7 ;* *; 8 ;* Copyright (c) 2012 - 2014, 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 23 24 // Use this information when determining the Possible IRQs that can be 25 // used in a given system. 26 // 27 // The following IRQs are always in use by legacy devices: 28 // 0 = System Timer 29 // 2 = 8259 PIC 30 // 8 = RTC 31 // 9 = SCI Interrupt (It may be used, we choose not to) 32 // 13 = Co-processor Error 33 // 34 // The following may be in use by legacy devices: 35 // 1 = If using PS/2 Keyboard 36 // 3 = If COMx Port Enabled and IRQ = 3 37 // 4 = If COMx Port Enabled and IRQ = 4 38 // 5 = If LPT Port Enabled and IRQ = 5 39 // 6 = If FDC Enabled 40 // 7 = If LPT Port Enabled and IRQ = 7 41 // 12 = If using PS/2 Mouse 42 // 14 = Primary IDE (If populated and in Compatibility Mode) 43 // 15 = Secondary IDE (If populated and in Compatibility Mode) 44 // 45 // The following will never be in use by legacy devices: 46 // 10 = Assign to PARC, PCRC, PERC, PGRC 47 // 11 = Assign to PBRC, PDRC, PFRC, PHRC 48 49 Device(LNKA) // PARC Routing Resource 50 { 51 Name(_HID,EISAID("PNP0C0F")) // PCI Interrupt Link Device 52 53 Name(_UID,1) // Unique to other Link Devices 54 55 // Disable the PCI IRQ. 56 57 Method(_DIS,0,Serialized) 58 { 59 Or(PARC,0x80,PARC) 60 } 61 62 // Possible IRQ Resource Setting. 63 64 Method (_PRS, 0, Serialized) 65 { 66 return (PRSA) 67 } 68 69 // Current IRQ Resource Setting. 70 71 Method(_CRS,0,Serialized) 72 { 73 Name(RTLA,ResourceTemplate() 74 { 75 IRQ(Level,ActiveLow,Shared) {} 76 }) 77 78 // Point to specific byte. 79 80 CreateWordField(RTLA,1,IRQ0) 81 82 // Zero out IRQ mask bits 0-15 83 84 Store(Zero,IRQ0) 85 86 ShiftLeft(1,And(PARC,0x0F),IRQ0) 87 88 Return(RTLA) 89 } 90 91 // Set IRQ Resource Setting. 92 93 Method(_SRS,1,Serialized) 94 { 95 // Point to the specific byte passed in 96 97 CreateWordField(Arg0,1,IRQ0) 98 99 // Determine the IRQ bit to set and store it 100 101 FindSetRightBit(IRQ0,Local0) 102 Decrement(Local0) 103 Store(Local0,PARC) 104 } 105 106 // PCI IRQ Status. 107 108 Method(_STA,0,Serialized) 109 { 110 If(And(PARC,0x80)) 111 { 112 Return(0x0009) 113 } 114 Else 115 { 116 Return(0x000B) 117 } 118 } 119 } 120 121 Device(LNKB) // PBRC Routing Resource 122 { 123 Name(_HID,EISAID("PNP0C0F")) 124 125 Name(_UID,2) 126 127 // Disable the PCI IRQ. 128 129 Method(_DIS,0,Serialized) 130 { 131 Or(PBRC,0x80,PBRC) 132 } 133 134 // Possible IRQ Resource Setting. 135 136 Method (_PRS, 0, Serialized) 137 { 138 return (PRSB) 139 } 140 141 // Current IRQ Resource Setting. 142 143 Method(_CRS,0,Serialized) 144 { 145 Name(RTLB,ResourceTemplate() 146 { 147 IRQ(Level,ActiveLow,Shared) {} 148 }) 149 150 // Point to specific byte. 151 152 CreateWordField(RTLB,1,IRQ0) 153 154 // Zero out IRQ mask bits 0-15 155 156 Store(Zero,IRQ0) 157 158 ShiftLeft(1,And(PBRC,0x0F),IRQ0) 159 160 Return(RTLB) 161 } 162 163 // Set IRQ Resource Setting. 164 165 Method(_SRS,1,Serialized) 166 { 167 // Point to the specific byte passed in. 168 169 CreateWordField(Arg0,1,IRQ0) 170 171 // Determine the IRQ bit to set and store it, 172 173 FindSetRightBit(IRQ0,Local0) 174 Decrement(Local0) 175 Store(Local0,PBRC) 176 } 177 178 // PCI IRQ Status. 179 180 Method(_STA,0,Serialized) 181 { 182 If(And(PBRC,0x80)) 183 { 184 Return(0x0009) 185 } 186 Else 187 { 188 Return(0x000B) 189 } 190 } 191 } 192 193 Device(LNKC) // PCRC Routing Resource 194 { 195 Name(_HID,EISAID("PNP0C0F")) 196 197 Name(_UID,3) 198 199 // Disable the PCI IRQ. 200 201 Method(_DIS,0,Serialized) 202 { 203 Or(PCRC,0x80,PCRC) 204 } 205 206 // Possible IRQ Resource Setting. 207 208 Method (_PRS, 0, Serialized) 209 { 210 return (PRSC) 211 } 212 213 // Current IRQ Resource Setting. 214 215 Method(_CRS,0,Serialized) 216 { 217 Name(RTLC,ResourceTemplate() 218 { 219 IRQ(Level,ActiveLow,Shared) {} 220 }) 221 222 // Point to specific byte. 223 224 CreateWordField(RTLC,1,IRQ0) 225 226 // Zero out IRQ mask bits 0-15 227 228 Store(Zero,IRQ0) 229 230 ShiftLeft(1,And(PCRC,0x0F),IRQ0) 231 232 Return(RTLC) 233 } 234 235 // Set IRQ Resource Setting. 236 237 Method(_SRS,1,Serialized) 238 { 239 // Point to the specific byte passed in. 240 241 CreateWordField(Arg0,1,IRQ0) 242 243 // Determine the IRQ bit to set and store it, 244 245 FindSetRightBit(IRQ0,Local0) 246 Decrement(Local0) 247 Store(Local0,PCRC) 248 } 249 250 // PCI IRQ Status. 251 252 Method(_STA,0,Serialized) 253 { 254 If(And(PCRC,0x80)) 255 { 256 Return(0x0009) 257 } 258 Else 259 { 260 Return(0x000B) 261 } 262 } 263 } 264 265 Device(LNKD) // PDRC Routing Resource 266 { 267 Name(_HID,EISAID("PNP0C0F")) 268 269 Name(_UID,4) 270 271 // Disable the PCI IRQ. 272 273 Method(_DIS,0,Serialized) 274 { 275 Or(PDRC,0x80,PDRC) 276 } 277 278 // Possible IRQ Resource Setting. 279 280 Method (_PRS, 0, Serialized) 281 { 282 return (PRSD) 283 } 284 285 // Current IRQ Resource Setting. 286 287 Method(_CRS,0,Serialized) 288 { 289 Name(RTLD,ResourceTemplate() 290 { 291 IRQ(Level,ActiveLow,Shared) {} 292 }) 293 294 // Point to specific byte. 295 296 CreateWordField(RTLD,1,IRQ0) 297 298 // Zero out IRQ mask bits 0-15 299 300 Store(Zero,IRQ0) 301 302 ShiftLeft(1,And(PDRC,0x0F),IRQ0) 303 304 Return(RTLD) 305 } 306 307 // Set IRQ Resource Setting. 308 309 Method(_SRS,1,Serialized) 310 { 311 // Point to the specific byte passed in. 312 313 CreateWordField(Arg0,1,IRQ0) 314 315 // Determine the IRQ bit to set and store it, 316 317 FindSetRightBit(IRQ0,Local0) 318 Decrement(Local0) 319 Store(Local0,PDRC) 320 } 321 322 // PCI IRQ Status. 323 324 Method(_STA,0,Serialized) 325 { 326 If(And(PDRC,0x80)) 327 { 328 Return(0x0009) 329 } 330 Else 331 { 332 Return(0x000B) 333 } 334 } 335 } 336 337 Device(LNKE) // PERC Routing Resource 338 { 339 Name(_HID,EISAID("PNP0C0F")) 340 341 Name(_UID,5) 342 343 // Disable the PCI IRQ. 344 345 Method(_DIS,0,Serialized) 346 { 347 Or(PERC,0x80,PERC) 348 } 349 350 // Possible IRQ Resource Setting. 351 352 Method (_PRS, 0, Serialized) 353 { 354 return (PRSE) 355 } 356 357 // Current IRQ Resource Setting. 358 359 Method(_CRS,0,Serialized) 360 { 361 Name(RTLE,ResourceTemplate() 362 { 363 IRQ(Level,ActiveLow,Shared) {} 364 }) 365 366 // Point to specific byte. 367 368 CreateWordField(RTLE,1,IRQ0) 369 370 // Zero out IRQ mask bits 0-15 371 372 Store(Zero,IRQ0) 373 374 ShiftLeft(1,And(PERC,0x0F),IRQ0) 375 376 Return(RTLE) 377 } 378 379 // Set IRQ Resource Setting. 380 381 Method(_SRS,1,Serialized) 382 { 383 // Point to the specific byte passed in 384 385 CreateWordField(Arg0,1,IRQ0) 386 387 // Determine the IRQ bit to set and store it 388 389 FindSetRightBit(IRQ0,Local0) 390 Decrement(Local0) 391 Store(Local0,PERC) 392 } 393 394 // PCI IRQ Status. 395 396 Method(_STA,0,Serialized) 397 { 398 If(And(PERC,0x80)) 399 { 400 Return(0x0009) 401 } 402 Else 403 { 404 Return(0x000B) 405 } 406 } 407 } 408 409 Device(LNKF) // PFRC Routing Resource 410 { 411 Name(_HID,EISAID("PNP0C0F")) 412 413 Name(_UID,6) 414 415 // Disable the PCI IRQ. 416 417 Method(_DIS,0,Serialized) 418 { 419 Or(PFRC,0x80,PFRC) 420 } 421 422 // Possible IRQ Resource Setting. 423 424 Method (_PRS, 0, Serialized) 425 { 426 return (PRSF) 427 } 428 429 // Current IRQ Resource Setting. 430 431 Method(_CRS,0,Serialized) 432 { 433 Name(RTLF,ResourceTemplate() 434 { 435 IRQ(Level,ActiveLow,Shared) {} 436 }) 437 438 // Point to specific byte. 439 440 CreateWordField(RTLF,1,IRQ0) 441 442 // Zero out IRQ mask bits 0-15 443 444 Store(Zero,IRQ0) 445 446 ShiftLeft(1,And(PFRC,0x0F),IRQ0) 447 448 Return(RTLF) 449 } 450 451 // Set IRQ Resource Setting. 452 453 Method(_SRS,1,Serialized) 454 { 455 // Point to the specific byte passed in. 456 457 CreateWordField(Arg0,1,IRQ0) 458 459 // Determine the IRQ bit to set and store it, 460 461 FindSetRightBit(IRQ0,Local0) 462 Decrement(Local0) 463 Store(Local0,PFRC) 464 } 465 466 // PCI IRQ Status. 467 468 Method(_STA,0,Serialized) 469 { 470 If(And(PFRC,0x80)) 471 { 472 Return(0x0009) 473 } 474 Else 475 { 476 Return(0x000B) 477 } 478 } 479 } 480 481 Device(LNKG) // PGRC Routing Resource 482 { 483 Name(_HID,EISAID("PNP0C0F")) 484 485 Name(_UID,7) 486 487 // Disable the PCI IRQ. 488 489 Method(_DIS,0,Serialized) 490 { 491 Or(PGRC,0x80,PGRC) 492 } 493 494 // Possible IRQ Resource Setting. 495 496 Method (_PRS, 0, Serialized) 497 { 498 return (PRSG) 499 } 500 501 // Current IRQ Resource Setting. 502 503 Method(_CRS,0,Serialized) 504 { 505 Name(RTLG,ResourceTemplate() 506 { 507 IRQ(Level,ActiveLow,Shared) {} 508 }) 509 510 // Point to specific byte. 511 512 CreateWordField(RTLG,1,IRQ0) 513 514 // Zero out IRQ mask bits 0-15 515 516 Store(Zero,IRQ0) 517 518 ShiftLeft(1,And(PGRC,0x0F),IRQ0) 519 520 Return(RTLG) 521 } 522 523 // Set IRQ Resource Setting. 524 525 Method(_SRS,1,Serialized) 526 { 527 // Point to the specific byte passed in. 528 529 CreateWordField(Arg0,1,IRQ0) 530 531 // Determine the IRQ bit to set and store it, 532 533 FindSetRightBit(IRQ0,Local0) 534 Decrement(Local0) 535 Store(Local0,PGRC) 536 } 537 538 // PCI IRQ Status. 539 540 Method(_STA,0,Serialized) 541 { 542 If(And(PGRC,0x80)) 543 { 544 Return(0x0009) 545 } 546 Else 547 { 548 Return(0x000B) 549 } 550 } 551 } 552 553 Device(LNKH) // PHRC Routing Resource 554 { 555 Name(_HID,EISAID("PNP0C0F")) 556 557 Name(_UID,8) 558 559 // Disable the PCI IRQ. 560 561 Method(_DIS,0,Serialized) 562 { 563 Or(PHRC,0x80,PHRC) 564 } 565 566 // Possible IRQ Resource Setting. 567 568 Method (_PRS, 0, Serialized) 569 { 570 return (PRSH) 571 } 572 573 // Current IRQ Resource Setting. 574 575 Method(_CRS,0,Serialized) 576 { 577 Name(RTLH,ResourceTemplate() 578 { 579 IRQ(Level,ActiveLow,Shared) {} 580 }) 581 582 // Point to specific byte. 583 584 CreateWordField(RTLH,1,IRQ0) 585 586 // Zero out IRQ mask bits 0-15 587 588 Store(Zero,IRQ0) 589 590 ShiftLeft(1,And(PHRC,0x0F),IRQ0) 591 592 Return(RTLH) 593 } 594 595 // Set IRQ Resource Setting. 596 597 Method(_SRS,1,Serialized) 598 { 599 // Point to the specific byte passed in. 600 601 CreateWordField(Arg0,1,IRQ0) 602 603 // Determine the IRQ bit to set and store it, 604 605 FindSetRightBit(IRQ0,Local0) 606 Decrement(Local0) 607 Store(Local0,PHRC) 608 } 609 610 // PCI IRQ Status. 611 612 Method(_STA,0,Serialized) 613 { 614 If(And(PHRC,0x80)) 615 { 616 Return(0x0009) 617 } 618 Else 619 { 620 Return(0x000B) 621 } 622 } 623 } 624