Merge tag 'u-boot-imx-master-20260604' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx
CI: https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/30353 - Fix RAM size calculation on verdin-imx95. - Fix boot from SPI on i.MX8MM. - Fix boot abort on kontron-sl-mx6ul. - Fix the imx8 CPU market segment report.
This commit is contained in:
@@ -50,14 +50,6 @@
|
||||
section {
|
||||
pad-byte = <0x00>;
|
||||
|
||||
#ifdef CONFIG_FSPI_CONF_HEADER
|
||||
fspi_conf_block {
|
||||
filename = CONFIG_FSPI_CONF_FILE;
|
||||
type = "blob-ext";
|
||||
size = <0x1000>;
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX_HAB
|
||||
nxp-imx8mcst@0 {
|
||||
filename = "u-boot-spl-mkimage.signed.bin";
|
||||
@@ -68,7 +60,12 @@
|
||||
|
||||
binman_imx_spl: nxp-imx8mimage {
|
||||
filename = "u-boot-spl-mkimage.bin";
|
||||
#ifdef CONFIG_FSPI_CONF_HEADER
|
||||
nxp,boot-from = "fspi";
|
||||
nxp,fspi-header-filename = CONFIG_FSPI_CONF_FILE;
|
||||
#else
|
||||
nxp,boot-from = "sd";
|
||||
#endif
|
||||
nxp,rom-version = <1>;
|
||||
nxp,loader-address = <CONFIG_SPL_TEXT_BASE>;
|
||||
args; /* Needed by mkimage etype superclass */
|
||||
|
||||
@@ -104,14 +104,6 @@
|
||||
section {
|
||||
pad-byte = <0x00>;
|
||||
|
||||
#ifdef CONFIG_FSPI_CONF_HEADER
|
||||
fspi_conf_block {
|
||||
filename = CONFIG_FSPI_CONF_FILE;
|
||||
type = "blob-ext";
|
||||
offset = <0x400>;
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IMX_HAB
|
||||
nxp-imx8mcst@0 {
|
||||
filename = "u-boot-spl-mkimage.signed.bin";
|
||||
@@ -122,7 +114,12 @@
|
||||
|
||||
binman_imx_spl: nxp-imx8mimage {
|
||||
filename = "u-boot-spl-mkimage.bin";
|
||||
#ifdef CONFIG_FSPI_CONF_HEADER
|
||||
nxp,boot-from = "fspi";
|
||||
nxp,fspi-header-filename = CONFIG_FSPI_CONF_FILE;
|
||||
#else
|
||||
nxp,boot-from = "sd";
|
||||
#endif
|
||||
nxp,rom-version = <2>;
|
||||
nxp,loader-address = <CONFIG_SPL_TEXT_BASE>;
|
||||
args; /* Needed by mkimage etype superclass */
|
||||
|
||||
@@ -50,10 +50,10 @@ int board_late_init(void)
|
||||
}
|
||||
|
||||
static const struct ram_alias_check ram_alias_checks[] = {
|
||||
{ (void *)(PHYS_SDRAM + SZ_8G), (void *)(PHYS_SDRAM), SZ_16G },
|
||||
{ (void *)(PHYS_SDRAM + SZ_4G), (void *)(PHYS_SDRAM), SZ_8G },
|
||||
{ (void *)(PHYS_SDRAM + SZ_2G), (void *)(PHYS_SDRAM), SZ_4G },
|
||||
{ (void *)(PHYS_SDRAM + SZ_1G), (void *)(PHYS_SDRAM), SZ_2G },
|
||||
{ (void *)((uintptr_t)PHYS_SDRAM + SZ_8G), (void *)(PHYS_SDRAM), SZ_16G },
|
||||
{ (void *)((uintptr_t)PHYS_SDRAM + SZ_4G), (void *)(PHYS_SDRAM), SZ_8G },
|
||||
{ (void *)((uintptr_t)PHYS_SDRAM + SZ_2G), (void *)(PHYS_SDRAM), SZ_4G },
|
||||
{ (void *)((uintptr_t)PHYS_SDRAM + SZ_1G), (void *)(PHYS_SDRAM), SZ_2G },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
|
||||
@@ -92,6 +92,7 @@ CONFIG_DM_SPI_FLASH=y
|
||||
CONFIG_SPI_FLASH_MACRONIX=y
|
||||
CONFIG_SPI_FLASH_WINBOND=y
|
||||
CONFIG_SPI_FLASH_MTD=y
|
||||
CONFIG_DM_MDIO=y
|
||||
CONFIG_DM_ETH_PHY=y
|
||||
CONFIG_FEC_MXC=y
|
||||
CONFIG_MII=y
|
||||
|
||||
@@ -222,7 +222,7 @@ static int cpu_imx_get_desc(const struct udevice *dev, char *buf, int size)
|
||||
ret = snprintf(buf, size, "NXP i.MX%s Rev%s %s at %u MHz",
|
||||
plat->type, plat->rev, plat->name, plat->freq_mhz);
|
||||
|
||||
if (IS_ENABLED(CONFIG_IMX_TMU)) {
|
||||
if (!IS_ENABLED(CONFIG_IMX8)) { /* imx8 does not have segment fuse */
|
||||
switch (get_cpu_temp_grade(&minc, &maxc)) {
|
||||
case TEMP_AUTOMOTIVE:
|
||||
grade = "Automotive temperature grade";
|
||||
@@ -231,7 +231,10 @@ static int cpu_imx_get_desc(const struct udevice *dev, char *buf, int size)
|
||||
grade = "Industrial temperature grade";
|
||||
break;
|
||||
case TEMP_EXTCOMMERCIAL:
|
||||
grade = "Extended Consumer temperature grade";
|
||||
if (IS_ENABLED(CONFIG_ARCH_IMX9))
|
||||
grade = "Extended Industrial temperature grade";
|
||||
else
|
||||
grade = "Extended Consumer temperature grade";
|
||||
break;
|
||||
default:
|
||||
grade = "Consumer temperature grade";
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
# configuration file and input data.
|
||||
#
|
||||
|
||||
import os
|
||||
|
||||
from collections import OrderedDict
|
||||
|
||||
from binman.entry import Entry
|
||||
@@ -23,6 +25,8 @@ class Entry_nxp_imx8mimage(Entry_mkimage):
|
||||
- nxp,boot-from - device to boot from (e.g. 'sd')
|
||||
- nxp,loader-address - loader address (SPL text base)
|
||||
- nxp,rom-version - BootROM version ('2' for i.MX8M Nano and Plus)
|
||||
- nxp,fspi-header-filename - FSPI header file name (CONFIG_FSPI_CONF_FILE).
|
||||
Used only if 'nxp,boot-from == "fspi"' .
|
||||
"""
|
||||
|
||||
def __init__(self, section, etype, node):
|
||||
@@ -33,6 +37,7 @@ class Entry_nxp_imx8mimage(Entry_mkimage):
|
||||
def ReadNode(self):
|
||||
super().ReadNode()
|
||||
self.boot_from = fdt_util.GetString(self._node, 'nxp,boot-from')
|
||||
self.fspi_header = fdt_util.GetString(self._node, 'nxp,fspi-header-filename', 'fspi_header.bin')
|
||||
self.loader_address = fdt_util.GetInt(self._node, 'nxp,loader-address')
|
||||
self.rom_version = fdt_util.GetInt(self._node, 'nxp,rom-version')
|
||||
self.ReadEntries()
|
||||
@@ -52,7 +57,14 @@ class Entry_nxp_imx8mimage(Entry_mkimage):
|
||||
args = ['-d', input_fname, '-n', cfg_fname, '-T', 'imx8mimage',
|
||||
output_fname]
|
||||
if self.mkimage.run_cmd(*args) is not None:
|
||||
return tools.read_file(output_fname)
|
||||
outdata = tools.read_file(output_fname)
|
||||
if self.boot_from == 'fspi':
|
||||
spidata = tools.read_file(os.path.join(tools.get_output_dir(), self.fspi_header))
|
||||
if len(spidata) != 448:
|
||||
raise ValueError("FSPI header is not 448 Bytes long")
|
||||
spidata += tools.get_bytes(0, 0x1000 - len(spidata))
|
||||
outdata = spidata + outdata
|
||||
return outdata
|
||||
else:
|
||||
# Bintool is missing; just use the input data as the output
|
||||
self.record_missing_bintool(self.mkimage)
|
||||
|
||||
@@ -8099,6 +8099,20 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
|
||||
result = cst.fetch(bintool.FETCH_BUILD)
|
||||
self.assertEqual(('cst', None), result)
|
||||
|
||||
def testNxpImx8MFSPI(self):
|
||||
"""Test that binman can produce an iMX8m FSPI image"""
|
||||
testdir = tempfile.mkdtemp(prefix='binman.')
|
||||
|
||||
tools.write_file(os.path.join(testdir, 'fspi_header.bin'), tools.get_bytes(0, 448))
|
||||
with terminal.capture():
|
||||
self._DoTestFile('vendor/nxp_imx8m_fspi.dts', output_dir=testdir)
|
||||
self._DoTestFile('vendor/nxp_imx8m_fspi_pass.dts', output_dir=testdir)
|
||||
|
||||
tools.write_file(os.path.join(testdir, 'fspi_header_fail.bin'), tools.get_bytes(0, 4097))
|
||||
with terminal.capture():
|
||||
with self.assertRaises(ValueError) as e:
|
||||
self._DoTestFile('vendor/nxp_imx8m_fspi_fail.dts', output_dir=testdir)
|
||||
|
||||
def testNxpHeaderDdrfw(self):
|
||||
"""Test that binman can add a header to DDR PHY firmware images"""
|
||||
data = self._DoReadFile('vendor/nxp_ddrfw_imx95.dts')
|
||||
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
binman {
|
||||
nxp-imx8mimage {
|
||||
args; /* TODO: Needed by mkimage etype superclass */
|
||||
nxp,boot-from = "fspi";
|
||||
nxp,fspi-header-filename = "fspi_header.bin";
|
||||
nxp,rom-version = <1>;
|
||||
nxp,loader-address = <0x10>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,18 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
binman {
|
||||
nxp-imx8mimage {
|
||||
args; /* TODO: Needed by mkimage etype superclass */
|
||||
nxp,boot-from = "fspi";
|
||||
nxp,fspi-header-filename = "fspi_header_fail.bin";
|
||||
nxp,rom-version = <2>;
|
||||
nxp,loader-address = <0x10>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,18 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
binman {
|
||||
nxp-imx8mimage {
|
||||
args; /* TODO: Needed by mkimage etype superclass */
|
||||
nxp,boot-from = "fspi";
|
||||
/* Default nxp,fspi-header-filename = "fspi_header.bin"; */
|
||||
nxp,rom-version = <2>;
|
||||
nxp,loader-address = <0x10>;
|
||||
};
|
||||
};
|
||||
};
|
||||
+1
-1
@@ -80,7 +80,7 @@ static table_entry_t imx8image_core_entries[] = {
|
||||
static table_entry_t imx8image_sector_size[] = {
|
||||
{0x400, "sd", "sd/emmc",},
|
||||
{0x400, "emmc_fastboot", "emmc fastboot",},
|
||||
{0x400, "fspi", "flexspi", },
|
||||
{0x1000, "fspi", "flexspi", },
|
||||
{0x1000, "nand_4k", "nand 4K", },
|
||||
{0x2000, "nand_8k", "nand 8K", },
|
||||
{0x4000, "nand_16k", "nand 16K", },
|
||||
|
||||
Reference in New Issue
Block a user