xref: /OK3568_Linux_fs/buildroot/board/freescale/common/imx/post-image.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/usr/bin/env bash
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# dtb_list extracts the list of DTB files from BR2_LINUX_KERNEL_INTREE_DTS_NAME
5*4882a593Smuzhiyun# in ${BR_CONFIG}, then prints the corresponding list of file names for the
6*4882a593Smuzhiyun# genimage configuration file
7*4882a593Smuzhiyun#
8*4882a593Smuzhiyundtb_list()
9*4882a593Smuzhiyun{
10*4882a593Smuzhiyun	local DTB_LIST="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([\/a-z0-9 \-]*\)"$/\1/p' ${BR2_CONFIG})"
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun	for dt in $DTB_LIST; do
13*4882a593Smuzhiyun		echo -n "\"`basename $dt`.dtb\", "
14*4882a593Smuzhiyun	done
15*4882a593Smuzhiyun}
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun#
18*4882a593Smuzhiyun# linux_image extracts the Linux image format from BR2_LINUX_KERNEL_UIMAGE in
19*4882a593Smuzhiyun# ${BR_CONFIG}, then prints the corresponding file name for the genimage
20*4882a593Smuzhiyun# configuration file
21*4882a593Smuzhiyun#
22*4882a593Smuzhiyunlinux_image()
23*4882a593Smuzhiyun{
24*4882a593Smuzhiyun	if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then
25*4882a593Smuzhiyun		echo "\"uImage\""
26*4882a593Smuzhiyun	elif grep -Eq "^BR2_LINUX_KERNEL_IMAGE=y$" ${BR2_CONFIG}; then
27*4882a593Smuzhiyun		echo "\"Image\""
28*4882a593Smuzhiyun	elif grep -Eq "^BR2_LINUX_KERNEL_IMAGEGZ=y$" ${BR2_CONFIG}; then
29*4882a593Smuzhiyun		echo "\"Image.gz\""
30*4882a593Smuzhiyun	else
31*4882a593Smuzhiyun		echo "\"zImage\""
32*4882a593Smuzhiyun	fi
33*4882a593Smuzhiyun}
34*4882a593Smuzhiyun
35*4882a593Smuzhiyungenimage_type()
36*4882a593Smuzhiyun{
37*4882a593Smuzhiyun	if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8=y$" ${BR2_CONFIG}; then
38*4882a593Smuzhiyun		echo "genimage.cfg.template_imx8"
39*4882a593Smuzhiyun	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" ${BR2_CONFIG}; then
40*4882a593Smuzhiyun		echo "genimage.cfg.template_imx8"
41*4882a593Smuzhiyun	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" ${BR2_CONFIG}; then
42*4882a593Smuzhiyun		echo "genimage.cfg.template_imx8"
43*4882a593Smuzhiyun	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y$" ${BR2_CONFIG}; then
44*4882a593Smuzhiyun		echo "genimage.cfg.template_imx8"
45*4882a593Smuzhiyun	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP=y$" ${BR2_CONFIG}; then
46*4882a593Smuzhiyun		echo "genimage.cfg.template_imx8"
47*4882a593Smuzhiyun	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X=y$" ${BR2_CONFIG}; then
48*4882a593Smuzhiyun		echo "genimage.cfg.template_imx8"
49*4882a593Smuzhiyun	elif grep -Eq "^BR2_LINUX_KERNEL_INSTALL_TARGET=y$" ${BR2_CONFIG}; then
50*4882a593Smuzhiyun		if grep -Eq "^BR2_TARGET_UBOOT_SPL=y$" ${BR2_CONFIG}; then
51*4882a593Smuzhiyun		    echo "genimage.cfg.template_no_boot_part_spl"
52*4882a593Smuzhiyun		else
53*4882a593Smuzhiyun		    echo "genimage.cfg.template_no_boot_part"
54*4882a593Smuzhiyun		fi
55*4882a593Smuzhiyun	elif grep -Eq "^BR2_TARGET_UBOOT_SPL=y$" ${BR2_CONFIG}; then
56*4882a593Smuzhiyun		echo "genimage.cfg.template_spl"
57*4882a593Smuzhiyun	else
58*4882a593Smuzhiyun		echo "genimage.cfg.template"
59*4882a593Smuzhiyun	fi
60*4882a593Smuzhiyun}
61*4882a593Smuzhiyun
62*4882a593Smuzhiyunimx_offset()
63*4882a593Smuzhiyun{
64*4882a593Smuzhiyun	if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" ${BR2_CONFIG}; then
65*4882a593Smuzhiyun		echo "33K"
66*4882a593Smuzhiyun	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" ${BR2_CONFIG}; then
67*4882a593Smuzhiyun		echo "33K"
68*4882a593Smuzhiyun	else
69*4882a593Smuzhiyun		echo "32K"
70*4882a593Smuzhiyun	fi
71*4882a593Smuzhiyun}
72*4882a593Smuzhiyun
73*4882a593Smuzhiyunuboot_image()
74*4882a593Smuzhiyun{
75*4882a593Smuzhiyun	if grep -Eq "^BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y$" ${BR2_CONFIG}; then
76*4882a593Smuzhiyun		echo "u-boot-dtb.imx"
77*4882a593Smuzhiyun	elif grep -Eq "^BR2_TARGET_UBOOT_FORMAT_IMX=y$" ${BR2_CONFIG}; then
78*4882a593Smuzhiyun		echo "u-boot.imx"
79*4882a593Smuzhiyun	elif grep -Eq "^BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y$" ${BR2_CONFIG}; then
80*4882a593Smuzhiyun	    echo "u-boot-dtb.img"
81*4882a593Smuzhiyun	elif grep -Eq "^BR2_TARGET_UBOOT_FORMAT_IMG=y$" ${BR2_CONFIG}; then
82*4882a593Smuzhiyun	    echo "u-boot.img"
83*4882a593Smuzhiyun	fi
84*4882a593Smuzhiyun}
85*4882a593Smuzhiyun
86*4882a593Smuzhiyunmain()
87*4882a593Smuzhiyun{
88*4882a593Smuzhiyun	local FILES="$(dtb_list) $(linux_image)"
89*4882a593Smuzhiyun	local IMXOFFSET="$(imx_offset)"
90*4882a593Smuzhiyun	local UBOOTBIN="$(uboot_image)"
91*4882a593Smuzhiyun	local GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)"
92*4882a593Smuzhiyun	local GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun	sed -e "s/%FILES%/${FILES}/" \
95*4882a593Smuzhiyun		-e "s/%IMXOFFSET%/${IMXOFFSET}/" \
96*4882a593Smuzhiyun		-e "s/%UBOOTBIN%/${UBOOTBIN}/" \
97*4882a593Smuzhiyun		board/freescale/common/imx/$(genimage_type) > ${GENIMAGE_CFG}
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun	rm -rf "${GENIMAGE_TMP}"
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun	genimage \
102*4882a593Smuzhiyun		--rootpath "${TARGET_DIR}" \
103*4882a593Smuzhiyun		--tmppath "${GENIMAGE_TMP}" \
104*4882a593Smuzhiyun		--inputpath "${BINARIES_DIR}" \
105*4882a593Smuzhiyun		--outputpath "${BINARIES_DIR}" \
106*4882a593Smuzhiyun		--config "${GENIMAGE_CFG}"
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun	rm -f ${GENIMAGE_CFG}
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun	exit $?
111*4882a593Smuzhiyun}
112*4882a593Smuzhiyun
113*4882a593Smuzhiyunmain $@
114