Merge tag 'efi-2020-07-rc6' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
[oweals/u-boot.git] / arch / x86 / include / asm / acpi / irqlinks.asl
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
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
7  */
8
9 /*
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  */
22
23 Device (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
81 Device (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
139 Device (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
197 Device (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
255 Device (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
313 Device (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
371 Device (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
429 Device (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 }