blob: d3aa7a4406f50b9cf0dc82f5193527bd8262c3d1 [file] [log] [blame]
Stefan Reinauer8e073822012-04-04 00:07:22 +02001/*
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.
Stefan Reinauer8e073822012-04-04 00:07:22 +020015 */
16
17/* Intel Cougar Point PCH support */
18
19Scope(\)
20{
21 // IO-Trap at 0x800. This is the ACPI->SMI communication interface.
22
23 OperationRegion(IO_T, SystemIO, 0x800, 0x10)
24 Field(IO_T, ByteAcc, NoLock, Preserve)
25 {
26 Offset(0x8),
27 TRP0, 8 // IO-Trap at 0x808
28 }
29
30 // PCH Power Management Registers, located at PMBASE (0x1f.0 0x40.l)
31 OperationRegion(PMIO, SystemIO, DEFAULT_PMBASE, 0x80)
32 Field(PMIO, ByteAcc, NoLock, Preserve)
33 {
34 Offset(0x20), // GPE0_STS
35 , 16,
36 GS00, 1, // GPIO00 SCI/Wake Status
37 GS01, 1, // GPIO01 SCI/Wake Status
38 GS02, 1, // GPIO02 SCI/Wake Status
39 GS03, 1, // GPIO03 SCI/Wake Status
40 GS04, 1, // GPIO04 SCI/Wake Status
41 GS05, 1, // GPIO05 SCI/Wake Status
42 GS06, 1, // GPIO06 SCI/Wake Status
43 GS07, 1, // GPIO07 SCI/Wake Status
44 GS08, 1, // GPIO08 SCI/Wake Status
45 GS09, 1, // GPIO09 SCI/Wake Status
46 GS10, 1, // GPIO10 SCI/Wake Status
47 GS11, 1, // GPIO11 SCI/Wake Status
48 GS12, 1, // GPIO12 SCI/Wake Status
49 GS13, 1, // GPIO13 SCI/Wake Status
50 GS14, 1, // GPIO14 SCI/Wake Status
51 GS15, 1, // GPIO15 SCI/Wake Status
52 Offset(0x28), // GPE0_EN
53 , 16,
54 GE00, 1, // GPIO00 SCI/Wake Enable
55 GE01, 1, // GPIO01 SCI/Wake Enable
56 GE02, 1, // GPIO02 SCI/Wake Enable
57 GE03, 1, // GPIO03 SCI/Wake Enable
58 GE04, 1, // GPIO04 SCI/Wake Enable
59 GE05, 1, // GPIO05 SCI/Wake Enable
60 GE06, 1, // GPIO06 SCI/Wake Enable
61 GE07, 1, // GPIO07 SCI/Wake Enable
62 GE08, 1, // GPIO08 SCI/Wake Enable
63 GE09, 1, // GPIO09 SCI/Wake Enable
64 GE10, 1, // GPIO10 SCI/Wake Enable
65 GE11, 1, // GPIO11 SCI/Wake Enable
66 GE12, 1, // GPIO12 SCI/Wake Enable
67 GE13, 1, // GPIO13 SCI/Wake Enable
68 GE14, 1, // GPIO14 SCI/Wake Enable
69 GE15, 1, // GPIO15 SCI/Wake Enable
70 Offset(0x42), // General Purpose Control
71 , 1, // skip 1 bit
72 GPEC, 1, // SWGPE_CTRL
73 }
74
75 // GPIO IO mapped registers (0x1f.0 reg 0x48.l)
76 OperationRegion(GPIO, SystemIO, DEFAULT_GPIOBASE, 0x6c)
77 Field(GPIO, ByteAcc, NoLock, Preserve)
78 {
79 Offset(0x00), // GPIO Use Select
80 GU00, 8,
81 GU01, 8,
82 GU02, 8,
83 GU03, 8,
84 Offset(0x04), // GPIO IO Select
85 GIO0, 8,
86 GIO1, 8,
87 GIO2, 8,
88 GIO3, 8,
89 Offset(0x0c), // GPIO Level
90 GL00, 1,
91 GP01, 1,
92 GP02, 1,
Paul Menzeleb4920d2014-04-10 19:50:58 +020093 GP03, 1,
Stefan Reinauer8e073822012-04-04 00:07:22 +020094 GP04, 1,
95 GP05, 1,
96 GP06, 1,
97 GP07, 1,
98 GP08, 1,
99 GP09, 1,
100 GP10, 1,
101 GP11, 1,
102 GP12, 1,
103 GP13, 1,
104 GP14, 1,
105 GP15, 1,
106 GP16, 1,
107 GP17, 1,
108 GP18, 1,
109 GP19, 1,
110 GP20, 1,
111 GP21, 1,
112 GP22, 1,
113 GP23, 1,
114 GP24, 1,
115 GP25, 1,
116 GP26, 1,
117 GP27, 1,
118 GP28, 1,
119 GP29, 1,
120 GP30, 1,
121 GP31, 1,
122 Offset(0x18), // GPIO Blink
123 GB00, 8,
124 GB01, 8,
125 GB02, 8,
126 GB03, 8,
127 Offset(0x2c), // GPIO Invert
128 GIV0, 8,
129 GIV1, 8,
130 GIV2, 8,
131 GIV3, 8,
132 Offset(0x30), // GPIO Use Select 2
133 GU04, 8,
134 GU05, 8,
135 GU06, 8,
136 GU07, 8,
137 Offset(0x34), // GPIO IO Select 2
138 GIO4, 8,
139 GIO5, 8,
140 GIO6, 8,
141 GIO7, 8,
142 Offset(0x38), // GPIO Level 2
143 GP32, 1,
144 GP33, 1,
145 GP34, 1,
146 GP35, 1,
147 GP36, 1,
148 GP37, 1,
149 GP38, 1,
150 GP39, 1,
151 GP40, 1,
152 GP41, 1,
153 GP42, 1,
154 GP43, 1,
155 GP44, 1,
156 GP45, 1,
157 GP46, 1,
158 GP47, 1,
159 GP48, 1,
160 GP49, 1,
161 GP50, 1,
162 GP51, 1,
163 GP52, 1,
164 GP53, 1,
165 GP54, 1,
166 GP55, 1,
167 GP56, 1,
168 GP57, 1,
169 GP58, 1,
170 GP59, 1,
171 GP60, 1,
172 GP61, 1,
173 GP62, 1,
174 GP63, 1,
175 Offset(0x40), // GPIO Use Select 3
176 GU08, 8,
177 GU09, 4,
178 Offset(0x44), // GPIO IO Select 3
179 GIO8, 8,
180 GIO9, 4,
181 Offset(0x48), // GPIO Level 3
182 GP64, 1,
183 GP65, 1,
184 GP66, 1,
185 GP67, 1,
186 GP68, 1,
187 GP69, 1,
188 GP70, 1,
189 GP71, 1,
190 GP72, 1,
191 GP73, 1,
192 GP74, 1,
193 GP75, 1,
194 }
195
196
197 // ICH7 Root Complex Register Block. Memory Mapped through RCBA)
198 OperationRegion(RCRB, SystemMemory, DEFAULT_RCBA, 0x4000)
199 Field(RCRB, DWordAcc, Lock, Preserve)
200 {
201 Offset(0x0000), // Backbone
202 Offset(0x1000), // Chipset
203 Offset(0x3000), // Legacy Configuration Registers
204 Offset(0x3404), // High Performance Timer Configuration
Elyes HAOUASb0f19882018-06-09 11:59:00 +0200205 HPAS, 2, // Address Select
Stefan Reinauer8e073822012-04-04 00:07:22 +0200206 , 5,
207 HPTE, 1, // Address Enable
208 Offset(0x3418), // FD (Function Disable)
Duncan Lauriec3230362012-04-27 09:55:45 -0700209 , 1, // Reserved
210 PCID, 1, // PCI bridge disable
211 SA1D, 1, // SATA1 disable
Stefan Reinauer8e073822012-04-04 00:07:22 +0200212 SMBD, 1, // SMBUS disable
213 HDAD, 1, // Azalia disable
Duncan Lauriec3230362012-04-27 09:55:45 -0700214 , 8, // Reserved
215 EH2D, 1, // EHCI #2 disable
Stefan Reinauer8e073822012-04-04 00:07:22 +0200216 LPBD, 1, // LPC bridge disable
Duncan Lauriec3230362012-04-27 09:55:45 -0700217 EH1D, 1, // EHCI #1 disable
Stefan Reinauer8e073822012-04-04 00:07:22 +0200218 RP1D, 1, // Root Port 1 disable
219 RP2D, 1, // Root Port 2 disable
220 RP3D, 1, // Root Port 3 disable
Duncan Lauriec3230362012-04-27 09:55:45 -0700221 RP4D, 1, // Root Port 4 disable
222 RP5D, 1, // Root Port 5 disable
223 RP6D, 1, // Root Port 6 disable
224 RP7D, 1, // Root Port 7 disable
225 RP8D, 1, // Root Port 8 disable
226 TTRD, 1, // Thermal sensor registers disable
227 SA2D, 1, // SATA2 disable
228 Offset(0x3428), // FD2 (Function Disable 2)
229 BDFD, 1, // Display BDF
230 ME1D, 1, // ME Interface 1 disable
231 ME2D, 1, // ME Interface 2 disable
232 IDRD, 1, // IDE redirect disable
233 KTCT, 1, // Keyboard Text redirect disable
Stefan Reinauer8e073822012-04-04 00:07:22 +0200234 }
Stefan Reinauer8e073822012-04-04 00:07:22 +0200235}
236
237// High Definition Audio (Azalia) 0:1b.0
238#include "audio.asl"
239
240// PCI Express Ports 0:1c.x
Arthur Heymanscd366342018-12-30 12:49:21 +0100241#include <southbridge/intel/common/acpi/pcie.asl>
Stefan Reinauer8e073822012-04-04 00:07:22 +0200242
Marc Jonese7ae96f2012-11-13 15:07:45 -0700243// USB EHCI 0:1d.0 and 0:1a.0, XHCI 0:14.0
Stefan Reinauer8e073822012-04-04 00:07:22 +0200244#include "usb.asl"
245
246// LPC Bridge 0:1f.0
247#include "lpc.asl"
248
249// SATA 0:1f.2, 0:1f.5
250#include "sata.asl"
251
252// SMBus 0:1f.3
253#include "smbus.asl"
254
255Method (_OSC, 4)
256{
Martin Rotha34b5bc2018-05-06 21:06:18 -0500257 /*
258 * Arg0 - A Buffer containing a UUID
259 * Arg1 - An Integer containing a Revision ID of the buffer format
260 * Arg2 - An Integer containing a count of entries in Arg3
261 * Arg3 - A Buffer containing a list of DWORD capabilities
262 */
Marc Jonese7ae96f2012-11-13 15:07:45 -0700263 /* Check for XHCI */
264 If (LEqual (Arg0, ToUUID("7c9512a9-1705-4cb4-af7d-506a2423ab71")))
265 {
Martin Rotha34b5bc2018-05-06 21:06:18 -0500266 Return (^XHC.POSC(Arg2, Arg3))
Marc Jonese7ae96f2012-11-13 15:07:45 -0700267 }
268
269 /* Check for PCIe */
Stefan Reinauer8e073822012-04-04 00:07:22 +0200270 If (LEqual (Arg0, ToUUID("33DB4D5B-1FF7-401C-9657-7441C03DD766")))
271 {
272 /* Let OS control everything */
273 Return (Arg3)
274 }
Marc Jonese7ae96f2012-11-13 15:07:45 -0700275
276 /* Else Return Unrecognized UUID */
277 CreateDWordField (Arg3, 0, CDW1)
278 Or (CDW1, 4, CDW1)
279 Return (Arg3)
280
Stefan Reinauer8e073822012-04-04 00:07:22 +0200281}