mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-04 20:26:13 +02:00
binman: add a new entry type for packing DDR PHY firmware images
i.MX95 needs to combine DDR PHY firmware images and their byte counts together, so add a new entry type nxp-header-ddrfw for this requirement. Signed-off-by: Alice Guo <alice.guo@nxp.com>
This commit is contained in:
parent
d292f30d52
commit
0318c26c2f
@ -1663,6 +1663,16 @@ Properties / Entry arguments:
|
||||
|
||||
|
||||
|
||||
.. _etype_nxp_header_ddrfw:
|
||||
|
||||
Entry: nxp-header-ddrfw: add a header to DDR PHY firmware images
|
||||
----------------------------------------------------------------
|
||||
|
||||
This entry is used to combine DDR PHY firmware images and their byte counts
|
||||
together. See imx95_evk.rst for how to get DDR PHY Firmware Images.
|
||||
|
||||
|
||||
|
||||
.. _etype_opensbi:
|
||||
|
||||
Entry: opensbi: RISC-V OpenSBI fw_dynamic blob
|
||||
|
||||
29
tools/binman/etype/nxp_header_ddrfw.py
Normal file
29
tools/binman/etype/nxp_header_ddrfw.py
Normal file
@ -0,0 +1,29 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
# Copyright 2025 NXP
|
||||
|
||||
from binman.etype.section import Entry_section
|
||||
|
||||
class Entry_nxp_header_ddrfw(Entry_section):
|
||||
"""Add a header to DDR PHY firmware images
|
||||
|
||||
This entry is used for i.MX95 to combine DDR PHY firmware images and their
|
||||
byte counts together.
|
||||
|
||||
See imx95_evk.rst for how to get DDR PHY Firmware Images.
|
||||
"""
|
||||
|
||||
def __init__(self, section, etype, node):
|
||||
super().__init__(section, etype, node)
|
||||
|
||||
def BuildSectionData(self, required):
|
||||
section_data = bytearray()
|
||||
header_data = bytearray()
|
||||
|
||||
for entry in self._entries.values():
|
||||
entry_data = entry.GetData(required)
|
||||
|
||||
section_data += entry_data
|
||||
header_data += entry.contents_size.to_bytes(4, 'little')
|
||||
|
||||
return header_data + section_data
|
||||
@ -104,6 +104,8 @@ PRE_LOAD_VERSION = 0x11223344.to_bytes(4, 'big')
|
||||
PRE_LOAD_HDR_SIZE = 0x00001000.to_bytes(4, 'big')
|
||||
TI_BOARD_CONFIG_DATA = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
|
||||
TI_UNSECURE_DATA = b'unsecuredata'
|
||||
IMX_LPDDR_IMEM_DATA = b'qwertyuiop1234567890'
|
||||
IMX_LPDDR_DMEM_DATA = b'asdfghjklzxcvbnm'
|
||||
|
||||
# Subdirectory of the input dir to use to put test FDTs
|
||||
TEST_FDT_SUBDIR = 'fdts'
|
||||
@ -202,6 +204,8 @@ class TestFunctional(unittest.TestCase):
|
||||
TestFunctional._MakeInputFile('fsp_m.bin', FSP_M_DATA)
|
||||
TestFunctional._MakeInputFile('fsp_s.bin', FSP_S_DATA)
|
||||
TestFunctional._MakeInputFile('fsp_t.bin', FSP_T_DATA)
|
||||
TestFunctional._MakeInputFile('lpddr5_imem.bin', IMX_LPDDR_IMEM_DATA)
|
||||
TestFunctional._MakeInputFile('lpddr5_dmem.bin', IMX_LPDDR_DMEM_DATA)
|
||||
|
||||
cls._elf_testdir = os.path.join(cls._indir, 'elftest')
|
||||
elf_test.BuildElfTestFiles(cls._elf_testdir)
|
||||
@ -7848,6 +7852,13 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
|
||||
"""Test that binman can produce an iMX8 image"""
|
||||
self._DoTestFile('339_nxp_imx8.dts')
|
||||
|
||||
def testNxpHeaderDdrfw(self):
|
||||
"""Test that binman can add a header to DDR PHY firmware images"""
|
||||
data = self._DoReadFile('346_nxp_ddrfw_imx95.dts')
|
||||
self.assertEqual(len(IMX_LPDDR_IMEM_DATA).to_bytes(4, 'little') +
|
||||
len(IMX_LPDDR_DMEM_DATA).to_bytes(4, 'little') +
|
||||
IMX_LPDDR_IMEM_DATA + IMX_LPDDR_DMEM_DATA, data)
|
||||
|
||||
def testFitSignSimple(self):
|
||||
"""Test that image with FIT and signature nodes can be signed"""
|
||||
if not elf.ELF_TOOLS:
|
||||
|
||||
24
tools/binman/test/346_nxp_ddrfw_imx95.dts
Normal file
24
tools/binman/test/346_nxp_ddrfw_imx95.dts
Normal file
@ -0,0 +1,24 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
binman {
|
||||
imx-lpddr {
|
||||
type = "nxp-header-ddrfw";
|
||||
|
||||
imx-lpddr-imem {
|
||||
filename = "lpddr5_imem.bin";
|
||||
type = "blob-ext";
|
||||
};
|
||||
|
||||
imx-lpddr-dmem {
|
||||
filename = "lpddr5_dmem.bin";
|
||||
type = "blob-ext";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user