blob: 01cee11bed8e564a9e62744f9b996e9a23bf1bfe [file] [log] [blame]
Rudolf Marek05839972008-09-23 20:36:03 +00001/*
2 * This file is part of the coreboot project.
3 *
Uwe Hermannc70e9fc2010-02-15 23:10:19 +00004 * Copyright (C) 2004 Nick Barker <Nick.Barker9@btinternet.com>
5 * Copyright (C) 2007, 2008 Rudolf Marek <r.marek@assembler.cz>
Rudolf Marek05839972008-09-23 20:36:03 +00006 *
7 * This program is free software; you can redistribute it and/or modify
Uwe Hermannc70e9fc2010-02-15 23:10:19 +00008 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; version 2 of the License.
Rudolf Marek05839972008-09-23 20:36:03 +000010 *
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.
Rudolf Marek05839972008-09-23 20:36:03 +000015 */
16
Uwe Hermannc70e9fc2010-02-15 23:10:19 +000017/*
18 * ISA portions taken from QEMU acpi-dsdt.dsl.
19 */
20
Stefan Reinauer03f82bd2011-09-20 22:36:32 +020021DefinitionBlock ("DSDT.aml", "DSDT", 1, "CORE ", "COREBOOT", 1)
Rudolf Marek05839972008-09-23 20:36:03 +000022{
stepan8301d832010-12-08 07:07:33 +000023 #include "northbridge/amd/amdk8/util.asl"
Rudolf Marek79e53252008-12-23 17:34:15 +000024
Rudolf Marek05839972008-09-23 20:36:03 +000025 /* For now only define 2 power states:
26 * - S0 which is fully on
27 * - S5 which is soft off
28 * Any others would involve declaring the wake up methods.
29 */
30 Name (\_S0, Package () { 0x00, 0x00, 0x00, 0x00 })
Rudolf Marek6bb6e032009-04-13 18:37:17 +000031 Name (\_S3, Package () { 0x01, 0x01, 0x00, 0x00 })
Rudolf Marek05839972008-09-23 20:36:03 +000032 Name (\_S5, Package () { 0x02, 0x02, 0x00, 0x00 })
33
Rudolf Marek6bb6e032009-04-13 18:37:17 +000034
35 /* blink a LED when entering the sleep (any type) */
36 Method (_PTS, 1, NotSerialized)
37 {
38 Store (0x1, \_SB.PCI0.ISA.LEDR)
39 }
40
41 /* cancel a LED blinking when waking from sleep (any type) */
42 Method (_WAK, 1, NotSerialized)
43 {
44 Store (0x0, \_SB.PCI0.ISA.LEDR)
45 /* wake OK */
46 Return(Package(0x02){0x00, 0x00})
47 }
48
Rudolf Marek05839972008-09-23 20:36:03 +000049 /* Root of the bus hierarchy */
50 Scope (\_SB)
51 {
52 /* Top PCI device */
53 Device (PCI0)
54 {
55 Name (_HID, EisaId ("PNP0A03"))
56 Name (_ADR, 0x00)
57 Name (_UID, 0x00)
58 Name (_BBN, 0x00)
Stefan Reinauer14e22772010-04-27 06:56:47 +000059
Rudolf Marek79e53252008-12-23 17:34:15 +000060 External (BUSN)
61 External (MMIO)
62 External (PCIO)
63 External (SBLK)
64 External (TOM1)
65 External (HCLK)
66 External (SBDN)
67 External (HCDN)
68
69 Method (_CRS, 0, NotSerialized)
70 {
71 Name (BUF0, ResourceTemplate ()
72 {
73 IO (Decode16,
74 0x0CF8, // Address Range Minimum
75 0x0CF8, // Address Range Maximum
76 0x01, // Address Alignment
77 0x08, // Address Length
78 )
79 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
80 0x0000, // Address Space Granularity
81 0x0000, // Address Range Minimum
82 0x0CF7, // Address Range Maximum
83 0x0000, // Address Translation Offset
84 0x0CF8, // Address Length
85 ,, , TypeStatic)
86 })
87 /* Methods bellow use SSDT to get actual MMIO regs
88 The IO ports are from 0xd00, optionally an VGA,
89 otherwise the info from MMIO is used.
90 */
91 Concatenate (\_SB.GMEM (0x00, \_SB.PCI0.SBLK), BUF0, Local1)
92 Concatenate (\_SB.GIOR (0x00, \_SB.PCI0.SBLK), Local1, Local2)
93 Concatenate (\_SB.GWBN (0x00, \_SB.PCI0.SBLK), Local2, Local3)
Stefan Reinauer14e22772010-04-27 06:56:47 +000094 Return (Local3)
Rudolf Marek79e53252008-12-23 17:34:15 +000095 }
Rudolf Marek05839972008-09-23 20:36:03 +000096
97 /* PCI Routing Table */
Rudolf Marek05839972008-09-23 20:36:03 +000098 Name (_PRT, Package () {
Rudolf Marekda3d5df2008-12-23 18:05:24 +000099 Package (0x04) { 0x000FFFFF, 0x01, 0x00, 0x15 }, /* 0xf SATA IRQ 21 */
100 Package (0x04) { 0x000FFFFF, 0x00, 0x00, 0x14 }, /* 0xf Native IDE IRQ 20 */
Rudolf Marek01a42ba2012-09-11 15:40:05 +0200101 Package (0x04) { 0x0010FFFF, 0x00, 0x00, 0x14 }, /* USB routing */
102 Package (0x04) { 0x0010FFFF, 0x01, 0x00, 0x16 },
Rudolf Marek05839972008-09-23 20:36:03 +0000103 Package (0x04) { 0x0010FFFF, 0x02, 0x00, 0x15 },
Rudolf Marek01a42ba2012-09-11 15:40:05 +0200104 Package (0x04) { 0x0010FFFF, 0x03, 0x00, 0x17 },
Rudolf Marek05839972008-09-23 20:36:03 +0000105 Package (0x04) { 0x0012FFFF, 0x00, 0x00, 0x17 }, /* LAN */
106 Package (0x04) { 0x0013FFFF, 0x00, 0x00, 0x14 }, /* PCIe bridge SB */
107 Package (0x04) { 0x0013FFFF, 0x02, 0x00, 0x16 }, /* PCIe bridge SB */
108 Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x10 }, /* AGP pridge */
109 Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x11 }, /* FIXME FIXME */
110 Package (0x04) { 0x0002FFFF, 0x00, 0x00, 0x1B }, /* PCIE16 bridge IRQ27 */
111 Package (0x04) { 0x0002FFFF, 0x01, 0x00, 0x1B },
112 Package (0x04) { 0x0002FFFF, 0x02, 0x00, 0x1B },
113 Package (0x04) { 0x0002FFFF, 0x03, 0x00, 0x1B },
114 Package (0x04) { 0x0003FFFF, 0x00, 0x00, 0x1F }, /* PCIE bridge IRQ31 */
115 Package (0x04) { 0x0003FFFF, 0x01, 0x00, 0x23 }, /* IRQ36 */
116 Package (0x04) { 0x0003FFFF, 0x02, 0x00, 0x27 }, /* IRQ39 */
117 Package (0x04) { 0x0003FFFF, 0x03, 0x00, 0x2B } /* IRQ43 */
118 })
119
120 Device (PEGG)
121 {
122 Name (_ADR, 0x00020000)
123 Name (_UID, 0x00)
124 Name (_BBN, 0x02)
125 Name (_PRT, Package () {
126 Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x18 }, /* PCIE IRQ24-IRQ27 */
127 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x19 },
128 Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x1A },
129 Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x1B },
130 })
131 }
132
133 Device (PEX0)
134 {
135 Name (_ADR, 0x00030000)
136 Name (_UID, 0x00)
137 Name (_BBN, 0x03)
138 Name (_PRT, Package () {
139 Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x1C }, /* PCIE IRQ28-IRQ31 */
140 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x1D },
141 Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x1E },
142 Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x1F },
143 })
144 }
145
146 Device (PEX1)
147 {
148 Name (_ADR, 0x00130000)
149 Name (_UID, 0x00)
150 Name (_BBN, 0x4)
151 Name (_PRT, Package () {
152 Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x11 }, /* PCIE audio */
153 Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x11 },
154 Package (0x04) { 0x0001FFFF, 0x02, 0x00, 0x11 },
155 Package (0x04) { 0x0001FFFF, 0x03, 0x00, 0x11 },
156 })
157 }
158
159 Device (TBRG)
160 {
161 Name (_ADR, 0x00130001)
162 Name (_UID, 0x00)
163 Name (_BBN, 0x5)
164 Name (_PRT, Package () {
165 Package (0x04) { 0x0006FFFF, 0x00, 0x00, 0x10 }, /* PCI slot */
166 Package (0x04) { 0x0006FFFF, 0x01, 0x00, 0x11 },
167 Package (0x04) { 0x0006FFFF, 0x02, 0x00, 0x12 },
168 Package (0x04) { 0x0006FFFF, 0x03, 0x00, 0x13 },
169 Package (0x04) { 0x0007FFFF, 0x00, 0x00, 0x11 }, /* PCI slot */
170 Package (0x04) { 0x0007FFFF, 0x01, 0x00, 0x12 },
171 Package (0x04) { 0x0007FFFF, 0x02, 0x00, 0x13 },
172 Package (0x04) { 0x0007FFFF, 0x03, 0x00, 0x10 },
173 })
174 }
175 Device (ISA) {
176 Name (_ADR, 0x00110000)
Rudolf Marek6bb6e032009-04-13 18:37:17 +0000177 OperationRegion (PCIC, PCI_Config, 0x0, 0xff)
178 Field (PCIC, ByteAcc, NoLock, Preserve)
179 {
180 Offset (0x94),
181 /* two LSB bits are blink rate */
182 LEDR, 2,
183 }
Stefan Reinauer14e22772010-04-27 06:56:47 +0000184
Rudolf Marek05839972008-09-23 20:36:03 +0000185 /* PS/2 keyboard (seems to be important for WinXP install) */
186 Device (KBD)
187 {
188 Name (_HID, EisaId ("PNP0303"))
189 Method (_STA, 0, NotSerialized)
190 {
191 Return (0x0f)
192 }
193 Method (_CRS, 0, NotSerialized)
194 {
195 Name (TMP, ResourceTemplate () {
196 IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
197 IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
198 IRQNoFlags () {1}
199 })
200 Return (TMP)
201 }
202 }
203
204 /* PS/2 mouse */
205 Device (MOU)
206 {
207 Name (_HID, EisaId ("PNP0F13"))
208 Method (_STA, 0, NotSerialized)
209 {
210 Return (0x0f)
211 }
212 Method (_CRS, 0, NotSerialized)
213 {
214 Name (TMP, ResourceTemplate () {
215 IRQNoFlags () {12}
216 })
217 Return (TMP)
218 }
219 }
220
221 /* PS/2 floppy controller */
222 Device (FDC0)
223 {
224 Name (_HID, EisaId ("PNP0700"))
225 Method (_STA, 0, NotSerialized)
226 {
227 Return (0x0f)
228 }
229 Method (_CRS, 0, NotSerialized)
230 {
231 Name (BUF0, ResourceTemplate () {
232 IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04)
233 IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
234 IRQNoFlags () {6}
235 DMA (Compatibility, NotBusMaster, Transfer8) {2}
236 })
237 Return (BUF0)
238 }
239 }
240 }
Tobias Diedrich0fe6e9a2010-11-17 16:27:06 +0000241 /* Dummy device to hold auto generated reserved resources */
242 Device(MBRS) {
243 Name (_HID, EisaId ("PNP0C02"))
244 Name (_UID, 0x01)
245 External(_CRS) /* Resource Template in SSDT */
246 }
Rudolf Marek05839972008-09-23 20:36:03 +0000247 }
248 }
249}