/* * This file is part of the coreboot project. * * Copyright (C) 2011 Kyösti Mälkki * * 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; version 2 of the License. * * 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, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ Device (MBRS) { Name (_HID, EisaId ("PNP0C01")) Name (_UID, 0x01) Name (MSBF, ResourceTemplate () { /* System memory */ QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxNotFixed, Prefetchable, ReadWrite, 0x0, 0x100000000, 0x400000000, 0x0, 0x0, ,, _Y1C, AddressRangeMemory, TypeStatic) /* Top Of Low Memory */ Memory32 (ReadOnly, 0x0, 0x0, 0x1, 0x0, _Y1D) /* 640kB who wants more? */ Memory32Fixed (ReadWrite, 0x0, 0xA0000, ) /* 64k BIOS bootblock */ Memory32Fixed (ReadOnly, 0xF0000, 0x10000,) /* ISA memory hole 15-16 MB ? */ /* Memory32Fixed (ReadOnly, 0x100000, 0xF00000,) */ /* ISA memory hole 14-15 MB ? */ /* Memory32Fixed (ReadOnly, 0x100000, 0xE00000,) */ /* Local APIC */ Memory32Fixed (ReadWrite, 0xFEE00000, 0x00001000,) }) Method (_CRS, 0, NotSerialized) { CreateQWordField (MSBF, \_SB.MBRS._Y1C._MIN, MEML) CreateQWordField (MSBF, \_SB.MBRS._Y1C._MAX, MEMM) CreateQWordField (MSBF, \_SB.MBRS._Y1C._LEN, LELM) And (\_SB.PCI0.RLAR, 0x03FF, Local1) Increment (Local1) If (LGreater (Local1, 0x40)) { ShiftLeft (Local1, 0x1A, LELM) } CreateDWordField (MSBF, \_SB.MBRS._Y1D._MIN, MS00) CreateDWordField (MSBF, \_SB.MBRS._Y1D._MAX, MS01) CreateDWordField (MSBF, \_SB.MBRS._Y1D._LEN, MEM2) And (\_SB.PCI0.TOLM, 0xF800, Local1) ShiftRight (Local1, 0x04, Local1) Decrement (Local1) If (LGreater (Local1, 0x10)) { Subtract (Local1, 0x0F, Local1) Store (ShiftLeft (Local1, 0x14), MEM2) Store (0x01000000, MS00) Store (MS00, MS01) } Return (MSBF) } Method (_STA, 0, NotSerialized) { Return (0x0F) } }