How the exact device tree is selected by u-boot#

Each of the ARM based MSCPlus SOMs is shipped with an U-Boot bootloader that is capable of booting different variants.

The exact variant to be booted, and therefore a matching device tree, is determined using the builtin boardinfo tool.

This tool uses the manufacturing data found in the EEPROM and assembles it to a device tree file name, like shown in the following code snippet for an iMX95 board

fdt = env_get("fdt_module");
if (fdt == NULL || !strcmp(fdt, "undefined")) {
    snprintf(buff, ENV_FDTFILE_MAX_SIZE, "%s-%s-%s-%s-module.dtb",
            bi_get_company(binfo), bi_get_form_factor(binfo),
            bi_get_platform(binfo), bi_get_feature(binfo));
    env_set("fdt_module", buff);
}

the individual settings can also be viewed using boardinfo show.

For example this returns

company .......... msc
form factor ...... sm2s
platform ......... imx95
processor ........ imx95
feature .......... 35N06C1I
serial ........... 1019515763
revision (MES) ... 11
boot count ....... 83

so for this particular board msc-sm2s-imx95-35N06C1I-module.dtb would be the exact device tree passed to the kernel.

You can double check by running printenv fdt_module from the U-Boot console.