xref: /rk3399_rockchip-uboot/scripts/spl.sh (revision 89b86f57bf92f0835b8dea068097c65ef9fd1e48)
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
845986bebSJoseph Chenset -e
945986bebSJoseph 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
66*b3561c89SJoseph Chen# tpl don't need replace MAGIC
67*b3561c89SJoseph Chenif grep -q '^NEWIDB=true' ${INI} ; then
68*b3561c89SJoseph Chen	ARG_NEWIDB="y"
69*b3561c89SJoseph Chenfi
70*b3561c89SJoseph Chen
71b42d2103SJoseph Chen# replace
72b42d2103SJoseph Chenif [ "${TPL_BIN}" != "" -a "${SPL_BIN}" != "" ]; then
73*b3561c89SJoseph Chen	if [ "${ARG_NEWIDB}" == "y" ]; then
74*b3561c89SJoseph Chen		cp ${TPL_BIN} tmp/tpl.bin
75*b3561c89SJoseph Chen	else
76b42d2103SJoseph Chen		cp ${TPL_BIN} tmp/u-boot-tpl.bin
77b42d2103SJoseph Chen		dd if=tmp/u-boot-tpl.bin of=tmp/tpl.bin bs=1 skip=4
78b42d2103SJoseph Chen		sed -i "1s/^/${MAGIC:0:4}/" tmp/tpl.bin
79*b3561c89SJoseph Chen	fi
80*b3561c89SJoseph Chen
81*b3561c89SJoseph Chen	cp ${SPL_BIN} tmp/u-boot-spl.bin
82b42d2103SJoseph Chen	sed -i "s/FlashData=.*$/FlashData=.\/tmp\/tpl.bin/"        ${TMP_INI}
83b42d2103SJoseph Chen	sed -i "0,/Path1=.*/s/Path1=.*$/Path1=.\/tmp\/tpl.bin/"    ${TMP_INI}
84b42d2103SJoseph Chen	sed -i "s/FlashBoot=.*$/FlashBoot=.\/tmp\/u-boot-spl.bin/" ${TMP_INI}
85b42d2103SJoseph Chen	LABEL="TPL+SPL"
86b42d2103SJoseph Chenelif [ "${TPL_BIN}" != "" ]; then
87*b3561c89SJoseph Chen	if [ "${ARG_NEWIDB}" == "y" ]; then
88*b3561c89SJoseph Chen		cp ${TPL_BIN} tmp/tpl.bin
89*b3561c89SJoseph Chen	else
90b42d2103SJoseph Chen		cp ${TPL_BIN} tmp/u-boot-tpl.bin
91b42d2103SJoseph Chen		dd if=tmp/u-boot-tpl.bin of=tmp/tpl.bin bs=1 skip=4
92b42d2103SJoseph Chen		sed -i "1s/^/${MAGIC:0:4}/" tmp/tpl.bin
93*b3561c89SJoseph Chen	fi
94b42d2103SJoseph Chen	sed -i "s/FlashData=.*$/FlashData=.\/tmp\/tpl.bin/"        ${TMP_INI}
95b42d2103SJoseph Chen	sed -i "0,/Path1=.*/s/Path1=.*$/Path1=.\/tmp\/tpl.bin/"    ${TMP_INI}
96b42d2103SJoseph Chen	LABEL="TPL"
97b42d2103SJoseph Chenelse
98b42d2103SJoseph Chen	cp ${SPL_BIN} tmp/u-boot-spl.bin
99b42d2103SJoseph Chen	sed -i "s/FlashBoot=.*$/FlashBoot=.\/tmp\/u-boot-spl.bin/" ${TMP_INI}
100b42d2103SJoseph Chen	LABEL="SPL"
101b42d2103SJoseph Chenfi
102b42d2103SJoseph Chen
103b42d2103SJoseph Chen./tools/boot_merger ${TMP_INI}
104b42d2103SJoseph Chenrm tmp/ -rf
105b42d2103SJoseph Chen
106b42d2103SJoseph Chenecho "pack loader(${LABEL}) okay! Input: ${INI}"
107b42d2103SJoseph Chenecho
108