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