diff options
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | payloads/external/SeaBIOS/Makefile.inc | 31 | ||||
-rw-r--r-- | src/Kconfig | 34 | ||||
-rw-r--r-- | src/arch/x86/Makefile.inc | 19 | ||||
-rwxr-xr-x | util/abuild/abuild | 1 |
5 files changed, 82 insertions, 4 deletions
@@ -363,6 +363,7 @@ clean-for-update: doxygen-clean rm -f $(obj)/mainboard/$(MAINBOARDDIR)/bootblock.* $(obj)/mainboard/$(MAINBOARDDIR)/dsdt.* rm -f $(obj)/cpu/x86/smm/smm_bin.c $(obj)/cpu/x86/smm/smm.* $(obj)/cpu/x86/smm/smm rmdir -p $(alldirs) 2>/dev/null >/dev/null || true + make -C payloads/external/SeaBIOS clean clean: clean-for-update rm -f $(obj)/coreboot* .ccwrap diff --git a/payloads/external/SeaBIOS/Makefile.inc b/payloads/external/SeaBIOS/Makefile.inc new file mode 100644 index 000000000000..120e796e415a --- /dev/null +++ b/payloads/external/SeaBIOS/Makefile.inc @@ -0,0 +1,31 @@ + + +TAG-$(CONFIG_SEABIOS_MASTER)=master +TAG-$(CONFIG_SEABIOS_STABLE)=0.6.1-stable + +all: seabios + +seabios: patch + cd seabios; $(MAKE) CC="$(CC)" LD="$(LD)" + +patch: checkout + test -r seabios/.patched || \ + perl -pi -e "s,#define CONFIG_COREBOOT 0,#define CONFIG_COREBOOT 1,;" \ + -e "s,#define CONFIG_DEBUG_SERIAL 0,#define CONFIG_DEBUG_SERIAL 1,;" \ + -e "s,#define CONFIG_VGAHOOKS 0,#define CONFIG_VGAHOOKS 1,;" \ + seabios/src/config.h + touch seabios/.patched + +checkout: + echo "Checking out SeaBIOS $(TAG-y)" + test -d seabios && ( cd seabios; git pull ) || \ + git clone git://git.linuxtogo.org/home/kevin/seabios.git seabios + cd seabios; git checkout $(TAG-y) + +clean: + test -d seabios && (cd seabios; $(MAKE) CC="$(CC)" LD="$(LD)" clean) || exit 0 + +distclean: + rm -rf seabios + +.PHONY: seabios diff --git a/src/Kconfig b/src/Kconfig index 6894a6a92574..77546b05909c 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -333,7 +333,8 @@ menu "Payload" choice prompt "Add a payload" - default PAYLOAD_NONE + default PAYLOAD_NONE if !ARCH_X86 + default PAYLOAD_SEABIOS if ARCH_X86 config PAYLOAD_NONE bool "None" @@ -355,6 +356,31 @@ config PAYLOAD_ELF You will be able to specify the location and file name of the payload image later. +config PAYLOAD_SEABIOS + bool "SeaBIOS" + depends on ARCH_X86 + help + Select this option if you want to build a coreboot image + with a SeaBIOS payload. If you don't know what this is + about, just leave it enabled. + + See http://coreboot.org/Payloads for more information. + +endchoice + +choice + prompt "SeaBIOS version" + default SEABIOS_STABLE + depends on PAYLOAD_SEABIOS + +config SEABIOS_STABLE + bool "stable" + help + Stable SeaBIOS version +config SEABIOS_MASTER + bool "master" + help + Newest SeaBIOS version endchoice config PAYLOAD_FILE @@ -364,11 +390,15 @@ config PAYLOAD_FILE help The path and filename of the ELF executable file to use as payload. +config PAYLOAD_FILE + depends on PAYLOAD_SEABIOS + default "payloads/external/SeaBIOS/seabios/out/bios.bin.elf" + # TODO: Defined if no payload? Breaks build? config COMPRESSED_PAYLOAD_LZMA bool "Use LZMA compression for payloads" default y - depends on PAYLOAD_ELF + depends on PAYLOAD_ELF || PAYLOAD_SEABIOS help In order to reduce the size payloads take up in the ROM chip coreboot can compress them using the LZMA algorithm. diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc index f847f29caa32..92c4f670ef8d 100644 --- a/src/arch/x86/Makefile.inc +++ b/src/arch/x86/Makefile.inc @@ -34,9 +34,12 @@ endif ####################################################################### # Build the final rom image COREBOOT_ROM_DEPENDENCIES:= -ifneq ($(CONFIG_PAYLOAD_NONE),y) +ifeq ($(CONFIG_PAYLOAD_ELF),y) COREBOOT_ROM_DEPENDENCIES+=$(CONFIG_PAYLOAD_FILE) endif +ifeq ($(CONFIG_PAYLOAD_SEABIOS),y) +COREBOOT_ROM_DEPENDENCIES+=seabios +endif ifeq ($(CONFIG_VGA_BIOS),y) COREBOOT_ROM_DEPENDENCIES+=$(CONFIG_VGA_BIOS_FILE) endif @@ -80,10 +83,15 @@ $(obj)/coreboot.rom: $(obj)/coreboot.pre $(obj)/coreboot_ram $(CBFSTOOL) $(call $(CBFSTOOL) $@.tmp add-stage $(obj)/coreboot_ram $(CONFIG_CBFS_PREFIX)/coreboot_ram $(CBFS_COMPRESS_FLAG) ifeq ($(CONFIG_PAYLOAD_NONE),y) @printf " PAYLOAD \e[1;31mnone (as specified by user)\e[0m\n" -else +endif +ifeq ($(CONFIG_PAYLOAD_ELF),y) @printf " PAYLOAD $(CONFIG_PAYLOAD_FILE) (compression: $(CBFS_PAYLOAD_COMPRESS_NAME))\n" $(CBFSTOOL) $@.tmp add-payload $(CONFIG_PAYLOAD_FILE) $(CONFIG_CBFS_PREFIX)/payload $(CBFS_PAYLOAD_COMPRESS_FLAG) endif +ifeq ($(CONFIG_PAYLOAD_SEABIOS),y) + @printf " PAYLOAD SeaBIOS (internal, compression: $(CBFS_PAYLOAD_COMPRESS_NAME))\n" + $(CBFSTOOL) $@.tmp add-payload $(CONFIG_PAYLOAD_FILE) $(CONFIG_CBFS_PREFIX)/payload $(CBFS_PAYLOAD_COMPRESS_FLAG) +endif ifeq ($(CONFIG_VGA_BIOS),y) @printf " VGABIOS $(CONFIG_VGA_BIOS_FILE) $(CONFIG_VGA_BIOS_ID)\n" $(CBFSTOOL) $@.tmp add $(CONFIG_VGA_BIOS_FILE) "pci$(CONFIG_VGA_BIOS_ID).rom" optionrom @@ -272,3 +280,10 @@ include $(src)/arch/x86/Makefile.bootblock.inc else include $(src)/arch/x86/Makefile.bigbootblock.inc endif + +seabios: + $(MAKE) -C payloads/external/SeaBIOS -f Makefile.inc \ + CC="$(CC)" LD="$(LD)" \ + CONFIG_SEABIOS_MASTER=$(CONFIG_SEABIOS_MASTER) \ + CONFIG_SEABIOS_STABLE=$(CONFIG_SEABIOS_STABLE) + diff --git a/util/abuild/abuild b/util/abuild/abuild index b44447bec41f..365bacd2e705 100755 --- a/util/abuild/abuild +++ b/util/abuild/abuild @@ -175,6 +175,7 @@ function create_config echo "CONFIG_CBFS_PREFIX=\"$cbfs_prefix\"" >> ${build_dir}/config.build if [ "$PAYLOAD" != "/dev/null" ]; then echo "# CONFIG_PAYLOAD_NONE is not set" >> ${build_dir}/config.build + echo "# CONFIG_PAYLOAD_SEABIOS is not set" >> ${build_dir}/config.build echo "CONFIG_PAYLOAD_ELF=y" >> ${build_dir}/config.build echo "CONFIG_PAYLOAD_FILE=\"$PAYLOAD\"" >> ${build_dir}/config.build fi |