From: Arslan Ahmad <arslan_ah...@mentor.com>

The current check for default dtb image checks if the file exists and is
not empty but appends a slash to the path due to which the file is never
found. It also doesn't replace slash in filename with _ as done when
populating the DTB variable. A better way to check the existence of the
device tree would be from the list of DTBs since this is used during
compilation.

Signed-off-by: Arslan Ahmad <arslan_ah...@mentor.com>
---
 meta/classes/kernel-fitimage.bbclass | 30 +++++++++++++++++++---------
 1 file changed, 21 insertions(+), 9 deletions(-)

diff --git a/meta/classes/kernel-fitimage.bbclass 
b/meta/classes/kernel-fitimage.bbclass
index 27e17db951..c75d4e071f 100644
--- a/meta/classes/kernel-fitimage.bbclass
+++ b/meta/classes/kernel-fitimage.bbclass
@@ -345,6 +345,7 @@ EOF
 # $5 ... u-boot script ID
 # $6 ... config ID
 # $7 ... default flag
+# $8 ... default DTB image name
 fitimage_emit_section_config() {
 
        conf_csum="${FIT_HASH_ALG}"
@@ -361,6 +362,7 @@ fitimage_emit_section_config() {
        bootscr_id="$5"
        config_id="$6"
        default_flag="$7"
+       default_dtb_image="$8"
 
        # Test if we have any DTBs at all
        sep=""
@@ -372,7 +374,6 @@ fitimage_emit_section_config() {
        bootscr_line=""
        setup_line=""
        default_line=""
-       default_dtb_image="${FIT_CONF_DEFAULT_DTB}"
 
        # conf node name is selected based on dtb ID if it is present,
        # otherwise its selected based on kernel ID
@@ -418,11 +419,7 @@ fitimage_emit_section_config() {
                        # Select default node as user specified dtb when
                        # multiple dtb exists.
                        if [ -n "$default_dtb_image" ]; then
-                               if [ -s 
"${EXTERNAL_KERNEL_DEVICETREE}/$default_dtb_image" ]; then
-                                       default_line="default = 
\"${FIT_CONF_PREFIX}$default_dtb_image\";"
-                               else
-                                       bbwarn "Couldn't find a valid user 
specified dtb in ${EXTERNAL_KERNEL_DEVICETREE}/$default_dtb_image"
-                               fi
+                               default_line="default = 
\"${FIT_CONF_PREFIX}$default_dtb_image\";"
                        else
                                default_line="default = 
\"${FIT_CONF_PREFIX}$dtb_image\";"
                        fi
@@ -504,6 +501,7 @@ fitimage_assemble() {
        ramdiskcount=$3
        setupcount=""
        bootscr_id=""
+       default_dtb_image=""
        rm -f $1 arch/${ARCH}/boot/$2
 
        if [ -n "${UBOOT_SIGN_IMG_KEYNAME}" -a "${UBOOT_SIGN_KEYNAME}" = 
"${UBOOT_SIGN_IMG_KEYNAME}" ]; then
@@ -542,6 +540,11 @@ fitimage_assemble() {
                                DTB_PATH="arch/${ARCH}/boot/$DTB"
                        fi
 
+                       # Set the default dtb image if it exists in the 
devicetree.
+                       if [ ${FIT_CONF_DEFAULT_DTB} = $DTB ];then
+                               default_dtb_image=$(echo "$DTB" | tr '/' '_')
+                       fi
+
                        DTB=$(echo "$DTB" | tr '/' '_')
 
                        # Skip DTB if we've picked it up previously
@@ -556,6 +559,11 @@ fitimage_assemble() {
                dtbcount=1
                for DTB in $(find "${EXTERNAL_KERNEL_DEVICETREE}" -name '*.dtb' 
-printf '%P\n' | sort) \
                $(find "${EXTERNAL_KERNEL_DEVICETREE}" -name '*.dtbo' -printf 
'%P\n' | sort); do
+                       # Set the default dtb image if it exists in the 
devicetree.
+                       if [ ${FIT_CONF_DEFAULT_DTB} = $DTB ];then
+                               default_dtb_image=$(echo "$DTB" | tr '/' '_')
+                       fi
+
                        DTB=$(echo "$DTB" | tr '/' '_')
 
                        # Skip DTB/DTBO if we've picked it up previously
@@ -566,6 +574,10 @@ fitimage_assemble() {
                done
        fi
 
+       if [ -n "${FIT_CONF_DEFAULT_DTB}" ] && [ -z $default_dtb_image ]; then 
+               bbwarn "${FIT_CONF_DEFAULT_DTB} is not available in the list of 
device trees."
+       fi
+
        #
        # Step 3: Prepare a u-boot script section
        #
@@ -638,15 +650,15 @@ fitimage_assemble() {
                for DTB in ${DTBS}; do
                        dtb_ext=${DTB##*.}
                        if [ "$dtb_ext" = "dtbo" ]; then
-                               fitimage_emit_section_config $1 "" "$DTB" "" 
"$bootscr_id" "" "`expr $i = $dtbcount`"
+                               fitimage_emit_section_config $1 "" "$DTB" "" 
"$bootscr_id" "" "`expr $i = $dtbcount`" "$default_dtb_image"
                        else
-                               fitimage_emit_section_config $1 $kernelcount 
"$DTB" "$ramdiskcount" "$bootscr_id" "$setupcount" "`expr $i = $dtbcount`"
+                               fitimage_emit_section_config $1 $kernelcount 
"$DTB" "$ramdiskcount" "$bootscr_id" "$setupcount" "`expr $i = $dtbcount`" 
"$default_dtb_image"
                        fi
                        i=`expr $i + 1`
                done
        else
                defaultconfigcount=1
-               fitimage_emit_section_config $1 $kernelcount "" "$ramdiskcount" 
"$bootscr_id"  "$setupcount" $defaultconfigcount
+               fitimage_emit_section_config $1 $kernelcount "" "$ramdiskcount" 
"$bootscr_id"  "$setupcount" $defaultconfigcount "$default_dtb_image"
        fi
 
        fitimage_emit_section_maint $1 sectend
-- 
2.40.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#179400): 
https://lists.openembedded.org/g/openembedded-core/message/179400
Mute This Topic: https://lists.openembedded.org/mt/97968048/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to