Annotation of qemu/hw/acpi-dsdt.dsl, revision 1.1.1.1

1.1       root        1: /*
                      2:  * 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:     "QEMU",             // OEMID
                     24:     "QEMUDSDT",         // TABLE ID
                     25:     0x1                 // OEM Revision
                     26:     )
                     27: {
                     28:     Scope (\)
                     29:     {
                     30:         /* CMOS memory access */
                     31:         OperationRegion (CMS, SystemIO, 0x70, 0x02)
                     32:         Field (CMS, ByteAcc, NoLock, Preserve)
                     33:         {
                     34:             CMSI,   8, 
                     35:             CMSD,   8
                     36:         }
                     37:         Method (CMRD, 1, NotSerialized)
                     38:         {
                     39:             Store (Arg0, CMSI)
                     40:             Store (CMSD, Local0)
                     41:             Return (Local0)
                     42:         }
                     43: 
                     44:         /* Debug Output */
                     45:         OperationRegion (DBG, SystemIO, 0xb044, 0x04)
                     46:         Field (DBG, DWordAcc, NoLock, Preserve)
                     47:         {
                     48:             DBGL,   32, 
                     49:         }
                     50:     }
                     51: 
                     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:                    
                     65:                 // PCI Slot 0
                     66:                 Package() {0x0000ffff, 0, LNKD, 0}, 
                     67:                 Package() {0x0000ffff, 1, LNKA, 0}, 
                     68:                 Package() {0x0000ffff, 2, LNKB, 0}, 
                     69:                 Package() {0x0000ffff, 3, LNKC, 0}, 
                     70: 
                     71:                 // PCI Slot 1
                     72:                 Package() {0x0001ffff, 0, LNKA, 0}, 
                     73:                 Package() {0x0001ffff, 1, LNKB, 0}, 
                     74:                 Package() {0x0001ffff, 2, LNKC, 0}, 
                     75:                 Package() {0x0001ffff, 3, LNKD, 0}, 
                     76:                 
                     77:                 // PCI Slot 2
                     78:                 Package() {0x0002ffff, 0, LNKB, 0}, 
                     79:                 Package() {0x0002ffff, 1, LNKC, 0}, 
                     80:                 Package() {0x0002ffff, 2, LNKD, 0}, 
                     81:                 Package() {0x0002ffff, 3, LNKA, 0}, 
                     82: 
                     83:                 // PCI Slot 3
                     84:                 Package() {0x0003ffff, 0, LNKC, 0}, 
                     85:                 Package() {0x0003ffff, 1, LNKD, 0}, 
                     86:                 Package() {0x0003ffff, 2, LNKA, 0}, 
                     87:                 Package() {0x0003ffff, 3, LNKB, 0}, 
                     88: 
                     89:                 // PCI Slot 4
                     90:                 Package() {0x0004ffff, 0, LNKD, 0}, 
                     91:                 Package() {0x0004ffff, 1, LNKA, 0}, 
                     92:                 Package() {0x0004ffff, 2, LNKB, 0}, 
                     93:                 Package() {0x0004ffff, 3, LNKC, 0}, 
                     94: 
                     95:                 // PCI Slot 5
                     96:                 Package() {0x0005ffff, 0, LNKA, 0}, 
                     97:                 Package() {0x0005ffff, 1, LNKB, 0}, 
                     98:                 Package() {0x0005ffff, 2, LNKC, 0}, 
                     99:                 Package() {0x0005ffff, 3, LNKD, 0}, 
                    100:             })
                    101: 
                    102:             Method (_CRS, 0, NotSerialized)
                    103:             {
                    104:             Name (MEMP, ResourceTemplate ()
                    105:             {
                    106:                 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    107:                     0x0000,             // Address Space Granularity
                    108:                     0x0000,             // Address Range Minimum
                    109:                     0x00FF,             // Address Range Maximum
                    110:                     0x0000,             // Address Translation Offset
                    111:                     0x0100,             // Address Length
                    112:                     ,, )
                    113:                 IO (Decode16,
                    114:                     0x0CF8,             // Address Range Minimum
                    115:                     0x0CF8,             // Address Range Maximum
                    116:                     0x01,               // Address Alignment
                    117:                     0x08,               // Address Length
                    118:                     )
                    119:                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    120:                     0x0000,             // Address Space Granularity
                    121:                     0x0000,             // Address Range Minimum
                    122:                     0x0CF7,             // Address Range Maximum
                    123:                     0x0000,             // Address Translation Offset
                    124:                     0x0CF8,             // Address Length
                    125:                     ,, , TypeStatic)
                    126:                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    127:                     0x0000,             // Address Space Granularity
                    128:                     0x0D00,             // Address Range Minimum
                    129:                     0xFFFF,             // Address Range Maximum
                    130:                     0x0000,             // Address Translation Offset
                    131:                     0xF300,             // Address Length
                    132:                     ,, , TypeStatic)
                    133:                 DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    134:                     0x00000000,         // Address Space Granularity
                    135:                     0x000A0000,         // Address Range Minimum
                    136:                     0x000BFFFF,         // Address Range Maximum
                    137:                     0x00000000,         // Address Translation Offset
                    138:                     0x00020000,         // Address Length
                    139:                     ,, , AddressRangeMemory, TypeStatic)
                    140:                 DWordMemory (ResourceProducer, PosDecode, MinNotFixed, MaxFixed, NonCacheable, ReadWrite,
                    141:                     0x00000000,         // Address Space Granularity
                    142:                     0x00000000,         // Address Range Minimum
                    143:                     0xFEBFFFFF,         // Address Range Maximum
                    144:                     0x00000000,         // Address Translation Offset
                    145:                     0x00000000,         // Address Length
                    146:                     ,, MEMF, AddressRangeMemory, TypeStatic)
                    147:             })
                    148:                 CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._MIN, PMIN)
                    149:                 CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._MAX, PMAX)
                    150:                 CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._LEN, PLEN)
                    151:                 /* compute available RAM */
                    152:                 Add(CMRD(0x34), ShiftLeft(CMRD(0x35), 8), Local0)
                    153:                 ShiftLeft(Local0, 16, Local0)
                    154:                 Add(Local0, 0x1000000, Local0)
                    155:                 /* update field of last region */
                    156:                 Store(Local0, PMIN)
                    157:                 Subtract (PMAX, PMIN, PLEN)
                    158:                 Increment (PLEN)
                    159:                 Return (MEMP)
                    160:             }
                    161:         }
                    162:     }
                    163: 
                    164:     Scope(\_SB.PCI0) {
                    165: 
                    166:        /* PIIX3 ISA bridge */
                    167:         Device (ISA) {
                    168:             Name (_ADR, 0x00010000)
                    169:         
                    170:             /* PIIX PCI to ISA irq remapping */
                    171:             OperationRegion (P40C, PCI_Config, 0x60, 0x04)
                    172: 
                    173: 
                    174:             /* Keyboard seems to be important for WinXP install */
                    175:             Device (KBD)
                    176:             {
                    177:                 Name (_HID, EisaId ("PNP0303"))
                    178:                 Method (_STA, 0, NotSerialized)
                    179:                 {
                    180:                     Return (0x0f)
                    181:                 }
                    182: 
                    183:                 Method (_CRS, 0, NotSerialized)
                    184:                 {
                    185:                      Name (TMP, ResourceTemplate ()
                    186:                      {
                    187:                     IO (Decode16,
                    188:                         0x0060,             // Address Range Minimum
                    189:                         0x0060,             // Address Range Maximum
                    190:                         0x01,               // Address Alignment
                    191:                         0x01,               // Address Length
                    192:                         )
                    193:                     IO (Decode16,
                    194:                         0x0064,             // Address Range Minimum
                    195:                         0x0064,             // Address Range Maximum
                    196:                         0x01,               // Address Alignment
                    197:                         0x01,               // Address Length
                    198:                         )
                    199:                     IRQNoFlags ()
                    200:                         {1}
                    201:                     })
                    202:                     Return (TMP)
                    203:                 }
                    204:             }
                    205: 
                    206:            /* PS/2 mouse */
                    207:             Device (MOU) 
                    208:             {
                    209:                 Name (_HID, EisaId ("PNP0F13"))
                    210:                 Method (_STA, 0, NotSerialized)
                    211:                 {
                    212:                     Return (0x0f)
                    213:                 }
                    214: 
                    215:                 Method (_CRS, 0, NotSerialized)
                    216:                 {
                    217:                     Name (TMP, ResourceTemplate ()
                    218:                     {
                    219:                          IRQNoFlags () {12}
                    220:                     })
                    221:                     Return (TMP)
                    222:                 }
                    223:             }
                    224: 
                    225:            /* PS/2 floppy controller */
                    226:            Device (FDC0)
                    227:            {
                    228:                Name (_HID, EisaId ("PNP0700"))
                    229:                Method (_STA, 0, NotSerialized)
                    230:                {
                    231:                    Return (0x0F)
                    232:                }
                    233:                Method (_CRS, 0, NotSerialized)
                    234:                {
                    235:                    Name (BUF0, ResourceTemplate ()
                    236:                     {
                    237:                         IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04)
                    238:                         IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
                    239:                         IRQNoFlags () {6}
                    240:                         DMA (Compatibility, NotBusMaster, Transfer8) {2}
                    241:                     })
                    242:                    Return (BUF0)
                    243:                }
                    244:            }
                    245: 
                    246:            /* Parallel port */
                    247:            Device (LPT)
                    248:            {
                    249:                Name (_HID, EisaId ("PNP0400"))
                    250:                Method (_STA, 0, NotSerialized)
                    251:                {
                    252:                    Store (\_SB.PCI0.PX13.DRSA, Local0)
                    253:                    And (Local0, 0x80000000, Local0)
                    254:                    If (LEqual (Local0, 0))
                    255:                    {
                    256:                        Return (0x00)
                    257:                    }
                    258:                    Else
                    259:                    {
                    260:                        Return (0x0F)
                    261:                    }
                    262:                }
                    263:                Method (_CRS, 0, NotSerialized)
                    264:                {
                    265:                    Name (BUF0, ResourceTemplate ()
                    266:                     {
                    267:                        IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
                    268:                        IRQNoFlags () {7}
                    269:                    })
                    270:                    Return (BUF0)
                    271:                }
                    272:            }
                    273: 
                    274:            /* Serial Ports */
                    275:            Device (COM1)
                    276:            {
                    277:                Name (_HID, EisaId ("PNP0501"))
                    278:                Name (_UID, 0x01)
                    279:                Method (_STA, 0, NotSerialized)
                    280:                {
                    281:                    Store (\_SB.PCI0.PX13.DRSC, Local0)
                    282:                    And (Local0, 0x08000000, Local0)
                    283:                    If (LEqual (Local0, 0))
                    284:                    {
                    285:                        Return (0x00)
                    286:                    }
                    287:                    Else
                    288:                    {
                    289:                        Return (0x0F)
                    290:                    }
                    291:                }
                    292:                Method (_CRS, 0, NotSerialized)
                    293:                {
                    294:                    Name (BUF0, ResourceTemplate ()
                    295:                     {
                    296:                        IO (Decode16, 0x03F8, 0x03F8, 0x00, 0x08)
                    297:                        IRQNoFlags () {4}
                    298:                    })
                    299:                    Return (BUF0)
                    300:                }
                    301:            }
                    302: 
                    303:            Device (COM2)
                    304:            {
                    305:                Name (_HID, EisaId ("PNP0501"))
                    306:                Name (_UID, 0x02)
                    307:                Method (_STA, 0, NotSerialized)
                    308:                {
                    309:                    Store (\_SB.PCI0.PX13.DRSC, Local0)
                    310:                    And (Local0, 0x80000000, Local0)
                    311:                    If (LEqual (Local0, 0))
                    312:                    {
                    313:                        Return (0x00)
                    314:                    }
                    315:                    Else
                    316:                    {
                    317:                        Return (0x0F)
                    318:                    }
                    319:                }
                    320:                Method (_CRS, 0, NotSerialized)
                    321:                {
                    322:                    Name (BUF0, ResourceTemplate ()
                    323:                     {
                    324:                        IO (Decode16, 0x02F8, 0x02F8, 0x00, 0x08)
                    325:                        IRQNoFlags () {3}
                    326:                    })
                    327:                    Return (BUF0)
                    328:                }
                    329:            }
                    330:         }
                    331: 
                    332:        /* PIIX4 PM */
                    333:         Device (PX13) {
                    334:            Name (_ADR, 0x00010003)
                    335: 
                    336:            OperationRegion (P13C, PCI_Config, 0x5c, 0x24)
                    337:            Field (P13C, DWordAcc, NoLock, Preserve)
                    338:            {
                    339:                DRSA, 32,
                    340:                DRSB, 32,
                    341:                DRSC, 32,
                    342:                DRSE, 32,
                    343:                DRSF, 32,
                    344:                DRSG, 32,
                    345:                DRSH, 32,
                    346:                DRSI, 32,
                    347:                DRSJ, 32
                    348:            }
                    349:        }
                    350:     }
                    351: 
                    352:     /* PCI IRQs */
                    353:     Scope(\_SB) {
                    354:          Field (\_SB.PCI0.ISA.P40C, ByteAcc, NoLock, Preserve)
                    355:          {
                    356:              PRQ0,   8, 
                    357:              PRQ1,   8, 
                    358:              PRQ2,   8, 
                    359:              PRQ3,   8
                    360:          }
                    361: 
                    362:         Device(LNKA){
                    363:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    364:                 Name(_UID, 1)
                    365:                 Name(_PRS, ResourceTemplate(){
                    366:                     IRQ (Level, ActiveLow, Shared)
                    367:                         {3,4,5,6,7,9,10,11,12}
                    368:                 })
                    369:                 Method (_STA, 0, NotSerialized)
                    370:                 {
                    371:                     Store (0x0B, Local0)
                    372:                     If (And (0x80, PRQ0, Local1))
                    373:                     {
                    374:                          Store (0x09, Local0)
                    375:                     }
                    376:                     Return (Local0)
                    377:                 }
                    378:                 Method (_DIS, 0, NotSerialized)
                    379:                 {
                    380:                     Or (PRQ0, 0x80, PRQ0)
                    381:                 }
                    382:                 Method (_CRS, 0, NotSerialized)
                    383:                 {
                    384:                     Name (PRR0, ResourceTemplate ()
                    385:                     {
                    386:                         IRQ (Level, ActiveLow, Shared)
                    387:                             {1}
                    388:                     })
                    389:                     CreateWordField (PRR0, 0x01, TMP)
                    390:                     Store (PRQ0, Local0)
                    391:                     If (LLess (Local0, 0x80))
                    392:                     {
                    393:                         ShiftLeft (One, Local0, TMP)
                    394:                     }
                    395:                     Else
                    396:                     {
                    397:                         Store (Zero, TMP)
                    398:                     }
                    399:                     Return (PRR0)
                    400:                 }
                    401:                 Method (_SRS, 1, NotSerialized)
                    402:                 {
                    403:                     CreateWordField (Arg0, 0x01, TMP)
                    404:                     FindSetRightBit (TMP, Local0)
                    405:                     Decrement (Local0)
                    406:                     Store (Local0, PRQ0)
                    407:                 }
                    408:         }
                    409:         Device(LNKB){
                    410:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    411:                 Name(_UID, 2)
                    412:                 Name(_PRS, ResourceTemplate(){
                    413:                     IRQ (Level, ActiveLow, Shared)
                    414:                         {3,4,5,6,7,9,10,11,12}
                    415:                 })
                    416:                 Method (_STA, 0, NotSerialized)
                    417:                 {
                    418:                     Store (0x0B, Local0)
                    419:                     If (And (0x80, PRQ1, Local1))
                    420:                     {
                    421:                          Store (0x09, Local0)
                    422:                     }
                    423:                     Return (Local0)
                    424:                 }
                    425:                 Method (_DIS, 0, NotSerialized)
                    426:                 {
                    427:                     Or (PRQ1, 0x80, PRQ1)
                    428:                 }
                    429:                 Method (_CRS, 0, NotSerialized)
                    430:                 {
                    431:                     Name (PRR0, ResourceTemplate ()
                    432:                     {
                    433:                         IRQ (Level, ActiveLow, Shared)
                    434:                             {1}
                    435:                     })
                    436:                     CreateWordField (PRR0, 0x01, TMP)
                    437:                     Store (PRQ1, Local0)
                    438:                     If (LLess (Local0, 0x80))
                    439:                     {
                    440:                         ShiftLeft (One, Local0, TMP)
                    441:                     }
                    442:                     Else
                    443:                     {
                    444:                         Store (Zero, TMP)
                    445:                     }
                    446:                     Return (PRR0)
                    447:                 }
                    448:                 Method (_SRS, 1, NotSerialized)
                    449:                 {
                    450:                     CreateWordField (Arg0, 0x01, TMP)
                    451:                     FindSetRightBit (TMP, Local0)
                    452:                     Decrement (Local0)
                    453:                     Store (Local0, PRQ1)
                    454:                 }
                    455:         }
                    456:         Device(LNKC){
                    457:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    458:                 Name(_UID, 3)
                    459:                 Name(_PRS, ResourceTemplate(){
                    460:                     IRQ (Level, ActiveLow, Shared)
                    461:                         {3,4,5,6,7,9,10,11,12}
                    462:                 })
                    463:                 Method (_STA, 0, NotSerialized)
                    464:                 {
                    465:                     Store (0x0B, Local0)
                    466:                     If (And (0x80, PRQ2, Local1))
                    467:                     {
                    468:                          Store (0x09, Local0)
                    469:                     }
                    470:                     Return (Local0)
                    471:                 }
                    472:                 Method (_DIS, 0, NotSerialized)
                    473:                 {
                    474:                     Or (PRQ2, 0x80, PRQ2)
                    475:                 }
                    476:                 Method (_CRS, 0, NotSerialized)
                    477:                 {
                    478:                     Name (PRR0, ResourceTemplate ()
                    479:                     {
                    480:                         IRQ (Level, ActiveLow, Shared)
                    481:                             {1}
                    482:                     })
                    483:                     CreateWordField (PRR0, 0x01, TMP)
                    484:                     Store (PRQ2, Local0)
                    485:                     If (LLess (Local0, 0x80))
                    486:                     {
                    487:                         ShiftLeft (One, Local0, TMP)
                    488:                     }
                    489:                     Else
                    490:                     {
                    491:                         Store (Zero, TMP)
                    492:                     }
                    493:                     Return (PRR0)
                    494:                 }
                    495:                 Method (_SRS, 1, NotSerialized)
                    496:                 {
                    497:                     CreateWordField (Arg0, 0x01, TMP)
                    498:                     FindSetRightBit (TMP, Local0)
                    499:                     Decrement (Local0)
                    500:                     Store (Local0, PRQ2)
                    501:                 }
                    502:         }
                    503:         Device(LNKD){
                    504:                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                    505:                 Name(_UID, 4)
                    506:                 Name(_PRS, ResourceTemplate(){
                    507:                     IRQ (Level, ActiveLow, Shared)
                    508:                         {3,4,5,6,7,9,10,11,12}
                    509:                 })
                    510:                 Method (_STA, 0, NotSerialized)
                    511:                 {
                    512:                     Store (0x0B, Local0)
                    513:                     If (And (0x80, PRQ3, Local1))
                    514:                     {
                    515:                          Store (0x09, Local0)
                    516:                     }
                    517:                     Return (Local0)
                    518:                 }
                    519:                 Method (_DIS, 0, NotSerialized)
                    520:                 {
                    521:                     Or (PRQ3, 0x80, PRQ3)
                    522:                 }
                    523:                 Method (_CRS, 0, NotSerialized)
                    524:                 {
                    525:                     Name (PRR0, ResourceTemplate ()
                    526:                     {
                    527:                         IRQ (Level, ActiveLow, Shared)
                    528:                             {1}
                    529:                     })
                    530:                     CreateWordField (PRR0, 0x01, TMP)
                    531:                     Store (PRQ3, Local0)
                    532:                     If (LLess (Local0, 0x80))
                    533:                     {
                    534:                         ShiftLeft (One, Local0, TMP)
                    535:                     }
                    536:                     Else
                    537:                     {
                    538:                         Store (Zero, TMP)
                    539:                     }
                    540:                     Return (PRR0)
                    541:                 }
                    542:                 Method (_SRS, 1, NotSerialized)
                    543:                 {
                    544:                     CreateWordField (Arg0, 0x01, TMP)
                    545:                     FindSetRightBit (TMP, Local0)
                    546:                     Decrement (Local0)
                    547:                     Store (Local0, PRQ3)
                    548:                 }
                    549:         }
                    550:     }
                    551: 
                    552:     /* S5 = power off state */
                    553:     Name (_S5, Package (4) {
                    554:         0x00, // PM1a_CNT.SLP_TYP 
                    555:         0x00, // PM2a_CNT.SLP_TYP 
                    556:         0x00, // reserved
                    557:         0x00, // reserved
                    558:     })
                    559: }

unix.superglobalmegacorp.com