kvm: external module: pci_get_bus_and_slot() compatibility
[kvm-userspace.git] / bios / acpi-dsdt.dsl
blobd1bfa2c3cd5987a1698b8bbaa5db79d8b17945f6
1 /*
2  * Bochs/QEMU ACPI DSDT ASL definition
3  *
4  * Copyright (c) 2006 Fabrice Bellard
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License version 2 as published by the Free Software Foundation.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  */
19 DefinitionBlock (
20     "acpi-dsdt.aml",    // Output Filename
21     "DSDT",             // Signature
22     0x01,               // DSDT Compliance Revision
23     "BXPC",             // OEMID
24     "BXDSDT",           // TABLE ID
25     0x1                 // OEM Revision
26     )
28    Scope (\_PR)
29    {
30         OperationRegion( PRST, SystemIO, 0xaf00, 0x02)
31         Field (PRST, ByteAcc, NoLock, WriteAsZeros)
32         {
33                 PRU, 8,
34                 PRD, 8,
35         }
37 #define gen_processor(nr, name)                                             \
38         Processor (CPU##name, nr, 0x0000b010, 0x06) {                       \
39             Name (TMP, Buffer(0x8) {0x0, 0x8, nr, nr, 0x1, 0x0, 0x0, 0x0})  \
40             Method(_MAT, 0) {                                               \
41                 If (And(\_PR.PRU, ShiftLeft(1, nr))) { Return(TMP) }        \
42                 Else { Return(0x0) }                                        \
43             }                                                               \
44             Method (_STA) {                                                 \
45                 Return(0xF)                                                 \
46             }                                                               \
47         }                                                                   \
51         Processor (CPU0, 0x00, 0x0000b010, 0x06) {Method (_STA) { Return(0xF)}}
52         gen_processor(1, 1)
53         gen_processor(2, 2)
54         gen_processor(3, 3)
55         gen_processor(4, 4)
56         gen_processor(5, 5)
57         gen_processor(6, 6)
58         gen_processor(7, 7)
59         gen_processor(8, 8)
60         gen_processor(9, 9)
61         gen_processor(10, A)
62         gen_processor(11, B)
63         gen_processor(12, C)
64         gen_processor(13, D)
65         gen_processor(14, E)
66     }
68     Scope (\)
69     {
70         /* CMOS memory access */
71         OperationRegion (CMS, SystemIO, 0x70, 0x02)
72         Field (CMS, ByteAcc, NoLock, Preserve)
73         {
74             CMSI,   8,
75             CMSD,   8
76         }
77         Method (CMRD, 1, NotSerialized)
78         {
79             Store (Arg0, CMSI)
80             Store (CMSD, Local0)
81             Return (Local0)
82         }
84         /* Debug Output */
85         OperationRegion (DBG, SystemIO, 0xb044, 0x04)
86         Field (DBG, DWordAcc, NoLock, Preserve)
87         {
88             DBGL,   32,
89         }
90     }
93     /* PCI Bus definition */
94     Scope(\_SB) {
95         Device(PCI0) {
96             Name (_HID, EisaId ("PNP0A03"))
97             Name (_ADR, 0x00)
98             Name (_UID, 1)
99             Name(_PRT, Package() {
100                 /* PCI IRQ routing table, example from ACPI 2.0a specification,
101                    section 6.2.8.1 */
102                 /* Note: we provide the same info as the PCI routing
103                    table of the Bochs BIOS */
105 #define prt_slot(nr, lnk0, lnk1, lnk2, lnk3) \
106         Package() { nr##ffff, 0, lnk0, 0 }, \
107         Package() { nr##ffff, 1, lnk1, 0 }, \
108         Package() { nr##ffff, 2, lnk2, 0 }, \
109         Package() { nr##ffff, 3, lnk3, 0 }
111 #define prt_slot0(nr) prt_slot(nr, LNKD, LNKA, LNKB, LNKC)
112 #define prt_slot1(nr) prt_slot(nr, LNKA, LNKB, LNKC, LNKD)
113 #define prt_slot2(nr) prt_slot(nr, LNKB, LNKC, LNKD, LNKA)
114 #define prt_slot3(nr) prt_slot(nr, LNKC, LNKD, LNKA, LNKB)
116                 prt_slot0(0x0000),
117                 prt_slot1(0x0001),
118                 prt_slot2(0x0002),
119                 prt_slot3(0x0003),
120                 prt_slot0(0x0004),
121                 prt_slot1(0x0005),
122                 prt_slot2(0x0006),
123                 prt_slot3(0x0007),
124                 prt_slot0(0x0008),
125                 prt_slot1(0x0009),
126                 prt_slot2(0x000a),
127                 prt_slot3(0x000b),
128                 prt_slot0(0x000c),
129                 prt_slot1(0x000d),
130                 prt_slot2(0x000e),
131                 prt_slot3(0x000f),
132                 prt_slot0(0x0010),
133                 prt_slot1(0x0011),
134                 prt_slot2(0x0012),
135                 prt_slot3(0x0013),
136                 prt_slot0(0x0014),
137                 prt_slot1(0x0015),
138                 prt_slot2(0x0016),
139                 prt_slot3(0x0017),
140                 prt_slot0(0x0018),
141                 prt_slot1(0x0019),
142                 prt_slot2(0x001a),
143                 prt_slot3(0x001b),
144                 prt_slot0(0x001c),
145                 prt_slot1(0x001d),
146                 prt_slot2(0x001e),
147                 prt_slot3(0x001f),
148             })
150             OperationRegion(PCST, SystemIO, 0xae00, 0x08)
151             Field (PCST, DWordAcc, NoLock, WriteAsZeros)
152             {
153                 PCIU, 32,
154                 PCID, 32,
155             }
157             OperationRegion(SEJ, SystemIO, 0xae08, 0x04)
158             Field (SEJ, DWordAcc, NoLock, WriteAsZeros)
159             {
160                 B0EJ, 32,
161             }
163 #define hotplug_slot(name, nr) \
164             Device (S##name) {                    \
165                Name (_ADR, nr##0000)              \
166                Method (_EJ0,1) {                  \
167                     Store(ShiftLeft(1, nr), B0EJ) \
168                     Return (0x0)                  \
169                }                                  \
170                Name (_SUN, name)                  \
171             }
173             hotplug_slot(1, 0x0001)
174             hotplug_slot(2, 0x0002)
175             hotplug_slot(3, 0x0003)
176             hotplug_slot(4, 0x0004)
177             hotplug_slot(5, 0x0005)
178             hotplug_slot(6, 0x0006)
179             hotplug_slot(7, 0x0007)
180             hotplug_slot(8, 0x0008)
181             hotplug_slot(9, 0x0009)
182             hotplug_slot(10, 0x000a)
183             hotplug_slot(11, 0x000b)
184             hotplug_slot(12, 0x000c)
185             hotplug_slot(13, 0x000d)
186             hotplug_slot(14, 0x000e)
187             hotplug_slot(15, 0x000f)
188             hotplug_slot(16, 0x0010)
189             hotplug_slot(17, 0x0011)
190             hotplug_slot(18, 0x0012)
191             hotplug_slot(19, 0x0013)
192             hotplug_slot(20, 0x0014)
193             hotplug_slot(21, 0x0015)
194             hotplug_slot(22, 0x0016)
195             hotplug_slot(23, 0x0017)
196             hotplug_slot(24, 0x0018)
197             hotplug_slot(25, 0x0019)
198             hotplug_slot(26, 0x001a)
199             hotplug_slot(27, 0x001b)
200             hotplug_slot(28, 0x001c)
201             hotplug_slot(29, 0x001d)
202             hotplug_slot(30, 0x001e)
203             hotplug_slot(31, 0x001f)
205             Method (_CRS, 0, NotSerialized)
206             {
207             Name (MEMP, ResourceTemplate ()
208             {
209                 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
210                     0x0000,             // Address Space Granularity
211                     0x0000,             // Address Range Minimum
212                     0x00FF,             // Address Range Maximum
213                     0x0000,             // Address Translation Offset
214                     0x0100,             // Address Length
215                     ,, )
216                 IO (Decode16,
217                     0x0CF8,             // Address Range Minimum
218                     0x0CF8,             // Address Range Maximum
219                     0x01,               // Address Alignment
220                     0x08,               // Address Length
221                     )
222                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
223                     0x0000,             // Address Space Granularity
224                     0x0000,             // Address Range Minimum
225                     0x0CF7,             // Address Range Maximum
226                     0x0000,             // Address Translation Offset
227                     0x0CF8,             // Address Length
228                     ,, , TypeStatic)
229                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
230                     0x0000,             // Address Space Granularity
231                     0x0D00,             // Address Range Minimum
232                     0xFFFF,             // Address Range Maximum
233                     0x0000,             // Address Translation Offset
234                     0xF300,             // Address Length
235                     ,, , TypeStatic)
236                 DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
237                     0x00000000,         // Address Space Granularity
238                     0x000A0000,         // Address Range Minimum
239                     0x000BFFFF,         // Address Range Maximum
240                     0x00000000,         // Address Translation Offset
241                     0x00020000,         // Address Length
242                     ,, , AddressRangeMemory, TypeStatic)
243                 DWordMemory (ResourceProducer, PosDecode, MinNotFixed, MaxFixed, NonCacheable, ReadWrite,
244                     0x00000000,         // Address Space Granularity
245                     0x00000000,         // Address Range Minimum
246                     0xFEBFFFFF,         // Address Range Maximum
247                     0x00000000,         // Address Translation Offset
248                     0x00000000,         // Address Length
249                     ,, MEMF, AddressRangeMemory, TypeStatic)
250             })
251                 CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._MIN, PMIN)
252                 CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._MAX, PMAX)
253                 CreateDWordField (MEMP, \_SB.PCI0._CRS.MEMF._LEN, PLEN)
254                 /* compute available RAM */
255                 Add(CMRD(0x34), ShiftLeft(CMRD(0x35), 8), Local0)
256                 ShiftLeft(Local0, 16, Local0)
257                 Add(Local0, 0x1000000, Local0)
258                 /* update field of last region */
259                 Store(Local0, PMIN)
260                 Subtract (PMAX, PMIN, PLEN)
261                 Increment (PLEN)
262                 Return (MEMP)
263             }
264         }
265     }
267     Scope(\_SB.PCI0) {
269         /* PIIX3 ISA bridge */
270         Device (ISA) {
271             Name (_ADR, 0x00010000)
273             /* PIIX PCI to ISA irq remapping */
274             OperationRegion (P40C, PCI_Config, 0x60, 0x04)
276             /* Real-time clock */
277             Device (RTC)
278             {
279                 Name (_HID, EisaId ("PNP0B00"))
280                 Name (_CRS, ResourceTemplate ()
281                 {
282                     IO (Decode16, 0x0070, 0x0070, 0x10, 0x02)
283                     IRQNoFlags () {8}
284                     IO (Decode16, 0x0072, 0x0072, 0x02, 0x06)
285                 })
286             }
288             /* Keyboard seems to be important for WinXP install */
289             Device (KBD)
290             {
291                 Name (_HID, EisaId ("PNP0303"))
292                 Method (_STA, 0, NotSerialized)
293                 {
294                     Return (0x0f)
295                 }
297                 Method (_CRS, 0, NotSerialized)
298                 {
299                      Name (TMP, ResourceTemplate ()
300                      {
301                     IO (Decode16,
302                         0x0060,             // Address Range Minimum
303                         0x0060,             // Address Range Maximum
304                         0x01,               // Address Alignment
305                         0x01,               // Address Length
306                         )
307                     IO (Decode16,
308                         0x0064,             // Address Range Minimum
309                         0x0064,             // Address Range Maximum
310                         0x01,               // Address Alignment
311                         0x01,               // Address Length
312                         )
313                     IRQNoFlags ()
314                         {1}
315                     })
316                     Return (TMP)
317                 }
318             }
320             /* PS/2 mouse */
321             Device (MOU)
322             {
323                 Name (_HID, EisaId ("PNP0F13"))
324                 Method (_STA, 0, NotSerialized)
325                 {
326                     Return (0x0f)
327                 }
329                 Method (_CRS, 0, NotSerialized)
330                 {
331                     Name (TMP, ResourceTemplate ()
332                     {
333                          IRQNoFlags () {12}
334                     })
335                     Return (TMP)
336                 }
337             }
339             /* PS/2 floppy controller */
340             Device (FDC0)
341             {
342                 Name (_HID, EisaId ("PNP0700"))
343                 Method (_STA, 0, NotSerialized)
344                 {
345                     Return (0x0F)
346                 }
347                 Method (_CRS, 0, NotSerialized)
348                 {
349                     Name (BUF0, ResourceTemplate ()
350                     {
351                         IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04)
352                         IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
353                         IRQNoFlags () {6}
354                         DMA (Compatibility, NotBusMaster, Transfer8) {2}
355                     })
356                     Return (BUF0)
357                 }
358             }
360             /* Parallel port */
361             Device (LPT)
362             {
363                 Name (_HID, EisaId ("PNP0400"))
364                 Method (_STA, 0, NotSerialized)
365                 {
366                     Store (\_SB.PCI0.PX13.DRSA, Local0)
367                     And (Local0, 0x80000000, Local0)
368                     If (LEqual (Local0, 0))
369                     {
370                         Return (0x00)
371                     }
372                     Else
373                     {
374                         Return (0x0F)
375                     }
376                 }
377                 Method (_CRS, 0, NotSerialized)
378                 {
379                     Name (BUF0, ResourceTemplate ()
380                     {
381                         IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
382                         IRQNoFlags () {7}
383                     })
384                     Return (BUF0)
385                 }
386             }
388             /* Serial Ports */
389             Device (COM1)
390             {
391                 Name (_HID, EisaId ("PNP0501"))
392                 Name (_UID, 0x01)
393                 Method (_STA, 0, NotSerialized)
394                 {
395                     Store (\_SB.PCI0.PX13.DRSC, Local0)
396                     And (Local0, 0x08000000, Local0)
397                     If (LEqual (Local0, 0))
398                     {
399                         Return (0x00)
400                     }
401                     Else
402                     {
403                         Return (0x0F)
404                     }
405                 }
406                 Method (_CRS, 0, NotSerialized)
407                 {
408                     Name (BUF0, ResourceTemplate ()
409                     {
410                         IO (Decode16, 0x03F8, 0x03F8, 0x00, 0x08)
411                         IRQNoFlags () {4}
412                     })
413                     Return (BUF0)
414                 }
415             }
417             Device (COM2)
418             {
419                 Name (_HID, EisaId ("PNP0501"))
420                 Name (_UID, 0x02)
421                 Method (_STA, 0, NotSerialized)
422                 {
423                     Store (\_SB.PCI0.PX13.DRSC, Local0)
424                     And (Local0, 0x80000000, Local0)
425                     If (LEqual (Local0, 0))
426                     {
427                         Return (0x00)
428                     }
429                     Else
430                     {
431                         Return (0x0F)
432                     }
433                 }
434                 Method (_CRS, 0, NotSerialized)
435                 {
436                     Name (BUF0, ResourceTemplate ()
437                     {
438                         IO (Decode16, 0x02F8, 0x02F8, 0x00, 0x08)
439                         IRQNoFlags () {3}
440                     })
441                     Return (BUF0)
442                 }
443             }
444         }
446         /* PIIX4 PM */
447         Device (PX13) {
448             Name (_ADR, 0x00010003)
450             OperationRegion (P13C, PCI_Config, 0x5c, 0x24)
451             Field (P13C, DWordAcc, NoLock, Preserve)
452             {
453                 DRSA, 32,
454                 DRSB, 32,
455                 DRSC, 32,
456                 DRSE, 32,
457                 DRSF, 32,
458                 DRSG, 32,
459                 DRSH, 32,
460                 DRSI, 32,
461                 DRSJ, 32
462             }
463         }
464     }
466     /* PCI IRQs */
467     Scope(\_SB) {
468          Field (\_SB.PCI0.ISA.P40C, ByteAcc, NoLock, Preserve)
469          {
470              PRQ0,   8,
471              PRQ1,   8,
472              PRQ2,   8,
473              PRQ3,   8
474          }
476         Device(LNKA){
477                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
478                 Name(_UID, 1)
479                 Name(_PRS, ResourceTemplate(){
480                     Interrupt (, Level, ActiveHigh, Shared)
481                         { 5, 10, 11 }
482                 })
483                 Method (_STA, 0, NotSerialized)
484                 {
485                     Store (0x0B, Local0)
486                     If (And (0x80, PRQ0, Local1))
487                     {
488                          Store (0x09, Local0)
489                     }
490                     Return (Local0)
491                 }
492                 Method (_DIS, 0, NotSerialized)
493                 {
494                     Or (PRQ0, 0x80, PRQ0)
495                 }
496                 Method (_CRS, 0, NotSerialized)
497                 {
498                     Name (PRR0, ResourceTemplate ()
499                     {
500                         Interrupt (, Level, ActiveHigh, Shared)
501                             {1}
502                     })
503                     CreateDWordField (PRR0, 0x05, TMP)
504                     Store (PRQ0, Local0)
505                     If (LLess (Local0, 0x80))
506                     {
507                         Store (Local0, TMP)
508                     }
509                     Else
510                     {
511                         Store (Zero, TMP)
512                     }
513                     Return (PRR0)
514                 }
515                 Method (_SRS, 1, NotSerialized)
516                 {
517                     CreateDWordField (Arg0, 0x05, TMP)
518                     Store (TMP, PRQ0)
519                 }
520         }
521         Device(LNKB){
522                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
523                 Name(_UID, 2)
524                 Name(_PRS, ResourceTemplate(){
525                     Interrupt (, Level, ActiveHigh, Shared)
526                         { 5, 10, 11 }
527                 })
528                 Method (_STA, 0, NotSerialized)
529                 {
530                     Store (0x0B, Local0)
531                     If (And (0x80, PRQ1, Local1))
532                     {
533                          Store (0x09, Local0)
534                     }
535                     Return (Local0)
536                 }
537                 Method (_DIS, 0, NotSerialized)
538                 {
539                     Or (PRQ1, 0x80, PRQ1)
540                 }
541                 Method (_CRS, 0, NotSerialized)
542                 {
543                     Name (PRR0, ResourceTemplate ()
544                     {
545                         Interrupt (, Level, ActiveHigh, Shared)
546                             {1}
547                     })
548                     CreateDWordField (PRR0, 0x05, TMP)
549                     Store (PRQ1, Local0)
550                     If (LLess (Local0, 0x80))
551                     {
552                         Store (Local0, TMP)
553                     }
554                     Else
555                     {
556                         Store (Zero, TMP)
557                     }
558                     Return (PRR0)
559                 }
560                 Method (_SRS, 1, NotSerialized)
561                 {
562                     CreateDWordField (Arg0, 0x05, TMP)
563                     Store (TMP, PRQ1)
564                 }
565         }
566         Device(LNKC){
567                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
568                 Name(_UID, 3)
569                 Name(_PRS, ResourceTemplate(){
570                     Interrupt (, Level, ActiveHigh, Shared)
571                         { 5, 10, 11 }
572                 })
573                 Method (_STA, 0, NotSerialized)
574                 {
575                     Store (0x0B, Local0)
576                     If (And (0x80, PRQ2, Local1))
577                     {
578                          Store (0x09, Local0)
579                     }
580                     Return (Local0)
581                 }
582                 Method (_DIS, 0, NotSerialized)
583                 {
584                     Or (PRQ2, 0x80, PRQ2)
585                 }
586                 Method (_CRS, 0, NotSerialized)
587                 {
588                     Name (PRR0, ResourceTemplate ()
589                     {
590                         Interrupt (, Level, ActiveHigh, Shared)
591                             {1}
592                     })
593                     CreateDWordField (PRR0, 0x05, TMP)
594                     Store (PRQ2, Local0)
595                     If (LLess (Local0, 0x80))
596                     {
597                         Store (Local0, TMP)
598                     }
599                     Else
600                     {
601                         Store (Zero, TMP)
602                     }
603                     Return (PRR0)
604                 }
605                 Method (_SRS, 1, NotSerialized)
606                 {
607                     CreateDWordField (Arg0, 0x05, TMP)
608                     Store (TMP, PRQ2)
609                 }
610         }
611         Device(LNKD){
612                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
613                 Name(_UID, 4)
614                 Name(_PRS, ResourceTemplate(){
615                     Interrupt (, Level, ActiveHigh, Shared)
616                         { 5, 10, 11 }
617                 })
618                 Method (_STA, 0, NotSerialized)
619                 {
620                     Store (0x0B, Local0)
621                     If (And (0x80, PRQ3, Local1))
622                     {
623                          Store (0x09, Local0)
624                     }
625                     Return (Local0)
626                 }
627                 Method (_DIS, 0, NotSerialized)
628                 {
629                     Or (PRQ3, 0x80, PRQ3)
630                 }
631                 Method (_CRS, 0, NotSerialized)
632                 {
633                     Name (PRR0, ResourceTemplate ()
634                     {
635                         Interrupt (, Level, ActiveHigh, Shared)
636                             {1}
637                     })
638                     CreateDWordField (PRR0, 0x05, TMP)
639                     Store (PRQ3, Local0)
640                     If (LLess (Local0, 0x80))
641                     {
642                         Store (Local0, TMP)
643                     }
644                     Else
645                     {
646                         Store (Zero, TMP)
647                     }
648                     Return (PRR0)
649                 }
650                 Method (_SRS, 1, NotSerialized)
651                 {
652                     CreateDWordField (Arg0, 0x05, TMP)
653                     Store (TMP, PRQ3)
654                 }
655         }
656     }
658     /* S5 = power off state */
659     Name (_S5, Package (4) {
660         0x00, // PM1a_CNT.SLP_TYP
661         0x00, // PM2a_CNT.SLP_TYP
662         0x00, // reserved
663         0x00, // reserved
664     })
665     Scope (\_GPE)
666     {
668 #define gen_cpu_hotplug(name, nr)                      \
669         If (And(\_PR.PRU, ShiftLeft(1, nr))) {     \
670             Notify(\_PR.CPU##name, 1)              \
671         }                                          \
672         If (And(\_PR.PRD, ShiftLeft(1, nr))) {     \
673             Notify(\_PR.CPU##name, 3)              \
674         }
676         Method(_L00) {
677             gen_cpu_hotplug(1, 1)
678             gen_cpu_hotplug(2, 2)
679             gen_cpu_hotplug(3, 3)
680             gen_cpu_hotplug(4, 4)
681             gen_cpu_hotplug(5, 5)
682             gen_cpu_hotplug(6, 6)
683             gen_cpu_hotplug(7, 7)
684             gen_cpu_hotplug(8, 8)
685             gen_cpu_hotplug(9, 9)
686             gen_cpu_hotplug(A, 10)
687             gen_cpu_hotplug(B, 11)
688             gen_cpu_hotplug(C, 12)
689             gen_cpu_hotplug(D, 13)
690             gen_cpu_hotplug(E, 14)
692             Return(0x01)
693         }
695 #define gen_pci_hotplug(nr)                                       \
696             If (And(\_SB.PCI0.PCIU, ShiftLeft(1, nr))) {          \
697                 Notify(\_SB.PCI0.S##nr, 1)                        \
698             }                                                     \
699             If (And(\_SB.PCI0.PCID, ShiftLeft(1, nr))) {          \
700                 Notify(\_SB.PCI0.S##nr, 3)                        \
701             }
703         Method(_L01) {
704             gen_pci_hotplug(1)
705             gen_pci_hotplug(2)
706             gen_pci_hotplug(3)
707             gen_pci_hotplug(4)
708             gen_pci_hotplug(5)
709             gen_pci_hotplug(6)
710             gen_pci_hotplug(7)
711             gen_pci_hotplug(8)
712             gen_pci_hotplug(9)
713             gen_pci_hotplug(10)
714             gen_pci_hotplug(11)
715             gen_pci_hotplug(12)
716             gen_pci_hotplug(13)
717             gen_pci_hotplug(14)
718             gen_pci_hotplug(15)
719             gen_pci_hotplug(16)
720             gen_pci_hotplug(17)
721             gen_pci_hotplug(18)
722             gen_pci_hotplug(19)
723             gen_pci_hotplug(20)
724             gen_pci_hotplug(21)
725             gen_pci_hotplug(22)
726             gen_pci_hotplug(23)
727             gen_pci_hotplug(24)
728             gen_pci_hotplug(25)
729             gen_pci_hotplug(26)
730             gen_pci_hotplug(27)
731             gen_pci_hotplug(28)
732             gen_pci_hotplug(29)
733             gen_pci_hotplug(30)
734             gen_pci_hotplug(31)
736             Return(0x01)
737         }
738         Method(_L02) {
739             Return(0x01)
740         }
741         Method(_L03) {
742             Return(0x01)
743         }
744         Method(_L04) {
745             Return(0x01)
746         }
747         Method(_L05) {
748             Return(0x01)
749         }
750         Method(_L06) {
751             Return(0x01)
752         }
753         Method(_L07) {
754             Return(0x01)
755         }
756         Method(_L08) {
757             Return(0x01)
758         }
759         Method(_L09) {
760             Return(0x01)
761         }
762         Method(_L0A) {
763             Return(0x01)
764         }
765         Method(_L0B) {
766             Return(0x01)
767         }
768         Method(_L0C) {
769             Return(0x01)
770         }
771         Method(_L0D) {
772             Return(0x01)
773         }
774         Method(_L0E) {
775             Return(0x01)
776         }
777         Method(_L0F) {
778             Return(0x01)
779         }
780     }