Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / seabios / src / fw / acpi-dsdt-pci-crs.dsl
1 /* PCI CRS (current resources) definition. */
2 Scope(\_SB.PCI0) {
3
4     Name(CRES, ResourceTemplate() {
5         WordBusNumber(ResourceProducer, MinFixed, MaxFixed, PosDecode,
6             0x0000,             // Address Space Granularity
7             0x0000,             // Address Range Minimum
8             0x00FF,             // Address Range Maximum
9             0x0000,             // Address Translation Offset
10             0x0100,             // Address Length
11             ,, )
12         IO(Decode16,
13             0x0CF8,             // Address Range Minimum
14             0x0CF8,             // Address Range Maximum
15             0x01,               // Address Alignment
16             0x08,               // Address Length
17             )
18         WordIO(ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
19             0x0000,             // Address Space Granularity
20             0x0000,             // Address Range Minimum
21             0x0CF7,             // Address Range Maximum
22             0x0000,             // Address Translation Offset
23             0x0CF8,             // Address Length
24             ,, , TypeStatic)
25         WordIO(ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
26             0x0000,             // Address Space Granularity
27             0x0D00,             // Address Range Minimum
28             0xFFFF,             // Address Range Maximum
29             0x0000,             // Address Translation Offset
30             0xF300,             // Address Length
31             ,, , TypeStatic)
32         DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
33             0x00000000,         // Address Space Granularity
34             0x000A0000,         // Address Range Minimum
35             0x000BFFFF,         // Address Range Maximum
36             0x00000000,         // Address Translation Offset
37             0x00020000,         // Address Length
38             ,, , AddressRangeMemory, TypeStatic)
39         DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
40             0x00000000,         // Address Space Granularity
41             0xE0000000,         // Address Range Minimum
42             0xFEBFFFFF,         // Address Range Maximum
43             0x00000000,         // Address Translation Offset
44             0x1EC00000,         // Address Length
45             ,, PW32, AddressRangeMemory, TypeStatic)
46     })
47
48     Name(CR64, ResourceTemplate() {
49         QWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
50             0x00000000,          // Address Space Granularity
51             0x8000000000,        // Address Range Minimum
52             0xFFFFFFFFFF,        // Address Range Maximum
53             0x00000000,          // Address Translation Offset
54             0x8000000000,        // Address Length
55             ,, PW64, AddressRangeMemory, TypeStatic)
56     })
57
58     Method(_CRS, 0) {
59         /* Fields provided by dynamically created ssdt */
60         External(P0S, IntObj)
61         External(P0E, IntObj)
62         External(P1V, IntObj)
63         External(P1S, BuffObj)
64         External(P1E, BuffObj)
65         External(P1L, BuffObj)
66
67         /* fixup 32bit pci io window */
68         CreateDWordField(CRES, \_SB.PCI0.PW32._MIN, PS32)
69         CreateDWordField(CRES, \_SB.PCI0.PW32._MAX, PE32)
70         CreateDWordField(CRES, \_SB.PCI0.PW32._LEN, PL32)
71         Store(P0S, PS32)
72         Store(P0E, PE32)
73         Store(Add(Subtract(P0E, P0S), 1), PL32)
74
75         If (LEqual(P1V, Zero)) {
76             Return (CRES)
77         }
78
79         /* fixup 64bit pci io window */
80         CreateQWordField(CR64, \_SB.PCI0.PW64._MIN, PS64)
81         CreateQWordField(CR64, \_SB.PCI0.PW64._MAX, PE64)
82         CreateQWordField(CR64, \_SB.PCI0.PW64._LEN, PL64)
83         Store(P1S, PS64)
84         Store(P1E, PE64)
85         Store(P1L, PL64)
86         /* add window and return result */
87         ConcatenateResTemplate(CRES, CR64, Local0)
88         Return (Local0)
89     }
90 }