@@ -15,3 +15,6 @@ NO_INITRD=""
# U-boot commands to prepend to boot script
SCRIPT_PREPEND=""
+
+# use u-boot builtin device tree
+BUILTIN_DT="no"
@@ -33,10 +33,18 @@ echo "${SCRIPT_PREPEND}" >> ${BOOT_CMD}
echo "setenv bootargs ${KERNEL_ARGS}" >> ${BOOT_CMD}
-echo "echo Loading /usr/lib/linux-image-${KERNEL_VERSION}/\${fdtfile}..." \
- >> ${BOOT_CMD}
-echo "load \${devtype} \${devnum}:${ROOT_PARTITION} \${fdt_addr_r}" \
- "/usr/lib/linux-image-${KERNEL_VERSION}/\${fdtfile}" >> ${BOOT_CMD}
+if [ "${BUILTIN_DT}" = "yes" ]; then
+ echo "echo Loading builtin device tree..." \
+ >> ${BOOT_CMD}
+ echo "fdt addr \${fdtcontroladdr}" >> ${BOOT_CMD}
+ echo "fdt move \${fdtcontroladdr} \${fdt_addr_r}" >> ${BOOT_CMD}
+else
+ echo "echo Loading /usr/lib/linux-image-${KERNEL_VERSION}/\${fdtfile}..." \
+ >> ${BOOT_CMD}
+ echo "load \${devtype} \${devnum}:${ROOT_PARTITION} \${fdt_addr_r}" \
+ "/usr/lib/linux-image-${KERNEL_VERSION}/\${fdtfile}" >> ${BOOT_CMD}
+fi
+
echo "echo Loading /boot/${KERNEL_FILE}-${KERNEL_VERSION}..." >> ${BOOT_CMD}
echo "load \${devtype} \${devnum}:\${distro_bootpart} \${kernel_addr_r}" \
"/boot/${KERNEL_FILE}-${KERNEL_VERSION}" >> ${BOOT_CMD}
@@ -10,6 +10,7 @@
# Recognized sourceparams:
# - no_initrd=yes (disables initrd loading)
# - overlays=file.dtbo ... (overlay files)
+# - builtin_dt=no (use DT from uboot instead of kernel)
# - script_prepend=cmd;... (prepends U-Boot command)
import glob
@@ -82,6 +83,8 @@ class RootfsUBootPlugin(RootfsPlugin):
cfg.write('NO_INITRD="%s"\n' % no_initrd)
overlays = source_params.get('overlays') or ''
cfg.write('OVERLAYS="%s"\n' % overlays)
+ builtin_dt = source_params.get('builtin_dt') or ''
+ cfg.write('BUILTIN_DT="%s"\n' % builtin_dt)
script_prepend = source_params.get('script_prepend') or ''
# remove escapes from $\{var\} that are needed to avoid expansion by wic
script_prepend = re.sub(r'\$\\{([^\\]+)\\}', r'${\1}', script_prepend)
This patch adds support to use the u-boot builtin device tree instead of the one from the rootfs / linux. This enables the use of dt overlays even if the corresponding device tree in the kernel is not compiled with symbol support (uboot builtin DTBs always have symbol information). To use the builtin dt, add the WKS sourceparam "builtin_dt=yes" to the rootfs-u-boot sourcer. Co-developed-by: Florian Bezdeka <florian.bezdeka@siemens.com> Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com> --- .../u-boot-script/files/u-boot-script | 3 +++ .../u-boot-script/files/update-u-boot-script | 16 ++++++++++++---- .../lib/wic/plugins/source/rootfs-u-boot.py | 3 +++ 3 files changed, 18 insertions(+), 4 deletions(-)