93 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
|  * 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 <http://www.gnu.org/licenses/>.
 | |
|  */
 | |
| 
 | |
| /* 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)
 | |
|     }
 | |
| }
 |