2 * This file is part of the coreboot project.
4 * Copyright (C) 2004 Nick Barker <Nick.Barker9@btinternet.com>
5 * Copyright (C) 2007, 2008 Rudolf Marek <r.marek@assembler.cz>
6 * Copyright (C) 2009 Harald Gutmann <harald.gutmann@gmx.net>
8 * ISA portions taken from QEMU acpi-dsdt.dsl.
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; version 2 of the License.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
20 DefinitionBlock ("DSDT.aml", "DSDT", 1, "CORE ", "COREBOOT", 1)
22 #include <northbridge/amd/amdk8/util.asl>
24 /* For now only define 2 power states:
25 * - S0 which is fully on
26 * - S5 which is soft off
28 Name (\_S0, Package () { 0x00, 0x00, 0x00, 0x00 })
29 Name (\_S5, Package () { 0x07, 0x00, 0x00, 0x00 })
31 /* Root of the bus hierarchy */
37 Name (_HID, EisaId ("PNP0A03"))
51 Method (_CRS, 0, NotSerialized)
53 Name (BUF0, ResourceTemplate ()
56 0x0CF8, // Address Range Minimum
57 0x0CF8, // Address Range Maximum
58 0x01, // Address Alignment
59 0x08, // Address Length
61 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
62 0x0000, // Address Space Granularity
63 0x0000, // Address Range Minimum
64 0x0CF7, // Address Range Maximum
65 0x0000, // Address Translation Offset
66 0x0CF8, // Address Length
69 /* Methods bellow use SSDT to get actual MMIO regs
70 The IO ports are from 0xd00, optionally an VGA,
71 otherwise the info from MMIO is used.
73 Concatenate (\_SB.GMEM (0x00, \_SB.PCI0.SBLK), BUF0, Local1)
74 Concatenate (\_SB.GIOR (0x00, \_SB.PCI0.SBLK), Local1, Local2)
75 Concatenate (\_SB.GWBN (0x00, \_SB.PCI0.SBLK), Local2, Local3)
79 /* PCI Routing Table */
80 Name (_PRT, Package () {
81 Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x0A }, /* 0x1 - 00:01.1 - IRQ 10 - SMBus */
82 Package (0x04) { 0x0002FFFF, 0x00, 0x00, 0x16 }, /* 0x2 - 00:02.0 - IRQ 22 - USB */
83 Package (0x04) { 0x0002FFFF, 0x01, 0x00, 0x17 }, /* 0x2 - 00:01.1 - IRQ 23 - USB */
84 Package (0x04) { 0x0004FFFF, 0x00, 0x00, 0x15 }, /* 0x4 - 00:04.0 - IRQ 21 - IDE */
85 Package (0x04) { 0x0005FFFF, 0x00, 0x00, 0x14 }, /* 0x5 - 00:05.0 - IRQ 20 - SATA */
86 Package (0x04) { 0x0005FFFF, 0x01, 0x00, 0x15 }, /* 0x5 - 00:05.1 - IRQ 21 - SATA */
87 Package (0x04) { 0x0005FFFF, 0x02, 0x00, 0x16 }, /* 0x5 - 00:05.2 - IRQ 22 - SATA */
88 Package (0x04) { 0x0006FFFF, 0x01, 0x00, 0x17 }, /* 0x6 - 00:06.1 - IRQ 23 - HD Audio */
89 Package (0x04) { 0x0008FFFF, 0x00, 0x00, 0x14 }, /* 0x8 - 00:08.0 - IRQ 20 - GBit Ethernet */
92 Device (PEBF) /* PCI-E Bridge F */
94 Name (_ADR, 0x000F0000)
97 Name (_PRT, Package () {
98 Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x11 },
99 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x12 },
100 Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x13 },
101 Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x10 },
105 Device (PEBE) /* PCI-E Bridge E */
107 Name (_ADR, 0x000E0000)
110 Name (_PRT, Package () {
111 Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x12 },
112 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x13 },
113 Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x10 },
114 Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x11 },
118 Device (PEBD) /* PCI-E Bridge D */
120 Name (_ADR, 0x000D0000)
123 Name (_PRT, Package () {
124 Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x13 },
125 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x10 },
126 Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x11 },
127 Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x12 },
131 Device (PEBC) /* PCI-E Bridge C */
133 Name (_ADR, 0x000C0000)
136 Name (_PRT, Package () {
137 Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x10 },
138 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x11 },
139 Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x12 },
140 Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x13 },
144 Device (PEBB) /* PCI-E Bridge B */
146 Name (_ADR, 0x000B0000)
149 Name (_PRT, Package () {
150 Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x11 },
151 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x12 },
152 Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x13 },
153 Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x10 },
157 Device (PEBA) /* PCI-E Bridge A */
159 Name (_ADR, 0x000A0000)
162 Name (_PRT, Package () {
163 Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x12 },
164 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x13 },
165 Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x10 },
166 Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x11 },
170 Device (PCID) /* PCI Device */
172 Name (_ADR, 0x00060000)
175 Name (_PRT, Package () {
176 Package (0x04) { 0x0006FFFF, 0x00, 0x00, 0x12 },
177 Package (0x04) { 0x0006FFFF, 0x01, 0x00, 0x13 },
178 Package (0x04) { 0x0006FFFF, 0x02, 0x00, 0x10 },
179 Package (0x04) { 0x0006FFFF, 0x03, 0x00, 0x11 },
180 Package (0x04) { 0x0007FFFF, 0x00, 0x00, 0x13 }, /* PCI slot 1 */
181 Package (0x04) { 0x0007FFFF, 0x01, 0x00, 0x10 },
182 Package (0x04) { 0x0007FFFF, 0x02, 0x00, 0x11 },
183 Package (0x04) { 0x0007FFFF, 0x03, 0x00, 0x12 },
184 Package (0x04) { 0x0008FFFF, 0x00, 0x00, 0x10 }, /* PCI slot 2 */
185 Package (0x04) { 0x0008FFFF, 0x01, 0x00, 0x11 },
186 Package (0x04) { 0x0008FFFF, 0x02, 0x00, 0x12 },
187 Package (0x04) { 0x0008FFFF, 0x03, 0x00, 0x13 },
188 Package (0x04) { 0x0009FFFF, 0x00, 0x00, 0x11 },
189 Package (0x04) { 0x0009FFFF, 0x01, 0x00, 0x12 },
190 Package (0x04) { 0x0009FFFF, 0x02, 0x00, 0x13 },
191 Package (0x04) { 0x0009FFFF, 0x03, 0x00, 0x10 },
192 Package (0x04) { 0x000AFFFF, 0x00, 0x00, 0x12 }, /* FireWire */
193 Package (0x04) { 0x000AFFFF, 0x01, 0x00, 0x13 },
194 Package (0x04) { 0x000AFFFF, 0x02, 0x00, 0x10 },
195 Package (0x04) { 0x000AFFFF, 0x03, 0x00, 0x11 },
201 Name (_ADR, 0x000010000)
203 /* PS/2 keyboard (seems to be important for WinXP install) */
206 Name (_HID, EisaId ("PNP0303"))
207 Method (_STA, 0, NotSerialized)
211 Method (_CRS, 0, NotSerialized)
213 Name (TMP0, ResourceTemplate () {
214 IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
215 IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
225 Name (_HID, EisaId ("PNP0F13"))
226 Method (_STA, 0, NotSerialized)
230 Method (_CRS, 0, NotSerialized)
232 Name (TMP1, ResourceTemplate () {
233 IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
234 IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
241 /* PS/2 floppy controller */
244 Name (_HID, EisaId ("PNP0700"))
245 Method (_STA, 0, NotSerialized)
249 Method (_CRS, 0, NotSerialized)
251 Name (BUF0, ResourceTemplate () {
252 IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
253 IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
255 DMA (Compatibility, NotBusMaster, Transfer8) {2}
263 Name (_HID, EisaId ("PNP0400"))
264 Method (_STA, 0, NotSerialized)
268 Method (_CRS, 0, NotSerialized)
270 Name (BUF1, ResourceTemplate () {
271 IO (Decode16, 0x0378, 0x0378, 0x01, 0x08)
277 /* Parallel Port ECP */
280 Name (_HID, EisaId ("PNP0401"))
281 Method (_STA, 0, NotSerialized)
285 Method (_CRS, 0, NotSerialized)
287 Name (BUF1, ResourceTemplate () {
288 IO (Decode16, 0x0378, 0x0378, 0x01, 0x04)
289 IO (Decode16, 0x0778, 0x0778, 0x01, 0x04)
291 DMA (Compatibility, NotBusMaster, Transfer8) {0,1,3}