1/** @file
2Legacy resource template
3
4Copyright (c) 2013-2015 Intel Corporation.
5
6This program and the accompanying materials
7are licensed and made available under the terms and conditions of the BSD License
8which accompanies this distribution.  The full text of the license may be found at
9http://opensource.org/licenses/bsd-license.php
10
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14**/
15
16#ifndef LPC_DEV_ASI
17#define LPC_DEV_ASI
18
19Device(RTC)
20{
21    Name(_HID,EISAID("PNP0B00"))
22    Name(BUF0,ResourceTemplate() {
23        IO(Decode16,0x70,0x70,0x01,0x04)
24        IO(Decode16,0x74,0x74,0x01,0x04)
25    })
26    Name(BUF1,ResourceTemplate() {
27        IO(Decode16,0x70,0x70,0x01,0x04)
28        IO(Decode16,0x74,0x74,0x01,0x04)
29        IRQNoFlags(){8}
30    })
31    Method(_CRS,0,Serialized)
32    {
33        If (HPEA)
34        {
35            return (BUF0)
36        }
37        Else
38        {
39            return (BUF1)
40        }
41    }
42}
43
44Device(PIC)
45{
46    Name(_HID,EISAID("PNP0000"))
47
48    Name(_CRS,ResourceTemplate() {
49        IO(Decode16,0x20,0x20,0x01,0x1E)        // length of 1Eh includes all aliases
50        IO(Decode16,0xA0,0xA0,0x01,0x1E)
51        IO(Decode16,0x4D0,0x4D0,0x01,0x02)
52    })
53}
54
55Device(TMR)
56{
57    Name(_HID,EISAID("PNP0100"))
58
59    Name(BUF0,ResourceTemplate() {
60        IO(Decode16,0x40,0x40,0x01,0x04)
61        IO(Decode16,0x50,0x50,0x01,0x04)        // alias
62    })
63    Name(BUF1,ResourceTemplate() {
64        IO(Decode16,0x40,0x40,0x01,0x04)
65        IO(Decode16,0x50,0x50,0x01,0x04)        // alias
66        IRQNoFlags(){0}
67    })
68    Method(_CRS,0,Serialized)
69    {
70        If (HPEA)
71        {
72            return (BUF0)
73        }
74        Else
75        {
76            return (BUF1)
77        }
78    }
79}
80
81Device(SPKR)
82{
83    Name(_HID,EISAID("PNP0800"))
84
85    Name(_CRS,ResourceTemplate() {
86        IO(Decode16,0x61,0x61,0x01,0x01)
87    })
88}
89
90Device(XTRA)    // all "PNP0C02" devices- pieces that don't fit anywhere else
91{
92    Name(_HID,EISAID("PNP0C02"))        // Generic motherboard devices
93
94    Name(CRS,
95        ResourceTemplate()
96        {
97            IO(Decode16,0x2E,0x2E,0x01,0x02)
98            IO(Decode16,0x4E,0x2E,0x01,0x02)
99            IO(Decode16,0x63,0x61,0x01,0x01)
100            IO(Decode16,0x65,0x61,0x01,0x01)
101            IO(Decode16,0x67,0x61,0x01,0x01)
102            IO(Decode16,0x80,0x80,0x01,0x01)
103            IO(Decode16,0x84,0x84,0x01,0x04)
104            IO(Decode16,0x88,0x88,0x01,0x01)
105            IO(Decode16,0x8c,0x8c,0x01,0x03)
106            IO(Decode16,0x92,0x92,0x01,0x01)
107
108            IO(
109              Decode16,
110              0,
111              0,
112              0x01,
113              0x10,
114              FIX1
115              )
116
117            IO(
118              Decode16,
119              0,
120              0,
121              0x01,
122              0x10,
123              FIX2
124              )
125
126            IO(
127              Decode16,
128              0,
129              0,
130              0x01,
131              0x40,
132              FIX3
133              )
134
135           IO(
136              Decode16,
137              0,
138              0,
139              0x01,
140              0x40,
141              FIX5
142              )
143
144            IO(
145              Decode16,
146              0,
147              0,
148              0x01,
149              0x40,
150              FIX6
151              )
152
153        }
154    )
155
156    Method (_CRS, 0, NotSerialized) {
157      CreateWordField (CRS, ^FIX1._MIN, MBR0)
158      Store(\P1BB, MBR0)
159      CreateWordField (CRS, ^FIX1._MAX, MBR1)
160      Store(\P1BB, MBR1)
161      CreateWordField (CRS, ^FIX2._MIN, MBR2)
162      Store(\PBAB, MBR2)
163      CreateWordField (CRS, ^FIX2._MAX, MBR3)
164      Store(\PBAB, MBR3)
165      CreateWordField (CRS, ^FIX3._MIN, MBR4)
166      Store(\GP0B, MBR4)
167      CreateWordField (CRS, ^FIX3._MAX, MBR5)
168      Store(\GP0B, MBR5)
169      CreateWordField (CRS, ^FIX5._MIN, MBR8)
170      Store(\SMBB, MBR8)
171      CreateWordField (CRS, ^FIX5._MAX, MBR9)
172      Store(\SMBB, MBR9)
173      CreateWordField (CRS, ^FIX6._MIN, MBRA)
174      Store(\WDTB, MBRA)
175      CreateWordField (CRS, ^FIX6._MAX, MBRB)
176      Store(\WDTB, MBRB)
177      return (CRS)
178    }
179}
180
181Device(LGIO)  // Legacy GPIO.
182{
183    Name(_HID, "INT3488")
184    Name(_CID, "INT3488")
185
186    Name(CRS,
187        ResourceTemplate()
188        {
189            IO(
190              Decode16,
191              0,
192              0,
193              0x01,
194              0x48,
195              FIX4
196              )
197        }
198    )
199
200    Method (_CRS, 0, NotSerialized) {
201      CreateWordField (CRS, ^FIX4._MIN, MBR6)
202      Store(\GPAB, MBR6)
203      CreateWordField (CRS, ^FIX4._MAX, MBR7)
204      Store(\GPAB, MBR7)
205      return (CRS)
206    }
207}
208
209Device(HPET)  // High Performance Event Timer
210{
211  Name(_HID,EISAID("PNP0103"))
212
213  Name(BUF0,ResourceTemplate()
214  {
215    IRQNoFlags() {0}
216    IRQNoFlags() {8}
217    Memory32Fixed(ReadOnly, 0, 0, FIX1)
218  })
219
220  Method(_STA,0)
221  {
222    // Show this Device only if the OS is WINXP or beyond.
223
224    If(LGreaterEqual(OSTP,WINDOWS_XP))
225    {
226      If(HPEA)
227      {
228        Return(0x000F)  // Enabled, do Display.
229      }
230    }
231    Else
232    {
233      // OS = WIN98, WINME, or WIN2000.
234
235      If(HPEA)
236      {
237        Return(0x000B)  // Enabled, don't Display.
238      }
239    }
240
241    Return(0x0000)      // Return Nothing.
242  }
243
244  Method(_CRS,0,Serialized)
245  {
246    CreateDWordField (BUF0, ^FIX1._BAS, MBR0)
247    Store(\HPTB, MBR0)
248    CreateDWordField (BUF0, ^FIX1._LEN, MBR1)
249    Store(\HPTS, MBR1)
250    Return(BUF0)
251  }
252}
253
254#endif
255