blob: 9fc83a511e5a168ef60f93704b308af85eba5edb [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Bin Meng6c9f9442016-05-07 07:46:31 -07002/*
3 * Copyright (C) 2007-2009 coresystems GmbH
4 * Copyright (C) 2016 Bin Meng <bmeng.cn@gmail.com>
5 *
6 * Modified from coreboot src/soc/intel/baytrail/acpi/irqlinks.asl
Bin Meng6c9f9442016-05-07 07:46:31 -07007 */
8
Bin Meng7d404e42016-05-25 19:19:06 -07009/*
10 * Intel chipset PIRQ routing control ASL description
11 *
12 * The programming interface is common to most Intel chipsets. But the PRTx
13 * registers may be mapped to different blocks. Some chipsets map them to LPC
14 * device (00:1f:00) PCI configuration space (like TunnelCreek, Quark), while
15 * some newer Atom SoCs (like BayTrail, Braswell) map them to Intel Legacy
16 * Block (ILB) memory space.
17 *
18 * This file defines 8 PCI IRQ link devices which corresponds to 8 PIRQ lines
19 * PIRQ A/B/C/D/E/F/G/H. To incorperate this file, the PRTx registers must be
20 * defined somewhere else in the platform's ASL files.
21 */
Bin Meng6c9f9442016-05-07 07:46:31 -070022
23Device (LNKA)
24{
25 Name(_HID, EISAID("PNP0C0F"))
26 Name(_UID, 1)
27
28 /* Disable method */
29 Method(_DIS, 0, Serialized)
30 {
31 Store(0x80, PRTA)
32 }
33
34 /* Possible Resource Settings for this Link */
35 Name(_PRS, ResourceTemplate()
36 {
37 IRQ(Level, ActiveLow, Shared) { 5, 6, 7, 10, 11, 12, 14, 15 }
38 })
39
40 /* Current Resource Settings for this link */
41 Method(_CRS, 0, Serialized)
42 {
43 Name(RTLA, ResourceTemplate()
44 {
45 IRQ(Level, ActiveLow, Shared) {}
46 })
47 CreateWordField(RTLA, 1, IRQ0)
48
49 /* Clear the WordField */
50 Store(Zero, IRQ0)
51
52 /* Set the bit from PRTA */
53 ShiftLeft(1, And(PRTA, 0x0f), IRQ0)
54
55 Return (RTLA)
56 }
57
58 /* Set Resource Setting for this IRQ link */
59 Method(_SRS, 1, Serialized)
60 {
61 CreateWordField(Arg0, 1, IRQ0)
62
63 /* Which bit is set? */
64 FindSetRightBit(IRQ0, Local0)
65
66 Decrement(Local0)
67 Store(Local0, PRTA)
68 }
69
70 /* Status */
71 Method(_STA, 0, Serialized)
72 {
73 If (And(PRTA, 0x80)) {
74 Return (STA_DISABLED)
75 } Else {
76 Return (STA_INVISIBLE)
77 }
78 }
79}
80
81Device (LNKB)
82{
83 Name(_HID, EISAID("PNP0C0F"))
84 Name(_UID, 2)
85
86 /* Disable method */
87 Method(_DIS, 0, Serialized)
88 {
89 Store(0x80, PRTB)
90 }
91
92 /* Possible Resource Settings for this Link */
93 Name(_PRS, ResourceTemplate()
94 {
95 IRQ(Level, ActiveLow, Shared) { 5, 6, 7, 10, 11, 12, 14, 15 }
96 })
97
98 /* Current Resource Settings for this link */
99 Method(_CRS, 0, Serialized)
100 {
101 Name(RTLB, ResourceTemplate()
102 {
103 IRQ(Level, ActiveLow, Shared) {}
104 })
105 CreateWordField(RTLB, 1, IRQ0)
106
107 /* Clear the WordField */
108 Store(Zero, IRQ0)
109
110 /* Set the bit from PRTB */
111 ShiftLeft(1, And(PRTB, 0x0f), IRQ0)
112
113 Return (RTLB)
114 }
115
116 /* Set Resource Setting for this IRQ link */
117 Method(_SRS, 1, Serialized)
118 {
119 CreateWordField(Arg0, 1, IRQ0)
120
121 /* Which bit is set? */
122 FindSetRightBit(IRQ0, Local0)
123
124 Decrement(Local0)
125 Store(Local0, PRTB)
126 }
127
128 /* Status */
129 Method(_STA, 0, Serialized)
130 {
131 If (And(PRTB, 0x80)) {
132 Return (STA_DISABLED)
133 } Else {
134 Return (STA_INVISIBLE)
135 }
136 }
137}
138
139Device (LNKC)
140{
141 Name(_HID, EISAID("PNP0C0F"))
142 Name(_UID, 3)
143
144 /* Disable method */
145 Method(_DIS, 0, Serialized)
146 {
147 Store(0x80, PRTC)
148 }
149
150 /* Possible Resource Settings for this Link */
151 Name(_PRS, ResourceTemplate()
152 {
153 IRQ(Level, ActiveLow, Shared) { 5, 6, 7, 10, 11, 12, 14, 15 }
154 })
155
156 /* Current Resource Settings for this link */
157 Method(_CRS, 0, Serialized)
158 {
159 Name(RTLC, ResourceTemplate()
160 {
161 IRQ(Level, ActiveLow, Shared) {}
162 })
163 CreateWordField(RTLC, 1, IRQ0)
164
165 /* Clear the WordField */
166 Store(Zero, IRQ0)
167
168 /* Set the bit from PRTC */
169 ShiftLeft(1, And(PRTC, 0x0f), IRQ0)
170
171 Return (RTLC)
172 }
173
174 /* Set Resource Setting for this IRQ link */
175 Method(_SRS, 1, Serialized)
176 {
177 CreateWordField(Arg0, 1, IRQ0)
178
179 /* Which bit is set? */
180 FindSetRightBit(IRQ0, Local0)
181
182 Decrement(Local0)
183 Store(Local0, PRTC)
184 }
185
186 /* Status */
187 Method(_STA, 0, Serialized)
188 {
189 If (And(PRTC, 0x80)) {
190 Return (STA_DISABLED)
191 } Else {
192 Return (STA_INVISIBLE)
193 }
194 }
195}
196
197Device (LNKD)
198{
199 Name(_HID, EISAID("PNP0C0F"))
200 Name(_UID, 4)
201
202 /* Disable method */
203 Method(_DIS, 0, Serialized)
204 {
205 Store(0x80, PRTD)
206 }
207
208 /* Possible Resource Settings for this Link */
209 Name(_PRS, ResourceTemplate()
210 {
211 IRQ(Level, ActiveLow, Shared) { 5, 6, 7, 10, 11, 12, 14, 15 }
212 })
213
214 /* Current Resource Settings for this link */
215 Method(_CRS, 0, Serialized)
216 {
217 Name(RTLD, ResourceTemplate()
218 {
219 IRQ(Level, ActiveLow, Shared) {}
220 })
221 CreateWordField(RTLD, 1, IRQ0)
222
223 /* Clear the WordField */
224 Store(Zero, IRQ0)
225
226 /* Set the bit from PRTD */
227 ShiftLeft(1, And(PRTD, 0x0f), IRQ0)
228
229 Return (RTLD)
230 }
231
232 /* Set Resource Setting for this IRQ link */
233 Method(_SRS, 1, Serialized)
234 {
235 CreateWordField(Arg0, 1, IRQ0)
236
237 /* Which bit is set? */
238 FindSetRightBit(IRQ0, Local0)
239
240 Decrement(Local0)
241 Store(Local0, PRTD)
242 }
243
244 /* Status */
245 Method(_STA, 0, Serialized)
246 {
247 If (And(PRTD, 0x80)) {
248 Return (STA_DISABLED)
249 } Else {
250 Return (STA_INVISIBLE)
251 }
252 }
253}
254
255Device (LNKE)
256{
257 Name(_HID, EISAID("PNP0C0F"))
258 Name(_UID, 5)
259
260 /* Disable method */
261 Method(_DIS, 0, Serialized)
262 {
263 Store(0x80, PRTE)
264 }
265
266 /* Possible Resource Settings for this Link */
267 Name(_PRS, ResourceTemplate()
268 {
269 IRQ(Level, ActiveLow, Shared) { 5, 6, 7, 10, 11, 12, 14, 15 }
270 })
271
272 /* Current Resource Settings for this link */
273 Method(_CRS, 0, Serialized)
274 {
275 Name(RTLE, ResourceTemplate()
276 {
277 IRQ(Level, ActiveLow, Shared) {}
278 })
279 CreateWordField(RTLE, 1, IRQ0)
280
281 /* Clear the WordField */
282 Store(Zero, IRQ0)
283
284 /* Set the bit from PRTE */
285 ShiftLeft(1, And(PRTE, 0x0f), IRQ0)
286
287 Return (RTLE)
288 }
289
290 /* Set Resource Setting for this IRQ link */
291 Method(_SRS, 1, Serialized)
292 {
293 CreateWordField(Arg0, 1, IRQ0)
294
295 /* Which bit is set? */
296 FindSetRightBit(IRQ0, Local0)
297
298 Decrement(Local0)
299 Store(Local0, PRTE)
300 }
301
302 /* Status */
303 Method(_STA, 0, Serialized)
304 {
305 If (And(PRTE, 0x80)) {
306 Return (STA_DISABLED)
307 } Else {
308 Return (STA_INVISIBLE)
309 }
310 }
311}
312
313Device (LNKF)
314{
315 Name(_HID, EISAID("PNP0C0F"))
316 Name(_UID, 6)
317
318 /* Disable method */
319 Method(_DIS, 0, Serialized)
320 {
321 Store(0x80, PRTF)
322 }
323
324 /* Possible Resource Settings for this Link */
325 Name(_PRS, ResourceTemplate()
326 {
327 IRQ(Level, ActiveLow, Shared) { 5, 6, 7, 10, 11, 12, 14, 15 }
328 })
329
330 /* Current Resource Settings for this link */
331 Method(_CRS, 0, Serialized)
332 {
333 Name(RTLF, ResourceTemplate()
334 {
335 IRQ(Level, ActiveLow, Shared) {}
336 })
337 CreateWordField(RTLF, 1, IRQ0)
338
339 /* Clear the WordField */
340 Store(Zero, IRQ0)
341
342 /* Set the bit from PRTF */
343 ShiftLeft(1, And(PRTF, 0x0f), IRQ0)
344
345 Return (RTLF)
346 }
347
348 /* Set Resource Setting for this IRQ link */
349 Method(_SRS, 1, Serialized)
350 {
351 CreateWordField(Arg0, 1, IRQ0)
352
353 /* Which bit is set? */
354 FindSetRightBit(IRQ0, Local0)
355
356 Decrement(Local0)
357 Store(Local0, PRTF)
358 }
359
360 /* Status */
361 Method(_STA, 0, Serialized)
362 {
363 If (And(PRTF, 0x80)) {
364 Return (STA_DISABLED)
365 } Else {
366 Return (STA_INVISIBLE)
367 }
368 }
369}
370
371Device (LNKG)
372{
373 Name(_HID, EISAID("PNP0C0F"))
374 Name(_UID, 7)
375
376 /* Disable method */
377 Method(_DIS, 0, Serialized)
378 {
379 Store(0x80, PRTG)
380 }
381
382 /* Possible Resource Settings for this Link */
383 Name(_PRS, ResourceTemplate()
384 {
385 IRQ(Level, ActiveLow, Shared) { 5, 6, 7, 10, 11, 12, 14, 15 }
386 })
387
388 /* Current Resource Settings for this link */
389 Method(_CRS, 0, Serialized)
390 {
391 Name(RTLG, ResourceTemplate()
392 {
393 IRQ(Level, ActiveLow, Shared) {}
394 })
395 CreateWordField(RTLG, 1, IRQ0)
396
397 /* Clear the WordField */
398 Store(Zero, IRQ0)
399
400 /* Set the bit from PRTG */
401 ShiftLeft(1, And(PRTG, 0x0f), IRQ0)
402
403 Return (RTLG)
404 }
405
406 /* Set Resource Setting for this IRQ link */
407 Method(_SRS, 1, Serialized)
408 {
409 CreateWordField(Arg0, 1, IRQ0)
410
411 /* Which bit is set? */
412 FindSetRightBit(IRQ0, Local0)
413
414 Decrement(Local0)
415 Store(Local0, PRTG)
416 }
417
418 /* Status */
419 Method(_STA, 0, Serialized)
420 {
421 If (And(PRTG, 0x80)) {
422 Return (STA_DISABLED)
423 } Else {
424 Return (STA_INVISIBLE)
425 }
426 }
427}
428
429Device (LNKH)
430{
431 Name(_HID, EISAID("PNP0C0F"))
432 Name(_UID, 8)
433
434 /* Disable method */
435 Method(_DIS, 0, Serialized)
436 {
437 Store(0x80, PRTH)
438 }
439
440 /* Possible Resource Settings for this Link */
441 Name(_PRS, ResourceTemplate()
442 {
443 IRQ(Level, ActiveLow, Shared) { 5, 6, 7, 10, 11, 12, 14, 15 }
444 })
445
446 /* Current Resource Settings for this link */
447 Method(_CRS, 0, Serialized)
448 {
449 Name(RTLH, ResourceTemplate()
450 {
451 IRQ(Level, ActiveLow, Shared) {}
452 })
453 CreateWordField(RTLH, 1, IRQ0)
454
455 /* Clear the WordField */
456 Store(Zero, IRQ0)
457
458 /* Set the bit from PRTH */
459 ShiftLeft(1, And(PRTH, 0x0f), IRQ0)
460
461 Return (RTLH)
462 }
463
464 /* Set Resource Setting for this IRQ link */
465 Method(_SRS, 1, Serialized)
466 {
467 CreateWordField(Arg0, 1, IRQ0)
468
469 /* Which bit is set? */
470 FindSetRightBit(IRQ0, Local0)
471
472 Decrement(Local0)
473 Store(Local0, PRTH)
474 }
475
476 /* Status */
477 Method(_STA, 0, Serialized)
478 {
479 If (And(PRTH, 0x80)) {
480 Return (STA_DISABLED)
481 } Else {
482 Return (STA_INVISIBLE)
483 }
484 }
485}