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

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)
                    242:                  Method (_S1D, 0, NotSerialized)
                    243:                  {
                    244:                          Return (0x00)
                    245:                  }
                    246:                  Method (_S2D, 0, NotSerialized)
                    247:                  {
                    248:                          Return (0x00)
                    249:                  }
                    250:                  Method (_S3D, 0, NotSerialized)
                    251:                  {
                    252:                          Return (0x00)
                    253:                  }
1.1.1.4 ! root      254:                  Method(_RMV) { Return (0x00) }
1.1       root      255:         }
                    256: 
                    257:        /* PIIX3 ISA bridge */
                    258:         Device (ISA) {
                    259:             Name (_ADR, 0x00010000)
1.1.1.4 ! root      260:             Method(_RMV) { Return (0x00) }
        !           261: 
1.1       root      262: 
                    263:             /* PIIX PCI to ISA irq remapping */
                    264:             OperationRegion (P40C, PCI_Config, 0x60, 0x04)
                    265: 
                    266:             /* Real-time clock */
                    267:             Device (RTC)
                    268:             {
                    269:                 Name (_HID, EisaId ("PNP0B00"))
                    270:                 Name (_CRS, ResourceTemplate ()
                    271:                 {
                    272:                     IO (Decode16, 0x0070, 0x0070, 0x10, 0x02)
                    273:                     IRQNoFlags () {8}
                    274:                     IO (Decode16, 0x0072, 0x0072, 0x02, 0x06)
                    275:                 })
                    276:             }
                    277: 
                    278:             /* Keyboard seems to be important for WinXP install */
                    279:             Device (KBD)
                    280:             {
                    281:                 Name (_HID, EisaId ("PNP0303"))
                    282:                 Method (_STA, 0, NotSerialized)
                    283:                 {
                    284:                     Return (0x0f)
                    285:                 }
                    286: 
                    287:                 Method (_CRS, 0, NotSerialized)
                    288:                 {
                    289:                      Name (TMP, ResourceTemplate ()
                    290:                      {
                    291:                     IO (Decode16,
                    292:                         0x0060,             // Address Range Minimum
                    293:                         0x0060,             // Address Range Maximum
                    294:                         0x01,               // Address Alignment
                    295:                         0x01,               // Address Length
                    296:                         )
                    297:                     IO (Decode16,
                    298:                         0x0064,             // Address Range Minimum
                    299:                         0x0064,             // Address Range Maximum
                    300:                         0x01,               // Address Alignment
                    301:                         0x01,               // Address Length
                    302:                         )
                    303:                     IRQNoFlags ()
                    304:                         {1}
                    305:                     })
                    306:                     Return (TMP)
                    307:                 }
                    308:             }
                    309: 
                    310:            /* PS/2 mouse */
                    311:             Device (MOU)
                    312:             {
                    313:                 Name (_HID, EisaId ("PNP0F13"))
                    314:                 Method (_STA, 0, NotSerialized)
                    315:                 {
                    316:                     Return (0x0f)
                    317:                 }
                    318: 
                    319:                 Method (_CRS, 0, NotSerialized)
                    320:                 {
                    321:                     Name (TMP, ResourceTemplate ()
                    322:                     {
                    323:                          IRQNoFlags () {12}
                    324:                     })
                    325:                     Return (TMP)
                    326:                 }
                    327:             }
                    328: 
                    329:            /* PS/2 floppy controller */
                    330:            Device (FDC0)
                    331:            {
                    332:                Name (_HID, EisaId ("PNP0700"))
                    333:                Method (_STA, 0, NotSerialized)
                    334:                {
                    335:                    Return (0x0F)
                    336:                }
                    337:                Method (_CRS, 0, NotSerialized)
                    338:                {
                    339:                    Name (BUF0, ResourceTemplate ()
                    340:                     {
                    341:                         IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04)
                    342:                         IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
                    343:                         IRQNoFlags () {6}
                    344:                         DMA (Compatibility, NotBusMaster, Transfer8) {2}
                    345:                     })
                    346:                    Return (BUF0)
                    347:                }
                    348:            }
                    349: 
                    350:            /* Parallel port */
                    351:            Device (LPT)
                    352:            {
                    353:                Name (_HID, EisaId ("PNP0400"))
                    354:                Method (_STA, 0, NotSerialized)
                    355:                {
                    356:                    Store (\_SB.PCI0.PX13.DRSA, Local0)
                    357:                    And (Local0, 0x80000000, Local0)
                    358:                    If (LEqual (Local0, 0))
                    359:                    {
                    360:                        Return (0x00)
                    361:                    }
                    362:                    Else
                    363:                    {
                    364:                        Return (0x0F)
                    365:                    }
                    366:                }
                    367:                Method (_CRS, 0, NotSerialized)
                    368:                {
                    369:                    Name (BUF0, ResourceTemplate ()
                    370:                     {
                    371:                        IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
                    372:                        IRQNoFlags () {7}
                    373:                    })
                    374:                    Return (BUF0)
                    375:                }
                    376:            }
                    377: 
                    378:            /* Serial Ports */
                    379:            Device (COM1)
                    380:            {
                    381:                Name (_HID, EisaId ("PNP0501"))
                    382:                Name (_UID, 0x01)
                    383:                Method (_STA, 0, NotSerialized)
                    384:                {
                    385:                    Store (\_SB.PCI0.PX13.DRSC, Local0)
                    386:                    And (Local0, 0x08000000, Local0)
                    387:                    If (LEqual (Local0, 0))
                    388:                    {
                    389:                        Return (0x00)
                    390:                    }
                    391:                    Else
                    392:                    {
                    393:                        Return (0x0F)
                    394:                    }
                    395:                }
                    396:                Method (_CRS, 0, NotSerialized)
                    397:                {
                    398:                    Name (BUF0, ResourceTemplate ()
                    399:                     {
                    400:                        IO (Decode16, 0x03F8, 0x03F8, 0x00, 0x08)
                    401:                        IRQNoFlags () {4}
                    402:                    })
                    403:                    Return (BUF0)
                    404:                }
                    405:            }
                    406: 
                    407:            Device (COM2)
                    408:            {
                    409:                Name (_HID, EisaId ("PNP0501"))
                    410:                Name (_UID, 0x02)
                    411:                Method (_STA, 0, NotSerialized)
                    412:                {
                    413:                    Store (\_SB.PCI0.PX13.DRSC, Local0)
                    414:                    And (Local0, 0x80000000, Local0)
                    415:                    If (LEqual (Local0, 0))
                    416:                    {
                    417:                        Return (0x00)
                    418:                    }
                    419:                    Else
                    420:                    {
                    421:                        Return (0x0F)
                    422:                    }
                    423:                }
                    424:                Method (_CRS, 0, NotSerialized)
                    425:                {
                    426:                    Name (BUF0, ResourceTemplate ()
                    427:                     {
                    428:                        IO (Decode16, 0x02F8, 0x02F8, 0x00, 0x08)
                    429:                        IRQNoFlags () {3}
                    430:                    })
                    431:                    Return (BUF0)
                    432:                }
                    433:            }
                    434:         }
                    435: 
                    436:        /* PIIX4 PM */
                    437:         Device (PX13) {
                    438:            Name (_ADR, 0x00010003)
                    439: 
                    440:            OperationRegion (P13C, PCI_Config, 0x5c, 0x24)
                    441:            Field (P13C, DWordAcc, NoLock, Preserve)
                    442:            {
                    443:                DRSA, 32,
                    444:                DRSB, 32,
                    445:                DRSC, 32,
                    446:                DRSE, 32,
                    447:                DRSF, 32,
                    448:                DRSG, 32,
                    449:                DRSH, 32,
                    450:                DRSI, 32,
                    451:                DRSJ, 32
                    452:            }
                    453:        }
