kernel-fitimage: dtb sections named by their filenames and one config section for each dtb

Before this, dtb sections were named by their position index in KERNEL_DEVICETREE. Also there was only one item in the config section, so only the first dtb was seen by the bootloader.
This patch adds a config section for each dtb named by the dtb filename. This is what bootloaders usually know about the machine they run on.

(From OE-Core rev: cd2ed7f80b555add07795cc0cbaee866e6c193a3)

Signed-off-by: Florian Wickert <fw@javox-solutions.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Florian Wickert 2017-03-17 16:33:03 +01:00 committed by Richard Purdie
parent 938d077ca5
commit 1ec405ef5d
1 changed files with 21 additions and 7 deletions

View File

@ -229,9 +229,10 @@ EOF
#
# $1 ... .its filename
# $2 ... Linux kernel ID
# $3 ... DTB image ID
# $3 ... DTB image name
# $4 ... ramdisk ID
# $5 ... config ID
# $6 ... default flag
fitimage_emit_section_config() {
conf_csum="sha1"
@ -244,6 +245,8 @@ fitimage_emit_section_config() {
kernel_line="kernel = \"kernel@${2}\";"
fdt_line=""
ramdisk_line=""
setup_line=""
default_line=""
if [ -n "${3}" ]; then
conf_desc="${conf_desc}, FDT blob"
@ -260,10 +263,14 @@ fitimage_emit_section_config() {
setup_line="setup = \"setup@${5}\";"
fi
if [ "${6}" = "1" ]; then
default_line="default = \"conf@${3}\";"
fi
cat << EOF >> ${1}
default = "conf@1";
conf@1 {
description = "${conf_desc}";
${default_line}
conf@${3} {
description = "${6} ${conf_desc}";
${kernel_line}
${fdt_line}
${ramdisk_line}
@ -314,6 +321,7 @@ EOF
fitimage_assemble() {
kernelcount=1
dtbcount=""
DTBS=""
ramdiskcount=${3}
setupcount=""
rm -f ${1} arch/${ARCH}/boot/${2}
@ -343,8 +351,8 @@ fitimage_assemble() {
DTB_PATH="arch/${ARCH}/boot/${DTB}"
fi
fitimage_emit_section_dtb ${1} ${dtbcount} ${DTB_PATH}
dtbcount=`expr ${dtbcount} + 1`
DTBS="${DTBS} ${DTB}"
fitimage_emit_section_dtb ${1} ${DTB} ${DTB_PATH}
done
fi
@ -384,7 +392,13 @@ fitimage_assemble() {
#
fitimage_emit_section_maint ${1} confstart
fitimage_emit_section_config ${1} "${kernelcount}" "${dtbcount}" "${ramdiskcount}" "${setupcount}"
if test -n "${DTBS}"; then
i=1
for DTB in ${DTBS}; do
fitimage_emit_section_config ${1} "${kernelcount}" "${DTB}" "${ramdiskcount}" "${setupcount}" "`expr ${i} = ${dtbcount}`"
i=`expr ${i} + 1`
done
fi
fitimage_emit_section_maint ${1} sectend