After this has been brought up many times before, rename src/arch/i386 to
[coreboot.git] / src / mainboard / asrock / 939a785gmh / dsdt.asl
1 /*
2  * This file is part of the coreboot project.
3  *
4  * Copyright (C) 2010 Advanced Micro Devices, Inc.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; version 2 of the License.
9  *
10  * This program 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
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
18  */
19
20 /* DefinitionBlock Statement */
21 DefinitionBlock (
22         "DSDT.AML",           /* Output filename */
23         "DSDT",                 /* Signature */
24         0x02,           /* DSDT Revision, needs to be 2 for 64bit */
25         "ASROCK",               /* OEMID */
26         "939A785GM",     /* TABLE ID */
27         0x00010001      /* OEM Revision */
28         )
29 {       /* Start of ASL file */
30         /* #include "../../../arch/x86/acpi/debug.asl" */               /* Include global debug methods if needed */
31         #include "northbridge/amd/amdk8/util.asl"
32
33         Name(HPBA, 0xFED00000)  /* Base address of HPET table */
34
35         Name(SSFG, 0x0D)                /* S1 support: bit 0, S2 Support: bit 1, etc. S0 & S5 assumed */
36
37         Name(PMOD, One) /* Assume APIC */
38
39         /* PIC IRQ mapping registers, C00h-C01h */
40         OperationRegion(PRQM, SystemIO, 0x00000C00, 0x00000002)
41                 Field(PRQM, ByteAcc, NoLock, Preserve) {
42                 PRQI, 0x00000008,
43                 PRQD, 0x00000008,  /* Offset: 1h */
44         }
45         IndexField(PRQI, PRQD, ByteAcc, NoLock, Preserve) {
46                 PINA, 0x00000008,       /* Index 0  */
47                 PINB, 0x00000008,       /* Index 1 */
48                 PINC, 0x00000008,       /* Index 2 */
49                 PIND, 0x00000008,       /* Index 3 */
50                 AINT, 0x00000008,       /* Index 4 */
51                 SINT, 0x00000008,       /*  Index 5 */
52                 , 0x00000008,                /* Index 6 */
53                 AAUD, 0x00000008,       /* Index 7 */
54                 AMOD, 0x00000008,       /* Index 8 */
55                 PINE, 0x00000008,       /* Index 9 */
56                 PINF, 0x00000008,       /* Index A */
57                 PING, 0x00000008,       /* Index B */
58                 PINH, 0x00000008,       /* Index C */
59         }
60
61         #include "acpi/routing.asl"
62
63         Scope(\_SB) {
64
65                 Method(_PIC, 0x01, NotSerialized)
66                 {
67                         If (Arg0)
68                         {
69                                 \_SB.CIRQ()
70                         }
71                         Store(Arg0, PMOD)
72                 }
73
74                 Method(CIRQ, 0x00, NotSerialized){
75                         Store(0, PINA)
76                         Store(0, PINB)
77                         Store(0, PINC)
78                         Store(0, PIND)
79                         Store(0, PINE)
80                         Store(0, PINF)
81                         Store(0, PING)
82                         Store(0, PINH)
83                 }
84
85                 Name(IRQB, ResourceTemplate(){
86                         IRQ(Level,ActiveLow,Shared){15}
87                 })
88
89                 Name(IRQP, ResourceTemplate(){
90                         IRQ(Level,ActiveLow,Exclusive){3, 4, 5, 7, 10, 11, 12, 15}
91                 })
92
93                 Name(PITF, ResourceTemplate(){
94                         IRQ(Level,ActiveLow,Exclusive){9}
95                 })
96
97                 Device(INTA) {
98                         Name(_HID, EISAID("PNP0C0F"))
99                         Name(_UID, 1)
100
101                         Method(_STA, 0) {
102                                 if (PINA) {
103                                         Return(0x0B) /* sata is invisible */
104                                 } else {
105                                         Return(0x09) /* sata is disabled */
106                                 }
107                         } /* End Method(_SB.INTA._STA) */
108
109                         Method(_DIS ,0) {
110                                 /* DBGO("\\_SB\\LNKA\\_DIS\n") */
111                                 Store(0, PINA)
112                         } /* End Method(_SB.INTA._DIS) */
113
114                         Method(_PRS ,0) {
115                                 /* DBGO("\\_SB\\LNKA\\_PRS\n") */
116                                 Return(IRQP)
117                         } /* Method(_SB.INTA._PRS) */
118
119                         Method(_CRS ,0) {
120                                 /* DBGO("\\_SB\\LNKA\\_CRS\n") */
121                                 CreateWordField(IRQB, 0x1, IRQN)
122                                 ShiftLeft(1, PINA, IRQN)
123                                 Return(IRQB)
124                         } /* Method(_SB.INTA._CRS) */
125
126                         Method(_SRS, 1) {
127                                 /* DBGO("\\_SB\\LNKA\\_CRS\n") */
128                                 CreateWordField(ARG0, 1, IRQM)
129
130                                 /* Use lowest available IRQ */
131                                 FindSetRightBit(IRQM, Local0)
132                                 if (Local0) {
133                                         Decrement(Local0)
134                                 }
135                                 Store(Local0, PINA)
136                         } /* End Method(_SB.INTA._SRS) */
137                 } /* End Device(INTA) */
138
139                 Device(INTB) {
140                         Name(_HID, EISAID("PNP0C0F"))
141                         Name(_UID, 2)
142
143                         Method(_STA, 0) {
144                                 if (PINB) {
145                                         Return(0x0B) /* sata is invisible */
146                                 } else {
147                                         Return(0x09) /* sata is disabled */
148                                 }
149                         } /* End Method(_SB.INTB._STA) */
150
151                         Method(_DIS ,0) {
152                                 /* DBGO("\\_SB\\LNKB\\_DIS\n") */
153                                 Store(0, PINB)
154                         } /* End Method(_SB.INTB._DIS) */
155
156                         Method(_PRS ,0) {
157                                 /* DBGO("\\_SB\\LNKB\\_PRS\n") */
158                                 Return(IRQP)
159                         } /* Method(_SB.INTB._PRS) */
160
161                         Method(_CRS ,0) {
162                                 /* DBGO("\\_SB\\LNKB\\_CRS\n") */
163                                 CreateWordField(IRQB, 0x1, IRQN)
164                                 ShiftLeft(1, PINB, IRQN)
165                                 Return(IRQB)
166                         } /* Method(_SB.INTB._CRS) */
167
168                         Method(_SRS, 1) {
169                                 /* DBGO("\\_SB\\LNKB\\_CRS\n") */
170                                 CreateWordField(ARG0, 1, IRQM)
171
172                                 /* Use lowest available IRQ */
173                                 FindSetRightBit(IRQM, Local0)
174                                 if (Local0) {
175                                         Decrement(Local0)
176                                 }
177                                 Store(Local0, PINB)
178                         } /* End Method(_SB.INTB._SRS) */
179                 } /* End Device(INTB)  */
180
181                 Device(INTC) {
182                         Name(_HID, EISAID("PNP0C0F"))
183                         Name(_UID, 3)
184
185                         Method(_STA, 0) {
186                                 if (PINC) {
187                                         Return(0x0B) /* sata is invisible */
188                                 } else {
189                                         Return(0x09) /* sata is disabled */
190                                 }
191                         } /* End Method(_SB.INTC._STA) */
192
193                         Method(_DIS ,0) {
194                                 /* DBGO("\\_SB\\LNKC\\_DIS\n") */
195                                 Store(0, PINC)
196                         } /* End Method(_SB.INTC._DIS) */
197
198                         Method(_PRS ,0) {
199                                 /* DBGO("\\_SB\\LNKC\\_PRS\n") */
200                                 Return(IRQP)
201                         } /* Method(_SB.INTC._PRS) */
202
203                         Method(_CRS ,0) {
204                                 /* DBGO("\\_SB\\LNKC\\_CRS\n") */
205                                 CreateWordField(IRQB, 0x1, IRQN)
206                                 ShiftLeft(1, PINC, IRQN)
207                                 Return(IRQB)
208                         } /* Method(_SB.INTC._CRS) */
209
210                         Method(_SRS, 1) {
211                                 /* DBGO("\\_SB\\LNKC\\_CRS\n") */
212                                 CreateWordField(ARG0, 1, IRQM)
213
214                                 /* Use lowest available IRQ */
215                                 FindSetRightBit(IRQM, Local0)
216                                 if (Local0) {
217                                         Decrement(Local0)
218                                 }
219                                 Store(Local0, PINC)
220                         } /* End Method(_SB.INTC._SRS) */
221                 } /* End Device(INTC)  */
222
223                 Device(INTD) {
224                         Name(_HID, EISAID("PNP0C0F"))
225                         Name(_UID, 4)
226
227                         Method(_STA, 0) {
228                                 if (PIND) {
229                                         Return(0x0B) /* sata is invisible */
230                                 } else {
231                                         Return(0x09) /* sata is disabled */
232                                 }
233                         } /* End Method(_SB.INTD._STA) */
234
235                         Method(_DIS ,0) {
236                                 /* DBGO("\\_SB\\LNKD\\_DIS\n") */
237                                 Store(0, PIND)
238                         } /* End Method(_SB.INTD._DIS) */
239
240                         Method(_PRS ,0) {
241                                 /* DBGO("\\_SB\\LNKD\\_PRS\n") */
242                                 Return(IRQP)
243                         } /* Method(_SB.INTD._PRS) */
244
245                         Method(_CRS ,0) {
246                                 /* DBGO("\\_SB\\LNKD\\_CRS\n") */
247                                 CreateWordField(IRQB, 0x1, IRQN)
248                                 ShiftLeft(1, PIND, IRQN)
249                                 Return(IRQB)
250                         } /* Method(_SB.INTD._CRS) */
251
252                         Method(_SRS, 1) {
253                                 /* DBGO("\\_SB\\LNKD\\_CRS\n") */
254                                 CreateWordField(ARG0, 1, IRQM)
255
256                                 /* Use lowest available IRQ */
257                                 FindSetRightBit(IRQM, Local0)
258                                 if (Local0) {
259                                         Decrement(Local0)
260                                 }
261                                 Store(Local0, PIND)
262                         } /* End Method(_SB.INTD._SRS) */
263                 } /* End Device(INTD)  */
264
265                 Device(INTE) {
266                         Name(_HID, EISAID("PNP0C0F"))
267                         Name(_UID, 5)
268
269                         Method(_STA, 0) {
270                                 if (PINE) {
271                                         Return(0x0B) /* sata is invisible */
272                                 } else {
273                                         Return(0x09) /* sata is disabled */
274                                 }
275                         } /* End Method(_SB.INTE._STA) */
276
277                         Method(_DIS ,0) {
278                                 /* DBGO("\\_SB\\LNKE\\_DIS\n") */
279                                 Store(0, PINE)
280                         } /* End Method(_SB.INTE._DIS) */
281
282                         Method(_PRS ,0) {
283                                 /* DBGO("\\_SB\\LNKE\\_PRS\n") */
284                                 Return(IRQP)
285                         } /* Method(_SB.INTE._PRS) */
286
287                         Method(_CRS ,0) {
288                                 /* DBGO("\\_SB\\LNKE\\_CRS\n") */
289                                 CreateWordField(IRQB, 0x1, IRQN)
290                                 ShiftLeft(1, PINE, IRQN)
291                                 Return(IRQB)
292                         } /* Method(_SB.INTE._CRS) */
293
294                         Method(_SRS, 1) {
295                                 /* DBGO("\\_SB\\LNKE\\_CRS\n") */
296                                 CreateWordField(ARG0, 1, IRQM)
297
298                                 /* Use lowest available IRQ */
299                                 FindSetRightBit(IRQM, Local0)
300                                 if (Local0) {
301                                         Decrement(Local0)
302                                 }
303                                 Store(Local0, PINE)
304                         } /* End Method(_SB.INTE._SRS) */
305                 } /* End Device(INTE)  */
306
307                 Device(INTF) {
308                         Name(_HID, EISAID("PNP0C0F"))
309                         Name(_UID, 6)
310
311                         Method(_STA, 0) {
312                                 if (PINF) {
313                                         Return(0x0B) /* sata is invisible */
314                                 } else {
315                                         Return(0x09) /* sata is disabled */
316                                 }
317                         } /* End Method(_SB.INTF._STA) */
318
319                         Method(_DIS ,0) {
320                                 /* DBGO("\\_SB\\LNKF\\_DIS\n") */
321                                 Store(0, PINF)
322                         } /* End Method(_SB.INTF._DIS) */
323
324                         Method(_PRS ,0) {
325                                 /* DBGO("\\_SB\\LNKF\\_PRS\n") */
326                                 Return(PITF)
327                         } /* Method(_SB.INTF._PRS) */
328
329                         Method(_CRS ,0) {
330                                 /* DBGO("\\_SB\\LNKF\\_CRS\n") */
331                                 CreateWordField(IRQB, 0x1, IRQN)
332                                 ShiftLeft(1, PINF, IRQN)
333                                 Return(IRQB)
334                         } /* Method(_SB.INTF._CRS) */
335
336                         Method(_SRS, 1) {
337                                 /* DBGO("\\_SB\\LNKF\\_CRS\n") */
338                                 CreateWordField(ARG0, 1, IRQM)
339
340                                 /* Use lowest available IRQ */
341                                 FindSetRightBit(IRQM, Local0)
342                                 if (Local0) {
343                                         Decrement(Local0)
344                                 }
345                                 Store(Local0, PINF)
346                         } /*  End Method(_SB.INTF._SRS) */
347                 } /* End Device(INTF)  */
348
349                 Device(INTG) {
350                         Name(_HID, EISAID("PNP0C0F"))
351                         Name(_UID, 7)
352
353                         Method(_STA, 0) {
354                                 if (PING) {
355                                         Return(0x0B) /* sata is invisible */
356                                 } else {
357                                         Return(0x09) /* sata is disabled */
358                                 }
359                         } /* End Method(_SB.INTG._STA)  */
360
361                         Method(_DIS ,0) {
362                                 /* DBGO("\\_SB\\LNKG\\_DIS\n") */
363                                 Store(0, PING)
364                         } /* End Method(_SB.INTG._DIS)  */
365
366                         Method(_PRS ,0) {
367                                 /* DBGO("\\_SB\\LNKG\\_PRS\n") */
368                                 Return(IRQP)
369                         } /* Method(_SB.INTG._CRS)  */
370
371                         Method(_CRS ,0) {
372                                 /* DBGO("\\_SB\\LNKG\\_CRS\n") */
373                                 CreateWordField(IRQB, 0x1, IRQN)
374                                 ShiftLeft(1, PING, IRQN)
375                                 Return(IRQB)
376                         } /* Method(_SB.INTG._CRS)  */
377
378                         Method(_SRS, 1) {
379                                 /* DBGO("\\_SB\\LNKG\\_CRS\n") */
380                                 CreateWordField(ARG0, 1, IRQM)
381
382                                 /* Use lowest available IRQ */
383                                 FindSetRightBit(IRQM, Local0)
384                                 if (Local0) {
385                                         Decrement(Local0)
386                                 }
387                                 Store(Local0, PING)
388                         } /* End Method(_SB.INTG._SRS)  */
389                 } /* End Device(INTG)  */
390
391                 Device(INTH) {
392                         Name(_HID, EISAID("PNP0C0F"))
393                         Name(_UID, 8)
394
395                         Method(_STA, 0) {
396                                 if (PINH) {
397                                         Return(0x0B) /* sata is invisible */
398                                 } else {
399                                         Return(0x09) /* sata is disabled */
400                                 }
401                         } /* End Method(_SB.INTH._STA)  */
402
403                         Method(_DIS ,0) {
404                                 /* DBGO("\\_SB\\LNKH\\_DIS\n") */
405                                 Store(0, PINH)
406                         } /* End Method(_SB.INTH._DIS)  */
407
408                         Method(_PRS ,0) {
409                                 /* DBGO("\\_SB\\LNKH\\_PRS\n") */
410                                 Return(IRQP)
411                         } /* Method(_SB.INTH._CRS)  */
412
413                         Method(_CRS ,0) {
414                                 /* DBGO("\\_SB\\LNKH\\_CRS\n") */
415                                 CreateWordField(IRQB, 0x1, IRQN)
416                                 ShiftLeft(1, PINH, IRQN)
417                                 Return(IRQB)
418                         } /* Method(_SB.INTH._CRS)  */
419
420                         Method(_SRS, 1) {
421                                 /* DBGO("\\_SB\\LNKH\\_CRS\n") */
422                                 CreateWordField(ARG0, 1, IRQM)
423
424                                 /* Use lowest available IRQ */
425                                 FindSetRightBit(IRQM, Local0)
426                                 if (Local0) {
427                                         Decrement(Local0)
428                                 }
429                                 Store(Local0, PINH)
430                         } /* End Method(_SB.INTH._SRS)  */
431                 } /* End Device(INTH)   */
432
433         }   /* End Scope(_SB)  */
434
435
436         /* Supported sleep states: */
437         Name(\_S0, Package () {0x00, 0x00, 0x00, 0x00} )        /* (S0) - working state */
438
439         If (LAnd(SSFG, 0x01)) {
440                 Name(\_S1, Package () {0x01, 0x01, 0x00, 0x00} )        /* (S1) - sleeping w/CPU context */
441         }
442         If (LAnd(SSFG, 0x02)) {
443                 Name(\_S2, Package () {0x02, 0x02, 0x00, 0x00} )        /* (S2) - "light" Suspend to RAM */
444         }
445         If (LAnd(SSFG, 0x04)) {
446                 Name(\_S3, Package () {0x03, 0x03, 0x00, 0x00} )        /* (S3) - Suspend to RAM */
447         }
448         If (LAnd(SSFG, 0x08)) {
449                 Name(\_S4, Package () {0x04, 0x04, 0x00, 0x00} )        /* (S4) - Suspend to Disk */
450         }
451
452         Name(\_S5, Package () {0x05, 0x05, 0x00, 0x00} )        /* (S5) - Soft Off */
453
454         Name(\_SB.CSPS ,0)                              /* Current Sleep State (S0, S1, S2, S3, S4, S5) */
455         Name(CSMS, 0)                   /* Current System State */
456
457         /* Wake status package */
458
459         Name(WKST,Package(){Zero, Zero})
460
461         /* South Bridge */
462         Scope(\_SB) { /* Start \_SB scope */
463                 #include "../../../arch/x86/acpi/globutil.asl" /* global utility methods expected within the \_SB scope */
464
465                 /*  _SB.PCI0 */
466                 /* Note: Only need HID on Primary Bus */
467                 Device(PCI0) {
468
469                         Name(_HID, EISAID("PNP0A03"))
470                         Name(_ADR, 0x00180000)  /* Dev# = BSP Dev#, Func# = 0 */
471                         Method(_BBN, 0) { /* Bus number = 0 */
472                                 Return(0)
473                         }
474                         Method(_STA, 0) {
475                                 /* DBGO("\\_SB\\PCI0\\_STA\n") */
476                                 Return(0x0B)     /* Status is visible */
477                         }
478
479                         Method(_PRT,0) {
480                                 If(PMOD){ Return(APR0) }   /* APIC mode */
481                                 Return (PR0)                  /* PIC Mode */
482                         } /* end _PRT */
483
484                         /* Describe the Northbridge devices */
485                         Device(AMRT) {
486                                 Name(_ADR, 0x00000000)
487                         } /* end AMRT */
488
489                         /* The internal GFX bridge */
490                         Device(AGPB) {
491                                 Name(_ADR, 0x00010000)
492                                 Name(_PRW, Package() {0x18, 4})
493                                 Method(_PRT,0) {
494                                         Return (APR1)
495                                 }
496                         }  /* end AGPB */
497
498                         /* The external GFX bridge */
499                         Device(PBR2) {
500                                 Name(_ADR, 0x00020000)
501                                 Name(_PRW, Package() {0x18, 4})
502                                 Method(_PRT,0) {
503                                         If(PMOD){ Return(APS2) }   /* APIC mode */
504                                         Return (PS2)                  /* PIC Mode */
505                                 } /* end _PRT */
506                         } /* end PBR2 */
507
508                         /* GPP x1 */
509                         Device(PBR9) {
510                                 Name(_ADR, 0x00090000)
511                                 Name(_PRW, Package() {0x18, 4})
512                                 Method(_PRT,0) {
513                                         If(PMOD){ Return(APS9) }   /* APIC mode */
514                                         Return (PS9)                  /* PIC Mode */
515                                 } /* end _PRT */
516                         } /* end PBR9 */
517
518                         /* ethernet */
519                         Device(PBRa) {
520                                 Name(_ADR, 0x000A0000)
521                                 Name(_PRW, Package() {0x18, 4})
522                                 Method(_PRT,0) {
523                                         If(PMOD){ Return(APSa) }   /* APIC mode */
524                                         Return (PSa)                  /* PIC Mode */
525                                 } /* end _PRT */
526                         } /* end PBRa */
527
528
529                         /* PCI slot 1, 2, 3 */
530                         Device(PIBR) {
531                                 Name(_ADR, 0x00140004)
532                                 Name(_PRW, Package() {0x18, 4})
533
534                                 Method(_PRT, 0) {
535                                         Return (PCIB)
536                                 }
537                         }
538
539                         Device(LIBR) {
540                                 Name(_ADR, 0x00140003)
541                                 /* Method(_INI) {
542                                 *       DBGO("\\_SB\\PCI0\\LpcIsaBr\\_INI\n")
543                                 } */ /* End Method(_SB.SBRDG._INI) */
544
545                                 /* Real Time Clock Device */
546                                 Device(RTC0) {
547                                         Name(_HID, EISAID("PNP0B00"))   /* AT Real Time Clock (not PIIX4 compatible) */
548                                         Name(_CRS, ResourceTemplate() {
549                                                 IRQNoFlags(){8}
550                                                 IO(Decode16,0x0070, 0x0070, 0, 2)
551                                                 /* IO(Decode16,0x0070, 0x0070, 0, 4) */
552                                         })
553                                 } /* End Device(_SB.PCI0.LpcIsaBr.RTC0) */
554
555                                 Device(TMR) {   /* Timer */
556                                         Name(_HID,EISAID("PNP0100"))    /* System Timer */
557                                         Name(_CRS, ResourceTemplate() {
558                                                 IRQNoFlags(){0}
559                                                 IO(Decode16, 0x0040, 0x0040, 0, 4)
560                                                 /* IO(Decode16, 0x0048, 0x0048, 0, 4) */
561                                         })
562                                 } /* End Device(_SB.PCI0.LpcIsaBr.TMR) */
563
564                                 Device(SPKR) {  /* Speaker */
565                                         Name(_HID,EISAID("PNP0800"))    /* AT style speaker */
566                                         Name(_CRS, ResourceTemplate() {
567                                                 IO(Decode16, 0x0061, 0x0061, 0, 1)
568                                         })
569                                 } /* End Device(_SB.PCI0.LpcIsaBr.SPKR) */
570
571                                 Device(PIC) {
572                                         Name(_HID,EISAID("PNP0000"))    /* AT Interrupt Controller */
573                                         Name(_CRS, ResourceTemplate() {
574                                                 IRQNoFlags(){2}
575                                                 IO(Decode16,0x0020, 0x0020, 0, 2)
576                                                 IO(Decode16,0x00A0, 0x00A0, 0, 2)
577                                                 /* IO(Decode16, 0x00D0, 0x00D0, 0x10, 0x02) */
578                                                 /* IO(Decode16, 0x04D0, 0x04D0, 0x10, 0x02) */
579                                         })
580                                 } /* End Device(_SB.PCI0.LpcIsaBr.PIC) */
581
582                                 Device(MAD) { /* 8257 DMA */
583                                         Name(_HID,EISAID("PNP0200"))    /* Hardware Device ID */
584                                         Name(_CRS, ResourceTemplate() {
585                                                 DMA(Compatibility,BusMaster,Transfer8){4}
586                                                 IO(Decode16, 0x0000, 0x0000, 0x10, 0x10)
587                                                 IO(Decode16, 0x0081, 0x0081, 0x01, 0x03)
588                                                 IO(Decode16, 0x0087, 0x0087, 0x01, 0x01)
589                                                 IO(Decode16, 0x0089, 0x0089, 0x01, 0x03)
590                                                 IO(Decode16, 0x008F, 0x008F, 0x01, 0x01)
591                                                 IO(Decode16, 0x00C0, 0x00C0, 0x10, 0x20)
592                                         }) /* End Name(_SB.PCI0.LpcIsaBr.MAD._CRS) */
593                                 } /* End Device(_SB.PCI0.LpcIsaBr.MAD) */
594
595                                 Device(COPR) {
596                                         Name(_HID,EISAID("PNP0C04"))    /* Math Coprocessor */
597                                         Name(_CRS, ResourceTemplate() {
598                                                 IO(Decode16, 0x00F0, 0x00F0, 0, 0x10)
599                                                 IRQNoFlags(){13}
600                                         })
601                                 } /* End Device(_SB.PCI0.LpcIsaBr.COPR) */
602
603                                 Device(HPTM) {
604                                         Name(_HID,EISAID("PNP0103"))
605                                         Name(CRS,ResourceTemplate()     {
606                                                 Memory32Fixed(ReadOnly,0xFED00000, 0x00000400, HPT)     /* 1kb reserved space */
607                                         })
608                                         Method(_STA, 0) {
609                                                 Return(0x0F) /* sata is visible */
610                                         }
611                                         Method(_CRS, 0) {
612                                                 CreateDwordField(CRS, ^HPT._BAS, HPBA)
613                                                 Store(HPBA, HPBA)
614                                                 Return(CRS)
615                                         }
616                                 } /* End Device(_SB.PCI0.LpcIsaBr.COPR) */
617                         } /* end LIBR */
618
619                     External (BUSN)
620                     External (MMIO)
621                     External (PCIO)
622                     External (SBLK)
623                     External (TOM1)
624                     External (HCLK)
625                     External (SBDN)
626                     External (HCDN)
627
628                     Method (_CRS, 0, NotSerialized)
629                         {
630                             Name (BUF0, ResourceTemplate ()
631                             {
632                                 IO (Decode16,
633                                 0x0CF8,             // Address Range Minimum
634                                 0x0CF8,             // Address Range Maximum
635                                 0x01,               // Address Alignment
636                                 0x08,               // Address Length
637                                 )
638                                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
639                                 0x0000,             // Address Space Granularity
640                                 0x0000,             // Address Range Minimum
641                                 0x0CF7,             // Address Range Maximum
642                                 0x0000,             // Address Translation Offset
643                                 0x0CF8,             // Address Length
644                                 ,, , TypeStatic)
645                             })
646                                 /* Methods bellow use SSDT to get actual MMIO regs
647                                    The IO ports are from 0xd00, optionally an VGA,
648                                    otherwise the info from MMIO is used.
649                                  */
650                                 Concatenate (\_SB.GMEM (0x00, \_SB.PCI0.SBLK), BUF0, Local1)
651                                 Concatenate (\_SB.GIOR (0x00, \_SB.PCI0.SBLK), Local1, Local2)
652                                 Concatenate (\_SB.GWBN (0x00, \_SB.PCI0.SBLK), Local2, Local3)
653                                 Return (Local3)
654                         }
655
656                 } /* End Device(PCI0)  */
657
658         } /* End \_SB scope */
659 }
660 /* End of ASL file */