blob: fdf05b2e2fffd0dddd6f32a039def47ea5e09adf [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
54 Include ("../../../southbridge/intel/i82801gx/acpi/ich7_irqlinks.asl")
Stefan Reinauer109ab312009-08-12 16:08:05 +000055
Stefan Reinauercc46e732009-03-13 00:44:09 +000056 Include ("acpi/ec.asl")
57
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 Reinauer573f7d42009-07-21 21:50:34 +0000177 // IO (Decode16, 0x680, 0x680, 0x1, 0x70) // IO ???
Stefan Reinauercc46e732009-03-13 00:44:09 +0000178 IO (Decode16, 0x800, 0x800, 0x1, 0x10) // ACPI I/O trap
179 IO (Decode16, 0x0500, 0x0500, 0x1, 0x80) // ICH7-M ACPI
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000180 IO (Decode16, 0x0480, 0x0480, 0x1, 0x40) // ICH7-M GPIO
181 // IO (Decode16, 0x1640, 0x1640, 0x1, 0x10) // IO ???
Stefan Reinauercc46e732009-03-13 00:44:09 +0000182 })
183 }
184
185 Device (RTC) // Real Time Clock
186 {
187 Name (_HID, EISAID("PNP0B00"))
188 Name (_CRS, ResourceTemplate()
189 {
190 IO (Decode16, 0x70, 0x70, 1, 8)
191 IRQNoFlags() { 8 }
192 })
193 }
194
195 Device (TIMR) // Intel 8254 timer
196 {
197 Name(_HID, EISAID("PNP0100"))
198 Name(_CRS, ResourceTemplate()
199 {
200 IO (Decode16, 0x40, 0x40, 0x01, 0x04)
201 IO (Decode16, 0x50, 0x50, 0x10, 0x04)
202 IRQNoFlags() {0}
203 })
204 }
205
206 Include ("acpi/superio.asl")
207
208 Device (PS2K) // Keyboard
209 {
210 Name(_HID, EISAID("PNP0303"))
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000211 Name(_CID, EISAID("PNP030B"))
212
Stefan Reinauercc46e732009-03-13 00:44:09 +0000213 Name(_CRS, ResourceTemplate()
214 {
215 IO (Decode16, 0x60, 0x60, 0x01, 0x01)
216 IO (Decode16, 0x64, 0x64, 0x01, 0x01)
217 IRQ (Edge, ActiveHigh, Exclusive) { 0x01 } // IRQ 1
218 })
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000219
220 Method (_STA, 0)
221 {
222 Return (0xf)
223 }
Stefan Reinauercc46e732009-03-13 00:44:09 +0000224 }
225
226 Device (PS2M) // Mouse
227 {
228 Name(_HID, EISAID("PNP0F13"))
229 Name(_CRS, ResourceTemplate()
230 {
231 IRQ (Edge, ActiveHigh, Exclusive) { 0x0c } // IRQ 12
232 })
Stefan Reinauer573f7d42009-07-21 21:50:34 +0000233
234 Method(_STA, 0)
235 {
236 Return (0xf)
237 }
238 }
239
240 Device (FDC0) // Floppy controller
241 {
242 Name (_HID, EisaId ("PNP0700"))
243 Method (_STA, 0, NotSerialized)
244 {
245 Return (0x0f) // FIXME
246 }
247
248 Name(_CRS, ResourceTemplate()
249 {
250 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
251 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
252 IRQNoFlags () {6}
253 DMA (Compatibility, NotBusMaster, Transfer8) {2}
254 })
255
256 Name(_PRS, ResourceTemplate()
257 {
258 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
259 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
260 IRQNoFlags () {6}
261 DMA (Compatibility, NotBusMaster, Transfer8) {2}
262 })
263
Stefan Reinauercc46e732009-03-13 00:44:09 +0000264 }
265}