Files
u-boot/arch/arm/dts/imx8mq-u-boot.dtsi
Peng Fan 5b6dba2924 imx8mq: Correct signed_hdmi firmware position
signed_hdmi_imx8m.bin is already signed and has a IVT header. It should not
be put in u-boot-spl-mkimage.signed.bin. Move it to head of flash.bin
following NXP imx-mkimage. Keeping it in u-boot-spl-mkimage.signed.bin also
consumes a lot of TCM space which is not expected.

While moving it to head of flash.bin, other changes are required,
u-boot.itb is put at sector 768 per defconfig, so u-boot.itb binman
offset should be updated and it should be moved out from binman section.

Also binman symbol address are updated, so need to subtract u-boot-spl
image_pos + CONFIG_SPL_TEXT_BASE to find the correct location of ddr phy
firmware.

Because there is 1KB padding in HDMI firmware, use 32KB when burning
flash.bin to sd card.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
2026-04-21 20:49:39 -03:00

220 lines
4.2 KiB
Plaintext

// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright 2021 NXP
*/
/ {
binman: binman {
};
imx8mq-cm4 {
compatible = "fsl,imx8mq-cm4";
syscon = <&src>;
};
};
&soc {
bootph-pre-ram;
};
&aips1 {
bootph-pre-ram;
};
&aips2 {
bootph-pre-ram;
};
&aips3 {
bootph-pre-ram;
};
&aips4 {
bootph-pre-ram;
};
&iomuxc {
bootph-pre-ram;
};
&binman {
filename = "flash.bin";
section {
pad-byte = <0x00>;
/*
* signed_hdmi_imx8m.bin contains a 1KB zero-filled padding at
* its beginning. This padding has no functional purpose, but
* the firmware is provided and signed by NXP, so the head
* must be preserved and should not be removed.
*
* When the signed HDMI firmware is placed at the beginning of
* flash.bin, the IVT header of u-boot-spl must still reside at
* a 4KB-aligned address. Since flash.bin starts with the HDMI
* firmware (including its 1KB padding), there is already a 1KB
* empty region at the head of flash.bin.
*
* The required 4KB alignment is therefore calculated relative
* to the location after this 1KB padding. To achieve this, we
* explicitly set align and align-size to 0x1000, and add an
* additional 0x400 (1KB) fill to account for the padding.
*/
signed-hdmi-imx8m {
filename = "signed_hdmi_imx8m.bin";
type = "blob-ext";
align = <0x1000>;
align-size = <0x1000>;
};
fill {
size = <0x400>;
};
#ifdef CONFIG_IMX_HAB
nxp-imx8mcst@0 {
filename = "u-boot-spl-mkimage.signed.bin";
nxp,loader-address = <CONFIG_SPL_TEXT_BASE>;
nxp,unlock;
args; /* Needed by mkimage etype superclass */
#endif
binman_imx_spl: nxp-imx8mimage {
filename = "u-boot-spl-mkimage.bin";
nxp,boot-from = "sd";
nxp,rom-version = <1>;
nxp,loader-address = <CONFIG_SPL_TEXT_BASE>;
args; /* Needed by mkimage etype superclass */
section {
align = <4>;
align-size = <4>;
filename = "u-boot-spl-ddr.bin";
pad-byte = <0xff>;
u-boot-spl {
align-end = <4>;
filename = "u-boot-spl.bin";
};
ddr-1d-imem-fw {
filename = "lpddr4_pmu_train_1d_imem.bin";
align-end = <4>;
type = "blob-ext";
};
ddr-1d-dmem-fw {
filename = "lpddr4_pmu_train_1d_dmem.bin";
align-end = <4>;
type = "blob-ext";
};
ddr-2d-imem-fw {
filename = "lpddr4_pmu_train_2d_imem.bin";
align-end = <4>;
type = "blob-ext";
};
ddr-2d-dmem-fw {
filename = "lpddr4_pmu_train_2d_dmem.bin";
align-end = <4>;
type = "blob-ext";
};
};
};
#ifdef CONFIG_IMX_HAB
};
#endif
};
#ifdef CONFIG_IMX_HAB
nxp-imx8mcst@1 {
filename = "u-boot-fit.signed.bin";
nxp,loader-address = <CONFIG_SPL_LOAD_FIT_ADDRESS>;
offset = <0x58400>;
args; /* Needed by mkimage etype superclass */
#endif
binman_imx_fit: fit {
description = "Configuration to load ATF before U-Boot";
filename = "u-boot.itb";
#ifndef CONFIG_IMX_HAB
fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
#endif
#address-cells = <1>;
offset = <0x58000>;
images {
uboot {
arch = "arm64";
compression = "none";
description = "U-Boot (64-bit)";
load = <CONFIG_TEXT_BASE>;
type = "standalone";
uboot-blob {
filename = "u-boot-nodtb.bin";
type = "blob-ext";
};
};
#ifndef CONFIG_ARMV8_PSCI
atf {
arch = "arm64";
compression = "none";
description = "ARM Trusted Firmware";
entry = <0x910000>;
load = <0x910000>;
type = "firmware";
atf-blob {
filename = "bl31.bin";
type = "blob-ext";
};
};
#endif
tee: tee {
description = "OP-TEE";
type = "tee";
arch = "arm64";
compression = "none";
os = "tee";
load = <CONFIG_IMX8M_OPTEE_LOAD_ADDR>;
entry = <CONFIG_IMX8M_OPTEE_LOAD_ADDR>;
tee-os {
filename = "tee.bin";
optional;
};
};
fdt {
compression = "none";
description = "NAME";
type = "flat_dt";
uboot-fdt-blob {
filename = "u-boot.dtb";
type = "blob-ext";
};
};
};
configurations {
default = "conf";
conf {
description = "NAME";
fdt = "fdt";
firmware = "uboot";
#ifndef CONFIG_ARMV8_PSCI
loadables = "atf", "tee";
#endif
};
};
};
#ifdef CONFIG_IMX_HAB
};
#endif
};