diff options
| -rw-r--r-- | config/data/coreboot/mkhelper.cfg | 1 | ||||
| -rw-r--r-- | config/data/grub/bootorder_edk2 | 1 | ||||
| -rw-r--r-- | config/module/coreboot/dell5050sff_vfsp_16mb/target.cfg | 3 | ||||
| -rw-r--r-- | include/fw/rom.sh | 38 |
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 |
