diff options
Diffstat (limited to 'include/fw')
| -rw-r--r-- | include/fw/rom.sh | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/include/fw/rom.sh b/include/fw/rom.sh index df37fdcf..5f98040a 100644 --- a/include/fw/rom.sh +++ b/include/fw/rom.sh @@ -122,6 +122,9 @@ mkcorebootbin_real() { [ "$target" = "$tree" ] && return 0 + [ "$XBMK_RELEASE" = "y" ] \ + 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,22 @@ mkcorebootbin_real() [ "$payload_grub" != "y" ] && \ payload_grubsea="n" - [ -f "$cbfscfg" ] && \ - $if_not_skip_build dx_ add_cbfs_option "$cbfscfg" + if [ "$initmode" != "libgfxinit" ] || \ + [ "$displaymode" != "corebootfb" ]; then + [ "$initmode" != "fspgop" ] && [ "$initmode" != "normal" ] && \ + payload_edk2="" # disable on txtmode + fi + + $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 +208,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 +234,14 @@ add_cbfs_option() x_ "$cbfstool" "$tmprom" add-int -i "$op_arg" -n "option/$op_name" } +add_edk2() +{ + edk2dir="elf/coreboot/default/$payload_edk2" + 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 +285,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 |
