]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
kernel-fitimage: dtb sections named by their filenames and one config section for...
authorFlorian Wickert <fw@javox-solutions.com>
Fri, 17 Mar 2017 15:33:03 +0000 (16:33 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 21 Mar 2017 22:43:02 +0000 (22:43 +0000)
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.

Signed-off-by: Florian Wickert <fw@javox-solutions.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/kernel-fitimage.bbclass

index f9702f80327e00f8b1758a395a7fa9c8b8cbedc1..2d344b52cd9d695081d3cd014e9d83bfed39dbb3 100644 (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