payloads: FILO: Hook up autoboot options

FILO allows to configure a line to autoboot. Hook this up into
coreboot’s build system.

TEST=Configure coreboot for QEMU i440fx with FILO as payload and
configure:

    CONFIG_FILO_MASTER=y
    CONFIG_FILO_USE_AUTOBOOT=y
    CONFIG_FILO_AUTOBOOT_FILE="hda1:/vmlinuz root=/dev/sda1 console=tty0 console=ttyS0,115200 initrd=hda1:/initrd.img"
    CONFIG_FILO_AUTOBOOT_DELAY=5

Boot Debian image with:

    qemu-system-x86_64 -bios /dev/shm/coreboot/build/coreboot.rom -L /dev/shm -enable-kvm -smp cpus=2 -m 1G -hda /dev/shm/debian-32.img -serial stdio -net nic -net user,hostfwd=tcp::22222-:22

Change-Id: Id167e9a144bf466da87469108002672b299b702a
Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/56213
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
diff --git a/payloads/external/FILO/Kconfig b/payloads/external/FILO/Kconfig
index 1cf171d..7dc14ed 100644
--- a/payloads/external/FILO/Kconfig
+++ b/payloads/external/FILO/Kconfig
@@ -16,6 +16,34 @@
 
 endchoice
 
+config FILO_USE_AUTOBOOT
+	prompt "Use FILO's autoboot"
+	default n
+	bool
+	help
+	  Select this option to make FILO autoboot a command line after
+	  timeout. This disables the GRUB legacy like interface.
+
+config FILO_AUTOBOOT_FILE
+	string "Configure FILO's autoboot kernel filename and parameters"
+	depends on FILO_USE_AUTOBOOT
+	default "hda1:/vmlinuz root=/dev/hda1 console=tty0 console=ttyS0,115200"
+	help
+	  Examples:
+
+	  #AUTOBOOT_FILE = "hda1:/vmlinuz root=/dev/sda1 console=tty0 console=ttyS0,115200"
+	  #AUTOBOOT_FILE = "mem@0xfff80000"
+	  #AUTOBOOT_FILE = "hde1@0"
+	  #AUTOBOOT_FILE = "uda1:/vmlinuz.elf"
+	  #AUTOBOOT_FILE = "flashb@0x00400000,0x154a00 console=tty0 console=ttyS0,115200"
+
+config FILO_AUTOBOOT_DELAY
+	int "Time in seconds before booting"
+	depends on FILO_USE_AUTOBOOT
+	default 2
+	help
+	  Time in seconds before booting AUTOBOOT_FILE.
+
 config PAYLOAD_FILE
 	default "payloads/external/FILO/filo/build/filo.elf"
 
diff --git a/payloads/external/FILO/Makefile b/payloads/external/FILO/Makefile
index 9089557..e2fec36 100644
--- a/payloads/external/FILO/Makefile
+++ b/payloads/external/FILO/Makefile
@@ -33,6 +33,13 @@
 	#echo "CONFIG_VGAHOOKS=y" >> filo/.config
 	# This shows how to force a previously set .config option *off*
 	#echo "# CONFIG_SMBIOS is not set" >> filo/.config
+ifeq ($(CONFIG_FILO_USE_AUTOBOOT),y)
+	echo "# CONFIG_USE_GRUB is not set" >> filo/.config
+	echo "CONFIG_USE_AUTOBOOT=y" >> filo/.config
+	echo 'CONFIG_AUTOBOOT_FILE="$(CONFIG_FILO_AUTOBOOT_FILE)"' >> filo/.config
+	echo "CONFIG_AUTOBOOT_DELAY=$(CONFIG_FILO_AUTOBOOT_DELAY)" >> filo/.config
+endif
+
 	$(MAKE) -C filo oldconfig LIBCONFIG_PATH=../../../libpayload
 
 filo: config
diff --git a/payloads/external/Makefile.inc b/payloads/external/Makefile.inc
index 3d46553..f977079 100644
--- a/payloads/external/Makefile.inc
+++ b/payloads/external/Makefile.inc
@@ -167,7 +167,10 @@
 			CC="$(CC_x86_32)" LD="$(LD_x86_32)" OBJDUMP="$(OBJDUMP_x86_32)" \
 			OBJCOPY="$(OBJCOPY_x86_32)" STRIP="$(STRIP_x86_32)" \
 			CONFIG_FILO_MASTER=$(CONFIG_FILO_MASTER) \
-			CONFIG_FILO_STABLE=$(CONFIG_FILO_STABLE)
+			CONFIG_FILO_STABLE=$(CONFIG_FILO_STABLE) \
+			CONFIG_FILO_USE_AUTOBOOT=$(CONFIG_FILO_USE_AUTOBOOT) \
+			CONFIG_FILO_AUTOBOOT_FILE=$(CONFIG_FILO_AUTOBOOT_FILE) \
+			CONFIG_FILO_AUTOBOOT_DELAY=$(CONFIG_FILO_AUTOBOOT_DELAY)
 
 payloads/external/FILO/filo/build/filo.elf: filo
 payloads/external/FILO/filo/.config: filo