1#!/bin/sh 2 3SCRIPT="$0" 4SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" 5 6OUTPUT="build/coreboot.rom" 7TMP_DIFF="$SCRIPT_DIR/.image-diff.bin" 8FLASHROM="/usr/local/sbin/flashrom" 9 10BL1_NAME="E5250.nbl1.bin" 11BL1_PATH="3rdparty/blobs/cpu/samsung/exynos5250/" 12BL1_URL="http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/exynos-pre-boot-0.0.2-r8.tbz2" 13 14die() { 15 echo "$*" >&2 16 exit 1 17} 18 19create_diff_192k() { 20 local image_file="$1" 21 local diff_file="$2" 22 cp -f "$image_file" "$diff_file" 23 dd if=/dev/zero of=$diff_file bs=1 count=$((192*1024)) conv=notrunc 24} 25 26fast_flash_image() { 27 local image_file="$1" 28 local diff_file="$2" 29 dut-control spi2_buf_en:on spi2_buf_on_flex_en:on spi2_vref:pp1800 30 sudo ${FLASHROM} -p ft2232_spi:type=servo-v2,port=a -w "$image_file" -V \ 31 --noverify --flash-contents "$diff_file" 32 dut-control spi2_buf_en:off spi2_buf_on_flex_en:off spi2_vref:off 33} 34 35get_bl1() { 36 wget "${BL1_URL}" -O /tmp/bl1.tbz2 37 tar jxvf /tmp/bl1.tbz2 38 mkdir -p "${BL1_PATH}" 39 mv "exynos-pre-boot/firmware/${BL1_NAME}" "${BL1_PATH}" 40 rm -rf exynos-pre-boot 41 if [ ! -e "${BL1_PATH}/${BL1_NAME}" ]; then 42 echo "Error getting BL1" 43 exit 1 44 fi 45} 46 47is_servod_ready() { 48 ps -C servod >/dev/null 2>&1 49} 50 51main() { 52 if [ ! -e "$bl1" ]; then 53 get_bl1 54 fi 55 56 make 57 create_diff_192k "$OUTPUT" "$TMP_DIFF" 58 echo "OK: Generated image (with BL1) in $OUTPUT" 59 if is_servod_ready; then 60 echo "servod detected - flashing into device." 61 fast_flash_image "$OUTPUT" "$TMP_DIFF" 62 echo "OK: Generated and flashed 128k of image into device via servo." 63 else 64 echo "(servod is not running, flashing into device is skipped)" 65 fi 66} 67 68set -e 69main "$@" 70