xref: /rk3399_rockchip-uboot/scripts/spl.sh (revision 45986beb2540aae5e6d50add74fc8a3dc99dbb6f)
1b42d2103SJoseph Chen#!/bin/bash
2b42d2103SJoseph Chen#
3b42d2103SJoseph Chen# Copyright (c) 2020 Rockchip Electronics Co., Ltd
4b42d2103SJoseph Chen#
5b42d2103SJoseph Chen# SPDX-License-Identifier: GPL-2.0
6b42d2103SJoseph Chen#
7b42d2103SJoseph Chen
8*45986bebSJoseph Chenset -e
9*45986bebSJoseph Chen
10b42d2103SJoseph Chenif [ $# -eq 0 ]; then
11b42d2103SJoseph Chen	echo "ERROR: No args of $0"
12b42d2103SJoseph Chen	exit 1
13b42d2103SJoseph Chenfi
14b42d2103SJoseph Chen
15b42d2103SJoseph Chenwhile [ $# -gt 0 ]; do
16b42d2103SJoseph Chen	case $1 in
17b42d2103SJoseph Chen		--ini)
18b42d2103SJoseph Chen			INI=$2
19b42d2103SJoseph Chen			shift 2
20b42d2103SJoseph Chen			;;
21b42d2103SJoseph Chen		--spl)
22b42d2103SJoseph Chen			SPL_BIN=$2
23b42d2103SJoseph Chen			if [ ! -f ${SPL_BIN} ]; then
24b42d2103SJoseph Chen				echo "ERROR: No ${SPL_BIN}"
25b42d2103SJoseph Chen				exit 1
26b42d2103SJoseph Chen			fi
27b42d2103SJoseph Chen			shift 2
28b42d2103SJoseph Chen			;;
29b42d2103SJoseph Chen		--tpl)
30b42d2103SJoseph Chen			TPL_BIN=$2
31b42d2103SJoseph Chen			if [ ! -f ${TPL_BIN} ]; then
32b42d2103SJoseph Chen				echo "ERROR: No ${TPL_BIN}"
33b42d2103SJoseph Chen				exit 1
34b42d2103SJoseph Chen			fi
35b42d2103SJoseph Chen			shift 2
36b42d2103SJoseph Chen			;;
37b42d2103SJoseph Chen		*)
38b42d2103SJoseph Chen			echo "ERROR: Unknown arg: $1"
39b42d2103SJoseph Chen			exit 1
40b42d2103SJoseph Chen			;;
41b42d2103SJoseph Chen	esac
42b42d2103SJoseph Chendone
43b42d2103SJoseph Chen
44b42d2103SJoseph Chenif [ ! -f ${INI} ]; then
45b42d2103SJoseph Chen	echo "ERROR: No ${INI}"
46b42d2103SJoseph Chen	exit 0
47b42d2103SJoseph Chenfi
48b42d2103SJoseph Chen
49b42d2103SJoseph Chenif [ "${TPL_BIN}" == "" -a "${SPL_BIN}" == "" ]; then
50b42d2103SJoseph Chen	echo "ERROR: No SPL and TPL file"
51b42d2103SJoseph Chen	exit 0
52b42d2103SJoseph Chenfi
53b42d2103SJoseph Chen
54b42d2103SJoseph Chenrm tmp -rf && mkdir tmp -p
55b42d2103SJoseph ChenTMP_INI="tmp/MINIALL.ini"
56b42d2103SJoseph Chencp ${INI} ${TMP_INI}
57b42d2103SJoseph Chen
58b42d2103SJoseph Chen# magic
59b42d2103SJoseph ChenMAGIC=`sed -n '/NAME=/s/NAME=//p' ${INI}`
60b42d2103SJoseph Chenif [ "${MAGIC}" == "RV1126" ]; then
61b42d2103SJoseph Chen	MAGIC="110B"
62b42d2103SJoseph Chenelif [ "${MAGIC}" == "RKPX30" ]; then
63b42d2103SJoseph Chen	MAGIC="RK33"
64b42d2103SJoseph Chenfi
65b42d2103SJoseph Chen
66b42d2103SJoseph Chen# replace
67b42d2103SJoseph Chenif [ "${TPL_BIN}" != "" -a "${SPL_BIN}" != "" ]; then
68b42d2103SJoseph Chen	cp ${TPL_BIN} tmp/u-boot-tpl.bin
69b42d2103SJoseph Chen	cp ${SPL_BIN} tmp/u-boot-spl.bin
70b42d2103SJoseph Chen	dd if=tmp/u-boot-tpl.bin of=tmp/tpl.bin bs=1 skip=4
71b42d2103SJoseph Chen
72b42d2103SJoseph Chen	sed -i "1s/^/${MAGIC:0:4}/" tmp/tpl.bin
73b42d2103SJoseph Chen	sed -i "s/FlashData=.*$/FlashData=.\/tmp\/tpl.bin/"        ${TMP_INI}
74b42d2103SJoseph Chen	sed -i "0,/Path1=.*/s/Path1=.*$/Path1=.\/tmp\/tpl.bin/"    ${TMP_INI}
75b42d2103SJoseph Chen	sed -i "s/FlashBoot=.*$/FlashBoot=.\/tmp\/u-boot-spl.bin/" ${TMP_INI}
76b42d2103SJoseph Chen	LABEL="TPL+SPL"
77b42d2103SJoseph Chenelif [ "${TPL_BIN}" != "" ]; then
78b42d2103SJoseph Chen	cp ${TPL_BIN} tmp/u-boot-tpl.bin
79b42d2103SJoseph Chen	dd if=tmp/u-boot-tpl.bin of=tmp/tpl.bin bs=1 skip=4
80b42d2103SJoseph Chen	sed -i "1s/^/${MAGIC:0:4}/" tmp/tpl.bin
81b42d2103SJoseph Chen	sed -i "s/FlashData=.*$/FlashData=.\/tmp\/tpl.bin/"        ${TMP_INI}
82b42d2103SJoseph Chen	sed -i "0,/Path1=.*/s/Path1=.*$/Path1=.\/tmp\/tpl.bin/"    ${TMP_INI}
83b42d2103SJoseph Chen	LABEL="TPL"
84b42d2103SJoseph Chenelse
85b42d2103SJoseph Chen	cp ${SPL_BIN} tmp/u-boot-spl.bin
86b42d2103SJoseph Chen	sed -i "s/FlashBoot=.*$/FlashBoot=.\/tmp\/u-boot-spl.bin/" ${TMP_INI}
87b42d2103SJoseph Chen	LABEL="SPL"
88b42d2103SJoseph Chenfi
89b42d2103SJoseph Chen
90b42d2103SJoseph Chenrm *_loader_*.bin -f
91b42d2103SJoseph Chen./tools/boot_merger ${TMP_INI}
92b42d2103SJoseph Chen
93b42d2103SJoseph ChenFNAME=`basename *_loader_*.bin`
94b42d2103SJoseph Chenif [[ ${FNAME} != *spl* ]]; then
95b42d2103SJoseph Chen	rename 's/loader_/spl_loader_/' *_loader_*.bin
96b42d2103SJoseph Chenfi
97b42d2103SJoseph Chenrm tmp/ -rf
98b42d2103SJoseph Chen
99b42d2103SJoseph Chenecho "pack loader(${LABEL}) okay! Input: ${INI}"
100b42d2103SJoseph Chenecho
101