From 773d2deaca05cdee754ef4ec79bae9ddd1f3383c Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Fri, 2 May 2025 17:05:56 +0100 Subject: NEW MAINBOARD: Dell Precision T1700 SFF and MT This is similar to the 9020SFF, but this board has ECC support. However, the native raminit isn't used here, even though it is otherwise compatible, because the native init doesn't do ECC yet. The broadwell mrc.bin has ECC support, which is also used on the HP EliteBook 820 G2. The MRC for broadwell can be used on haswell boards such as the T1700. Add both the SFF and MT variants. Since these are identical to the 9020 variants, except for slightly different PCH enabling ECC, we can just re-use the 9020 port without issue. We *could* add a variant to coreboot, for T1700, but there is not really any pressing need. It is simply the 9020sff/mt with mrc.bin Signed-off-by: Leah Rowe --- include/inject.sh | 2 ++ include/mrc.sh | 57 +++++++++++++++++++++++++++++++------------------------ 2 files changed, 34 insertions(+), 25 deletions(-) (limited to 'include') diff --git a/include/inject.sh b/include/inject.sh index 6b316729..e5282861 100644 --- a/include/inject.sh +++ b/include/inject.sh @@ -86,6 +86,8 @@ getfiles() "$E6400_VGA_DL_url_bkup" "$E6400_VGA_DL_hash" "$CONFIG_VGA_BIOS_FILE" [ -z "$CONFIG_HAVE_MRC" ] || fetch "mrc" "$MRC_url" "$MRC_url_bkup" \ "$MRC_hash" "$CONFIG_MRC_FILE" + [ -n "$CONFIG_REFCODE_BLOB_FILE" ] && fetch "refcode" "$MRC_url" \ + "$MRC_url_bkup" "$MRC_hash" "$CONFIG_REFCODE_BLOB_FILE" [ -z "$CONFIG_LENOVO_TBFW_BIN" ] || fetch "tbfw" "$TBFW_url" \ "$TBFW_url_bkup" "$TBFW_hash" "$CONFIG_LENOVO_TBFW_BIN" # diff --git a/include/mrc.sh b/include/mrc.sh index 6e00292b..eaf39dcb 100644 --- a/include/mrc.sh +++ b/include/mrc.sh @@ -8,35 +8,12 @@ eval "`setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board SHELLBALL`" extract_mrc() { - chkvars "MRC_board" "CONFIG_MRC_FILE" - SHELLBALL="chromeos-firmwareupdate-$MRC_board" - - ( - x_ cd "$appdir" - extract_partition "${MRC_url##*/}" - extract_archive "$SHELLBALL" . - ) || $err "mrc download/extract failure" + extract_shellball "$cbfstool" "$appdir/"bios.bin extract -n mrc.bin \ -f "$_dest" -r RO_SECTION || $err "extract_mrc: !$cbfstool $_dest" - [ -n "$CONFIG_REFCODE_BLOB_FILE" ] && extract_refcode; : -} - -extract_partition() -{ - printf "Extracting ROOT-A partition\n" - ROOTP=$( printf "unit\nB\nprint\nquit\n" | \ - parted "${1%.zip}" 2>/dev/null | grep "ROOT-A" ) - - START=$(( $( echo $ROOTP | cut -f2 -d\ | tr -d "B" ) )) - SIZE=$(( $( echo $ROOTP | cut -f4 -d\ | tr -d "B" ) )) - - dd if="${1%.zip}" of="root-a.ext2" bs=1024 skip=$(( $START / 1024 )) \ - count=$(( $SIZE / 1024 )) || $err "ex dd ${1%.zip}, root-a.ext2" - - printf "cd /usr/sbin\ndump chromeos-firmwareupdate %s\nquit" \ - "$SHELLBALL" | debugfs "root-a.ext2" || $err "!extract shellball" + [ -n "$CONFIG_REFCODE_BLOB_FILE" ] && extract_refcode extra; : } extract_refcode() @@ -44,6 +21,8 @@ extract_refcode() _refdest="${CONFIG_REFCODE_BLOB_FILE##*../}" e "$_refdest" f && return 0 + [ $# -lt 1 ] && extract_shellball + # cbfstool changed the attributes scheme for stage files, # incompatible with older versions before coreboot 4.14, # so we need coreboot 4.13 cbfstool for certain refcode files @@ -57,3 +36,31 @@ extract_refcode() [ -z "$MRC_refcode_gbe" ] || x_ dd if="config/ifd/hp820g2/1.bin" \ of="$_refdest" bs=1 seek=$MRC_refcode_gbe count=1 conv=notrunc; : } + +extract_shellball() +{ + chkvars "MRC_board" "CONFIG_MRC_FILE" + SHELLBALL="chromeos-firmwareupdate-$MRC_board" + + ( + x_ cd "$appdir" + extract_partition "${MRC_url##*/}" + extract_archive "$SHELLBALL" . + ) || $err "mrc download/extract failure"; : +} + +extract_partition() +{ + printf "Extracting ROOT-A partition\n" + ROOTP=$( printf "unit\nB\nprint\nquit\n" | \ + parted "${1%.zip}" 2>/dev/null | grep "ROOT-A" ) + + START=$(( $( echo $ROOTP | cut -f2 -d\ | tr -d "B" ) )) + SIZE=$(( $( echo $ROOTP | cut -f4 -d\ | tr -d "B" ) )) + + dd if="${1%.zip}" of="root-a.ext2" bs=1024 skip=$(( $START / 1024 )) \ + count=$(( $SIZE / 1024 )) || $err "ex dd ${1%.zip}, root-a.ext2" + + printf "cd /usr/sbin\ndump chromeos-firmwareupdate %s\nquit" \ + "$SHELLBALL" | debugfs "root-a.ext2" || $err "!extract shellball" +} -- cgit v1.2.1