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 49Device(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 121Device(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 193Device(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 265Device(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 337Device(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 409Device(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 481Device(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 553Device(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