Home | History | Annotate | Download | only in AcpiTablesPCAT
      1 /**************************************************************************;
      2 ;*                                                                        *;
      3 ;*                                                                        *;
      4 ;*    Intel Corporation - ACPI Reference Code for the Baytrail            *;
      5 ;*    Family of Customer Reference Boards.                                *;
      6 ;*                                                                        *;
      7 ;*                                                                        *;
      8 ;*    Copyright (c) 2012  - 2014, Intel Corporation. All rights reserved    *;
      9 ;
     10 ; This program and the accompanying materials are licensed and made available under
     11 ; the terms and conditions of the BSD License that accompanies this distribution.
     12 ; The full text of the license may be found at
     13 ; http://opensource.org/licenses/bsd-license.php.
     14 ;
     15 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     16 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     17 ;
     18 ;*                                                                        *;
     19 ;*                                                                        *;
     20 ;**************************************************************************/
     21 
     22 Device(FWHD) // Firmware Hub Device
     23 {
     24   Name(_HID,EISAID("INT0800"))
     25 
     26   Name(_CRS,ResourceTemplate()
     27   {
     28     Memory32Fixed(ReadOnly,0xFF000000,0x1000000)
     29   })
     30 }
     31 
     32 Device(IPIC) // 8259 PIC
     33 {
     34   Name(_HID,EISAID("PNP0000"))
     35 
     36   Name(_CRS,ResourceTemplate()
     37   {
     38     IO(Decode16,0x20,0x20,0x01,0x02)
     39     IO(Decode16,0x24,0x24,0x01,0x02)
     40     IO(Decode16,0x28,0x28,0x01,0x02)
     41     IO(Decode16,0x2C,0x2C,0x01,0x02)
     42     IO(Decode16,0x30,0x30,0x01,0x02)
     43     IO(Decode16,0x34,0x34,0x01,0x02)
     44     IO(Decode16,0x38,0x38,0x01,0x02)
     45     IO(Decode16,0x3C,0x3C,0x01,0x02)
     46     IO(Decode16,0xA0,0xA0,0x01,0x02)
     47     IO(Decode16,0xA4,0xA4,0x01,0x02)
     48     IO(Decode16,0xA8,0xA8,0x01,0x02)
     49     IO(Decode16,0xAC,0xAC,0x01,0x02)
     50     IO(Decode16,0xB0,0xB0,0x01,0x02)
     51     IO(Decode16,0xB4,0xB4,0x01,0x02)
     52     IO(Decode16,0xB8,0xB8,0x01,0x02)
     53     IO(Decode16,0xBC,0xBC,0x01,0x02)
     54     IO(Decode16,0x4D0,0x4D0,0x01,0x02)
     55     IRQNoFlags() {2}
     56   })
     57 }
     58 
     59 Device(LDRC) // LPC Device Resource Consumption
     60 {
     61   Name(_HID,EISAID("PNP0C02"))
     62 
     63   Name(_UID,2)
     64 
     65   Name(_CRS,ResourceTemplate()
     66   {
     67     IO(Decode16,0x4E,0x4E,0x1,0x02)         // LPC Slot Access.
     68     IO(Decode16,0x61,0x61,0x1,0x1)          // NMI Status.
     69     IO(Decode16,0x63,0x63,0x1,0x1)          // Processor I/F.
     70     IO(Decode16,0x65,0x65,0x1,0x1)          // Processor I/F.
     71     IO(Decode16,0x67,0x67,0x1,0x1)          // Processor I/F.
     72     IO(Decode16,0x70,0x70,0x1,0x1)          // NMI Enable.
     73     IO(Decode16,0x80,0x80,0x1,0x10)         // Postcode.
     74     IO(Decode16,0x92,0x92,0x1,0x1)          // Processor I/F.
     75     IO(Decode16,0xB2,0xB2,0x01,0x02)        // Software SMI.
     76     IO(Decode16,0x680,0x680,0x1,0x20)       // 32 Byte I/O.
     77     IO(Decode16,0x400,0x400,0x1,0x80)       // ACPI Base.
     78     IO(Decode16,0x500,0x500,0x1,0xFF)       // GPIO Base.
     79   })
     80 }
     81 
     82 Device(TIMR) // 8254 Timer
     83 {
     84   Name(_HID,EISAID("PNP0100"))
     85 
     86   Name(_CRS,ResourceTemplate()
     87   {
     88     IO(Decode16,0x40,0x40,0x01,0x04)
     89     IO(Decode16,0x50,0x50,0x10,0x04)
     90     IRQNoFlags() {0}
     91   })
     92 }
     93 
     94 Device(IUR3) // Internal UART
     95 {
     96   Name(_HID, EISAID("PNP0501"))
     97 
     98   Name(_UID,1)
     99 
    100   // Status Method for internal UART
    101 
    102   Method(_STA,0,Serialized)
    103   {
    104     // Only report resources to the OS if internal UART is
    105     // not set to Disabled in BIOS Setup.
    106 
    107     If(LEqual(USEL,0))
    108     {
    109       If(LEqual(PU1E,1))
    110       {
    111         Store(1,UI3E) // Enable IRQ3 for UART
    112         Store(1,UI4E) // Enable IRQ4 for UART
    113         Store(1,C1EN) // Enable UART
    114         Return(0x000F)
    115       }
    116     }
    117 
    118     Return(0x0000)
    119   }
    120 
    121   // Disable Method for internal UART
    122 
    123   Method(_DIS,0,Serialized)
    124   {
    125     Store(0,UI3E)
    126     Store(0,UI4E)
    127     Store(0,C1EN)
    128   }
    129 
    130   // Current Resource Setting Method for internal UART
    131 
    132   Method(_CRS,0,Serialized)
    133   {
    134     // Create the Buffer that stores the Resources to
    135     // be returned.
    136 
    137     Name(BUF0,ResourceTemplate()
    138     {
    139       IO(Decode16,0x03F8,0x03F8,0x01,0x08)
    140       IRQNoFlags() {3}
    141     })
    142 
    143     Name(BUF1,ResourceTemplate()
    144     {
    145       IO(Decode16,0x03F8,0x03F8,0x01,0x08)
    146       IRQNoFlags() {4}
    147     })
    148 
    149     If (LLessEqual(SRID, 0x04))
    150     {
    151       Return(BUF0)
    152     } Else
    153     {
    154       Return(BUF1)
    155     }
    156   }
    157 }
    158