/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License along * with this program; if not, see . */ /* PCI CRS (current resources) definition. */ Scope(\_SB.PCI0) { Name(CRES, ResourceTemplate() { WordBusNumber(ResourceProducer, MinFixed, MaxFixed, PosDecode, 0x0000, // Address Space Granularity 0x0000, // Address Range Minimum 0x00FF, // Address Range Maximum 0x0000, // Address Translation Offset 0x0100, // Address Length ,, ) IO(Decode16, 0x0CF8, // Address Range Minimum 0x0CF8, // Address Range Maximum 0x01, // Address Alignment 0x08, // Address Length ) BOARD_SPECIFIC_PCI_RESOURSES DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Address Space Granularity 0x000A0000, // Address Range Minimum 0x000BFFFF, // Address Range Maximum 0x00000000, // Address Translation Offset 0x00020000, // Address Length ,, , AddressRangeMemory, TypeStatic) DWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, 0x00000000, // Address Space Granularity 0xE0000000, // Address Range Minimum 0xFEBFFFFF, // Address Range Maximum 0x00000000, // Address Translation Offset 0x1EC00000, // Address Length ,, PW32, AddressRangeMemory, TypeStatic) }) Name(CR64, ResourceTemplate() { QWordMemory(ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Address Space Granularity 0x8000000000, // Address Range Minimum 0xFFFFFFFFFF, // Address Range Maximum 0x00000000, // Address Translation Offset 0x8000000000, // Address Length ,, PW64, AddressRangeMemory, TypeStatic) }) Method(_CRS, 0) { /* Fields provided by dynamically created ssdt */ External(P0S, IntObj) External(P0E, IntObj) External(P1V, IntObj) External(P1S, BuffObj) External(P1E, BuffObj) External(P1L, BuffObj) /* fixup 32bit pci io window */ CreateDWordField(CRES, \_SB.PCI0.PW32._MIN, PS32) CreateDWordField(CRES, \_SB.PCI0.PW32._MAX, PE32) CreateDWordField(CRES, \_SB.PCI0.PW32._LEN, PL32) Store(P0S, PS32) Store(P0E, PE32) Store(Add(Subtract(P0E, P0S), 1), PL32) If (LEqual(P1V, Zero)) { Return (CRES) } /* fixup 64bit pci io window */ CreateQWordField(CR64, \_SB.PCI0.PW64._MIN, PS64) CreateQWordField(CR64, \_SB.PCI0.PW64._MAX, PE64) CreateQWordField(CR64, \_SB.PCI0.PW64._LEN, PL64) Store(P1S, PS64) Store(P1E, PE64) Store(P1L, PL64) /* add window and return result */ ConcatenateResTemplate(CRES, CR64, Local0) Return (Local0) } }