On 6/15/22 1:47 AM, Neha Malcom Francis wrote:
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.
HS devices do this very differently, even an RFC without HS support
doesn't make much sense, this all has to change when you add HS.
Please start with that.
Andrew
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";
+ };
+ };
+};