]> git.proxmox.com Git - mirror_edk2.git/blob - QuarkPlatformPkg/Acpi/AcpiTables/Dsdt/PciIrq.asi
QuarkPlatformPkg: Add new package for Galileo boards
[mirror_edk2.git] / QuarkPlatformPkg / Acpi / AcpiTables / Dsdt / PciIrq.asi
1 /** @file
2
3 Copyright (c) 2013-2015 Intel Corporation.
4
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15
16 // Interrupts can be DEB8=all except 13,8,6,2,1,0
17
18 #ifndef PCIIRQ_ASI
19 #define PCIIRQ_ASI
20
21 OperationRegion(PRR0, PCI_Config, 0x60, 0x08)
22 Field(PRR0, ANYACC, NOLOCK, PRESERVE)
23 {
24 PIRA, 8,
25 PIRB, 8,
26 PIRC, 8,
27 PIRD, 8,
28 PIRE, 8,
29 PIRF, 8,
30 PIRG, 8,
31 PIRH, 8
32 }
33
34 Device(LNKA) // PCI IRQ link A
35 {
36 Name(_HID,EISAID("PNP0C0F"))
37
38 Name(_UID, 1)
39
40 Method(_STA,0,NotSerialized)
41 {
42 If(And(PIRA, 0x80))
43 {
44 Return(0x9)
45 }
46 Else
47 {
48 Return(0xB)
49 } // Don't display
50 }
51
52 Method(_DIS,0,NotSerialized)
53 {
54 Or(PIRA, 0x80, PIRA)
55 }
56
57 Method(_CRS,0,Serialized)
58 {
59 Name(BUF0,
60 ResourceTemplate()
61 {IRQ(Level,ActiveLow,Shared){0}})
62
63 // Define references to buffer elements
64 CreateWordField (BUF0, 0x01, IRQW) // IRQ low
65 // Write current settings into IRQ descriptor
66 If (And(PIRA, 0x80))
67 {
68 Store(Zero, Local0)
69 }
70 Else
71 {
72 Store(One,Local0)
73 }
74 // Shift 1 by value in register 70
75 ShiftLeft(Local0,And(PIRA,0x0F),IRQW) // Save in buffer
76 Return(BUF0) // Return Buf0
77 } // End of _CRS method
78
79 Name(_PRS,
80 ResourceTemplate()
81 {IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
82
83 Method(_SRS,1,NotSerialized)
84 {
85 CreateWordField (ARG0, 0x01, IRQW) // IRQ low
86
87 FindSetRightBit(IRQW,Local0) // Set IRQ
88 If (LNotEqual(IRQW,Zero))
89 {
90 And(Local0, 0x7F,Local0)
91 Decrement(Local0)
92 }
93 Else
94 {
95 Or(Local0, 0x80,Local0)
96 }
97 store(Local0, PIRA)
98 } // End of _SRS Method
99 }
100
101 Device(LNKB) // PCI IRQ link B
102 {
103 Name(_HID,EISAID("PNP0C0F"))
104
105 Name(_UID, 2)
106
107 Method(_STA,0,NotSerialized)
108 {
109 If(And(PIRB, 0x80))
110 {
111 Return(0x9)
112 }
113 Else
114 {
115 Return(0xB)
116 } // Don't display
117 }
118
119 Method(_DIS,0,NotSerialized)
120 {
121 Or(PIRB, 0x80,PIRB)
122 }
123
124 Method(_CRS,0,Serialized)
125 {
126 Name(BUF0,
127 ResourceTemplate()
128 {IRQ(Level,ActiveLow,Shared){0}})
129 // Define references to buffer elements
130 CreateWordField (BUF0, 0x01, IRQW) // IRQ low
131 // Write current settings into IRQ descriptor
132 If (And(PIRB, 0x80))
133 {
134 Store(Zero, Local0)
135 }
136 Else
137 {
138 Store(One,Local0)
139 }
140 // Shift 1 by value in register 70
141 ShiftLeft(Local0,And(PIRB,0x0F),IRQW) // Save in buffer
142 Return(BUF0) // Return Buf0
143 } // End of _CRS method
144
145 Name(_PRS,
146 ResourceTemplate()
147 {IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
148
149 Method(_SRS,1,NotSerialized)
150 {
151 CreateWordField (ARG0, 0x01, IRQW) // IRQ low
152
153 FindSetRightBit(IRQW,Local0) // Set IRQ
154 If (LNotEqual(IRQW,Zero))
155 {
156 And(Local0, 0x7F,Local0)
157 Decrement(Local0)
158 }
159 Else
160 {
161 Or(Local0, 0x80,Local0)
162 }
163 Store(Local0, PIRB)
164 } // End of _SRS Method
165 }
166
167 Device(LNKC) // PCI IRQ link C
168 {
169 Name(_HID,EISAID("PNP0C0F"))
170
171 Name(_UID, 3)
172
173 Method(_STA,0,NotSerialized)
174 {
175 If(And(PIRC, 0x80))
176 {
177 Return(0x9)
178 }
179 Else
180 {
181 Return(0xB)
182 } // Don't display
183 }
184
185 Method(_DIS,0,NotSerialized)
186 {
187 Or(PIRC, 0x80,PIRC)
188 }
189
190 Method(_CRS,0,Serialized)
191 {
192 Name(BUF0,
193 ResourceTemplate()
194 {IRQ(Level,ActiveLow,Shared){0}})
195 // Define references to buffer elements
196 CreateWordField (BUF0, 0x01, IRQW) // IRQ low
197 // Write current settings into IRQ descriptor
198 If (And(PIRC, 0x80))
199 {
200 Store(Zero, Local0)
201 }
202 Else
203 {
204 Store(One,Local0)
205 } // Shift 1 by value in register 70
206 ShiftLeft(Local0,And(PIRC,0x0F),IRQW) // Save in buffer
207 Return(BUF0) // Return Buf0
208 } // End of _CRS method
209
210 Name(_PRS,
211 ResourceTemplate()
212 {IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
213
214 Method(_SRS,1,NotSerialized)
215 {
216 CreateWordField (ARG0, 0x01, IRQW) // IRQ low
217
218 FindSetRightBit(IRQW,Local0) // Set IRQ
219 If (LNotEqual(IRQW,Zero))
220 {
221 And(Local0, 0x7F,Local0)
222 Decrement(Local0)
223 }
224 Else {
225 Or(Local0, 0x80,Local0)
226 }
227 Store(Local0, PIRC)
228 } // End of _SRS Method
229 }
230
231 Device(LNKD) // PCI IRQ link D
232 {
233 Name(_HID,EISAID("PNP0C0F"))
234
235 Name(_UID, 4)
236
237 Method(_STA,0,NotSerialized)
238 {
239 If(And(PIRD, 0x80))
240 {
241 Return(0x9)
242 }
243 Else
244 {
245 Return(0xB)
246 } // Don't display
247 }
248
249 Method(_DIS,0,NotSerialized)
250 {
251 Or(PIRD, 0x80,PIRD)
252 }
253
254 Method(_CRS,0,Serialized)
255 {
256 Name(BUF0,
257 ResourceTemplate()
258 {IRQ(Level,ActiveLow,Shared){0}})
259 // Define references to buffer elements
260 CreateWordField (BUF0, 0x01, IRQW) // IRQ low
261 // Write current settings into IRQ descriptor
262 If (And(PIRD, 0x80))
263 {
264 Store(Zero, Local0)
265 }
266 Else
267 {
268 Store(One,Local0)
269 } // Shift 1 by value in register 70
270 ShiftLeft(Local0,And(PIRD,0x0F),IRQW) // Save in buffer
271 Return(BUF0) // Return Buf0
272 } // End of _CRS method
273
274 Name(_PRS,
275 ResourceTemplate()
276 {IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
277
278 Method(_SRS,1,NotSerialized)
279 {
280 CreateWordField (ARG0, 0x01, IRQW) // IRQ low
281
282 FindSetRightBit(IRQW,Local0)// Set IRQ
283 If (LNotEqual(IRQW,Zero))
284 {
285 And(Local0, 0x7F,Local0)
286 Decrement(Local0)
287 }
288 Else
289 {
290 Or(Local0, 0x80,Local0)
291 }
292 Store(Local0, PIRD)
293 } // End of _SRS Method
294 }
295
296 Device(LNKE) // PCI IRQ link E
297 {
298 Name(_HID,EISAID("PNP0C0F"))
299
300 Name(_UID, 5)
301
302 Method(_STA,0,NotSerialized)
303 {
304 If(And(PIRE, 0x80))
305 {
306 Return(0x9)
307 }
308 Else
309 {
310 Return(0xB)
311 } // Don't display
312 }
313
314 Method(_DIS,0,NotSerialized)
315 {
316 Or(PIRE, 0x80, PIRE)
317 }
318
319 Method(_CRS,0,Serialized)
320 {
321 Name(BUF0,
322 ResourceTemplate()
323 {IRQ(Level,ActiveLow,Shared){0}})
324
325 // Define references to buffer elements
326 CreateWordField (BUF0, 0x01, IRQW) // IRQ low
327 // Write current settings into IRQ descriptor
328 If (And(PIRE, 0x80))
329 {
330 Store(Zero, Local0)
331 }
332 Else
333 {
334 Store(One,Local0)
335 }
336 // Shift 1 by value in register 70
337 ShiftLeft(Local0,And(PIRE,0x0F),IRQW) // Save in buffer
338 Return(BUF0) // Return Buf0
339 } // End of _CRS method
340
341 Name(_PRS,
342 ResourceTemplate()
343 {IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
344
345 Method(_SRS,1,NotSerialized)
346 {
347 CreateWordField (ARG0, 0x01, IRQW) // IRQ low
348
349 FindSetRightBit(IRQW,Local0) // Set IRQ
350 If (LNotEqual(IRQW,Zero))
351 {
352 And(Local0, 0x7F,Local0)
353 Decrement(Local0)
354 }
355 Else
356 {
357 Or(Local0, 0x80,Local0)
358 }
359 store(Local0, PIRE)
360 } // End of _SRS Method
361 }
362
363 Device(LNKF) // PCI IRQ link F
364 {
365 Name(_HID,EISAID("PNP0C0F"))
366
367 Name(_UID, 6)
368
369 Method(_STA,0,NotSerialized)
370 {
371 If(And(PIRF, 0x80))
372 {
373 Return(0x9)
374 }
375 Else
376 {
377 Return(0xB)
378 } // Don't display
379 }
380
381 Method(_DIS,0,NotSerialized)
382 {
383 Or(PIRB, 0x80,PIRF)
384 }
385
386 Method(_CRS,0,Serialized)
387 {
388 Name(BUF0,
389 ResourceTemplate()
390 {IRQ(Level,ActiveLow,Shared){0}})
391 // Define references to buffer elements
392 CreateWordField (BUF0, 0x01, IRQW) // IRQ low
393 // Write current settings into IRQ descriptor
394 If (And(PIRF, 0x80))
395 {
396 Store(Zero, Local0)
397 }
398 Else
399 {
400 Store(One,Local0)
401 }
402 // Shift 1 by value in register 70
403 ShiftLeft(Local0,And(PIRF,0x0F),IRQW) // Save in buffer
404 Return(BUF0) // Return Buf0
405 } // End of _CRS method
406
407 Name(_PRS,
408 ResourceTemplate()
409 {IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
410
411 Method(_SRS,1,NotSerialized)
412 {
413 CreateWordField (ARG0, 0x01, IRQW) // IRQ low
414
415 FindSetRightBit(IRQW,Local0) // Set IRQ
416 If (LNotEqual(IRQW,Zero))
417 {
418 And(Local0, 0x7F,Local0)
419 Decrement(Local0)
420 }
421 Else
422 {
423 Or(Local0, 0x80,Local0)
424 }
425 Store(Local0, PIRF)
426 } // End of _SRS Method
427 }
428
429 Device(LNKG) // PCI IRQ link G
430 {
431 Name(_HID,EISAID("PNP0C0F"))
432
433 Name(_UID, 7)
434
435 Method(_STA,0,NotSerialized)
436 {
437 If(And(PIRG, 0x80))
438 {
439 Return(0x9)
440 }
441 Else
442 {
443 Return(0xB)
444 } // Don't display
445 }
446
447 Method(_DIS,0,NotSerialized)
448 {
449 Or(PIRG, 0x80,PIRG)
450 }
451
452 Method(_CRS,0,Serialized)
453 {
454 Name(BUF0,
455 ResourceTemplate()
456 {IRQ(Level,ActiveLow,Shared){0}})
457 // Define references to buffer elements
458 CreateWordField (BUF0, 0x01, IRQW) // IRQ low
459 // Write current settings into IRQ descriptor
460 If (And(PIRG, 0x80))
461 {
462 Store(Zero, Local0)
463 }
464 Else
465 {
466 Store(One,Local0)
467 } // Shift 1 by value in register 70
468 ShiftLeft(Local0,And(PIRG,0x0F),IRQW) // Save in buffer
469 Return(BUF0) // Return Buf0
470 } // End of _CRS method
471
472 Name(_PRS,
473 ResourceTemplate()
474 {IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
475
476 Method(_SRS,1,NotSerialized)
477 {
478 CreateWordField (ARG0, 0x01, IRQW) // IRQ low
479
480 FindSetRightBit(IRQW,Local0) // Set IRQ
481 If (LNotEqual(IRQW,Zero))
482 {
483 And(Local0, 0x7F,Local0)
484 Decrement(Local0)
485 }
486 Else {
487 Or(Local0, 0x80,Local0)
488 }
489 Store(Local0, PIRG)
490 } // End of _SRS Method
491 }
492
493 Device(LNKH) // PCI IRQ link H
494 {
495 Name(_HID,EISAID("PNP0C0F"))
496
497 Name(_UID, 8)
498
499 Method(_STA,0,NotSerialized)
500 {
501 If(And(PIRH, 0x80))
502 {
503 Return(0x9)
504 }
505 Else
506 {
507 Return(0xB)
508 } // Don't display
509 }
510
511 Method(_DIS,0,NotSerialized)
512 {
513 Or(PIRH, 0x80,PIRH)
514 }
515
516 Method(_CRS,0,Serialized)
517 {
518 Name(BUF0,
519 ResourceTemplate()
520 {IRQ(Level,ActiveLow,Shared){0}})
521 // Define references to buffer elements
522 CreateWordField (BUF0, 0x01, IRQW) // IRQ low
523 // Write current settings into IRQ descriptor
524 If (And(PIRH, 0x80))
525 {
526 Store(Zero, Local0)
527 }
528 Else
529 {
530 Store(One,Local0)
531 } // Shift 1 by value in register 70
532 ShiftLeft(Local0,And(PIRH,0x0F),IRQW) // Save in buffer
533 Return(BUF0) // Return Buf0
534 } // End of _CRS method
535
536 Name(_PRS,
537 ResourceTemplate()
538 {IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
539
540 Method(_SRS,1,NotSerialized)
541 {
542 CreateWordField (ARG0, 0x01, IRQW) // IRQ low
543
544 FindSetRightBit(IRQW,Local0)// Set IRQ
545 If (LNotEqual(IRQW,Zero))
546 {
547 And(Local0, 0x7F,Local0)
548 Decrement(Local0)
549 }
550 Else
551 {
552 Or(Local0, 0x80,Local0)
553 }
554 Store(Local0, PIRH)
555 } // End of _SRS Method
556 }
557
558 #endif