blob: a18673c6794e4b898d8ff0c93073ee61a53514fc [file] [log] [blame]
Stefan Reinauercc46e732009-03-13 00:44:09 +00001/*
2 * This file is part of the coreboot project.
3 *
4 * Copyright (C) 2007-2009 coresystems GmbH
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; version 2 of
9 * the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
19 * MA 02110-1301 USA
20 */
21
22// Intel LPC Bus Device - 0:1f.0
23
24Device (LPCB)
25{
26 Name(_ADR, 0x001f0000)
Stefan Reinauer109ab312009-08-12 16:08:05 +000027
Stefan Reinauercc46e732009-03-13 00:44:09 +000028 OperationRegion(LPC0, PCI_Config, 0x00, 0x100)
29 Field (LPC0, AnyAcc, NoLock, Preserve)
30 {
31 Offset (0x40),
32 PMBS, 16, // PMBASE
33 Offset (0x60), // Interrupt Routing Registers
34 PRTA, 8,
35 PRTB, 8,
36 PRTC, 8,
37 PRTD, 8,
38 Offset (0x68),
39 PRTE, 8,
40 PRTF, 8,
41 PRTG, 8,
42 PRTH, 8,
43
44 Offset (0x80), // IO Decode Ranges
45 IOD0, 8,
46 IOD1, 8,
47
48 Offset (0xf0), // RCBA
49 RCEN, 1,
50 , 13,
51 RCBA, 18,
52 }
53
Stefan Reinaueraca6ec62009-10-26 17:12:21 +000054 #include "../../../southbridge/intel/i82801gx/acpi/ich7_irqlinks.asl"
Stefan Reinauer109ab312009-08-12 16:08:05 +000055
Stefan Reinaueraca6ec62009-10-26 17:12:21 +000056 #include "acpi/ec.asl"
Stefan Reinauercc46e732009-03-13 00:44:09 +000057
58 Device (DMAC) // DMA Controller
59 {
60 Name(_HID, EISAID("PNP0200"))
61 Name(_CRS, ResourceTemplate()
62 {
63 IO (Decode16, 0x00, 0x00, 0x01, 0x20)
64 IO (Decode16, 0x81, 0x81, 0x01, 0x11)
65 IO (Decode16, 0x93, 0x93, 0x01, 0x0d)
66 IO (Decode16, 0xc0, 0xc0, 0x01, 0x20)
67 DMA (Compatibility, NotBusMaster, Transfer8_16) { 4 }
68 })
69 }
70
Stefan Reinauer573f7d42009-07-21 21:50:34 +000071 Device (FWH) // Firmware Hub
Stefan Reinauercc46e732009-03-13 00:44:09 +000072 {
73 Name (_HID, EISAID("INT0800"))
74 Name (_CRS, ResourceTemplate()
75 {
76 Memory32Fixed(ReadOnly, 0xff000000, 0x01000000)
77 })
78 }
79
80 Device (HPET)
81 {
82 Name (_HID, EISAID("PNP0103"))
Stefan Reinauer573f7d42009-07-21 21:50:34 +000083 Name (_CID, 0x010CD041)
Stefan Reinauercc46e732009-03-13 00:44:09 +000084
85 Name(BUF0, ResourceTemplate()
86 {
87 Memory32Fixed(ReadOnly, 0xfed00000, 0x400, FED0)
88 })
89
90 Method (_STA, 0) // Device Status
91 {
92 If (HPTE) {
93 // Note: Ancient versions of Windows don't want
94 // to see the HPET in order to work right
Stefan Reinauer573f7d42009-07-21 21:50:34 +000095 If (LGreaterEqual(OSYS, 2001)) {
96 Return (0xf) // Enable and show device
97 } Else {
98 Return (0xb) // Enable and don't show device
99 }
Stefan Reinauercc46e732009-03-13 00:44:09 +0000100 }
101
102 Return (0x0) // Not enabled, don't show.
103 }
104
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000105 Method (_CRS, 0, Serialized) // Current resources
Stefan Reinauercc46e732009-03-13 00:44:09 +0000106 {
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000107 If (HPTE) {
108 CreateDWordField(BUF0, \_SB.PCI0.LPCB.HPET.FED0._BAS, HPT0)
109 If (Lequal(HPAS, 1)) {
110 Store(0xfed01000, HPT0)
111 }
112
113 If (Lequal(HPAS, 2)) {
114 Store(0xfed02000, HPT0)
115 }
116
117 If (Lequal(HPAS, 3)) {
118 Store(0xfed03000, HPT0)
119 }
120 }
Stefan Reinauercc46e732009-03-13 00:44:09 +0000121
122 Return (BUF0)
123 }
124 }
125
126 Device(PIC) // 8259 Interrupt Controller
127 {
128 Name(_HID,EISAID("PNP0000"))
129 Name(_CRS, ResourceTemplate()
130 {
131 IO (Decode16, 0x20, 0x20, 0x01, 0x02)
132 IO (Decode16, 0x24, 0x24, 0x01, 0x02)
133 IO (Decode16, 0x28, 0x28, 0x01, 0x02)
134 IO (Decode16, 0x2c, 0x2c, 0x01, 0x02)
135 IO (Decode16, 0x30, 0x30, 0x01, 0x02)
136 IO (Decode16, 0x34, 0x34, 0x01, 0x02)
137 IO (Decode16, 0x38, 0x38, 0x01, 0x02)
138 IO (Decode16, 0x3c, 0x3c, 0x01, 0x02)
139 IO (Decode16, 0xa0, 0xa0, 0x01, 0x02)
140 IO (Decode16, 0xa4, 0xa4, 0x01, 0x02)
141 IO (Decode16, 0xa8, 0xa8, 0x01, 0x02)
142 IO (Decode16, 0xac, 0xac, 0x01, 0x02)
143 IO (Decode16, 0xb0, 0xb0, 0x01, 0x02)
144 IO (Decode16, 0xb4, 0xb4, 0x01, 0x02)
145 IO (Decode16, 0xb8, 0xb8, 0x01, 0x02)
146 IO (Decode16, 0xbc, 0xbc, 0x01, 0x02)
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000147 IO (Decode16, 0x4d0, 0x4d0, 0x01, 0x02)
Stefan Reinauercc46e732009-03-13 00:44:09 +0000148 IRQNoFlags () { 2 }
149 })
150 }
151
152 Device(MATH) // FPU
153 {
154 Name (_HID, EISAID("PNP0C04"))
155 Name (_CRS, ResourceTemplate()
156 {
157 IO (Decode16, 0xf0, 0xf0, 0x01, 0x01)
158 IRQNoFlags() { 13 }
159 })
160 }
161
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000162 Device(LDRC) // LPC device: Resource consumption
Stefan Reinauercc46e732009-03-13 00:44:09 +0000163 {
164 Name (_HID, EISAID("PNP0C02"))
165 Name (_UID, 2)
166 Name (_CRS, ResourceTemplate()
167 {
168 IO (Decode16, 0x2e, 0x2e, 0x1, 0x02) // First SuperIO
169 IO (Decode16, 0x4e, 0x4e, 0x1, 0x02) // Second SuperIO
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000170 IO (Decode16, 0x61, 0x61, 0x1, 0x01) // NMI Status
171 IO (Decode16, 0x63, 0x63, 0x1, 0x01) // CPU Reserved
172 IO (Decode16, 0x65, 0x65, 0x1, 0x01) // CPU Reserved
173 IO (Decode16, 0x67, 0x67, 0x1, 0x01) // CPU Reserved
174 IO (Decode16, 0x80, 0x80, 0x1, 0x01) // Port 80 Post
175 IO (Decode16, 0x92, 0x92, 0x1, 0x01) // CPU Reserved
Stefan Reinauercc46e732009-03-13 00:44:09 +0000176 IO (Decode16, 0xb2, 0xb2, 0x1, 0x02) // SWSMI
Stefan Reinauercc46e732009-03-13 00:44:09 +0000177 IO (Decode16, 0x800, 0x800, 0x1, 0x10) // ACPI I/O trap
Stefan Reinaueraca6ec62009-10-26 17:12:21 +0000178 IO (Decode16, DEFAULT_PMBASE, DEFAULT_PMBASE, 0x1, 0x80) // ICH7-M ACPI
179 IO (Decode16, DEFAULT_GPIOBASE, DEFAULT_GPIOBASE, 0x1, 0x40) // ICH7-M GPIO
Stefan Reinauercc46e732009-03-13 00:44:09 +0000180 })
181 }
182
183 Device (RTC) // Real Time Clock
184 {
185 Name (_HID, EISAID("PNP0B00"))
186 Name (_CRS, ResourceTemplate()
187 {
188 IO (Decode16, 0x70, 0x70, 1, 8)
Stefan Reinaueraca6ec62009-10-26 17:12:21 +0000189// Disable as Windows doesn't like it, and systems don't seem to use it.
190// IRQNoFlags() { 8 }
Stefan Reinauercc46e732009-03-13 00:44:09 +0000191 })
192 }
193
194 Device (TIMR) // Intel 8254 timer
195 {
196 Name(_HID, EISAID("PNP0100"))
197 Name(_CRS, ResourceTemplate()
198 {
199 IO (Decode16, 0x40, 0x40, 0x01, 0x04)
200 IO (Decode16, 0x50, 0x50, 0x10, 0x04)
201 IRQNoFlags() {0}
202 })
203 }
204
Stefan Reinaueraca6ec62009-10-26 17:12:21 +0000205 #include "acpi/superio.asl"
206
207#ifdef ENABLE_TPM
208 Device (TPM) // Trusted Platform Module
209 {
210 Name(_HID, EISAID("IFX0102"))
211 Name(_CID, 0x310cd041)
212 Name(_UID, 1)
213
214 Method(_STA, 0)
215 {
216 If (TPMP) {
217 Return (0xf)
218 }
219 Return (0x0)
220 }
221
222 Name(_CRS, ResourceTemplate() {
223 IO (Decode16, 0x2e, 0x2e, 0x01, 0x02)
224 IO (Decode16, 0x6f0, 0x6f0, 0x01, 0x10)
225 Memory32Fixed (ReadWrite, 0xfed40000, 0x5000)
226 IRQ (Edge, Activehigh, Exclusive) { 6 }
227 })
228 }
229#endif
Stefan Reinauercc46e732009-03-13 00:44:09 +0000230
231 Device (PS2K) // Keyboard
232 {
233 Name(_HID, EISAID("PNP0303"))
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000234 Name(_CID, EISAID("PNP030B"))
235
Stefan Reinauercc46e732009-03-13 00:44:09 +0000236 Name(_CRS, ResourceTemplate()
237 {
238 IO (Decode16, 0x60, 0x60, 0x01, 0x01)
239 IO (Decode16, 0x64, 0x64, 0x01, 0x01)
240 IRQ (Edge, ActiveHigh, Exclusive) { 0x01 } // IRQ 1
241 })
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000242
243 Method (_STA, 0)
244 {
245 Return (0xf)
246 }
Stefan Reinauercc46e732009-03-13 00:44:09 +0000247 }
248
249 Device (PS2M) // Mouse
250 {
251 Name(_HID, EISAID("PNP0F13"))
252 Name(_CRS, ResourceTemplate()
253 {
254 IRQ (Edge, ActiveHigh, Exclusive) { 0x0c } // IRQ 12
255 })
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000256
257 Method(_STA, 0)
258 {
259 Return (0xf)
260 }
261 }
262
Stefan Reinaueraca6ec62009-10-26 17:12:21 +0000263#ifdef ENABLE_FDC
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000264 Device (FDC0) // Floppy controller
265 {
266 Name (_HID, EisaId ("PNP0700"))
267 Method (_STA, 0, NotSerialized)
268 {
269 Return (0x0f) // FIXME
270 }
271
272 Name(_CRS, ResourceTemplate()
273 {
274 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
275 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
276 IRQNoFlags () {6}
277 DMA (Compatibility, NotBusMaster, Transfer8) {2}
278 })
279
280 Name(_PRS, ResourceTemplate()
281 {
282 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
283 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
284 IRQNoFlags () {6}
285 DMA (Compatibility, NotBusMaster, Transfer8) {2}
286 })
287
Stefan Reinauercc46e732009-03-13 00:44:09 +0000288 }
Stefan Reinaueraca6ec62009-10-26 17:12:21 +0000289#endif
Stefan Reinauercc46e732009-03-13 00:44:09 +0000290}