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
22Device(FWHD) // Firmware Hub Device
23{
24  Name(_HID,EISAID("INT0800"))
25
26  Name(_CRS,ResourceTemplate()
27  {
28    Memory32Fixed(ReadOnly,0xFF000000,0x1000000)
29  })
30}
31
32Device(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
59Device(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
82Device(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
94Device(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