summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/data/coreboot/mkhelper.cfg1
-rw-r--r--config/data/grub/bootorder_edk21
-rw-r--r--config/module/coreboot/dell5050sff_vfsp_16mb/target.cfg3
-rw-r--r--include/fw/rom.sh38
4 files changed, 37 insertions, 6 deletions
diff --git a/config/data/coreboot/mkhelper.cfg b/config/data/coreboot/mkhelper.cfg
index 3c8b18d9..a81db2bf 100644
--- a/config/data/coreboot/mkhelper.cfg
+++ b/config/data/coreboot/mkhelper.cfg
@@ -25,6 +25,7 @@ displaymode=""
tmprom=""
newrom=""
payload_uboot=""
+payload_edk2=""
cbfscfg=""
premake="corebootpremake"
diff --git a/config/data/grub/bootorder_edk2 b/config/data/grub/bootorder_edk2
new file mode 100644
index 00000000..a66e1ec0
--- /dev/null
+++ b/config/data/grub/bootorder_edk2
@@ -0,0 +1 @@
+/rom@img/edk2
diff --git a/config/module/coreboot/dell5050sff_vfsp_16mb/target.cfg b/config/module/coreboot/dell5050sff_vfsp_16mb/target.cfg
index 7d3b46e2..aef42794 100644
--- a/config/module/coreboot/dell5050sff_vfsp_16mb/target.cfg
+++ b/config/module/coreboot/dell5050sff_vfsp_16mb/target.cfg
@@ -8,6 +8,7 @@ payload_memtest="y"
grub_scan_disk="nvme ahci"
grubtree="xhci_nvme"
vcfg="5050sff"
-build_depend="seabios/build grub/xhci_nvme memtest86plus/default u-boot/amd64coreboot"
+build_depend="seabios/build grub/xhci_nvme memtest86plus/default u-boot/amd64coreboot edk2/mrchromebox"
IFD_platform="sklkbl"
payload_uboot="amd64"
+payload_edk2="mrchromebox"
diff --git a/include/fw/rom.sh b/include/fw/rom.sh
index df37fdcf..fcd3fd5b 100644
--- a/include/fw/rom.sh
+++ b/include/fw/rom.sh
@@ -122,6 +122,9 @@ mkcorebootbin_real()
{
[ "$target" = "$tree" ] && return 0
+ [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ] && \
+ payload_edk2="" # source-only payload, for now.
+
tmprom="$xbtmp/coreboot.rom"
initmode="${buildcfg##*/}"
@@ -142,9 +145,6 @@ mkcorebootbin_real()
elfrom="${elfrom}_$displaymode"
elfrom="$elfrom/coreboot.rom"
- $if_not_skip_build x_ cp "$elfrom" "$tmprom"
- $if_not_skip_build unpad_one_byte "$tmprom"
-
[ -n "$payload_uboot" ] && [ "$payload_uboot" != "amd64" ] && \
[ "$payload_uboot" != "i386" ] && [ "$payload_uboot" != "arm64" ] \
&& err "'$target' defines bad u-boot type '$payload_uboot'" \
@@ -177,10 +177,16 @@ mkcorebootbin_real()
[ "$payload_grub" != "y" ] && \
payload_grubsea="n"
- [ -f "$cbfscfg" ] && \
- $if_not_skip_build dx_ add_cbfs_option "$cbfscfg"
+ $if_not_skip_build prep_tmprom
if grep "CONFIG_PAYLOAD_NONE=y" "$buildcfg"; then
+ if [ -n "$payload_edk2" ]; then
+ pname="edk2"
+ $if_not_skip_build add_edk2 "fallback/payload"
+ $if_not_skip_build cprom # standalone edk2
+
+ $if_not_skip_build prep_tmprom
+ fi
if [ "$payload_seabios" = "y" ]; then
pname="seabios"
$if_not_skip_build add_seabios
@@ -196,6 +202,15 @@ mkcorebootbin_real()
fi; :
}
+prep_tmprom()
+{
+ x_ cp "$elfrom" "$tmprom"
+ unpad_one_byte "$tmprom"
+
+ [ -f "$cbfscfg" ] && \
+ dx_ add_cbfs_option "$cbfscfg"; :
+}
+
# options for cbfs backend (as opposed to nvram/smmstore):
add_cbfs_option()
@@ -213,6 +228,14 @@ add_cbfs_option()
x_ "$cbfstool" "$tmprom" add-int -i "$op_arg" -n "option/$op_name"
}
+add_edk2()
+{
+ edk2dir="elf/edk2/default/$payload_mrchromebox"
+ edk2="$edk2dir/libgfxinit_corebootfb/UEFIPAYLOAD.fd"
+
+ cbfs "$tmprom" "$edk2" "$1"
+}
+
# in our design, SeaBIOS is also responsible for starting either
# a GRUB or U-Boot payload. this is because SeaBIOS is generally
# a more reliable codebase, so it's less likely to cause a brick
@@ -256,6 +279,9 @@ add_seabios()
[ "$payload_grub" = "y" ] && \
add_grub
+ [ -n "$payload_edk2" ] && \
+ add_edk2 "img/edk2"
+
[ "$payload_grubsea" != "y" ] && \
cprom # seabios, but don't load grub/u-boot first
@@ -354,6 +380,8 @@ cprom()
cbfs "$irom" "$grubdata/keymap/$tmpnew" keymap.gkb raw
elif [ "$1" = "seauboot" ]; then
cbfs "$irom" "$grubdata/bootorder_uboot" bootorder raw
+ elif [ "$1" = "seauboot" ]; then
+ cbfs "$irom" "$grubdata/bootorder_edk2" bootorder raw
fi
fi