1.1.1.4 ! root      454: 
        !           455: #define gen_pci_device(name, nr)                                \
        !           456:         Device(SL##name) {                                      \
        !           457:             Name (_ADR, nr##0000)                               \
        !           458:             Method (_RMV) {                                     \
        !           459:                 If (And(\_SB.PCI0.PCRM, ShiftLeft(1, nr))) {    \
        !           460:                     Return (0x1)                                \
        !           461:                 }                                               \
        !           462:                 Return (0x0)                                    \
        !           463:             }                                                   \
        !           464:             Name (_SUN, name)                                   \
        !           465:         }
        !           466: 
        !           467:         /* VGA (slot 1) and ISA bus (slot 2) defined above */
        !           468:        gen_pci_device(3, 0x0003)
        !           469:        gen_pci_device(4, 0x0004)
        !           470:        gen_pci_device(5, 0x0005)
        !           471:        gen_pci_device(6, 0x0006)
        !           472:        gen_pci_device(7, 0x0007)
        !           473:        gen_pci_device(8, 0x0008)
        !           474:        gen_pci_device(9, 0x0009)
        !           475:        gen_pci_device(10, 0x000a)
        !           476:        gen_pci_device(11, 0x000b)
        !           477:        gen_pci_device(12, 0x000c)
        !           478:        gen_pci_device(13, 0x000d)
        !           479:        gen_pci_device(14, 0x000e)
        !           480:        gen_pci_device(15, 0x000f)
        !           481:        gen_pci_device(16, 0x0010)
        !           482:        gen_pci_device(17, 0x0011)
        !           483:        gen_pci_device(18, 0x0012)
        !           484:        gen_pci_device(19, 0x0013)
        !           485:        gen_pci_device(20, 0x0014)
        !           486:        gen_pci_device(21, 0x0015)
        !           487:        gen_pci_device(22, 0x0016)
        !           488:        gen_pci_device(23, 0x0017)
        !           489:        gen_pci_device(24, 0x0018)
        !           490:        gen_pci_device(25, 0x0019)
        !           491:        gen_pci_device(26, 0x001a)
        !           492:        gen_pci_device(27, 0x001b)
        !           493:        gen_pci_device(28, 0x001c)
        !           494:        gen_pci_device(29, 0x001d)
        !           495:        gen_pci_device(30, 0x001e)
        !           496:        gen_pci_device(31, 0x001f)
1.1       root      497:     }
                    498: 
                    499:     /* PCI IRQs */
                    500:     Scope(\_SB) {
                    501:          Field (\_SB.PCI0.ISA.P40C, ByteAcc, NoLock, Preserve)
                    502:          {
                    503:              PRQ0,   8,
                    504:              PRQ1,   8,
                    505:              PRQ2,   8,
                    506:              PRQ3,   8
                    507:          }
                    508: 
                    509:         Device(LNKA){
                    510:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    511:                 Name(_UID, 1)
                    512:                 Name(_PRS, ResourceTemplate(){
                    513:                     Interrupt (, Level, ActiveHigh, Shared)
                    514:                         { 5, 10, 11 }
                    515:                 })
                    516:                 Method (_STA, 0, NotSerialized)
                    517:                 {
                    518:                     Store (0x0B, Local0)
                    519:                     If (And (0x80, PRQ0, Local1))
                    520:                     {
                    521:                          Store (0x09, Local0)
                    522:                     }
                    523:                     Return (Local0)
                    524:                 }
                    525:                 Method (_DIS, 0, NotSerialized)
                    526:                 {
                    527:                     Or (PRQ0, 0x80, PRQ0)
                    528:                 }
                    529:                 Method (_CRS, 0, NotSerialized)
                    530:                 {
                    531:                     Name (PRR0, ResourceTemplate ()
                    532:                     {
                    533:                         Interrupt (, Level, ActiveHigh, Shared)
                    534:                             {1}
                    535:                     })
                    536:                     CreateDWordField (PRR0, 0x05, TMP)
                    537:                     Store (PRQ0, Local0)
                    538:                     If (LLess (Local0, 0x80))
                    539:                     {
                    540:                         Store (Local0, TMP)
                    541:                     }
                    542:                     Else
                    543:                     {
                    544:                         Store (Zero, TMP)
                    545:                     }
                    546:                     Return (PRR0)
                    547:                 }
                    548:                 Method (_SRS, 1, NotSerialized)
                    549:                 {
                    550:                     CreateDWordField (Arg0, 0x05, TMP)
                    551:                     Store (TMP, PRQ0)
                    552:                 }
                    553:         }
                    554:         Device(LNKB){
                    555:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    556:                 Name(_UID, 2)
                    557:                 Name(_PRS, ResourceTemplate(){
                    558:                     Interrupt (, Level, ActiveHigh, Shared)
                    559:                         { 5, 10, 11 }
                    560:                 })
                    561:                 Method (_STA, 0, NotSerialized)
                    562:                 {
                    563:                     Store (0x0B, Local0)
                    564:                     If (And (0x80, PRQ1, Local1))
                    565:                     {
                    566:                          Store (0x09, Local0)
                    567:                     }
                    568:                     Return (Local0)
                    569:                 }
                    570:                 Method (_DIS, 0, NotSerialized)
                    571:                 {
                    572:                     Or (PRQ1, 0x80, PRQ1)
                    573:                 }
                    574:                 Method (_CRS, 0, NotSerialized)
                    575:                 {
                    576:                     Name (PRR0, ResourceTemplate ()
                    577:                     {
                    578:                         Interrupt (, Level, ActiveHigh, Shared)
                    579:                             {1}
                    580:                     })
                    581:                     CreateDWordField (PRR0, 0x05, TMP)
                    582:                     Store (PRQ1, Local0)
                    583:                     If (LLess (Local0, 0x80))
                    584:                     {
                    585:                         Store (Local0, TMP)
                    586:                     }
                    587:                     Else
                    588:                     {
                    589:                         Store (Zero, TMP)
                    590:                     }
                    591:                     Return (PRR0)
                    592:                 }
                    593:                 Method (_SRS, 1, NotSerialized)
                    594:                 {
                    595:                     CreateDWordField (Arg0, 0x05, TMP)
                    596:                     Store (TMP, PRQ1)
                    597:                 }
                    598:         }
                    599:         Device(LNKC){
                    600:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    601:                 Name(_UID, 3)
                    602:                 Name(_PRS, ResourceTemplate(){
                    603:                     Interrupt (, Level, ActiveHigh, Shared)
                    604:                         { 5, 10, 11 }
                    605:                 })
                    606:                 Method (_STA, 0, NotSerialized)
                    607:                 {
                    608:                     Store (0x0B, Local0)
                    609:                     If (And (0x80, PRQ2, Local1))
                    610:                     {
                    611:                          Store (0x09, Local0)
                    612:                     }
                    613:                     Return (Local0)
                    614:                 }
                    615:                 Method (_DIS, 0, NotSerialized)
                    616:                 {
                    617:                     Or (PRQ2, 0x80, PRQ2)
                    618:                 }
                    619:                 Method (_CRS, 0, NotSerialized)
                    620:                 {
                    621:                     Name (PRR0, ResourceTemplate ()
                    622:                     {
                    623:                         Interrupt (, Level, ActiveHigh, Shared)
                    624:                             {1}
                    625:                     })
                    626:                     CreateDWordField (PRR0, 0x05, TMP)
                    627:                     Store (PRQ2, Local0)
                    628:                     If (LLess (Local0, 0x80))
                    629:                     {
                    630:                         Store (Local0, TMP)
                    631:                     }
                    632:                     Else
                    633:                     {
                    634:                         Store (Zero, TMP)
                    635:                     }
                    636:                     Return (PRR0)
                    637:                 }
                    638:                 Method (_SRS, 1, NotSerialized)
                    639:                 {
                    640:                     CreateDWordField (Arg0, 0x05, TMP)
                    641:                     Store (TMP, PRQ2)
                    642:                 }
                    643:         }
                    644:         Device(LNKD){
                    645:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    646:                 Name(_UID, 4)
                    647:                 Name(_PRS, ResourceTemplate(){
                    648:                     Interrupt (, Level, ActiveHigh, Shared)
                    649:                         { 5, 10, 11 }
                    650:                 })
                    651:                 Method (_STA, 0, NotSerialized)
                    652:                 {
                    653:                     Store (0x0B, Local0)
                    654:                     If (And (0x80, PRQ3, Local1))
                    655:                     {
                    656:                          Store (0x09, Local0)
                    657:                     }
                    658:                     Return (Local0)
                    659:                 }
                    660:                 Method (_DIS, 0, NotSerialized)
                    661:                 {
                    662:                     Or (PRQ3, 0x80, PRQ3)
                    663:                 }
                    664:                 Method (_CRS, 0, NotSerialized)
                    665:                 {
                    666:                     Name (PRR0, ResourceTemplate ()
                    667:                     {
                    668:                         Interrupt (, Level, ActiveHigh, Shared)
                    669:                             {1}
                    670:                     })
                    671:                     CreateDWordField (PRR0, 0x05, TMP)
                    672:                     Store (PRQ3, Local0)
                    673:                     If (LLess (Local0, 0x80))
                    674:                     {
                    675:                         Store (Local0, TMP)
                    676:                     }
                    677:                     Else
                    678:                     {
                    679:                         Store (Zero, TMP)
                    680:                     }
                    681:                     Return (PRR0)
                    682:                 }
                    683:                 Method (_SRS, 1, NotSerialized)
                    684:                 {
                    685:                     CreateDWordField (Arg0, 0x05, TMP)
                    686:                     Store (TMP, PRQ3)
                    687:                 }
                    688:         }
1.1.1.3   root      689:         Device(LNKS){
                    690:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    691:                 Name(_UID, 5)
                    692:                 Name(_PRS, ResourceTemplate(){
                    693:                     Interrupt (, Level, ActiveHigh, Shared)
                    694:                         { 9 }
                    695:                 })
                    696:                 Method (_STA, 0, NotSerialized)
                    697:                 {
                    698:                     Store (0x0B, Local0)
                    699:                     If (And (0x80, PRQ0, Local1))
                    700:                     {
                    701:                          Store (0x09, Local0)
                    702:                     }
                    703:                     Return (Local0)
                    704:                 }
                    705:                 Method (_DIS, 0, NotSerialized)
                    706:                 {
                    707:                     Or (PRQ0, 0x80, PRQ0)
                    708:                 }
                    709:                 Method (_CRS, 0, NotSerialized)
                    710:                 {
                    711:                     Name (PRR0, ResourceTemplate ()
                    712:                     {
                    713:                         Interrupt (, Level, ActiveHigh, Shared)
                    714:                             {9}
                    715:                     })
                    716:                     CreateDWordField (PRR0, 0x05, TMP)
                    717:                     Store (PRQ0, Local0)
                    718:                     If (LLess (Local0, 0x80))
                    719:                     {
                    720:                         Store (Local0, TMP)
                    721:                     }
                    722:                     Else
                    723:                     {
                    724:                         Store (Zero, TMP)
                    725:                     }
                    726:                     Return (PRR0)
                    727:                 }
                    728:         }
1.1       root      729:     }
                    730: 
                    731:     /*
                    732:      * S3 (suspend-to-ram), S4 (suspend-to-disk) and S5 (power-off) type codes:
                    733:      * must match piix4 emulation.
                    734:      */
                    735:     Name (\_S3, Package (0x04)
                    736:     {
                    737:         0x01,  /* PM1a_CNT.SLP_TYP */
                    738:         0x01,  /* PM1b_CNT.SLP_TYP */
                    739:         Zero,  /* reserved */
                    740:         Zero   /* reserved */
                    741:     })
                    742:     Name (\_S4, Package (0x04)
                    743:     {
                    744:         Zero,  /* PM1a_CNT.SLP_TYP */
                    745:         Zero,  /* PM1b_CNT.SLP_TYP */
                    746:         Zero,  /* reserved */
                    747:         Zero   /* reserved */
                    748:     })
                    749:     Name (\_S5, Package (0x04)
                    750:     {
                    751:         Zero,  /* PM1a_CNT.SLP_TYP */
                    752:         Zero,  /* PM1b_CNT.SLP_TYP */
                    753:         Zero,  /* reserved */
                    754:         Zero   /* reserved */
                    755:     })
                    756: 
