diff --git a/meta/recipes-bsp/u-boot-script/files/u-boot-script b/meta/recipes-bsp/u-boot-script/files/u-boot-script
index d053d721..a11212c0 100644
--- a/meta/recipes-bsp/u-boot-script/files/u-boot-script
+++ b/meta/recipes-bsp/u-boot-script/files/u-boot-script
@@ -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"
diff --git a/meta/recipes-bsp/u-boot-script/files/update-u-boot-script b/meta/recipes-bsp/u-boot-script/files/update-u-boot-script
index 1d9c6d45..2eb6097c 100755
--- a/meta/recipes-bsp/u-boot-script/files/update-u-boot-script
+++ b/meta/recipes-bsp/u-boot-script/files/update-u-boot-script
@@ -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}
diff --git a/meta/scripts/lib/wic/plugins/source/rootfs-u-boot.py b/meta/scripts/lib/wic/plugins/source/rootfs-u-boot.py
index 0b4f9eec..93600dc2 100644
--- a/meta/scripts/lib/wic/plugins/source/rootfs-u-boot.py
+++ b/meta/scripts/lib/wic/plugins/source/rootfs-u-boot.py
@@ -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)
