• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**************************************************************************;
2;*                                                                        *;
3;*                                                                        *;
4;*    Intel Corporation - ACPI Reference Code for the Baytrail            *;
5;*    Family of Customer Reference Boards.                                *;
6;*                                                                        *;
7;*                                                                        *;
8;*    Copyright (c)  2012  - 2014, Intel Corporation. All rights reserved   *;
9;
10; This program and the accompanying materials are licensed and made available under
11; the terms and conditions of the BSD License that accompanies this distribution.
12; The full text of the license may be found at
13; http://opensource.org/licenses/bsd-license.php.
14;
15; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
16; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17;
18;*                                                                        *;
19;*                                                                        *;
20;**************************************************************************/
21
22
23
24// Use this information when determining the Possible IRQs that can be
25// used in a given system.
26//
27// The following IRQs are always in use by legacy devices:
28//              0  = System Timer
29//              2  = 8259 PIC
30//              8  = RTC
31//              9  = SCI Interrupt (It may be used, we choose not to)
32//              13 = Co-processor Error
33//
34// The following may be in use by legacy devices:
35//              1  = If using PS/2 Keyboard
36//              3  = If COMx Port Enabled and IRQ = 3
37//              4  = If COMx Port Enabled and IRQ = 4
38//              5  = If LPT Port Enabled and IRQ = 5
39//              6  = If FDC Enabled
40//              7  = If LPT Port Enabled and IRQ = 7
41//              12 = If using PS/2 Mouse
42//              14 = Primary IDE (If populated and in Compatibility Mode)
43//              15 = Secondary IDE (If populated and in Compatibility Mode)
44//
45// The following will never be in use by legacy devices:
46//              10 = Assign to PARC, PCRC, PERC, PGRC
47//              11 = Assign to PBRC, PDRC, PFRC, PHRC
48
49Device(LNKA)                            // PARC Routing Resource
50{
51  Name(_HID,EISAID("PNP0C0F"))    // PCI Interrupt Link Device
52
53  Name(_UID,1)                    // Unique to other Link Devices
54
55  // Disable the PCI IRQ.
56
57  Method(_DIS,0,Serialized)
58  {
59    Or(PARC,0x80,PARC)
60  }
61
62  // Possible IRQ Resource Setting.
63
64  Method (_PRS, 0, Serialized)
65  {
66    return (PRSA)
67  }
68
69  // Current IRQ Resource Setting.
70
71  Method(_CRS,0,Serialized)
72  {
73    Name(RTLA,ResourceTemplate()
74    {
75      IRQ(Level,ActiveLow,Shared) {}
76    })
77
78    // Point to specific byte.
79
80    CreateWordField(RTLA,1,IRQ0)
81
82    // Zero out IRQ mask bits 0-15
83
84    Store(Zero,IRQ0)
85
86    ShiftLeft(1,And(PARC,0x0F),IRQ0)
87
88    Return(RTLA)
89  }
90
91  // Set IRQ Resource Setting.
92
93  Method(_SRS,1,Serialized)
94  {
95    // Point to the specific byte passed in
96
97    CreateWordField(Arg0,1,IRQ0)
98
99    // Determine the IRQ bit to set and store it
100
101    FindSetRightBit(IRQ0,Local0)
102    Decrement(Local0)
103    Store(Local0,PARC)
104  }
105
106  // PCI IRQ Status.
107
108  Method(_STA,0,Serialized)
109  {
110    If(And(PARC,0x80))
111    {
112      Return(0x0009)
113    }
114    Else
115    {
116      Return(0x000B)
117    }
118  }
119}
120
121Device(LNKB)                            // PBRC Routing Resource
122{
123  Name(_HID,EISAID("PNP0C0F"))
124
125  Name(_UID,2)
126
127  // Disable the PCI IRQ.
128
129  Method(_DIS,0,Serialized)
130  {
131    Or(PBRC,0x80,PBRC)
132  }
133
134  // Possible IRQ Resource Setting.
135
136  Method (_PRS, 0, Serialized)
137  {
138    return (PRSB)
139  }
140
141  // Current IRQ Resource Setting.
142
143  Method(_CRS,0,Serialized)
144  {
145    Name(RTLB,ResourceTemplate()
146    {
147      IRQ(Level,ActiveLow,Shared) {}
148    })
149
150    // Point to specific byte.
151
152    CreateWordField(RTLB,1,IRQ0)
153
154    // Zero out IRQ mask bits 0-15
155
156    Store(Zero,IRQ0)
157
158    ShiftLeft(1,And(PBRC,0x0F),IRQ0)
159
160    Return(RTLB)
161  }
162
163  // Set IRQ Resource Setting.
164
165  Method(_SRS,1,Serialized)
166  {
167    // Point to the specific byte passed in.
168
169    CreateWordField(Arg0,1,IRQ0)
170
171    // Determine the IRQ bit to set and store it,
172
173    FindSetRightBit(IRQ0,Local0)
174    Decrement(Local0)
175    Store(Local0,PBRC)
176  }
177
178  // PCI IRQ Status.
179
180  Method(_STA,0,Serialized)
181  {
182    If(And(PBRC,0x80))
183    {
184      Return(0x0009)
185    }
186    Else
187    {
188      Return(0x000B)
189    }
190  }
191}
192
193Device(LNKC)                            // PCRC Routing Resource
194{
195  Name(_HID,EISAID("PNP0C0F"))
196
197  Name(_UID,3)
198
199  // Disable the PCI IRQ.
200
201  Method(_DIS,0,Serialized)
202  {
203    Or(PCRC,0x80,PCRC)
204  }
205
206  // Possible IRQ Resource Setting.
207
208  Method (_PRS, 0, Serialized)
209  {
210    return (PRSC)
211  }
212
213  // Current IRQ Resource Setting.
214
215  Method(_CRS,0,Serialized)
216  {
217    Name(RTLC,ResourceTemplate()
218    {
219      IRQ(Level,ActiveLow,Shared) {}
220    })
221
222    // Point to specific byte.
223
224    CreateWordField(RTLC,1,IRQ0)
225
226    // Zero out IRQ mask bits 0-15
227
228    Store(Zero,IRQ0)
229
230    ShiftLeft(1,And(PCRC,0x0F),IRQ0)
231
232    Return(RTLC)
233  }
234
235  // Set IRQ Resource Setting.
236
237  Method(_SRS,1,Serialized)
238  {
239    // Point to the specific byte passed in.
240
241    CreateWordField(Arg0,1,IRQ0)
242
243    // Determine the IRQ bit to set and store it,
244
245    FindSetRightBit(IRQ0,Local0)
246    Decrement(Local0)
247    Store(Local0,PCRC)
248  }
249
250  // PCI IRQ Status.
251
252  Method(_STA,0,Serialized)
253  {
254    If(And(PCRC,0x80))
255    {
256      Return(0x0009)
257    }
258    Else
259    {
260      Return(0x000B)
261    }
262  }
263}
264
265Device(LNKD)                            // PDRC Routing Resource
266{
267  Name(_HID,EISAID("PNP0C0F"))
268
269  Name(_UID,4)
270
271  // Disable the PCI IRQ.
272
273  Method(_DIS,0,Serialized)
274  {
275    Or(PDRC,0x80,PDRC)
276  }
277
278  // Possible IRQ Resource Setting.
279
280  Method (_PRS, 0, Serialized)
281  {
282    return (PRSD)
283  }
284
285  // Current IRQ Resource Setting.
286
287  Method(_CRS,0,Serialized)
288  {
289    Name(RTLD,ResourceTemplate()
290    {
291      IRQ(Level,ActiveLow,Shared) {}
292    })
293
294    // Point to specific byte.
295
296    CreateWordField(RTLD,1,IRQ0)
297
298    // Zero out IRQ mask bits 0-15
299
300    Store(Zero,IRQ0)
301
302    ShiftLeft(1,And(PDRC,0x0F),IRQ0)
303
304    Return(RTLD)
305  }
306
307  // Set IRQ Resource Setting.
308
309  Method(_SRS,1,Serialized)
310  {
311    // Point to the specific byte passed in.
312
313    CreateWordField(Arg0,1,IRQ0)
314
315    // Determine the IRQ bit to set and store it,
316
317    FindSetRightBit(IRQ0,Local0)
318    Decrement(Local0)
319    Store(Local0,PDRC)
320  }
321
322  // PCI IRQ Status.
323
324  Method(_STA,0,Serialized)
325  {
326    If(And(PDRC,0x80))
327    {
328      Return(0x0009)
329    }
330    Else
331    {
332      Return(0x000B)
333    }
334  }
335}
336
337Device(LNKE)                            // PERC Routing Resource
338{
339  Name(_HID,EISAID("PNP0C0F"))
340
341  Name(_UID,5)
342
343  // Disable the PCI IRQ.
344
345  Method(_DIS,0,Serialized)
346  {
347    Or(PERC,0x80,PERC)
348  }
349
350  // Possible IRQ Resource Setting.
351
352  Method (_PRS, 0, Serialized)
353  {
354    return (PRSE)
355  }
356
357  // Current IRQ Resource Setting.
358
359  Method(_CRS,0,Serialized)
360  {
361    Name(RTLE,ResourceTemplate()
362    {
363      IRQ(Level,ActiveLow,Shared) {}
364    })
365
366    // Point to specific byte.
367
368    CreateWordField(RTLE,1,IRQ0)
369
370    // Zero out IRQ mask bits 0-15
371
372    Store(Zero,IRQ0)
373
374    ShiftLeft(1,And(PERC,0x0F),IRQ0)
375
376    Return(RTLE)
377  }
378
379  // Set IRQ Resource Setting.
380
381  Method(_SRS,1,Serialized)
382  {
383    // Point to the specific byte passed in
384
385    CreateWordField(Arg0,1,IRQ0)
386
387    // Determine the IRQ bit to set and store it
388
389    FindSetRightBit(IRQ0,Local0)
390    Decrement(Local0)
391    Store(Local0,PERC)
392  }
393
394  // PCI IRQ Status.
395
396  Method(_STA,0,Serialized)
397  {
398    If(And(PERC,0x80))
399    {
400      Return(0x0009)
401    }
402    Else
403    {
404      Return(0x000B)
405    }
406  }
407}
408
409Device(LNKF)                            // PFRC Routing Resource
410{
411  Name(_HID,EISAID("PNP0C0F"))
412
413  Name(_UID,6)
414
415  // Disable the PCI IRQ.
416
417  Method(_DIS,0,Serialized)
418  {
419    Or(PFRC,0x80,PFRC)
420  }
421
422  // Possible IRQ Resource Setting.
423
424  Method (_PRS, 0, Serialized)
425  {
426    return (PRSF)
427  }
428
429  // Current IRQ Resource Setting.
430
431  Method(_CRS,0,Serialized)
432  {
433    Name(RTLF,ResourceTemplate()
434    {
435      IRQ(Level,ActiveLow,Shared) {}
436    })
437
438    // Point to specific byte.
439
440    CreateWordField(RTLF,1,IRQ0)
441
442    // Zero out IRQ mask bits 0-15
443
444    Store(Zero,IRQ0)
445
446    ShiftLeft(1,And(PFRC,0x0F),IRQ0)
447
448    Return(RTLF)
449  }
450
451  // Set IRQ Resource Setting.
452
453  Method(_SRS,1,Serialized)
454  {
455    // Point to the specific byte passed in.
456
457    CreateWordField(Arg0,1,IRQ0)
458
459    // Determine the IRQ bit to set and store it,
460
461    FindSetRightBit(IRQ0,Local0)
462    Decrement(Local0)
463    Store(Local0,PFRC)
464  }
465
466  // PCI IRQ Status.
467
468  Method(_STA,0,Serialized)
469  {
470    If(And(PFRC,0x80))
471    {
472      Return(0x0009)
473    }
474    Else
475    {
476      Return(0x000B)
477    }
478  }
479}
480
481Device(LNKG)                            // PGRC Routing Resource
482{
483  Name(_HID,EISAID("PNP0C0F"))
484
485  Name(_UID,7)
486
487  // Disable the PCI IRQ.
488
489  Method(_DIS,0,Serialized)
490  {
491    Or(PGRC,0x80,PGRC)
492  }
493
494  // Possible IRQ Resource Setting.
495
496  Method (_PRS, 0, Serialized)
497  {
498    return (PRSG)
499  }
500
501  // Current IRQ Resource Setting.
502
503  Method(_CRS,0,Serialized)
504  {
505    Name(RTLG,ResourceTemplate()
506    {
507      IRQ(Level,ActiveLow,Shared) {}
508    })
509
510    // Point to specific byte.
511
512    CreateWordField(RTLG,1,IRQ0)
513
514    // Zero out IRQ mask bits 0-15
515
516    Store(Zero,IRQ0)
517
518    ShiftLeft(1,And(PGRC,0x0F),IRQ0)
519
520    Return(RTLG)
521  }
522
523  // Set IRQ Resource Setting.
524
525  Method(_SRS,1,Serialized)
526  {
527    // Point to the specific byte passed in.
528
529    CreateWordField(Arg0,1,IRQ0)
530
531    // Determine the IRQ bit to set and store it,
532
533    FindSetRightBit(IRQ0,Local0)
534    Decrement(Local0)
535    Store(Local0,PGRC)
536  }
537
538  // PCI IRQ Status.
539
540  Method(_STA,0,Serialized)
541  {
542    If(And(PGRC,0x80))
543    {
544      Return(0x0009)
545    }
546    Else
547    {
548      Return(0x000B)
549    }
550  }
551}
552
553Device(LNKH)                            // PHRC Routing Resource
554{
555  Name(_HID,EISAID("PNP0C0F"))
556
557  Name(_UID,8)
558
559  // Disable the PCI IRQ.
560
561  Method(_DIS,0,Serialized)
562  {
563    Or(PHRC,0x80,PHRC)
564  }
565
566  // Possible IRQ Resource Setting.
567
568  Method (_PRS, 0, Serialized)
569  {
570    return (PRSH)
571  }
572
573  // Current IRQ Resource Setting.
574
575  Method(_CRS,0,Serialized)
576  {
577    Name(RTLH,ResourceTemplate()
578    {
579      IRQ(Level,ActiveLow,Shared) {}
580    })
581
582    // Point to specific byte.
583
584    CreateWordField(RTLH,1,IRQ0)
585
586    // Zero out IRQ mask bits 0-15
587
588    Store(Zero,IRQ0)
589
590    ShiftLeft(1,And(PHRC,0x0F),IRQ0)
591
592    Return(RTLH)
593  }
594
595  // Set IRQ Resource Setting.
596
597  Method(_SRS,1,Serialized)
598  {
599    // Point to the specific byte passed in.
600
601    CreateWordField(Arg0,1,IRQ0)
602
603    // Determine the IRQ bit to set and store it,
604
605    FindSetRightBit(IRQ0,Local0)
606    Decrement(Local0)
607    Store(Local0,PHRC)
608  }
609
610  // PCI IRQ Status.
611
612  Method(_STA,0,Serialized)
613  {
614    If(And(PHRC,0x80))
615    {
616      Return(0x0009)
617    }
618    Else
619    {
620      Return(0x000B)
621    }
622  }
623}
624