1.1.1.3   root      757:     /* CPU hotplug */
                    758:     Scope(\_SB) {
                    759:         /* Objects filled in by run-time generated SSDT */
                    760:         External(NTFY, MethodObj)
                    761:         External(CPON, PkgObj)
                    762: 
                    763:         /* Methods called by run-time generated SSDT Processor objects */
                    764:         Method (CPMA, 1, NotSerialized) {
                    765:             // _MAT method - create an madt apic buffer
                    766:             // Local0 = CPON flag for this cpu
                    767:             Store(DerefOf(Index(CPON, Arg0)), Local0)
                    768:             // Local1 = Buffer (in madt apic form) to return
                    769:             Store(Buffer(8) {0x00, 0x08, 0x00, 0x00, 0x00, 0, 0, 0}, Local1)
                    770:             // Update the processor id, lapic id, and enable/disable status
                    771:             Store(Arg0, Index(Local1, 2))
                    772:             Store(Arg0, Index(Local1, 3))
                    773:             Store(Local0, Index(Local1, 4))
                    774:             Return (Local1)
                    775:         }
                    776:         Method (CPST, 1, NotSerialized) {
                    777:             // _STA method - return ON status of cpu
                    778:             // Local0 = CPON flag for this cpu
                    779:             Store(DerefOf(Index(CPON, Arg0)), Local0)
                    780:             If (Local0) { Return(0xF) } Else { Return(0x0) }
                    781:         }
                    782:         Method (CPEJ, 2, NotSerialized) {
                    783:             // _EJ0 method - eject callback
                    784:             Sleep(200)
                    785:         }
                    786: 
                    787:         /* CPU hotplug notify method */
                    788:         OperationRegion(PRST, SystemIO, 0xaf00, 32)
                    789:         Field (PRST, ByteAcc, NoLock, Preserve)
                    790:         {
                    791:             PRS, 256
                    792:         }
                    793:         Method(PRSC, 0) {
                    794:             // Local5 = active cpu bitmap
                    795:             Store (PRS, Local5)
                    796:             // Local2 = last read byte from bitmap
                    797:             Store (Zero, Local2)
                    798:             // Local0 = cpuid iterator
                    799:             Store (Zero, Local0)
                    800:             While (LLess(Local0, SizeOf(CPON))) {
                    801:                 // Local1 = CPON flag for this cpu
                    802:                 Store(DerefOf(Index(CPON, Local0)), Local1)
                    803:                 If (And(Local0, 0x07)) {
                    804:                     // Shift down previously read bitmap byte
                    805:                     ShiftRight(Local2, 1, Local2)
                    806:                 } Else {
                    807:                     // Read next byte from cpu bitmap
                    808:                     Store(DerefOf(Index(Local5, ShiftRight(Local0, 3))), Local2)
                    809:                 }
                    810:                 // Local3 = active state for this cpu
                    811:                 Store(And(Local2, 1), Local3)
                    812: 
                    813:                 If (LNotEqual(Local1, Local3)) {
                    814:                     // State change - update CPON with new state
                    815:                     Store(Local3, Index(CPON, Local0))
                    816:                     // Do CPU notify
                    817:                     If (LEqual(Local3, 1)) {
                    818:                         NTFY(Local0, 1)
                    819:                     } Else {
                    820:                         NTFY(Local0, 3)
                    821:                     }
                    822:                 }
                    823:                 Increment(Local0)
                    824:             }
                    825:             Return(One)
                    826:         }
                    827:     }
                    828: 
