xref: /OK3568_Linux_fs/u-boot/scripts/spl.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# Copyright (c) 2020 Rockchip Electronics Co., Ltd
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
6*4882a593Smuzhiyun#
7*4882a593Smuzhiyun
8*4882a593Smuzhiyunset -e
9*4882a593Smuzhiyun
10*4882a593Smuzhiyunif [ $# -eq 0 ]; then
11*4882a593Smuzhiyun	echo "ERROR: No args of $0"
12*4882a593Smuzhiyun	exit 1
13*4882a593Smuzhiyunfi
14*4882a593Smuzhiyun
15*4882a593Smuzhiyunwhile [ $# -gt 0 ]; do
16*4882a593Smuzhiyun	case $1 in
17*4882a593Smuzhiyun		--ini)
18*4882a593Smuzhiyun			INI=$2
19*4882a593Smuzhiyun			shift 2
20*4882a593Smuzhiyun			;;
21*4882a593Smuzhiyun		--spl)
22*4882a593Smuzhiyun			SPL_BIN=$2
23*4882a593Smuzhiyun			if [ ! -f ${SPL_BIN} ]; then
24*4882a593Smuzhiyun				echo "ERROR: No ${SPL_BIN}"
25*4882a593Smuzhiyun				exit 1
26*4882a593Smuzhiyun			fi
27*4882a593Smuzhiyun			shift 2
28*4882a593Smuzhiyun			;;
29*4882a593Smuzhiyun		--tpl)
30*4882a593Smuzhiyun			TPL_BIN=$2
31*4882a593Smuzhiyun			if [ ! -f ${TPL_BIN} ]; then
32*4882a593Smuzhiyun				echo "ERROR: No ${TPL_BIN}"
33*4882a593Smuzhiyun				exit 1
34*4882a593Smuzhiyun			fi
35*4882a593Smuzhiyun			shift 2
36*4882a593Smuzhiyun			;;
37*4882a593Smuzhiyun		*)
38*4882a593Smuzhiyun			echo "ERROR: Unknown arg: $1"
39*4882a593Smuzhiyun			exit 1
40*4882a593Smuzhiyun			;;
41*4882a593Smuzhiyun	esac
42*4882a593Smuzhiyundone
43*4882a593Smuzhiyun
44*4882a593Smuzhiyunif [ ! -f ${INI} ]; then
45*4882a593Smuzhiyun	echo "ERROR: No ${INI}"
46*4882a593Smuzhiyun	exit 0
47*4882a593Smuzhiyunfi
48*4882a593Smuzhiyun
49*4882a593Smuzhiyunif [ "${TPL_BIN}" == "" -a "${SPL_BIN}" == "" ]; then
50*4882a593Smuzhiyun	echo "ERROR: No SPL and TPL file"
51*4882a593Smuzhiyun	exit 0
52*4882a593Smuzhiyunfi
53*4882a593Smuzhiyun
54*4882a593Smuzhiyunrm tmp -rf && mkdir tmp -p
55*4882a593SmuzhiyunTMP_INI="tmp/MINIALL.ini"
56*4882a593Smuzhiyuncp ${INI} ${TMP_INI}
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun# magic
59*4882a593SmuzhiyunMAGIC=`sed -n '/NAME=/s/NAME=//p' ${INI}`
60*4882a593Smuzhiyunif [ "${MAGIC}" == "RV1126" ]; then
61*4882a593Smuzhiyun	MAGIC="110B"
62*4882a593Smuzhiyunelif [ "${MAGIC}" == "RKPX30" ]; then
63*4882a593Smuzhiyun	MAGIC="RK33"
64*4882a593Smuzhiyunfi
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun# tpl don't need replace MAGIC
67*4882a593Smuzhiyunif grep -q '^NEWIDB=true' ${INI} ; then
68*4882a593Smuzhiyun	ARG_NEWIDB="y"
69*4882a593Smuzhiyunfi
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun# replace
72*4882a593Smuzhiyunif [ "${TPL_BIN}" != "" -a "${SPL_BIN}" != "" ]; then
73*4882a593Smuzhiyun	if [ "${ARG_NEWIDB}" == "y" ]; then
74*4882a593Smuzhiyun		cp ${TPL_BIN} tmp/tpl.bin
75*4882a593Smuzhiyun	else
76*4882a593Smuzhiyun		cp ${TPL_BIN} tmp/u-boot-tpl.bin
77*4882a593Smuzhiyun		dd if=tmp/u-boot-tpl.bin of=tmp/tpl.bin bs=1 skip=4
78*4882a593Smuzhiyun		sed -i "1s/^/${MAGIC:0:4}/" tmp/tpl.bin
79*4882a593Smuzhiyun	fi
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun	cp ${SPL_BIN} tmp/u-boot-spl.bin
82*4882a593Smuzhiyun	sed -i "s/FlashData=.*$/FlashData=.\/tmp\/tpl.bin/"        ${TMP_INI}
83*4882a593Smuzhiyun	sed -i "0,/Path1=.*/s/Path1=.*$/Path1=.\/tmp\/tpl.bin/"    ${TMP_INI}
84*4882a593Smuzhiyun	sed -i "s/FlashBoot=.*$/FlashBoot=.\/tmp\/u-boot-spl.bin/" ${TMP_INI}
85*4882a593Smuzhiyun	LABEL="TPL+SPL"
86*4882a593Smuzhiyunelif [ "${TPL_BIN}" != "" ]; then
87*4882a593Smuzhiyun	if [ "${ARG_NEWIDB}" == "y" ]; then
88*4882a593Smuzhiyun		cp ${TPL_BIN} tmp/tpl.bin
89*4882a593Smuzhiyun	else
90*4882a593Smuzhiyun		cp ${TPL_BIN} tmp/u-boot-tpl.bin
91*4882a593Smuzhiyun		dd if=tmp/u-boot-tpl.bin of=tmp/tpl.bin bs=1 skip=4
92*4882a593Smuzhiyun		sed -i "1s/^/${MAGIC:0:4}/" tmp/tpl.bin
93*4882a593Smuzhiyun	fi
94*4882a593Smuzhiyun	sed -i "s/FlashData=.*$/FlashData=.\/tmp\/tpl.bin/"        ${TMP_INI}
95*4882a593Smuzhiyun	sed -i "0,/Path1=.*/s/Path1=.*$/Path1=.\/tmp\/tpl.bin/"    ${TMP_INI}
96*4882a593Smuzhiyun	LABEL="TPL"
97*4882a593Smuzhiyunelse
98*4882a593Smuzhiyun	cp ${SPL_BIN} tmp/u-boot-spl.bin
99*4882a593Smuzhiyun	sed -i "s/FlashBoot=.*$/FlashBoot=.\/tmp\/u-boot-spl.bin/" ${TMP_INI}
100*4882a593Smuzhiyun	LABEL="SPL"
101*4882a593Smuzhiyunfi
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun./tools/boot_merger ${TMP_INI}
104*4882a593Smuzhiyunrm tmp/ -rf
105*4882a593Smuzhiyun
106*4882a593Smuzhiyunecho "pack loader(${LABEL}) okay! Input: ${INI}"
107*4882a593Smuzhiyunecho
108