For K3 devices that require a sysfw image, add entry for SYSFW. It can contain system firmware image that can be packaged into sysfw.itb by binman.
Signed-off-by: Tarun Sahu <t-s...@ti.com> [n-fran...@ti.com: added tests for addition of etype] Signed-off-by: Neha Malcom Francis <n-fran...@ti.com> --- Makefile | 1 + tools/binman/entries.rst | 11 +++++++++++ tools/binman/etype/ti_sysfw.py | 28 ++++++++++++++++++++++++++++ tools/binman/ftest.py | 7 +++++++ tools/binman/test/232_ti_sysfw.dts | 13 +++++++++++++ 5 files changed, 60 insertions(+) create mode 100644 tools/binman/etype/ti_sysfw.py create mode 100644 tools/binman/test/232_ti_sysfw.dts diff --git a/Makefile b/Makefile index 61927f8918..d20d264c53 100644 --- a/Makefile +++ b/Makefile @@ -1345,6 +1345,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \ -a opensbi-path=${OPENSBI} \ -a default-dt=$(default_dt) \ -a scp-path=$(SCP) \ + -a ti-sysfw-path=$(SYSFW) \ -a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \ -a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \ -a spl-dtb=$(CONFIG_SPL_OF_REAL) \ diff --git a/tools/binman/entries.rst b/tools/binman/entries.rst index ae4305c99e..9fc5c48c35 100644 --- a/tools/binman/entries.rst +++ b/tools/binman/entries.rst @@ -1203,6 +1203,17 @@ This entry holds firmware for an external platform-specific coprocessor. +Entry: ti-sysfw: Texas Instruments System Firmware (SYSFW) blob +------------------------------------------------------------ + +Properties / Entry arguments: + - ti-sysfw-path: Filename of file to read into the entry, typically sysfw.bin + +This entry contains system firmware necessary for booting of K3 architecture +devices. + + + Entry: section: Entry that contains other entries ------------------------------------------------- diff --git a/tools/binman/etype/ti_sysfw.py b/tools/binman/etype/ti_sysfw.py new file mode 100644 index 0000000000..5b5b307030 --- /dev/null +++ b/tools/binman/etype/ti_sysfw.py @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: GPL-2.0+ +# Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/ +# +# Entry type module for TI SYSFW binary blob +# + +import os +import struct +import sys +import zlib + +from binman.etype.blob_named_by_arg import Entry_blob_named_by_arg +from dtoc import fdt_util +from patman import tools + + +class Entry_ti_sysfw(Entry_blob_named_by_arg): + """Entry containing Texas Instruments System Firmware (SYSFW) blob + + Properties / Entry arguments: + - ti-sysfw-path: Filename of file to read into the entry, typically sysfw.bin + + This entry contains system firmware necessary for booting of K3 architecture devices. + """ + + def __init__(self, section, etype, node): + super().__init__(section, etype, node, 'ti-sysfw') + self.external = True diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index b5cf549703..671d083c54 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -87,6 +87,7 @@ ATF_BL31_DATA = b'bl31' TEE_OS_DATA = b'this is some tee OS data' ATF_BL2U_DATA = b'bl2u' OPENSBI_DATA = b'opensbi' +TI_SYSFW_DATA = b'sysfw' SCP_DATA = b'scp' TEST_FDT1_DATA = b'fdt1' TEST_FDT2_DATA = b'test-fdt2' @@ -195,6 +196,7 @@ class TestFunctional(unittest.TestCase): TestFunctional._MakeInputFile('tee-pager.bin', TEE_OS_DATA) TestFunctional._MakeInputFile('bl2u.bin', ATF_BL2U_DATA) TestFunctional._MakeInputFile('fw_dynamic.bin', OPENSBI_DATA) + TestFunctional._MakeInputFile('sysfw.bin', TI_SYSFW_DATA) TestFunctional._MakeInputFile('scp.bin', SCP_DATA) # Add a few .dtb files for testing @@ -5529,6 +5531,11 @@ fdt fdtmap Extract the devicetree blob from the fdtmap """Test an image with a pre-load header with an invalid key""" with self.assertRaises(ValueError) as e: data = self._DoReadFile('231_pre_load_invalid_key.dts') + + def testPackTiSysfw(self): + """Test that an image with a SYSFW binary can be created""" + data = self._DoReadFile('232_ti_sysfw.dts') + self.assertEqual(TI_SYSFW_DATA, data[:len(TI_SYSFW_DATA)]) def _CheckSafeUniqueNames(self, *images): """Check all entries of given images for unsafe unique names""" diff --git a/tools/binman/test/232_ti_sysfw.dts b/tools/binman/test/232_ti_sysfw.dts new file mode 100644 index 0000000000..9e66cbe77b --- /dev/null +++ b/tools/binman/test/232_ti_sysfw.dts @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0+ + +/dts-v1/; + +/ { + #address-cells = <1>; + #size-cells = <1>; + binman { + ti-sysfw { + filename = "sysfw.bin"; + }; + }; +}; -- 2.17.1