1.1       root      829:     Scope (\_GPE)
                    830:     {
                    831:         Name(_HID, "ACPI0006")
                    832: 
                    833:         Method(_L00) {
                    834:             Return(0x01)
                    835:         }
                    836: 
                    837: #define gen_pci_hotplug(nr)                                       \
                    838:             If (And(\_SB.PCI0.PCIU, ShiftLeft(1, nr))) {          \
                    839:                 Notify(\_SB.PCI0.S##nr, 1)                        \
                    840:             }                                                     \
                    841:             If (And(\_SB.PCI0.PCID, ShiftLeft(1, nr))) {          \
                    842:                 Notify(\_SB.PCI0.S##nr, 3)                        \
                    843:             }
                    844: 
                    845:         Method(_L01) {
                    846:             gen_pci_hotplug(1)
                    847:             gen_pci_hotplug(2)
                    848:             gen_pci_hotplug(3)
                    849:             gen_pci_hotplug(4)
                    850:             gen_pci_hotplug(5)
                    851:             gen_pci_hotplug(6)
                    852:             gen_pci_hotplug(7)
                    853:             gen_pci_hotplug(8)
                    854:             gen_pci_hotplug(9)
                    855:             gen_pci_hotplug(10)
                    856:             gen_pci_hotplug(11)
                    857:             gen_pci_hotplug(12)
                    858:             gen_pci_hotplug(13)
                    859:             gen_pci_hotplug(14)
                    860:             gen_pci_hotplug(15)
                    861:             gen_pci_hotplug(16)
                    862:             gen_pci_hotplug(17)
                    863:             gen_pci_hotplug(18)
                    864:             gen_pci_hotplug(19)
                    865:             gen_pci_hotplug(20)
                    866:             gen_pci_hotplug(21)
                    867:             gen_pci_hotplug(22)
                    868:             gen_pci_hotplug(23)
                    869:             gen_pci_hotplug(24)
                    870:             gen_pci_hotplug(25)
                    871:             gen_pci_hotplug(26)
                    872:             gen_pci_hotplug(27)
                    873:             gen_pci_hotplug(28)
                    874:             gen_pci_hotplug(29)
                    875:             gen_pci_hotplug(30)
                    876:             gen_pci_hotplug(31)
                    877: 
                    878:             Return (0x01)
                    879: 
                    880:         }
                    881:         Method(_L02) {
1.1.1.3   root      882:             // CPU hotplug event
                    883:             Return(\_SB.PRSC())
1.1       root      884:         }
                    885:         Method(_L03) {
                    886:             Return(0x01)
                    887:         }
                    888:         Method(_L04) {
                    889:             Return(0x01)
                    890:         }
                    891:         Method(_L05) {
                    892:             Return(0x01)
                    893:         }
                    894:         Method(_L06) {
                    895:             Return(0x01)
                    896:         }
                    897:         Method(_L07) {
                    898:             Return(0x01)
                    899:         }
                    900:         Method(_L08) {
                    901:             Return(0x01)
                    902:         }
                    903:         Method(_L09) {
                    904:             Return(0x01)
                    905:         }
                    906:         Method(_L0A) {
                    907:             Return(0x01)
                    908:         }
                    909:         Method(_L0B) {
                    910:             Return(0x01)
                    911:         }
                    912:         Method(_L0C) {
                    913:             Return(0x01)
                    914:         }
                    915:         Method(_L0D) {
                    916:             Return(0x01)
                    917:         }
                    918:         Method(_L0E) {
                    919:             Return(0x01)
                    920:         }
                    921:         Method(_L0F) {
                    922:             Return(0x01)
                    923:         }
                    924:     }
                    925: 
                    926: }

unix.superglobalmegacorp.com

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