• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* SPDX-License-Identifier: GPL-2.0-only */
2
3#include <soc/iomap.h>
4#include <soc/irq.h>
5
6Scope(\)
7{
8	/* Intel Legacy Block */
9	OperationRegion(ILBS, SystemMemory, ILB_BASE_ADDRESS, ILB_BASE_SIZE)
10	Field (ILBS, AnyAcc, NoLock, Preserve)
11	{
12		Offset (0x8),
13		PRTA, 8,
14		PRTB, 8,
15		PRTC, 8,
16		PRTD, 8,
17		PRTE, 8,
18		PRTF, 8,
19		PRTG, 8,
20		PRTH, 8,
21	}
22}
23
24External (\TOLM, IntObj)
25
26Name(_HID,EISAID("PNP0A08"))	/* PCIe */
27Name(_CID,EISAID("PNP0A03"))	/* PCI */
28
29Name(_BBN, 0)
30
31Name (MCRS, ResourceTemplate()
32{
33	/* Bus Numbers */
34	WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
35			0x0000, 0x0000, 0x00ff, 0x0000, 0x0100,,, PB00)
36
37	/* IO Region 0 */
38	DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
39			0x0000, 0x0000, 0x0cf7, 0x0000, 0x0cf8,,, PI00)
40
41	/* PCI Config Space */
42	Io (Decode16, 0x0cf8, 0x0cf8, 0x0001, 0x0008)
43
44	/* IO Region 1 */
45	DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
46			0x0000, 0x0d00, 0xffff, 0x0000, 0xf300,,, PI01)
47
48	/* VGA memory (0xa0000-0xbffff) */
49	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
50			Cacheable, ReadWrite,
51			0x00000000, 0x000a0000, 0x000bffff, 0x00000000,
52			0x00020000,,, ASEG)
53
54	/* OPROM reserved (0xc0000-0xc3fff) */
55	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
56			Cacheable, ReadWrite,
57			0x00000000, 0x000c0000, 0x000c3fff, 0x00000000,
58			0x00004000,,, OPR0)
59
60	/* OPROM reserved (0xc4000-0xc7fff) */
61	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
62			Cacheable, ReadWrite,
63			0x00000000, 0x000c4000, 0x000c7fff, 0x00000000,
64			0x00004000,,, OPR1)
65
66	/* OPROM reserved (0xc8000-0xcbfff) */
67	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
68			Cacheable, ReadWrite,
69			0x00000000, 0x000c8000, 0x000cbfff, 0x00000000,
70			0x00004000,,, OPR2)
71
72	/* OPROM reserved (0xcc000-0xcffff) */
73	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
74			Cacheable, ReadWrite,
75			0x00000000, 0x000cc000, 0x000cffff, 0x00000000,
76			0x00004000,,, OPR3)
77
78	/* OPROM reserved (0xd0000-0xd3fff) */
79	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
80			Cacheable, ReadWrite,
81			0x00000000, 0x000d0000, 0x000d3fff, 0x00000000,
82			0x00004000,,, OPR4)
83
84	/* OPROM reserved (0xd4000-0xd7fff) */
85	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
86			Cacheable, ReadWrite,
87			0x00000000, 0x000d4000, 0x000d7fff, 0x00000000,
88			0x00004000,,, OPR5)
89
90	/* OPROM reserved (0xd8000-0xdbfff) */
91	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
92			Cacheable, ReadWrite,
93			0x00000000, 0x000d8000, 0x000dbfff, 0x00000000,
94			0x00004000,,, OPR6)
95
96	/* OPROM reserved (0xdc000-0xdffff) */
97	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
98			Cacheable, ReadWrite,
99			0x00000000, 0x000dc000, 0x000dffff, 0x00000000,
100			0x00004000,,, OPR7)
101
102	/* BIOS Extension (0xe0000-0xe3fff) */
103	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
104			Cacheable, ReadWrite,
105			0x00000000, 0x000e0000, 0x000e3fff, 0x00000000,
106			0x00004000,,, ESG0)
107
108	/* BIOS Extension (0xe4000-0xe7fff) */
109	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
110			Cacheable, ReadWrite,
111			0x00000000, 0x000e4000, 0x000e7fff, 0x00000000,
112			0x00004000,,, ESG1)
113
114	/* BIOS Extension (0xe8000-0xebfff) */
115	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
116			Cacheable, ReadWrite,
117			0x00000000, 0x000e8000, 0x000ebfff, 0x00000000,
118			0x00004000,,, ESG2)
119
120	/* BIOS Extension (0xec000-0xeffff) */
121	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
122			Cacheable, ReadWrite,
123			0x00000000, 0x000ec000, 0x000effff, 0x00000000,
124			0x00004000,,, ESG3)
125
126	/* System BIOS (0xf0000-0xfffff) */
127	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
128			Cacheable, ReadWrite,
129			0x00000000, 0x000f0000, 0x000fffff, 0x00000000,
130			0x00010000,,, FSEG)
131
132	/* LPEA Memory Region (0x20000000-0x201FFFFF) */
133	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
134			Cacheable, ReadWrite,
135			0x00000000, 0x00000000, 0x00000000, 0x00000000,
136			0x00000000,,, LMEM)
137
138	/* PCI Memory Region (Top of memory-CONFIG_ECAM_MMCONF_BASE_ADDRESS) */
139	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
140			Cacheable, ReadWrite,
141			0x00000000, 0x00000000, 0x00000000, 0x00000000,
142                        0x00000000,,, PMEM)
143
144	/* TPM Area (0xfed40000-0xfed44fff) */
145	DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed,
146			Cacheable, ReadWrite,
147			0x00000000, 0xfed40000, 0xfed44fff, 0x00000000,
148			0x00005000,,, TPMR)
149})
150
151Method (_CRS, 0, Serialized)
152{
153
154	/* Update LPEA resource area */
155	CreateDWordField (MCRS, ^LMEM._MIN, LMIN)
156	CreateDWordField (MCRS, ^LMEM._MAX, LMAX)
157	CreateDWordField (MCRS, ^LMEM._LEN, LLEN)
158	If (LPFW != 0 && LPEN == 1)
159	{
160		LMIN = LPFW
161		LLEN = 0x00100000
162		LMAX = LMIN + LLEN - 1
163	}
164	Else
165	{
166		LMIN = 0
167		LMAX = 0
168		LLEN = 0
169	}
170
171	/* Update PCI resource area */
172	CreateDWordField (MCRS, ^PMEM._MIN, PMIN)
173	CreateDWordField (MCRS, ^PMEM._MAX, PMAX)
174	CreateDWordField (MCRS, ^PMEM._LEN, PLEN)
175
176	/* TOLM is BMBOUND accessible from IOSF so is saved in NVS */
177	PMIN = \TOLM
178	PMAX = CONFIG_ECAM_MMCONF_BASE_ADDRESS - 1
179	PLEN = PMAX - PMIN + 1
180
181	Return (MCRS)
182}
183
184/* Device Resource Consumption */
185Device (PDRC)
186{
187	Name (_HID, EISAID("PNP0C02"))
188	Name (_UID, 1)
189
190	Name (PDRS, ResourceTemplate() {
191		Memory32Fixed(ReadWrite, ABORT_BASE_ADDRESS, ABORT_BASE_SIZE)
192		Memory32Fixed(ReadWrite, PMC_BASE_ADDRESS, PMC_BASE_SIZE)
193		Memory32Fixed(ReadWrite, ILB_BASE_ADDRESS, ILB_BASE_SIZE)
194		Memory32Fixed(ReadWrite, SPI_BASE_ADDRESS, SPI_BASE_SIZE)
195		Memory32Fixed(ReadWrite, MPHY_BASE_ADDRESS, MPHY_BASE_SIZE)
196		Memory32Fixed(ReadWrite, PUNIT_BASE_ADDRESS, PUNIT_BASE_SIZE)
197		Memory32Fixed(ReadWrite, RCBA_BASE_ADDRESS, RCBA_BASE_SIZE)
198	})
199
200	/* Current Resource Settings */
201	Method (_CRS, 0, Serialized)
202	{
203		Return(PDRS)
204	}
205}
206
207Method (_OSC, 4)
208{
209	/* Check for proper GUID */
210	If (Arg0 == ToUUID("33DB4D5B-1FF7-401C-9657-7441C03DD766"))
211	{
212		/* Let OS control everything */
213		Return (Arg3)
214	}
215	Else
216	{
217		/* Unrecognized UUID */
218		CreateDWordField (Arg3, 0, CDW1)
219		CDW1 |= 4
220		Return (Arg3)
221	}
222}
223
224/* IOSF MBI Interface for kernel access */
225Device (IOSF)
226{
227	Name (_HID, "INT33BD")
228	Name (_CID, "INT33BD")
229	Name (_UID, 1)
230
231	Name (RBUF, ResourceTemplate ()
232	{
233		/* MCR / MDR / MCRX */
234		Memory32Fixed (ReadWrite, 0, 12, RBAR)
235	})
236
237	Method (_CRS)
238	{
239		CreateDwordField (^RBUF, ^RBAR._BAS, RBAS)
240		RBAS = CONFIG_ECAM_MMCONF_BASE_ADDRESS + 0xD0
241		Return (^RBUF)
242	}
243
244	Method (_STA)
245	{
246#if CONFIG(CHROMEOS)
247		Return (0xF)
248#else
249		Return (0x0)
250#endif
251	}
252}
253
254/* LPC Bridge 0:1f.0 */
255#include "lpc.asl"
256
257/* USB XHCI 0:14.0 */
258#include "xhci.asl"
259
260/* IRQ routing for each PCI device */
261#include "irqroute.asl"
262
263/* PCI Express Ports 0:1c.x */
264#include "pcie.asl"
265
266Scope (\_SB)
267{
268	/* GPIO Devices */
269	#include "gpio.asl"
270}
271
272Scope (\_SB.PCI0)
273{
274	/* LPSS Devices */
275	#include "lpss.asl"
276
277	/* SCC Devices */
278	#include "scc.asl"
279
280	/* LPE Device */
281	#include "lpe.asl"
282}
283
284/* Integrated graphics 0:2.0 */
285#include <drivers/intel/gma/acpi/gfx.asl>
286