[PATCH] tools: binman: ti_board_cfg: Add configurable sw-rev support

Shiva Tripathi s-tripathi1 at ti.com
Tue Jun 30 17:28:09 CEST 2026


The software revision field in the combined board config binary header
was hardcoded to 1, preventing independent control from SBL SWREV
configured via ti-secure-rom's sw-rev property.

Add support for the optional 'sw-rev' DTS property in ti_board_config
nodes, which sets the SWREV byte in the header. Defaults to 1 for
backward compatibility.

Signed-off-by: Shiva Tripathi <s-tripathi1 at ti.com>
---
 tools/binman/etype/ti_board_config.py         |  4 ++-
 tools/binman/ftest.py                         |  5 ++++
 .../vendor/ti_board_cfg_combined_sw_rev.dts   | 26 +++++++++++++++++++
 3 files changed, 34 insertions(+), 1 deletion(-)
 create mode 100644 tools/binman/test/vendor/ti_board_cfg_combined_sw_rev.dts

diff --git a/tools/binman/etype/ti_board_config.py b/tools/binman/etype/ti_board_config.py
index 7c6773ac7bc..3f2135f8f33 100644
--- a/tools/binman/etype/ti_board_config.py
+++ b/tools/binman/etype/ti_board_config.py
@@ -38,6 +38,8 @@ class Entry_ti_board_config(Entry_section):
         - config-file: File containing board configuration data in YAML
         - schema-file: File containing board configuration YAML schema against
           which the config file is validated
+        - sw-rev: Software revision for the board config binary header
+          (optional, default 1)
 
     Output files:
         - board config binary: File containing board configuration binary
@@ -80,11 +82,11 @@ class Entry_ti_board_config(Entry_section):
         self._fmt = '<HHHBB'
         self._index = 0
         self._binary_offset = 0
-        self._sw_rev = 1
         self._devgrp = 0
 
     def ReadNode(self):
         super().ReadNode()
+        self._sw_rev = fdt_util.GetInt(self._node, 'sw-rev', 1)
         self._config = fdt_util.GetString(self._node, 'config')
         self._schema = fdt_util.GetString(self._node, 'schema')
         # Depending on whether config file is present in node, we determine
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index bf98b268ac1..ea2fa6eb83a 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -7212,6 +7212,11 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap
         configlen_noheader = TI_BOARD_CONFIG_DATA * 4
         self.assertGreater(data, configlen_noheader)
 
+    def testTIBoardConfigCombinedSwRev(self):
+        """Test that sw-rev property is honoured in combined board config"""
+        data = self._DoReadFile('vendor/ti_board_cfg_combined_sw_rev.dts')
+        self.assertEqual(2, data[1])
+
     def testTIBoardConfigNoDataType(self):
         """Test that error is thrown when data type is not supported"""
         with self.assertRaises(ValueError) as e:
diff --git a/tools/binman/test/vendor/ti_board_cfg_combined_sw_rev.dts b/tools/binman/test/vendor/ti_board_cfg_combined_sw_rev.dts
new file mode 100644
index 00000000000..b998d22c2da
--- /dev/null
+++ b/tools/binman/test/vendor/ti_board_cfg_combined_sw_rev.dts
@@ -0,0 +1,26 @@
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+/ {
+	binman {
+		ti-board-config {
+			sw-rev = <2>;
+			board-cfg {
+				config = "yaml/config.yaml";
+				schema = "yaml/schema.yaml";
+			};
+			sec-cfg {
+				config = "yaml/config.yaml";
+				schema = "yaml/schema.yaml";
+			};
+			rm-cfg {
+				config = "yaml/config.yaml";
+				schema = "yaml/schema.yaml";
+			};
+			pm-cfg {
+				config = "yaml/config.yaml";
+				schema = "yaml/schema.yaml";
+			};
+		};
+	};
+};
-- 
2.34.1



More information about the U-Boot mailing list