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