##
## This file is part of the coreboot project.
##
## Copyright (C) 2007 AMD
## Written by Yinghai Lu <yinghailu@gmail.com> for AMD.
##
## 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, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
##

target h8dmr
mainboard supermicro/h8dmr

romimage "normal"
#       48K for SCSI FW
#        option ROM_SIZE = 475136
#       48K for SCSI FW and 48K for ATI ROM
#       option ROM_SIZE = 425984 
#       64K for Etherboot
#        option ROM_SIZE = 458752 
#       44k for atixx.rom
#        option ROM_SIZE = 479232
        option USE_FAILOVER_IMAGE=0
	option USE_FALLBACK_IMAGE=0
#	option ROM_IMAGE_SIZE=0x13800
#	option ROM_IMAGE_SIZE=0x18800
	option ROM_IMAGE_SIZE=0x20000
#	option ROM_IMAGE_SIZE=0x15800
	option XIP_ROM_SIZE=0x40000
	option COREBOOT_EXTRA_VERSION="$(shell cat ../../VERSION)_Normal"
	payload ../payload.elf
end

romimage "fallback" 
	option USE_FAILOVER_IMAGE=0
	option USE_FALLBACK_IMAGE=1
#	option ROM_IMAGE_SIZE=0x13800
#	option ROM_IMAGE_SIZE=0x19800
	option ROM_IMAGE_SIZE=0x20000
#	option ROM_IMAGE_SIZE=0x15800
	option XIP_ROM_SIZE=0x40000
	option COREBOOT_EXTRA_VERSION="$(shell cat ../../VERSION)_Fallback"
	payload ../payload.elf
end

romimage "failover"
        option USE_FAILOVER_IMAGE=1
        option USE_FALLBACK_IMAGE=0
        option ROM_IMAGE_SIZE=FAILOVER_SIZE
        option XIP_ROM_SIZE=FAILOVER_SIZE
        option COREBOOT_EXTRA_VERSION="$(shell cat ../../VERSION)_Failover"
end

#buildrom ./coreboot.rom ROM_SIZE "normal" "fallback"
buildrom ./coreboot.rom ROM_SIZE "normal" "fallback" "failover"
