summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUsama Arif <usama.arif@arm.com>2020-07-20 18:18:21 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-08-08 09:17:35 +0100
commit2d9f3c3d763e2bca704da4019add973b9a2c572f (patch)
tree9e6614ad100dea362039dca925d9e3d57f13bb2d
parent7a7667127625244aae2b1ff179e431fc9ad25737 (diff)
downloadopenembedded-core-2d9f3c3d763e2bca704da4019add973b9a2c572f.tar.gz
kernel-fitimage: build configuration for image tree when dtb is not present
This patch adds support for adding configuration node even when dtb is not part of the FIT image. The conf and default node number are therefore changed to point to kernel ID rather than dtb ID when dtb does not exist. Signed-off-by: Usama Arif <usama.arif@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/kernel-fitimage.bbclass29
1 files changed, 27 insertions, 2 deletions
diff --git a/meta/classes/kernel-fitimage.bbclass b/meta/classes/kernel-fitimage.bbclass
index 72b05ff8d1..fa4ea6feef 100644
--- a/meta/classes/kernel-fitimage.bbclass
+++ b/meta/classes/kernel-fitimage.bbclass
@@ -257,12 +257,21 @@ fitimage_emit_section_config() {
# Test if we have any DTBs at all
sep=""
conf_desc=""
+ conf_node="conf@"
kernel_line=""
fdt_line=""
ramdisk_line=""
setup_line=""
default_line=""
+ # conf node name is selected based on dtb ID if it is present,
+ # otherwise its selected based on kernel ID
+ if [ -n "${3}" ]; then
+ conf_node=$conf_node${3}
+ else
+ conf_node=$conf_node${2}
+ fi
+
if [ -n "${2}" ]; then
conf_desc="Linux kernel"
sep=", "
@@ -287,12 +296,18 @@ fitimage_emit_section_config() {
fi
if [ "${6}" = "1" ]; then
- default_line="default = \"conf@${3}\";"
+ # default node is selected based on dtb ID if it is present,
+ # otherwise its selected based on kernel ID
+ if [ -n "${3}" ]; then
+ default_line="default = \"conf@${3}\";"
+ else
+ default_line="default = \"conf@${2}\";"
+ fi
fi
cat << EOF >> ${1}
${default_line}
- conf@${3} {
+ $conf_node {
description = "${6} ${conf_desc}";
${kernel_line}
${fdt_line}
@@ -434,6 +449,13 @@ fitimage_assemble() {
#
fitimage_emit_section_maint ${1} confstart
+ # kernel-fitimage.bbclass currently only supports a single kernel (no less or
+ # more) to be added to the FIT image along with 0 or more device trees and
+ # 0 or 1 ramdisk.
+ # If a device tree is to be part of the FIT image, then select
+ # the default configuration to be used is based on the dtbcount. If there is
+ # no dtb present than select the default configuation to be based on
+ # the kernelcount.
if [ -n "${DTBS}" ]; then
i=1
for DTB in ${DTBS}; do
@@ -445,6 +467,9 @@ fitimage_assemble() {
fi
i=`expr ${i} + 1`
done
+ else
+ defaultconfigcount=1
+ fitimage_emit_section_config ${1} "${kernelcount}" "" "${ramdiskcount}" "${setupcount}" "${defaultconfigcount}"
fi
fitimage_emit_section_maint ${1} sectend