boot: don't set fdt_file on bootscript; just the overlays

With the device tree overlays mechanism in place, the bootscript
doesn't need to set the fdt_file variable. Instead, it will use
the value it has (which can be changed by the user) and it will
simply update the 'overlays' variable with the device tree
overlays that apply basing on the hardware capabilities found
on the HWID, SOM version, and carrier board version.

This allows a user to override the default fdt_file to point
to his custom device tree, but still make use of the boot script
for hardware-detected overlays.

Without the need to set the base filename, the boot script is the
same for any carrier board of the ccimx8x SOM, so this commit
moves it to a common folder.

Signed-off-by: Hector Palacios <hector.palacios@digi.com>
This commit is contained in:
Hector Palacios 2020-05-26 17:25:11 +02:00
parent c2d20ce86c
commit f58ccb7463
3 changed files with 35 additions and 121 deletions

View File

@ -8,36 +8,28 @@ if test ! -n "${soc_type}"; then
fi
#
# Set device tree filename depending on the board ID (if defined)
# Determine overlays to apply depending on the hardware capabilities
# described by the HWID, SOM version, and carrier board version.
#
if test -n "${board_id}"; then
setenv fdt_file cc${soc_type}-dvk-id${board_id}.dtb
else
#
# Set device tree filename depending on the hardware capabilities
#
if test -n "${module_ram}"; then
setexpr som_hv ${hwid_2} \& 38
setexpr som_hv ${som_hv} / 8
if test -n "${module_ram}"; then
setexpr som_hv ${hwid_2} \& 38
setexpr som_hv ${som_hv} / 8
setexpr module_has_wifi ${hwid_2} \& 10000
setexpr module_has_wifi ${module_has_wifi} / 10000
setexpr module_has_bt ${hwid_2} \& 20000
setexpr module_has_bt ${module_has_bt} / 20000
setexpr module_has_wifi ${hwid_2} \& 10000
setexpr module_has_wifi ${module_has_wifi} / 10000
setexpr module_has_bt ${hwid_2} \& 20000
setexpr module_has_bt ${module_has_bt} / 20000
setenv fdt_file cc${soc_type}-dvk.dtb
if test "${module_has_bt}" = "1"; then
setenv overlays cc${soc_type}_ov_bt.dtbo,${overlays}
fi
if test "${module_has_bt}" = "1"; then
setenv overlays cc${soc_type}_ov_bt.dtbo,${overlays}
fi
if test "${module_has_wifi}" = "1"; then
setenv overlays cc${soc_type}_ov_wifi.dtbo,${overlays}
fi
if test "${module_has_wifi}" = "1"; then
setenv overlays cc${soc_type}_ov_wifi.dtbo,${overlays}
fi
if test "${som_hv}" = "1"; then
setenv overlays cc${soc_type}_ov_v1.dtbo,${overlays}
fi
if test "${som_hv}" = "1"; then
setenv overlays cc${soc_type}_ov_v1.dtbo,${overlays}
fi
fi

View File

@ -1,67 +0,0 @@
#
# U-Boot bootscript for EMMC/SD images created by Yocto.
#
# Set SOC type to "imx8qxp" if not already defined by U-Boot
if test ! -n "${soc_type}"; then
setenv soc_type "imx8qxp"
fi
#
# Set the base device tree filename
#
setenv fdt_file ccimx8x-sbc-express.dtb
#
# Set predetermined overlays for specific board IDs
#
if test "${board_id}" = "129"; then
setenv overlays ccimx8x_ov_bt.dtbo,ccimx8x_ov_wifi.dtbo,${overlays}
else
#
# Set overlays depending on the hardware capabilities
#
if test -n "${module_ram}"; then
setexpr module_has_wifi ${hwid_3} \& 1
setexpr module_has_bt ${hwid_3} \& 2
setexpr module_has_bt ${module_has_bt} / 2
if test "${module_has_bt}" = "1"; then
setenv overlays ccimx8x_ov_bt.dtbo,${overlays}
fi
if test "${module_has_wifi}" = "1"; then
setenv overlays ccimx8x_ov_wifi.dtbo,${overlays}
fi
else
#
# Set overlays depending on the hardware variant
#
if test "${module_variant}" = "0x01" ||
test "${module_variant}" = "0x02" ||
test "${module_variant}" = "0x04"; then
setenv overlays ccimx8x_ov_bt.dtbo,ccimx8x_ov_wifi.dtbo,${overlays}
fi
fi
fi
# Apply QXP overlay if the SOC type is "imx8qxp"
if test "${soc_type}" = "imx8qxp""; then
setenv overlays ccimx8x_ov_qxp.dtbo,${overlays}
fi
# Get the UUID of the configured boot partition.
part uuid mmc ${mmcbootdev}:${mmcpart} bootpart
# Check the boot source.
if test "${bootpart}" = "${part1_uuid}"; then
# We are booting from the eMMC using 'linux'.
true
elif test "${bootpart}" = "${part2_uuid}"; then
# We are booting from the eMMC using 'recovery'.
setenv boot_initrd true
setenv initrd_file uramdisk-recovery.img
else
# We are booting from the SD card.
setenv mmcroot /dev/mmcblk${mmcbootdev}p2
fi
dboot linux mmc ${mmcbootdev}:${mmcpart}

View File

@ -8,40 +8,29 @@ if test ! -n "${soc_type}"; then
fi
#
# Set the base device tree filename
# Determine overlays to apply depending on the hardware capabilities
# described by the HWID, SOM version, and carrier board version.
#
setenv fdt_file ccimx8x-sbc-pro.dtb
if test -n "${module_ram}"; then
setexpr module_has_wifi ${hwid_3} \& 1
setexpr module_has_bt ${hwid_3} \& 2
setexpr module_has_bt ${module_has_bt} / 2
#
# Set predetermined overlays for specific board IDs
#
if test "${board_id}" = "135"; then
setenv overlays ccimx8x_ov_bt.dtbo,ccimx8x_ov_wifi.dtbo,${overlays}
if test "${module_has_bt}" = "1"; then
setenv overlays ccimx8x_ov_bt.dtbo,${overlays}
fi
if test "${module_has_wifi}" = "1"; then
setenv overlays ccimx8x_ov_wifi.dtbo,${overlays}
fi
else
#
# Set overlays depending on the hardware capabilities
# Set overlays depending on the hardware variant
#
if test -n "${module_ram}"; then
setexpr module_has_wifi ${hwid_3} \& 1
setexpr module_has_bt ${hwid_3} \& 2
setexpr module_has_bt ${module_has_bt} / 2
if test "${module_has_bt}" = "1"; then
setenv overlays ccimx8x_ov_bt.dtbo,${overlays}
fi
if test "${module_has_wifi}" = "1"; then
setenv overlays ccimx8x_ov_wifi.dtbo,${overlays}
fi
else
#
# Set overlays depending on the hardware variant
#
if test "${module_variant}" = "0x01" ||
test "${module_variant}" = "0x02" ||
test "${module_variant}" = "0x04"; then
setenv overlays ccimx8x_ov_bt.dtbo,ccimx8x_ov_wifi.dtbo,${overlays}
fi
if test "${module_variant}" = "0x01" ||
test "${module_variant}" = "0x02" ||
test "${module_variant}" = "0x04"; then
setenv overlays ccimx8x_ov_bt.dtbo,ccimx8x_ov_wifi.dtbo,${overlays}
fi
fi