#!/bin/sh export COREBOOT_DIR="../coreboot.git" export GIT_DIR="$COREBOOT_DIR/.git" CODE_GITWEB="https://review.coreboot.org/gitweb/cgit/coreboot.git/commit/?id=" STATUS_GITWEB="https://review.coreboot.org/gitweb/cgit/board-status.git/tree/" if [ -f `dirname $0`/foreword.html ]; then cat `dirname $0`/foreword.html fi detailed= nl=" " have= while read line; do timeframe=`echo $line | cut -d: -f1` rest=`echo $line | cut -d: -f2-` detailed="$detailed
Vendor | Mainboard | Latest known good | Northbridge | Southbridge | Super I/O | CPU | Socket | ROM 1 | P 2 | S 3 | F 4 | VCS5 | Desktops / Workstations |
EOF
;;
server)
cat <Servers |
EOF
;;
laptop)
cat <Laptops |
EOF
;;
half)
cat <Embedded / PC/104 / Half-size boards |
EOF
;;
mini)
cat <Mini-ITX / Micro-ITX / Nano-ITX |
EOF
;;
settop)
cat <Set-top-boxes / Thin clients |
EOF
;;
"eval")
cat <Devel/Eval Boards |
EOF
;;
sbc)
cat <Single-Board computer |
EOF
;;
emulation)
cat <Emulation |
EOF
;;
misc)
cat <Miscellaneous |
EOF
;;
unclass)
cat <Unclassified |
EOF
;;
esac
for vendor_board_dir in "$COREBOOT_DIR"/src/mainboard/*/* ; do
board="$(basename "$vendor_board_dir")"
vendor="$(basename "$(dirname "$vendor_board_dir")")"
if [ "$board" = Kconfig ] || [ "$board" = Kconfig.name ]; then
continue
fi
if [ -f "$vendor_board_dir/board_info.txt" ]; then
cur_category="$(sed -n "/^[[:space:]]*Category:/ s,^[[:space:]]*Category:[[:space:]]*,,p" "$vendor_board_dir/board_info.txt")"
else
cur_category=
fi
case "$cur_category" in
desktop|server|laptop|half|mini|settop|"eval"|emulation|sbc|misc)
;;
*)
cur_category=unclass
;;
esac
if [ "$cur_category" != "$category" ]; then
continue
fi
if [ -f "$vendor_board_dir/board_info.txt" ]; then
vendor_2nd="$(sed -n "/^[[:space:]]*Vendor name:/ s,^[[:space:]]*Vendor name:[[:space:]]*,,p" "$vendor_board_dir/board_info.txt")"
board_nice="$(sed -n "/^[[:space:]]*Board name:/ s,^[[:space:]]*Board name:[[:space:]]*,,p" "$vendor_board_dir/board_info.txt")"
rom_package="$(sed -n "/^[[:space:]]*ROM package:/ s,^[[:space:]]*ROM package:[[:space:]]*,,p" "$vendor_board_dir/board_info.txt")"
rom_protocol="$(sed -n "/^[[:space:]]*ROM protocol:/ s,^[[:space:]]*ROM protocol:[[:space:]]*,,p" "$vendor_board_dir/board_info.txt")"
rom_socketed="$(sed -n "/^[[:space:]]*ROM socketed:/ s,^[[:space:]]*ROM socketed:[[:space:]]*,,p" "$vendor_board_dir/board_info.txt")"
flashrom_support="$(sed -n "/^[[:space:]]*Flashrom support:/ s,^[[:space:]]*Flashrom support:[[:space:]]*,,p" "$vendor_board_dir/board_info.txt")"
vendor_cooperation_score="$(sed -n "/^[[:space:]]*Vendor cooperation score:/ s,^[[:space:]]*Vendor cooperation score:[[:space:]]*,,p" "$vendor_board_dir/board_info.txt")"
vendor_cooperation_page="$(sed -n "/^[[:space:]]*Vendor cooperation page:/ s,^[[:space:]]*Vendor cooperation page:[[:space:]]*,,p" "$vendor_board_dir/board_info.txt")"
board_url="$(sed -n "/^[[:space:]]*Board URL:/ s,^[[:space:]]*Board URL:[[:space:]]*,,p" "$vendor_board_dir/board_info.txt")"
clone_of="$(sed -n "/^[[:space:]]*Clone of:/ s,^[[:space:]]*Clone of:[[:space:]]*,,p" "$vendor_board_dir/board_info.txt")"
else
vendor_2nd=
board_nice=
rom_package=
rom_protocol=
rom_socketed=
flashrom_support=
vendor_cooperation_score=
vendor_cooperation_page=
board_url=
clone_of=
fi
if [ "$last_vendor" != "$vendor" ]; then
last_vendor="$vendor"
if [ "$color" = dddddd ]; then
color=eeeeee
else
color=dddddd
fi
fi
vendor_nice="$(grep -A1 -i "config VENDOR_$vendor" "$COREBOOT_DIR"/src/mainboard/$vendor/Kconfig.name|tail -n1|sed -n 's,^[[:space:]]*bool[[:space:]]*"\(.*\)"[[:space:]]*$,\1,p')"
if [ -z "$vendor_nice" ]; then
vendor_nice="$(echo "$vendor" |sed -e "s/\(.\)/\u\1/g")";
fi
if [ -z "$board_nice" ]; then
board_nice="$(grep -A2 -i "config MAINBOARD_PART_NUMBER" "$COREBOOT_DIR"/src/mainboard/$vendor/$board/Kconfig|tail -n1|sed -n 's,^[[:space:]]*default[[:space:]]*"\(.*\)"[[:space:]]*$,\1,p')"
fi
if [ -z "$board_nice" ]; then
board_nice="$(echo "$board" |sed -e "s,_, ,g;s/\(.\)/\u\1/g")";
fi
venboard="$vendor/$board"
if [ -n "$clone_of" ]; then
venboard="$clone_of"
fi
lastgood="$(echo "$have"| sed -n "/^$(echo "$venboard"|sed 's,/,\\/,g'):/ s,^[^:]*:,,gp")"
vendor_board_dir="$COREBOOT_DIR"/src/mainboard/"$venboard";
northbridge="$(sed -n "/^[[:space:]]*select NORTHBRIDGE_/ s,^[[:space:]]*select NORTHBRIDGE_,,p" "$vendor_board_dir/Kconfig")"
northbridge_nice="$(echo "$northbridge"|sed 's,AMD_AGESA_FAMILY\([0-9a-fA-F]*\)\(.*\),AMD Family \1h\2 (AGESA),g;s,AMD_PI_\(.*\),AMD \1 (PI),g;s,INTEL_FSP_\(.*\),Intel® \1 (FSP),g;s,AMD_FAMILY\([0-9a-fA-F]*\),AMD Family \1h,g;s,AMD_AMDFAM\([0-9a-fA-F]*\),AMD Family \1h,g;s,_, ,g;s,INTEL,Intel®,g;')"
southbridge="$(sed -n "/[[:space:]]*select SOUTHBRIDGE_/ s,[[:space:]]*select SOUTHBRIDGE_\([^ ]*\).*$,\1,p" "$vendor_board_dir/Kconfig"|grep -v SKIP_|grep -v DISABLE_)"
southbridge_nice="$(echo "$southbridge"|sed 's,_, ,g;s,INTEL,Intel®,g')"
superio="$(sed -n "/[[:space:]]*select SUPERIO_/ s,[[:space:]]*select SUPERIO_,,p" "$vendor_board_dir/Kconfig"|grep -v OVERRIDE_FANCTL)"
superio_nice="$(echo "$superio"|sed 's,_, ,g;s,WINBOND,Winbond™,g;s,ITE,ITE™,g;s,SMSC,SMSC®,g;s,NUVOTON,Nuvoton ,g')"
cpu="$(sed -n "/ select CPU_/ s, select CPU_,,p" "$vendor_board_dir/Kconfig"|grep -v "AMD_AGESA_FAMILY"|grep -v CPU_MICROCODE_CBFS_NONE)"
case "$cpu" in
ALLWINNER_A10)
cpu_nice="Allwinner A10"
socket_nice="?";;
AMD_GEODE_*)
cpu_nice="AMD Geode™ ${cpu#AMD_GEODE_}";
socket_nice="—";;
AMD_SOCKET_754)
cpu_nice="AMD Sempron™ / Athlon™ 64 / Turion™ 64";
socket_nice="Socket 754";;
AMD_SOCKET_ASB2)
cpu_nice="AMD Turion™ II Neo/Athlon™ II Neo";
socket_nice="ASB2 (BGA812)";;
AMD_SOCKET_S1G1)
cpu_nice="AMD Turion™ / X2 Sempron™";
socket_nice="Socket S1G1";;
AMD_SOCKET_G34|AMD_SOCKET_G34_NON_AGESA)
cpu_nice="AMD Opteron™ Magny-Cours/Interlagos";
socket_nice="Socket G34";;
AMD_SOCKET_C32|AMD_SOCKET_C32_NON_AGESA)
cpu_nice="AMD Opteron™ Magny-Cours/Interlagos";
socket_nice="Socket C32";;
AMD_SOCKET_AM2)
cpu_nice="?";
socket_nice="Socket AM2"
;;
AMD_SOCKET_AM3)
cpu_nice="AMD Athlon™ 64 / FX / X2";
socket_nice="Socket AM3"
;;
AMD_SOCKET_AM2R2)
cpu_nice="AMD Athlon™ 64 / X2 / FX, Sempron™";
socket_nice="Socket AM2+"
;;
AMD_SOCKET_F)
cpu_nice="AMD Opteron™";
socket_nice="Socket F"
;;
AMD_SOCKET_F_1207)
cpu_nice="AMD Opteron™";
socket_nice="Socket F 1207"
;;
AMD_SOCKET_940)
cpu_nice="AMD Opteron™";
socket_nice="Socket 940"
;;
AMD_SOCKET_939)
cpu_nice="AMD Athlon™ 64 / FX / X2";
socket_nice="Socket 939"
;;
AMD_SC520)
cpu_nice="AMD Élan™SC520";
socket_nice="—";;
ARMLTD_CORTEX_A9)
cpu_nice="ARM Cortex A9";
socket_nice="?";;
DMP_VORTEX86EX)
cpu_nice="DMP VORTEX86EX";
socket_nice="?";;
SAMSUNG_EXYNOS5420)
cpu_nice="Samsung Exynos 5420";
socket_nice="?";;
SAMSUNG_EXYNOS5250)
cpu_nice="Samsung Exynos 5250";
socket_nice="?";;
TI_AM335X)
cpu_nice="TI AM335X";
socket_nice="?";;
INTEL_SLOT_1)
cpu_nice="Intel® Pentium® II/III, Celeron®";
socket_nice="Slot 1";;
INTEL_SOCKET_MPGA604)
cpu_nice="Intel® Xeon®";
socket_nice="Socket 604";;
INTEL_SOCKET_MFCPGA478)
cpu_nice="Intel® Core™ 2 Duo Mobile, Core™ Duo/Solo, Celeron® M";
socket_nice="Socket mPGA478";;
INTEL_SOCKET_LGA771)
cpu_nice="Intel Xeon™ 5000 series";
socket_nice="Socket LGA771";;
INTEL_SOCKET_LGA775)
cpu_nice="Intel® Core 2, Pentium 4/D";
socket_nice="Socket LGA775";;
INTEL_SOCKET_PGA370)
cpu_nice="Intel® Pentium® III-800, Celeron®"
socket_nice="Socket 370";;
INTEL_SOCKET_MPGA479M)
cpu_nice="Intel® Mobile Celeron"
socket_nice="Socket 479"
;;
INTEL_HASWELL)
cpu_nice="Intel® 4th Gen (Haswell) Core i3/i5/i7"
socket_nice="?"
;;
INTEL_FSP_RANGELEY)
cpu_nice="Intel® Atom Rangeley (FSP)"
socket_nice="?"
;;
INTEL_SOCKET_RPGA989|INTEL_SOCKET_LGA1155|INTEL_SOCKET_RPGA988B)
socket_nice="`echo $cpu | sed 's,INTEL_SOCKET_,Socket ,g'`"
case $northbridge in
INTEL_HASWELL)
cpu_nice="Intel® 4th Gen (Haswell) Core i3/i5/i7";;
INTEL_IVYBRIDGE|INTEL_FSP_IVYBRIDGE)
cpu_nice="Intel® 3rd Gen (Ivybridge) Core i3/i5/i7";;
INTEL_SANDYBRIDGE)
cpu_nice="Intel® 2nd Gen (Sandybridge) Core i3/i5/i7";;
*)
cpu_nice="$northbridge";;
esac
;;
INTEL_SOCKET_441)
cpu_nice="Intel® Atom™ 230";
socket_nice="Socket 441";;
INTEL_SOCKET_BGA956)
case $northbridge in
INTEL_GM45)
cpu_nice="Intel® Core 2 Duo (Penryn)"
socket_nice="Socket P";;
*)
cpu_nice="Intel® Pentium® M";
socket_nice="BGA956";;
esac
;;
INTEL_SOCKET_FC_PGA370)
cpu_nice="Intel® Pentium® III / Celeron®";
socket_nice="Socket 370"
;;
INTEL_EP80579)
cpu_nice="Intel® EP80579";
socket_nice="Intel® EP80579"
;;
INTEL_SOCKET_MFCBGA479)
cpu_nice="Intel® Mobile Celeron"
socket_nice="Socket 479";;
VIA_C3)
cpu_nice="VIA C3™";
socket_nice="?"
;;
VIA_C7)
cpu_nice="VIA C7™";
socket_nice="?"
;;
VIA_NANO)
cpu_nice="VIA Nano™";
socket_nice="?"
;;
QEMU_X86)
cpu_nice="QEMU x86";
socket_nice="—"
;;
"")
case $northbridge in
INTEL_NEHALEM)
cpu_nice="Intel® 1st Gen (Nehalem) Core i3/i5/i7"
socket_nice="?";;
RDC_R8610)
cpu_nice="RDC 8610"
socket_nice="—";;
AMD_AGESA_*|AMD_PI_*)
cpu_nice="$northbridge_nice"
socket_nice="?";;
*)
cpu_nice="$northbridge"
socket_nice="$northbridge";;
esac
;;
*)
cpu_nice="$cpu"
socket_nice="$cpu";;
esac
echo "|||
$vendor_nice" else echo " | $vendor_nice" fi if ! [ -z "$vendor_2nd" ]; then echo " ($vendor_2nd)" fi echo " | $board_nice | " if [ -z "$lastgood" ]; then echo "Unknown | " else lastgood_diff=0 lastgood_ts=$(date -d "$lastgood" "+%s") if [ "$lastgood_ts" != "" ]; then current_ts=$(date "+%s") if [ "$lastgood_ts" -lt "$current_ts" ]; then lastgood_diff=$(( current_ts - lastgood_ts )) # Convert seconds to days lastgood_diff=$(( lastgood_diff / 86400 )) # Set maximum age at 255 days for convenience of code if [ $lastgood_diff -gt 255 ]; then lastgood_diff=255 fi fi fi lastgood_diff_hex=$(echo "obase=16; $lastgood_diff" | bc) if [ "$lastgood_diff" -lt 16 ]; then lastgood_diff_hex="0${lastgood_diff_hex}" fi cell_bgcolor="#${lastgood_diff_hex}ff00" echo "$lastgood | " fi echo "$northbridge_nice | " echo "$southbridge_nice | " echo "$superio_nice | " echo "$cpu_nice | " echo "$socket_nice | " if [ "$rom_package" = "" ]; then echo "? | " else echo "$rom_package | " fi if [ "$rom_protocol" = "" ]; then echo "? | " else echo "$rom_protocol | " fi if [ "$rom_socketed" = "y" ]; then echo "Y | " elif [ "$rom_socketed" = "n" ]; then echo "N | " elif [ "$flashrom_support" = "variable" ]; then echo "...7 | " elif [ "$rom_socketed" = "" ]; then echo "? | " else echo "$rom_socketed | " fi if [ "$flashrom_support" = "y" ]; then echo "Y | " elif [ "$flashrom_support" = "n" ]; then echo "N | " elif [ "$flashrom_support" = "coreboot-only" ]; then echo "...6 | " elif [ "$flashrom_support" = "" ]; then echo "? | " else echo "$flashrom_support | " fi if [ "$vendor_cooperation_score" = "4" ]; then echo -n "" elif [ "$vendor_cooperatio_scoren" = "3" ]; then echo -n " | " else echo -n " | " fi if [ "$vendor_cooperation_page" != "" ]; then echo "$vendor_cooperation_score" elif [ "$vendor_cooperation_score" = "" ]; then echo "—" else echo "$vendor_cooperation_score" fi echo " |