Annotation of qemu/roms/seabios/src/acpi-dsdt.dsl, revision 1.1.1.5

1.1       root        1: /*
                      2:  * Bochs/QEMU ACPI DSDT ASL definition
                      3:  *
                      4:  * Copyright (c) 2006 Fabrice Bellard
                      5:  *
                      6:  * This library is free software; you can redistribute it and/or
                      7:  * modify it under the terms of the GNU Lesser General Public
                      8:  * License version 2 as published by the Free Software Foundation.
                      9:  *
                     10:  * This library is distributed in the hope that it will be useful,
                     11:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
                     12:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
                     13:  * Lesser General Public License for more details.
                     14:  *
                     15:  * You should have received a copy of the GNU Lesser General Public
                     16:  * License along with this library; if not, write to the Free Software
                     17:  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
                     18:  */
                     19: DefinitionBlock (
                     20:     "acpi-dsdt.aml",    // Output Filename
                     21:     "DSDT",             // Signature
                     22:     0x01,               // DSDT Compliance Revision
                     23:     "BXPC",             // OEMID
                     24:     "BXDSDT",           // TABLE ID
                     25:     0x1                 // OEM Revision
                     26:     )
                     27: {
                     28:     Scope (\)
                     29:     {
                     30:         /* Debug Output */
1.1.1.4   root       31:         OperationRegion (DBG, SystemIO, 0x0402, 0x01)
                     32:         Field (DBG, ByteAcc, NoLock, Preserve)
1.1       root       33:         {
1.1.1.4   root       34:             DBGB,   8,
1.1       root       35:         }
                     36: 
1.1.1.4   root       37:         /* Debug method - use this method to send output to the QEMU
                     38:          * BIOS debug port.  This method handles strings, integers,
                     39:          * and buffers.  For example: DBUG("abc") DBUG(0x123) */
                     40:         Method(DBUG, 1) {
                     41:             ToHexString(Arg0, Local0)
                     42:             ToBuffer(Local0, Local0)
                     43:             Subtract(SizeOf(Local0), 1, Local1)
                     44:             Store(Zero, Local2)
                     45:             While (LLess(Local2, Local1)) {
                     46:                 Store(DerefOf(Index(Local0, Local2)), DBGB)
                     47:                 Increment(Local2)
                     48:             }
                     49:             Store(0x0A, DBGB)
                     50:         }
                     51:     }
1.1       root       52: 
                     53:     /* PCI Bus definition */
                     54:     Scope(\_SB) {
                     55:         Device(PCI0) {
                     56:             Name (_HID, EisaId ("PNP0A03"))
                     57:             Name (_ADR, 0x00)
                     58:             Name (_UID, 1)
                     59:             Name(_PRT, Package() {
                     60:                 /* PCI IRQ routing table, example from ACPI 2.0a specification,
                     61:                    section 6.2.8.1 */
                     62:                 /* Note: we provide the same info as the PCI routing
                     63:                    table of the Bochs BIOS */
                     64: #define prt_slot(nr, lnk0, lnk1, lnk2, lnk3) \
                     65:        Package() { nr##ffff, 0, lnk0, 0 }, \
                     66:        Package() { nr##ffff, 1, lnk1, 0 }, \
                     67:        Package() { nr##ffff, 2, lnk2, 0 }, \
                     68:        Package() { nr##ffff, 3, lnk3, 0 }
                     69: 
                     70: #define prt_slot0(nr) prt_slot(nr, LNKD, LNKA, LNKB, LNKC)
                     71: #define prt_slot1(nr) prt_slot(nr, LNKA, LNKB, LNKC, LNKD)
                     72: #define prt_slot2(nr) prt_slot(nr, LNKB, LNKC, LNKD, LNKA)
                     73: #define prt_slot3(nr) prt_slot(nr, LNKC, LNKD, LNKA, LNKB)
                     74:                prt_slot0(0x0000),
1.1.1.2   root       75:                /* Device 1 is power mgmt device, and can only use irq 9 */
1.1.1.3   root       76:                Package() { 0x0001ffff, 0, LNKS, 0 },
1.1.1.2   root       77:                Package() { 0x0001ffff, 1, LNKB, 0 },
                     78:                Package() { 0x0001ffff, 2, LNKC, 0 },
                     79:                Package() { 0x0001ffff, 3, LNKD, 0 },
1.1       root       80:                prt_slot2(0x0002),
                     81:                prt_slot3(0x0003),
                     82:                prt_slot0(0x0004),
                     83:                prt_slot1(0x0005),
                     84:                prt_slot2(0x0006),
                     85:                prt_slot3(0x0007),
                     86:                prt_slot0(0x0008),
                     87:                prt_slot1(0x0009),
                     88:                prt_slot2(0x000a),
                     89:                prt_slot3(0x000b),
                     90:                prt_slot0(0x000c),
                     91:                prt_slot1(0x000d),
                     92:                prt_slot2(0x000e),
                     93:                prt_slot3(0x000f),
                     94:                prt_slot0(0x0010),
                     95:                prt_slot1(0x0011),
                     96:                prt_slot2(0x0012),
                     97:                prt_slot3(0x0013),
                     98:                prt_slot0(0x0014),
                     99:                prt_slot1(0x0015),
                    100:                prt_slot2(0x0016),
                    101:                prt_slot3(0x0017),
                    102:                prt_slot0(0x0018),
                    103:                prt_slot1(0x0019),
                    104:                prt_slot2(0x001a),
                    105:                prt_slot3(0x001b),
                    106:                prt_slot0(0x001c),
                    107:                prt_slot1(0x001d),
                    108:                prt_slot2(0x001e),
                    109:                prt_slot3(0x001f),
                    110:             })
                    111: 
                    112:             OperationRegion(PCST, SystemIO, 0xae00, 0x08)
                    113:             Field (PCST, DWordAcc, NoLock, WriteAsZeros)
                    114:             {
                    115:                 PCIU, 32,
                    116:                 PCID, 32,
                    117:             }
                    118: 
                    119:             OperationRegion(SEJ, SystemIO, 0xae08, 0x04)
                    120:             Field (SEJ, DWordAcc, NoLock, WriteAsZeros)
                    121:             {
                    122:                 B0EJ, 32,
                    123:             }
                    124: 
1.1.1.4   root      125:             OperationRegion(RMVC, SystemIO, 0xae0c, 0x04)
                    126:             Field(RMVC, DWordAcc, NoLock, WriteAsZeros)
                    127:             {
                    128:                 PCRM, 32,
                    129:             }
                    130: 
1.1       root      131: #define hotplug_slot(name, nr) \
                    132:             Device (S##name) {                    \
                    133:                Name (_ADR, nr##0000)              \
                    134:                Method (_EJ0,1) {                  \
                    135:                     Store(ShiftLeft(1, nr), B0EJ) \
                    136:                     Return (0x0)                  \
                    137:                }                                  \
                    138:                Name (_SUN, name)                  \
                    139:             }
                    140: 
                    141:            hotplug_slot(1, 0x0001)
                    142:            hotplug_slot(2, 0x0002)
                    143:            hotplug_slot(3, 0x0003)
                    144:            hotplug_slot(4, 0x0004)
                    145:            hotplug_slot(5, 0x0005)
                    146:            hotplug_slot(6, 0x0006)
                    147:            hotplug_slot(7, 0x0007)
                    148:            hotplug_slot(8, 0x0008)
                    149:            hotplug_slot(9, 0x0009)
                    150:            hotplug_slot(10, 0x000a)
                    151:            hotplug_slot(11, 0x000b)
                    152:            hotplug_slot(12, 0x000c)
                    153:            hotplug_slot(13, 0x000d)
                    154:            hotplug_slot(14, 0x000e)
                    155:            hotplug_slot(15, 0x000f)
                    156:            hotplug_slot(16, 0x0010)
                    157:            hotplug_slot(17, 0x0011)
                    158:            hotplug_slot(18, 0x0012)
                    159:            hotplug_slot(19, 0x0013)
                    160:            hotplug_slot(20, 0x0014)
                    161:            hotplug_slot(21, 0x0015)
                    162:            hotplug_slot(22, 0x0016)
                    163:            hotplug_slot(23, 0x0017)
                    164:            hotplug_slot(24, 0x0018)
                    165:            hotplug_slot(25, 0x0019)
                    166:            hotplug_slot(26, 0x001a)
                    167:            hotplug_slot(27, 0x001b)
                    168:            hotplug_slot(28, 0x001c)
                    169:            hotplug_slot(29, 0x001d)
                    170:            hotplug_slot(30, 0x001e)
                    171:            hotplug_slot(31, 0x001f)
                    172: 
                    173:             Name (_CRS, ResourceTemplate ()
                    174:             {
                    175:                 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    176:                     0x0000,             // Address Space Granularity
                    177:                     0x0000,             // Address Range Minimum
                    178:                     0x00FF,             // Address Range Maximum
                    179:                     0x0000,             // Address Translation Offset
                    180:                     0x0100,             // Address Length
                    181:                     ,, )
                    182:                 IO (Decode16,
                    183:                     0x0CF8,             // Address Range Minimum
                    184:                     0x0CF8,             // Address Range Maximum
                    185:                     0x01,               // Address Alignment
                    186:                     0x08,               // Address Length
                    187:                     )
                    188:                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    189:                     0x0000,             // Address Space Granularity
                    190:                     0x0000,             // Address Range Minimum
                    191:                     0x0CF7,             // Address Range Maximum
                    192:                     0x0000,             // Address Translation Offset
                    193:                     0x0CF8,             // Address Length
                    194:                     ,, , TypeStatic)
                    195:                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    196:                     0x0000,             // Address Space Granularity
                    197:                     0x0D00,             // Address Range Minimum
                    198:                     0xFFFF,             // Address Range Maximum
                    199:                     0x0000,             // Address Translation Offset
                    200:                     0xF300,             // Address Length
                    201:                     ,, , TypeStatic)
                    202:                 DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    203:                     0x00000000,         // Address Space Granularity
                    204:                     0x000A0000,         // Address Range Minimum
                    205:                     0x000BFFFF,         // Address Range Maximum
                    206:                     0x00000000,         // Address Translation Offset
                    207:                     0x00020000,         // Address Length
                    208:                     ,, , AddressRangeMemory, TypeStatic)
                    209:                 DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
                    210:                     0x00000000,         // Address Space Granularity
                    211:                     0xE0000000,         // Address Range Minimum
                    212:                     0xFEBFFFFF,         // Address Range Maximum
                    213:                     0x00000000,         // Address Translation Offset
                    214:                     0x1EC00000,         // Address Length
                    215:                     ,, , AddressRangeMemory, TypeStatic)
                    216:             })
                    217:         }
                    218: 
                    219:         Device(HPET) {
                    220:             Name(_HID,  EISAID("PNP0103"))
                    221:             Name(_UID, 0)
                    222:             Method (_STA, 0, NotSerialized) {
                    223:                     Return(0x0F)
                    224:             }
                    225:             Name(_CRS, ResourceTemplate() {
                    226:                 DWordMemory(
                    227:                     ResourceConsumer, PosDecode, MinFixed, MaxFixed,
                    228:                     NonCacheable, ReadWrite,
                    229:                     0x00000000,
                    230:                     0xFED00000,
                    231:                     0xFED003FF,
                    232:                     0x00000000,
                    233:                     0x00000400 /* 1K memory: FED00000 - FED003FF */
                    234:                 )
                    235:             })
                    236:         }
                    237:     }
                    238: 
                    239:     Scope(\_SB.PCI0) {
                    240:         Device (VGA) {
                    241:                  Name (_ADR, 0x00020000)
1.1.1.5 ! root      242:                  OperationRegion(PCIC, PCI_Config, Zero, 0x4)
        !           243:                  Field(PCIC, DWordAcc, NoLock, Preserve) {
        !           244:                          VEND, 32
        !           245:                  }
1.1       root      246:                  Method (_S1D, 0, NotSerialized)
                    247:                  {
                    248:                          Return (0x00)
                    249:                  }
                    250:                  Method (_S2D, 0, NotSerialized)
                    251:                  {
                    252:                          Return (0x00)
                    253:                  }
                    254:                  Method (_S3D, 0, NotSerialized)
                    255:                  {
1.1.1.5 ! root      256:                          If (LEqual(VEND, 0x1001b36)) {
        !           257:                                  Return (0x03)           // QXL
        !           258:                          } Else {
        !           259:                                  Return (0x00)
        !           260:                          }
1.1       root      261:                  }
1.1.1.4   root      262:                  Method(_RMV) { Return (0x00) }
1.1       root      263:         }
                    264: 
                    265:        /* PIIX3 ISA bridge */
                    266:         Device (ISA) {
                    267:             Name (_ADR, 0x00010000)
1.1.1.4   root      268:             Method(_RMV) { Return (0x00) }
                    269: 
1.1       root      270: 
                    271:             /* PIIX PCI to ISA irq remapping */
                    272:             OperationRegion (P40C, PCI_Config, 0x60, 0x04)
                    273: 
                    274:             /* Real-time clock */
                    275:             Device (RTC)
                    276:             {
                    277:                 Name (_HID, EisaId ("PNP0B00"))
                    278:                 Name (_CRS, ResourceTemplate ()
                    279:                 {
                    280:                     IO (Decode16, 0x0070, 0x0070, 0x10, 0x02)
                    281:                     IRQNoFlags () {8}
                    282:                     IO (Decode16, 0x0072, 0x0072, 0x02, 0x06)
                    283:                 })
                    284:             }
                    285: 
                    286:             /* Keyboard seems to be important for WinXP install */
                    287:             Device (KBD)
                    288:             {
                    289:                 Name (_HID, EisaId ("PNP0303"))
                    290:                 Method (_STA, 0, NotSerialized)
                    291:                 {
                    292:                     Return (0x0f)
                    293:                 }
                    294: 
                    295:                 Method (_CRS, 0, NotSerialized)
                    296:                 {
                    297:                      Name (TMP, ResourceTemplate ()
                    298:                      {
                    299:                     IO (Decode16,
                    300:                         0x0060,             // Address Range Minimum
                    301:                         0x0060,             // Address Range Maximum
                    302:                         0x01,               // Address Alignment
                    303:                         0x01,               // Address Length
                    304:                         )
                    305:                     IO (Decode16,
                    306:                         0x0064,             // Address Range Minimum
                    307:                         0x0064,             // Address Range Maximum
                    308:                         0x01,               // Address Alignment
                    309:                         0x01,               // Address Length
                    310:                         )
                    311:                     IRQNoFlags ()
                    312:                         {1}
                    313:                     })
                    314:                     Return (TMP)
                    315:                 }
                    316:             }
                    317: 
                    318:            /* PS/2 mouse */
                    319:             Device (MOU)
                    320:             {
                    321:                 Name (_HID, EisaId ("PNP0F13"))
                    322:                 Method (_STA, 0, NotSerialized)
                    323:                 {
                    324:                     Return (0x0f)
                    325:                 }
                    326: 
                    327:                 Method (_CRS, 0, NotSerialized)
                    328:                 {
                    329:                     Name (TMP, ResourceTemplate ()
                    330:                     {
                    331:                          IRQNoFlags () {12}
                    332:                     })
                    333:                     Return (TMP)
                    334:                 }
                    335:             }
                    336: 
                    337:            /* PS/2 floppy controller */
                    338:            Device (FDC0)
                    339:            {
                    340:                Name (_HID, EisaId ("PNP0700"))
                    341:                Method (_STA, 0, NotSerialized)
                    342:                {
                    343:                    Return (0x0F)
                    344:                }
                    345:                Method (_CRS, 0, NotSerialized)
                    346:                {
                    347:                    Name (BUF0, ResourceTemplate ()
                    348:                     {
                    349:                         IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04)
                    350:                         IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
                    351:                         IRQNoFlags () {6}
                    352:                         DMA (Compatibility, NotBusMaster, Transfer8) {2}
                    353:                     })
                    354:                    Return (BUF0)
                    355:                }
                    356:            }
                    357: 
                    358:            /* Parallel port */
                    359:            Device (LPT)
                    360:            {
                    361:                Name (_HID, EisaId ("PNP0400"))
                    362:                Method (_STA, 0, NotSerialized)
                    363:                {
                    364:                    Store (\_SB.PCI0.PX13.DRSA, Local0)
                    365:                    And (Local0, 0x80000000, Local0)
                    366:                    If (LEqual (Local0, 0))
                    367:                    {
                    368:                        Return (0x00)
                    369:                    }
                    370:                    Else
                    371:                    {
                    372:                        Return (0x0F)
                    373:                    }
                    374:                }
                    375:                Method (_CRS, 0, NotSerialized)
                    376:                {
                    377:                    Name (BUF0, ResourceTemplate ()
                    378:                     {
                    379:                        IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
                    380:                        IRQNoFlags () {7}
                    381:                    })
                    382:                    Return (BUF0)
                    383:                }
                    384:            }
                    385: 
                    386:            /* Serial Ports */
                    387:            Device (COM1)
                    388:            {
                    389:                Name (_HID, EisaId ("PNP0501"))
                    390:                Name (_UID, 0x01)
                    391:                Method (_STA, 0, NotSerialized)
                    392:                {
                    393:                    Store (\_SB.PCI0.PX13.DRSC, Local0)
                    394:                    And (Local0, 0x08000000, Local0)
                    395:                    If (LEqual (Local0, 0))
                    396:                    {
                    397:                        Return (0x00)
                    398:                    }
                    399:                    Else
                    400:                    {
                    401:                        Return (0x0F)
                    402:                    }
                    403:                }
                    404:                Method (_CRS, 0, NotSerialized)
                    405:                {
                    406:                    Name (BUF0, ResourceTemplate ()
                    407:                     {
                    408:                        IO (Decode16, 0x03F8, 0x03F8, 0x00, 0x08)
                    409:                        IRQNoFlags () {4}
                    410:                    })
                    411:                    Return (BUF0)
                    412:                }
                    413:            }
                    414: 
                    415:            Device (COM2)
                    416:            {
                    417:                Name (_HID, EisaId ("PNP0501"))
                    418:                Name (_UID, 0x02)
                    419:                Method (_STA, 0, NotSerialized)
                    420:                {
                    421:                    Store (\_SB.PCI0.PX13.DRSC, Local0)
                    422:                    And (Local0, 0x80000000, Local0)
                    423:                    If (LEqual (Local0, 0))
                    424:                    {
                    425:                        Return (0x00)
                    426:                    }
                    427:                    Else
                    428:                    {
                    429:                        Return (0x0F)
                    430:                    }
                    431:                }
                    432:                Method (_CRS, 0, NotSerialized)
                    433:                {
                    434:                    Name (BUF0, ResourceTemplate ()
                    435:                     {
                    436:                        IO (Decode16, 0x02F8, 0x02F8, 0x00, 0x08)
                    437:                        IRQNoFlags () {3}
                    438:                    })
                    439:                    Return (BUF0)
                    440:                }
                    441:            }
                    442:         }
                    443: 
                    444:        /* PIIX4 PM */
                    445:         Device (PX13) {
                    446:            Name (_ADR, 0x00010003)
                    447: 
                    448:            OperationRegion (P13C, PCI_Config, 0x5c, 0x24)
                    449:            Field (P13C, DWordAcc, NoLock, Preserve)
                    450:            {
                    451:                DRSA, 32,
                    452:                DRSB, 32,
                    453:                DRSC, 32,
                    454:                DRSE, 32,
                    455:                DRSF, 32,
                    456:                DRSG, 32,
                    457:                DRSH, 32,
                    458:                DRSI, 32,
                    459:                DRSJ, 32
                    460:            }
                    461:        }
1.1.1.4   root      462: 
                    463: #define gen_pci_device(name, nr)                                \
                    464:         Device(SL##name) {                                      \
                    465:             Name (_ADR, nr##0000)                               \
                    466:             Method (_RMV) {                                     \
                    467:                 If (And(\_SB.PCI0.PCRM, ShiftLeft(1, nr))) {    \
                    468:                     Return (0x1)                                \
                    469:                 }                                               \
                    470:                 Return (0x0)                                    \
                    471:             }                                                   \
                    472:             Name (_SUN, name)                                   \
                    473:         }
                    474: 
                    475:         /* VGA (slot 1) and ISA bus (slot 2) defined above */
                    476:        gen_pci_device(3, 0x0003)
                    477:        gen_pci_device(4, 0x0004)
                    478:        gen_pci_device(5, 0x0005)
                    479:        gen_pci_device(6, 0x0006)
                    480:        gen_pci_device(7, 0x0007)
                    481:        gen_pci_device(8, 0x0008)
                    482:        gen_pci_device(9, 0x0009)
                    483:        gen_pci_device(10, 0x000a)
                    484:        gen_pci_device(11, 0x000b)
                    485:        gen_pci_device(12, 0x000c)
                    486:        gen_pci_device(13, 0x000d)
                    487:        gen_pci_device(14, 0x000e)
                    488:        gen_pci_device(15, 0x000f)
                    489:        gen_pci_device(16, 0x0010)
                    490:        gen_pci_device(17, 0x0011)
                    491:        gen_pci_device(18, 0x0012)
                    492:        gen_pci_device(19, 0x0013)
                    493:        gen_pci_device(20, 0x0014)
                    494:        gen_pci_device(21, 0x0015)
                    495:        gen_pci_device(22, 0x0016)
                    496:        gen_pci_device(23, 0x0017)
                    497:        gen_pci_device(24, 0x0018)
                    498:        gen_pci_device(25, 0x0019)
                    499:        gen_pci_device(26, 0x001a)
                    500:        gen_pci_device(27, 0x001b)
                    501:        gen_pci_device(28, 0x001c)
                    502:        gen_pci_device(29, 0x001d)
                    503:        gen_pci_device(30, 0x001e)
                    504:        gen_pci_device(31, 0x001f)
1.1       root      505:     }
                    506: 
                    507:     /* PCI IRQs */
                    508:     Scope(\_SB) {
                    509:          Field (\_SB.PCI0.ISA.P40C, ByteAcc, NoLock, Preserve)
                    510:          {
                    511:              PRQ0,   8,
                    512:              PRQ1,   8,
                    513:              PRQ2,   8,
                    514:              PRQ3,   8
                    515:          }
                    516: 
                    517:         Device(LNKA){
                    518:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    519:                 Name(_UID, 1)
                    520:                 Name(_PRS, ResourceTemplate(){
                    521:                     Interrupt (, Level, ActiveHigh, Shared)
                    522:                         { 5, 10, 11 }
                    523:                 })
                    524:                 Method (_STA, 0, NotSerialized)
                    525:                 {
                    526:                     Store (0x0B, Local0)
                    527:                     If (And (0x80, PRQ0, Local1))
                    528:                     {
                    529:                          Store (0x09, Local0)
                    530:                     }
                    531:                     Return (Local0)
                    532:                 }
                    533:                 Method (_DIS, 0, NotSerialized)
                    534:                 {
                    535:                     Or (PRQ0, 0x80, PRQ0)
                    536:                 }
                    537:                 Method (_CRS, 0, NotSerialized)
                    538:                 {
                    539:                     Name (PRR0, ResourceTemplate ()
                    540:                     {
                    541:                         Interrupt (, Level, ActiveHigh, Shared)
                    542:                             {1}
                    543:                     })
                    544:                     CreateDWordField (PRR0, 0x05, TMP)
                    545:                     Store (PRQ0, Local0)
                    546:                     If (LLess (Local0, 0x80))
                    547:                     {
                    548:                         Store (Local0, TMP)
                    549:                     }
                    550:                     Else
                    551:                     {
                    552:                         Store (Zero, TMP)
                    553:                     }
                    554:                     Return (PRR0)
                    555:                 }
                    556:                 Method (_SRS, 1, NotSerialized)
                    557:                 {
                    558:                     CreateDWordField (Arg0, 0x05, TMP)
                    559:                     Store (TMP, PRQ0)
                    560:                 }
                    561:         }
                    562:         Device(LNKB){
                    563:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    564:                 Name(_UID, 2)
                    565:                 Name(_PRS, ResourceTemplate(){
                    566:                     Interrupt (, Level, ActiveHigh, Shared)
                    567:                         { 5, 10, 11 }
                    568:                 })
                    569:                 Method (_STA, 0, NotSerialized)
                    570:                 {
                    571:                     Store (0x0B, Local0)
                    572:                     If (And (0x80, PRQ1, Local1))
                    573:                     {
                    574:                          Store (0x09, Local0)
                    575:                     }
                    576:                     Return (Local0)
                    577:                 }
                    578:                 Method (_DIS, 0, NotSerialized)
                    579:                 {
                    580:                     Or (PRQ1, 0x80, PRQ1)
                    581:                 }
                    582:                 Method (_CRS, 0, NotSerialized)
                    583:                 {
                    584:                     Name (PRR0, ResourceTemplate ()
                    585:                     {
                    586:                         Interrupt (, Level, ActiveHigh, Shared)
                    587:                             {1}
                    588:                     })
                    589:                     CreateDWordField (PRR0, 0x05, TMP)
                    590:                     Store (PRQ1, Local0)
                    591:                     If (LLess (Local0, 0x80))
                    592:                     {
                    593:                         Store (Local0, TMP)
                    594:                     }
                    595:                     Else
                    596:                     {
                    597:                         Store (Zero, TMP)
                    598:                     }
                    599:                     Return (PRR0)
                    600:                 }
                    601:                 Method (_SRS, 1, NotSerialized)
                    602:                 {
                    603:                     CreateDWordField (Arg0, 0x05, TMP)
                    604:                     Store (TMP, PRQ1)
                    605:                 }
                    606:         }
                    607:         Device(LNKC){
                    608:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    609:                 Name(_UID, 3)
                    610:                 Name(_PRS, ResourceTemplate(){
                    611:                     Interrupt (, Level, ActiveHigh, Shared)
                    612:                         { 5, 10, 11 }
                    613:                 })
                    614:                 Method (_STA, 0, NotSerialized)
                    615:                 {
                    616:                     Store (0x0B, Local0)
                    617:                     If (And (0x80, PRQ2, Local1))
                    618:                     {
                    619:                          Store (0x09, Local0)
                    620:                     }
                    621:                     Return (Local0)
                    622:                 }
                    623:                 Method (_DIS, 0, NotSerialized)
                    624:                 {
                    625:                     Or (PRQ2, 0x80, PRQ2)
                    626:                 }
                    627:                 Method (_CRS, 0, NotSerialized)
                    628:                 {
                    629:                     Name (PRR0, ResourceTemplate ()
                    630:                     {
                    631:                         Interrupt (, Level, ActiveHigh, Shared)
                    632:                             {1}
                    633:                     })
                    634:                     CreateDWordField (PRR0, 0x05, TMP)
                    635:                     Store (PRQ2, Local0)
                    636:                     If (LLess (Local0, 0x80))
                    637:                     {
                    638:                         Store (Local0, TMP)
                    639:                     }
                    640:                     Else
                    641:                     {
                    642:                         Store (Zero, TMP)
                    643:                     }
                    644:                     Return (PRR0)
                    645:                 }
                    646:                 Method (_SRS, 1, NotSerialized)
                    647:                 {
                    648:                     CreateDWordField (Arg0, 0x05, TMP)
                    649:                     Store (TMP, PRQ2)
                    650:                 }
                    651:         }
                    652:         Device(LNKD){
                    653:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    654:                 Name(_UID, 4)
                    655:                 Name(_PRS, ResourceTemplate(){
                    656:                     Interrupt (, Level, ActiveHigh, Shared)
                    657:                         { 5, 10, 11 }
                    658:                 })
                    659:                 Method (_STA, 0, NotSerialized)
                    660:                 {
                    661:                     Store (0x0B, Local0)
                    662:                     If (And (0x80, PRQ3, Local1))
                    663:                     {
                    664:                          Store (0x09, Local0)
                    665:                     }
                    666:                     Return (Local0)
                    667:                 }
                    668:                 Method (_DIS, 0, NotSerialized)
                    669:                 {
                    670:                     Or (PRQ3, 0x80, PRQ3)
                    671:                 }
                    672:                 Method (_CRS, 0, NotSerialized)
                    673:                 {
                    674:                     Name (PRR0, ResourceTemplate ()
                    675:                     {
                    676:                         Interrupt (, Level, ActiveHigh, Shared)
                    677:                             {1}
                    678:                     })
                    679:                     CreateDWordField (PRR0, 0x05, TMP)
                    680:                     Store (PRQ3, Local0)
                    681:                     If (LLess (Local0, 0x80))
                    682:                     {
                    683:                         Store (Local0, TMP)
                    684:                     }
                    685:                     Else
                    686:                     {
                    687:                         Store (Zero, TMP)
                    688:                     }
                    689:                     Return (PRR0)
                    690:                 }
                    691:                 Method (_SRS, 1, NotSerialized)
                    692:                 {
                    693:                     CreateDWordField (Arg0, 0x05, TMP)
                    694:                     Store (TMP, PRQ3)
                    695:                 }
                    696:         }
1.1.1.3   root      697:         Device(LNKS){
                    698:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    699:                 Name(_UID, 5)
                    700:                 Name(_PRS, ResourceTemplate(){
                    701:                     Interrupt (, Level, ActiveHigh, Shared)
                    702:                         { 9 }
                    703:                 })
                    704:                 Method (_STA, 0, NotSerialized)
                    705:                 {
                    706:                     Store (0x0B, Local0)
                    707:                     If (And (0x80, PRQ0, Local1))
                    708:                     {
                    709:                          Store (0x09, Local0)
                    710:                     }
                    711:                     Return (Local0)
                    712:                 }
                    713:                 Method (_DIS, 0, NotSerialized)
                    714:                 {
                    715:                     Or (PRQ0, 0x80, PRQ0)
                    716:                 }
                    717:                 Method (_CRS, 0, NotSerialized)
                    718:                 {
                    719:                     Name (PRR0, ResourceTemplate ()
                    720:                     {
                    721:                         Interrupt (, Level, ActiveHigh, Shared)
                    722:                             {9}
                    723:                     })
                    724:                     CreateDWordField (PRR0, 0x05, TMP)
                    725:                     Store (PRQ0, Local0)
                    726:                     If (LLess (Local0, 0x80))
                    727:                     {
                    728:                         Store (Local0, TMP)
                    729:                     }
                    730:                     Else
                    731:                     {
                    732:                         Store (Zero, TMP)
                    733:                     }
                    734:                     Return (PRR0)
                    735:                 }
                    736:         }
1.1       root      737:     }
                    738: 
                    739:     /*
                    740:      * S3 (suspend-to-ram), S4 (suspend-to-disk) and S5 (power-off) type codes:
                    741:      * must match piix4 emulation.
                    742:      */
                    743:     Name (\_S3, Package (0x04)
                    744:     {
                    745:         0x01,  /* PM1a_CNT.SLP_TYP */
                    746:         0x01,  /* PM1b_CNT.SLP_TYP */
                    747:         Zero,  /* reserved */
                    748:         Zero   /* reserved */
                    749:     })
                    750:     Name (\_S4, Package (0x04)
                    751:     {
                    752:         Zero,  /* PM1a_CNT.SLP_TYP */
                    753:         Zero,  /* PM1b_CNT.SLP_TYP */
                    754:         Zero,  /* reserved */
                    755:         Zero   /* reserved */
                    756:     })
                    757:     Name (\_S5, Package (0x04)
                    758:     {
                    759:         Zero,  /* PM1a_CNT.SLP_TYP */
                    760:         Zero,  /* PM1b_CNT.SLP_TYP */
                    761:         Zero,  /* reserved */
                    762:         Zero   /* reserved */
                    763:     })
                    764: 
1.1.1.3   root      765:     /* CPU hotplug */
                    766:     Scope(\_SB) {
                    767:         /* Objects filled in by run-time generated SSDT */
                    768:         External(NTFY, MethodObj)
                    769:         External(CPON, PkgObj)
                    770: 
                    771:         /* Methods called by run-time generated SSDT Processor objects */
                    772:         Method (CPMA, 1, NotSerialized) {
                    773:             // _MAT method - create an madt apic buffer
                    774:             // Local0 = CPON flag for this cpu
                    775:             Store(DerefOf(Index(CPON, Arg0)), Local0)
                    776:             // Local1 = Buffer (in madt apic form) to return
                    777:             Store(Buffer(8) {0x00, 0x08, 0x00, 0x00, 0x00, 0, 0, 0}, Local1)
                    778:             // Update the processor id, lapic id, and enable/disable status
                    779:             Store(Arg0, Index(Local1, 2))
                    780:             Store(Arg0, Index(Local1, 3))
                    781:             Store(Local0, Index(Local1, 4))
                    782:             Return (Local1)
                    783:         }
                    784:         Method (CPST, 1, NotSerialized) {
                    785:             // _STA method - return ON status of cpu
                    786:             // Local0 = CPON flag for this cpu
                    787:             Store(DerefOf(Index(CPON, Arg0)), Local0)
                    788:             If (Local0) { Return(0xF) } Else { Return(0x0) }
                    789:         }
                    790:         Method (CPEJ, 2, NotSerialized) {
                    791:             // _EJ0 method - eject callback
                    792:             Sleep(200)
                    793:         }
                    794: 
                    795:         /* CPU hotplug notify method */
                    796:         OperationRegion(PRST, SystemIO, 0xaf00, 32)
                    797:         Field (PRST, ByteAcc, NoLock, Preserve)
                    798:         {
                    799:             PRS, 256
                    800:         }
                    801:         Method(PRSC, 0) {
                    802:             // Local5 = active cpu bitmap
                    803:             Store (PRS, Local5)
                    804:             // Local2 = last read byte from bitmap
                    805:             Store (Zero, Local2)
                    806:             // Local0 = cpuid iterator
                    807:             Store (Zero, Local0)
                    808:             While (LLess(Local0, SizeOf(CPON))) {
                    809:                 // Local1 = CPON flag for this cpu
                    810:                 Store(DerefOf(Index(CPON, Local0)), Local1)
                    811:                 If (And(Local0, 0x07)) {
                    812:                     // Shift down previously read bitmap byte
                    813:                     ShiftRight(Local2, 1, Local2)
                    814:                 } Else {
                    815:                     // Read next byte from cpu bitmap
                    816:                     Store(DerefOf(Index(Local5, ShiftRight(Local0, 3))), Local2)
                    817:                 }
                    818:                 // Local3 = active state for this cpu
                    819:                 Store(And(Local2, 1), Local3)
                    820: 
                    821:                 If (LNotEqual(Local1, Local3)) {
                    822:                     // State change - update CPON with new state
                    823:                     Store(Local3, Index(CPON, Local0))
                    824:                     // Do CPU notify
                    825:                     If (LEqual(Local3, 1)) {
                    826:                         NTFY(Local0, 1)
                    827:                     } Else {
                    828:                         NTFY(Local0, 3)
                    829:                     }
                    830:                 }
                    831:                 Increment(Local0)
                    832:             }
                    833:             Return(One)
                    834:         }
                    835:     }
                    836: 
1.1       root      837:     Scope (\_GPE)
                    838:     {
                    839:         Name(_HID, "ACPI0006")
                    840: 
                    841:         Method(_L00) {
                    842:             Return(0x01)
                    843:         }
                    844: 
                    845: #define gen_pci_hotplug(nr)                                       \
                    846:             If (And(\_SB.PCI0.PCIU, ShiftLeft(1, nr))) {          \
                    847:                 Notify(\_SB.PCI0.S##nr, 1)                        \
                    848:             }                                                     \
                    849:             If (And(\_SB.PCI0.PCID, ShiftLeft(1, nr))) {          \
                    850:                 Notify(\_SB.PCI0.S##nr, 3)                        \
                    851:             }
                    852: 
                    853:         Method(_L01) {
                    854:             gen_pci_hotplug(1)
                    855:             gen_pci_hotplug(2)
                    856:             gen_pci_hotplug(3)
                    857:             gen_pci_hotplug(4)
                    858:             gen_pci_hotplug(5)
                    859:             gen_pci_hotplug(6)
                    860:             gen_pci_hotplug(7)
                    861:             gen_pci_hotplug(8)
                    862:             gen_pci_hotplug(9)
                    863:             gen_pci_hotplug(10)
                    864:             gen_pci_hotplug(11)
                    865:             gen_pci_hotplug(12)
                    866:             gen_pci_hotplug(13)
                    867:             gen_pci_hotplug(14)
                    868:             gen_pci_hotplug(15)
                    869:             gen_pci_hotplug(16)
                    870:             gen_pci_hotplug(17)
                    871:             gen_pci_hotplug(18)
                    872:             gen_pci_hotplug(19)
                    873:             gen_pci_hotplug(20)
                    874:             gen_pci_hotplug(21)
                    875:             gen_pci_hotplug(22)
                    876:             gen_pci_hotplug(23)
                    877:             gen_pci_hotplug(24)
                    878:             gen_pci_hotplug(25)
                    879:             gen_pci_hotplug(26)
                    880:             gen_pci_hotplug(27)
                    881:             gen_pci_hotplug(28)
                    882:             gen_pci_hotplug(29)
                    883:             gen_pci_hotplug(30)
                    884:             gen_pci_hotplug(31)
                    885: 
                    886:             Return (0x01)
                    887: 
                    888:         }
                    889:         Method(_L02) {
1.1.1.3   root      890:             // CPU hotplug event
                    891:             Return(\_SB.PRSC())
1.1       root      892:         }
                    893:         Method(_L03) {
                    894:             Return(0x01)
                    895:         }
                    896:         Method(_L04) {
                    897:             Return(0x01)
                    898:         }
                    899:         Method(_L05) {
                    900:             Return(0x01)
                    901:         }
                    902:         Method(_L06) {
                    903:             Return(0x01)
                    904:         }
                    905:         Method(_L07) {
                    906:             Return(0x01)
                    907:         }
                    908:         Method(_L08) {
                    909:             Return(0x01)
                    910:         }
                    911:         Method(_L09) {
                    912:             Return(0x01)
                    913:         }
                    914:         Method(_L0A) {
                    915:             Return(0x01)
                    916:         }
                    917:         Method(_L0B) {
                    918:             Return(0x01)
                    919:         }
                    920:         Method(_L0C) {
                    921:             Return(0x01)
                    922:         }
                    923:         Method(_L0D) {
                    924:             Return(0x01)
                    925:         }
                    926:         Method(_L0E) {
                    927:             Return(0x01)
                    928:         }
                    929:         Method(_L0F) {
                    930:             Return(0x01)
                    931:         }
                    932:     }
                    933: 
                    934: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.