| #!/bin/sh |
| |
| SCRIPT="$0" |
| SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" |
| |
| OUTPUT="build/coreboot.rom" |
| TMP_DIFF="$SCRIPT_DIR/.image-diff.bin" |
| FLASHROM="/usr/local/sbin/flashrom" |
| |
| BL1_NAME="E5250.nbl1.bin" |
| BL1_PATH="3rdparty/cpu/samsung/exynos5250/" |
| BL1_URL="http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/exynos-pre-boot-0.0.2-r8.tbz2" |
| |
| die() { |
| echo "$*" >&2 |
| exit 1 |
| } |
| |
| create_diff_192k() { |
| local image_file="$1" |
| local diff_file="$2" |
| cp -f "$image_file" "$diff_file" |
| dd if=/dev/zero of=$diff_file bs=1 count=$((192*1024)) conv=notrunc |
| } |
| |
| fast_flash_image() { |
| local image_file="$1" |
| local diff_file="$2" |
| dut-control spi2_buf_en:on spi2_buf_on_flex_en:on spi2_vref:pp1800 |
| sudo ${FLASHROM} -p ft2232_spi:type=servo-v2,port=a -w "$image_file" -V \ |
| --noverify --ignore-fmap --diff "$diff_file" |
| dut-control spi2_buf_en:off spi2_buf_on_flex_en:off spi2_vref:off |
| } |
| |
| get_bl1() { |
| wget "${BL1_URL}" -O /tmp/bl1.tbz2 |
| tar jxvf /tmp/bl1.tbz2 |
| mkdir -p "${BL1_PATH}" |
| mv "exynos-pre-boot/firmware/${BL1_NAME}" "${BL1_PATH}" |
| rm -rf exynos-pre-boot |
| if [ ! -e "${BL1_PATH}/${BL1_NAME}" ]; then |
| echo "Error getting BL1" |
| exit 1 |
| fi |
| } |
| |
| merge_bl1() { |
| local outfile="$1" |
| local bl1="${BL1_PATH}/${BL1_NAME}" |
| |
| if [ ! -e "$bl1" ]; then |
| get_bl1 |
| fi |
| |
| # use the new BL1 which supports 30KB BL2/SPL/Coreboot |
| local size="$(stat -c "%s" "$outfile")" |
| local bl1_size="$(stat -c "%s" "$bl1")" |
| |
| [ "$bl1_size" = "$((0x2000))" ] || die "Incorrect BL1 input file." |
| dd if="$bl1" of=${outfile} conv=notrunc |
| } |
| |
| is_servod_ready() { |
| ps -C servod >/dev/null 2>&1 |
| } |
| |
| main() { |
| make |
| merge_bl1 "$OUTPUT" |
| create_diff_192k "$OUTPUT" "$TMP_DIFF" |
| echo "OK: Generated image (with BL1) in $OUTPUT" |
| if is_servod_ready; then |
| echo "servod detected - flashing into device." |
| fast_flash_image "$OUTPUT" "$TMP_DIFF" |
| echo "OK: Generated and flashed 128k of image into device via servo." |
| else |
| echo "(servod is not running, flashing into device is skipped)" |
| fi |
| } |
| |
| set -e |
| main "$@" |