diff options
Diffstat (limited to 'include/vendor.sh')
-rw-r--r-- | include/vendor.sh | 60 |
1 files changed, 57 insertions, 3 deletions
diff --git a/include/vendor.sh b/include/vendor.sh index 8c1ddcd4..1ee92f46 100644 --- a/include/vendor.sh +++ b/include/vendor.sh @@ -79,12 +79,34 @@ getfiles() "$CONFIG_SMSC_SCH5545_EC_FW_FILE" [ -z "$CONFIG_KBC1126_FIRMWARE" ] || fetch kbc1126ec "$EC_url" \ "$EC_url_bkup" "$EC_hash" "$CONFIG_KBC1126_FW1" - [ -z "$CONFIG_VGA_BIOS_FILE" ] || fetch e6400vga "$E6400_VGA_DL_url" \ - "$E6400_VGA_DL_url_bkup" "$E6400_VGA_DL_hash" "$CONFIG_VGA_BIOS_FILE" + [ -z "$CONFIG_VGA_BIOS_FILE" ] || fetch_vgarom [ -z "$CONFIG_HAVE_MRC" ] || fetch "mrc" "$MRC_url" "$MRC_url_bkup" \ "$MRC_hash" "$CONFIG_MRC_FILE"; return 0 } +fetch_vgarom() +{ + if [ "$board" = "e6400_4mb" ] || [ "$board" = "e6400nvidia_4mb" ]; then + fetch_vgarom_e6400 + elif [ "$board" = "t480_fsp_16mb" ]; then + fetch_vgarom_t480 + else + $err "coreboot/$board: VGA ROM extraction not supported yet!" + fi +} + +fetch_vgarom_e6400() +{ + fetch e6400vga "$E6400_VGA_DL_url" "$E6400_VGA_DL_url_bkup" \ + "$E6400_VGA_DL_hash" "$CONFIG_VGA_BIOS_FILE" +} + +fetch_vgarom_t480() +{ + fetch t480vga "$T480_VGA_DL_url" "$T480_VGA_DL_url_bkup" \ + "$T480_VGA_DL_hash" "$CONFIG_VGA_BIOS_FILE" +} + fetch() { dl_type="$1"; dl="$2"; dl_bkup="$3"; dlsum="$4"; _dest="${5##*../}" @@ -176,8 +198,12 @@ apply_me11_deguard_mod() extract_archive() { - innoextract "$1" -d "$2" || python "$pfs_extract" "$1" -e || 7z x \ + geteltorito "$1" > "$2/vendor.img" || \ + innoextract "$1" -d "$2" || python "$pfs_extract" "$1" -e || 7z x \ "$1" -o"$2" || unar "$1" -o "$2" || unzip "$1" -d "$2" || return 1 + + [ ! -d "${_dl}_extracted" ] || mv "${_dl}_extracted" "$2" || \ + $err "!mv '${_dl}_extracted' '$2'"; : } extract_kbc1126ec() @@ -214,6 +240,34 @@ extract_e6400vga() $err "extract_e6400vga $board: can't copy vga rom to $_dest" } +extract_t480vga() +{ + _img="$appdir/vendor.img" + _imgp1="$appdir/vendor_p1.img" + _imguefi="$appdir/update.cap" + _intelvga="$appdir/intelvga/body.bin" + _nvvga="$appdir/nvvga/body.bin" + _intelrom="pciroms/pci8086,5917.rom" + _nvrom="pciroms/pci10de,1d10.rom" + + [ -f "$_nvrom" ] && [ "$_intelrom" ] && return 0 + + x_ mkdir -p pciroms + + # extract the system rom (i.e. factory.rom) + dd skip=32 if="$appdir/vendor.img" of="$_imgp1" + mcopy -i "$_imgp1" ::/FLASH/N24ET77W/\$0AN2400.FL1 "$_imguefi" + + # extract vga roms from system rom + $uefiextract "$_imguefi" 6A5F1EF9-C478-42BA-A4DB-C7846CC7DB57 \ + -m body -t 0x19 -o "${_intelvga%/body.bin}" + $uefiextract "$_imguefi" 8B9BEF90-5FAF-46CF-A32A-7E1B7D33CC87 \ + -m body -t 0x19 -o "${_nvvga%/body.bin}" + + x_ mv "$_nvvga" "$_nvrom" + x_ mv "$_intelvga" "$_intelrom" +} + extract_sch5545ec() { # full system ROM (UEFI), to extract with UEFIExtract: |