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