##
## This file is part of the coreboot project.
##
## Copyright (C) 2013 Google Inc.
##
## This software is licensed under the terms of the GNU General Public
## License version 2, as published by the Free Software Foundation, and
## may be copied, distributed, and modified under those terms.
##
## 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.

# Emulation for ARM Ltd Versatile Express Cortex-A9
#  http://www.arm.com/products/tools/development-boards/versatile-express

# To execute, do:
# export QEMU_AUDIO_DRV=none
# qemu-system-arm -M vexpress-a9 -m 1024M -nographic -kernel build/coreboot.rom

if BOARD_EMULATION_QEMU_ARMV7

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select ARCH_ARM
	select CPU_ARMLTD_CORTEX_A9
	select HAVE_UART_MEMORY_MAPPED
	select HAVE_UART_SPECIAL
	select BOARD_ROMSIZE_KB_4096

config MAINBOARD_DIR
	string
	default emulation/qemu-armv7

config MAINBOARD_PART_NUMBER
	string
	default "QEMU ARMv7"

config MAX_CPUS
	int
	default 2

config MAINBOARD_VENDOR
	string
	default "ARM Ltd."

config SYS_SDRAM_BASE
	hex "SDRAM base address"
	default 0x01000000

config DRAM_SIZE_MB
	int
	default 1024

# Memory map for qemu vexpress-a9:
#
# 0x0000_0000: jump instruction (by qemu)
# 0x0001_0000: bootblock (entry of kernel / firmware)
# 0x0002_0000: romstage, assume up to 128KB in size.
# 0x0007_ff00: stack pointer
# 0x0010_0000: CBFS header
# 0x0011_0000: CBFS data
# 0x0100_0000: reserved for ramstage
# 0x1000_0000: I/O map address

config BOOTBLOCK_BASE
	hex
	default 0x00010000

config ROMSTAGE_BASE
	hex
	default 0x00020000

config RAMSTAGE_BASE
	hex
	default SYS_SDRAM_BASE

config CBFS_HEADER_ROM_OFFSET
	hex
	default 0x0100000

config CBFS_ROM_OFFSET
	hex
	default 0x0110000

endif #  BOARD_EMULATION_QEMU_ARMV7
