From: Neha Malcom Francis <n-francis@ti.com>
To: <u-boot@lists.denx.de>, <trini@konsulko.com>, <sjg@chromium.org>,
<afd@ti.com>, <vigneshr@ti.com>, <rogerq@kernel.org>
Cc: <n-francis@ti.com>, <alpernebiyasak@gmail.com>, <nm@ti.com>,
<bb@ti.com>, <u-kumar1@ti.com>
Subject: [PATCH v3 01/19] binman: ti-board-config: Add support for TI board config binaries
Date: Fri, 21 Apr 2023 18:01:45 +0530 [thread overview]
Message-ID: <20230421123203.1315330-2-n-francis@ti.com> (raw)
In-Reply-To: <20230421123203.1315330-1-n-francis@ti.com>
The ti-board-config entry loads and validates a given YAML config file
against a given schema, and generates the board config binary. K3
devices require these binaries to be packed into the final system
firmware images.
Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
---
tools/binman/entries.rst | 48 ++++
tools/binman/etype/ti_board_config.py | 269 ++++++++++++++++++
tools/binman/ftest.py | 32 +++
tools/binman/pyproject.toml | 2 +-
tools/binman/test/277_ti_board_cfg.dts | 11 +
.../binman/test/278_ti_board_cfg_combined.dts | 25 ++
.../binman/test/279_ti_board_cfg_no_type.dts | 11 +
.../binman/test/280_ti_board_cfg_no_file.dts | 11 +
.../281_ti_board_cfg_combined_no_file.dts | 13 +
tools/binman/test/yaml/config.yaml | 19 ++
tools/binman/test/yaml/schema.yaml | 51 ++++
tools/binman/test/yaml/schema_notype.yaml | 40 +++
12 files changed, 531 insertions(+), 1 deletion(-)
create mode 100644 tools/binman/etype/ti_board_config.py
create mode 100644 tools/binman/test/277_ti_board_cfg.dts
create mode 100644 tools/binman/test/278_ti_board_cfg_combined.dts
create mode 100644 tools/binman/test/279_ti_board_cfg_no_type.dts
create mode 100644 tools/binman/test/280_ti_board_cfg_no_file.dts
create mode 100644 tools/binman/test/281_ti_board_cfg_combined_no_file.dts
create mode 100644 tools/binman/test/yaml/config.yaml
create mode 100644 tools/binman/test/yaml/schema.yaml
create mode 100644 tools/binman/test/yaml/schema_notype.yaml
diff --git a/tools/binman/entries.rst b/tools/binman/entries.rst
index b71af801fd..14a2d03fad 100644
--- a/tools/binman/entries.rst
+++ b/tools/binman/entries.rst
@@ -1658,6 +1658,54 @@ by setting the size of the entry to something larger than the text.
+.. _etype_ti_board_config:
+
+Entry: ti-board-config: An entry containing a TI schema validated board config binary
+-------------------------------------------------------------------------------------
+
+This etype supports generation of two kinds of board configuration
+binaries: singular board config binary as well as combined board config
+binary.
+
+Properties / Entry arguments:
+ - config-file: File containing board configuration data in YAML
+ - schema-file: File containing board configuration YAML schema against
+ which the config file is validated
+
+Output files:
+ - board config binary: File containing board configuration binary
+
+These above parameters are used only when the generated binary is
+intended to be a single board configuration binary. Example::
+
+ my-ti-board-config {
+ ti-board-config {
+ config = "board-config.yaml";
+ schema = "schema.yaml";
+ };
+ };
+
+To generate a combined board configuration binary, we pack the
+needed individual binaries into a ti-board-config binary. In this case,
+the available supported subnode names are board-cfg, pm-cfg, sec-cfg and
+rm-cfg. The final binary is prepended with a header containing details about
+the included board config binaries. Example::
+
+ my-combined-ti-board-config {
+ ti-board-config {
+ board-cfg {
+ config = "board-cfg.yaml";
+ schema = "schema.yaml";
+ };
+ sec-cfg {
+ config = "sec-cfg.yaml";
+ schema = "schema.yaml";
+ };
+ }
+ }
+
+
+
.. _etype_u_boot:
Entry: u-boot: U-Boot flat binary
diff --git a/tools/binman/etype/ti_board_config.py b/tools/binman/etype/ti_board_config.py
new file mode 100644
index 0000000000..cd7d80cdc4
--- /dev/null
+++ b/tools/binman/etype/ti_board_config.py
@@ -0,0 +1,269 @@
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright (c) 2022 Texas Instruments Incorporated - https://www.ti.com/
+# Written by Neha Malcom Francis <n-francis@ti.com>
+#
+# Entry-type module for generating schema validated TI board
+# configuration binary
+#
+
+import os
+import struct
+import tempfile
+import yaml
+
+from collections import OrderedDict
+from jsonschema import validate
+from shutil import copyfileobj
+from shutil import rmtree
+
+from binman.entry import Entry
+from binman.etype.section import Entry_section
+from binman.etype.blob_ext import Entry_blob_ext
+from binman.etype.blob_ext_list import Entry_blob_ext_list
+from dtoc import fdt_util
+from u_boot_pylib import tools, tout
+
+BOARDCFG = 0xB
+BOARDCFG_SEC = 0xD
+BOARDCFG_PM = 0xE
+BOARDCFG_RM = 0xC
+BOARDCFG_NUM_ELEMS = 4
+
+class Entry_ti_board_config(Entry_section):
+ """An entry containing a TI schema validated board config binary
+
+ This etype supports generation of two kinds of board configuration
+ binaries: singular board config binary as well as combined board config
+ binary.
+
+ Properties / Entry arguments:
+ - config-file: File containing board configuration data in YAML
+ - schema-file: File containing board configuration YAML schema against
+ which the config file is validated
+
+ Output files:
+ - board config binary: File containing board configuration binary
+
+ These above parameters are used only when the generated binary is
+ intended to be a single board configuration binary. Example::
+
+ my-ti-board-config {
+ ti-board-config {
+ config = "board-config.yaml";
+ schema = "schema.yaml";
+ };
+ };
+
+ To generate a combined board configuration binary, we pack the
+ needed individual binaries into a ti-board-config binary. In this case,
+ the available supported subnode names are board-cfg, pm-cfg, sec-cfg and
+ rm-cfg. The final binary is prepended with a header containing details about
+ the included board config binaries. Example::
+
+ my-combined-ti-board-config {
+ ti-board-config {
+ board-cfg {
+ config = "board-cfg.yaml";
+ schema = "schema.yaml";
+ };
+ sec-cfg {
+ config = "sec-cfg.yaml";
+ schema = "schema.yaml";
+ };
+ }
+ }
+ """
+ def __init__(self, section, etype, node):
+ super().__init__(section, etype, node)
+
+ self._config_file = None
+ self._schema_file = None
+
+ self._entries = OrderedDict()
+ self._num_elems = BOARDCFG_NUM_ELEMS
+ self._fmt = '<HHHBB'
+ self._index = 0
+ self._binary_offset = 0
+ self._sw_rev = 1
+ self._devgrp = 0
+
+ def ReadNode(self):
+ super().ReadNode()
+ self._config_file = fdt_util.GetString(self._node, 'config')
+ self._schema_file = fdt_util.GetString(self._node, 'schema')
+ # Depending on whether config file is present in node, we determine
+ # whether it is a combined board config binary or not
+ if self._config_file is None:
+ self.ReadEntries()
+
+ def ReadEntries(self):
+ """Read the subnodes to find out what should go in this image
+ """
+ for node in self._node.subnodes:
+ if 'type' not in node.props:
+ entry = Entry.Create(self, node, 'ti-board-config')
+ entry.ReadNode()
+ cfg_data = entry.BuildSectionData(True)
+ entry._cfg_data = cfg_data
+ self._entries[entry.name] = entry
+ self._num_elems = len(self._node.subnodes)
+
+ def _convert_to_byte_chunk(self, val, data_type):
+ """Convert value into byte array
+
+ Args:
+ val: value to convert into byte array
+ data_type: data type used in schema, supported data types are u8,
+ u16 and u32
+
+ Returns:
+ array of bytes representing value
+ """
+ size = 0
+ if (data_type == '#/definitions/u8'):
+ size = 1
+ elif (data_type == '#/definitions/u16'):
+ size = 2
+ else:
+ size = 4
+ if type(val) == int:
+ br = val.to_bytes(size, byteorder='little')
+ return br
+
+ def _compile_yaml(self, schema_yaml, file_yaml):
+ """Convert YAML file into byte array based on YAML schema
+
+ Args:
+ schema_yaml: file containing YAML schema
+ file_yaml: file containing config to compile
+
+ Returns:
+ array of bytes repesenting YAML file against YAML schema
+ """
+ br = bytearray()
+ for key, node in file_yaml.items():
+ node_schema = schema_yaml['properties'][key]
+ node_type = node_schema.get('type')
+ if not 'type' in node_schema:
+ br += self._convert_to_byte_chunk(node,
+ node_schema.get('$ref'))
+ elif node_type == 'object':
+ br += self._compile_yaml(node_schema, node)
+ elif node_type == 'array':
+ for item in node:
+ if not isinstance(item, dict):
+ br += self._convert_to_byte_chunk(
+ item, schema_yaml['properties'][key]['items']['$ref'])
+ else:
+ br += self._compile_yaml(node_schema.get('items'), item)
+ return br
+
+ def _generate_binaries(self):
+ """Generate config binary artifacts from the loaded YAML configuration file
+
+ Returns:
+ byte array containing config binary artifacts
+ or None if generation fails
+ """
+ cfg_binary = bytearray()
+ for key, node in self.file_yaml.items():
+ node_schema = self.schema_yaml['properties'][key]
+ br = self._compile_yaml(node_schema, node)
+ cfg_binary += br
+ return cfg_binary
+
+ def _add_boardcfg(self, bcfgtype, bcfgdata):
+ """Add board config to combined board config binary
+
+ Args:
+ bcfgtype (int): board config type
+ bcfgdata (byte array): board config data
+ """
+ size = len(bcfgdata)
+ desc = struct.pack(self._fmt, bcfgtype,
+ self._binary_offset, size, self._devgrp, 0)
+ with open(self.descfile, 'ab+') as desc_fh:
+ desc_fh.write(desc)
+ with open(self.bcfgfile, 'ab+') as bcfg_fh:
+ bcfg_fh.write(bcfgdata)
+ self._binary_offset += size
+ self._index += 1
+
+ def _finalize(self):
+ """Generate final combined board config binary
+
+ Returns:
+ byte array containing combined board config data
+ or None if unable to generate
+ """
+ with open(self.descfile, 'rb') as desc_fh:
+ with open(self.bcfgfile, 'rb') as bcfg_fh:
+ with open(self.fh_file, 'ab+') as fh:
+ copyfileobj(desc_fh, fh)
+ copyfileobj(bcfg_fh, fh)
+ data = tools.read_file(self.fh_file)
+ return data
+
+ def BuildSectionData(self, required):
+ if self._config_file is None:
+ self._binary_offset = 0
+ uniq = self.GetUniqueName()
+ self.fh_file = tools.get_output_filename('fh.%s' % uniq)
+ self.descfile = tools.get_output_filename('desc.%s' % uniq)
+ self.bcfgfile = tools.get_output_filename('bcfg.%s' % uniq)
+
+ # when binman runs again make sure we start clean
+ if os.path.exists(self.fh_file):
+ os.remove(self.fh_file)
+ if os.path.exists(self.descfile):
+ os.remove(self.descfile)
+ if os.path.exists(self.bcfgfile):
+ os.remove(self.bcfgfile)
+
+ with open(self.fh_file, 'wb') as f:
+ t_bytes = f.write(struct.pack(
+ '<BB', self._num_elems, self._sw_rev))
+ self._binary_offset += t_bytes
+ self._binary_offset += self._num_elems * struct.calcsize(self._fmt)
+
+ if 'board-cfg' in self._entries:
+ self._add_boardcfg(BOARDCFG, self._entries['board-cfg']._cfg_data)
+
+ if 'sec-cfg' in self._entries:
+ self._add_boardcfg(BOARDCFG_SEC, self._entries['sec-cfg']._cfg_data)
+
+ if 'pm-cfg' in self._entries:
+ self._add_boardcfg(BOARDCFG_PM, self._entries['pm-cfg']._cfg_data)
+
+ if 'rm-cfg' in self._entries:
+ self._add_boardcfg(BOARDCFG_RM, self._entries['rm-cfg']._cfg_data)
+
+ data = self._finalize()
+ return data
+
+ else:
+ try:
+ with open(self._config_file, 'r') as f:
+ self.file_yaml = yaml.safe_load(f)
+ with open(self._schema_file, 'r') as sch:
+ self.schema_yaml = yaml.safe_load(sch)
+ except IOError as e:
+ tout.warning(f'Board config binary was not generated properly: {e}')
+ data = tools.get_bytes(0, 512)
+ return data
+
+ try:
+ validate(self.file_yaml, self.schema_yaml)
+ except Exception as e:
+ tout.error(f"Schema validation error: {e}")
+ data = tools.get_bytes(0, 512)
+ return data
+
+ data = self._generate_binaries()
+ return data
+
+ def SetImagePos(self, image_pos):
+ Entry.SetImagePos(self, image_pos)
+
+ def CheckEntries(self):
+ Entry.CheckEntries(self)
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 43b4f850a6..08b4c0ea30 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -97,6 +97,7 @@ ENV_DATA = b'var1=1\nvar2="2"'
PRE_LOAD_MAGIC = b'UBSH'
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'
# Subdirectory of the input dir to use to put test FDTs
TEST_FDT_SUBDIR = 'fdts'
@@ -6676,6 +6677,37 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
['fit'])
self.assertIn("Node '/fit': Missing tool: 'mkimage'", str(e.exception))
+ def testTIBoardConfig(self):
+ """Test that a schema validated board config file can be generated"""
+ data = self._DoReadFile('277_ti_board_cfg.dts')
+ self.assertEqual(TI_BOARD_CONFIG_DATA, data)
+
+ def testTIBoardConfigCombined(self):
+ """Test that a schema validated combined board config file can be generated"""
+ data = self._DoReadFile('278_ti_board_cfg_combined.dts')
+ configlen_noheader = TI_BOARD_CONFIG_DATA * 4
+ self.assertGreater(data, configlen_noheader)
+
+ def testTIBoardConfigNoDataType(self):
+ """Test that error is thrown when data type is not supported"""
+ with test_util.capture_sys_output() as (_, stderr):
+ data = self._DoReadFile('279_ti_board_cfg_no_type.dts')
+ err = stderr.getvalue()
+ self.assertRegex(err, "Schema validation error")
+
+ def testTIBoardConfigNoFile(self):
+ """Test that error is thrown when YAML config file does not exist for board config"""
+ with test_util.capture_sys_output() as (_, stderr):
+ data = self._DoReadFile('280_ti_board_cfg_no_file.dts')
+ err = stderr.getvalue()
+ self.assertRegex(err, "Board config binary was not generated properly")
+
+ def testTIBoardConfigCombinedNoFile(self):
+ """Test that error is thrown when YAML config file does not exist for combined config"""
+ with test_util.capture_sys_output() as (_, stderr):
+ data = self._DoReadFile('281_ti_board_cfg_combined_no_file.dts')
+ err = stderr.getvalue()
+ self.assertRegex(err, "Board config binary was not generated properly")
if __name__ == "__main__":
unittest.main()
diff --git a/tools/binman/pyproject.toml b/tools/binman/pyproject.toml
index b4b54fbaee..289e16dce8 100644
--- a/tools/binman/pyproject.toml
+++ b/tools/binman/pyproject.toml
@@ -8,7 +8,7 @@ version = "0.0.2"
authors = [
{ name="Simon Glass", email="sjg@chromium.org" },
]
-dependencies = ["pylibfdt", "u_boot_pylib", "dtoc"]
+dependencies = ["pylibfdt", "u_boot_pylib", "dtoc", "jsonschema"]
description = "Binman firmware-packaging tool"
readme = "README.rst"
requires-python = ">=3.7"
diff --git a/tools/binman/test/277_ti_board_cfg.dts b/tools/binman/test/277_ti_board_cfg.dts
new file mode 100644
index 0000000000..8b1b210d9d
--- /dev/null
+++ b/tools/binman/test/277_ti_board_cfg.dts
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+/ {
+ binman {
+ ti-board-config {
+ config = "tools/binman/test/yaml/config.yaml";
+ schema = "tools/binman/test/yaml/schema.yaml";
+ };
+ };
+};
diff --git a/tools/binman/test/278_ti_board_cfg_combined.dts b/tools/binman/test/278_ti_board_cfg_combined.dts
new file mode 100644
index 0000000000..54cb383d90
--- /dev/null
+++ b/tools/binman/test/278_ti_board_cfg_combined.dts
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+/ {
+ binman {
+ ti-board-config {
+ board-cfg {
+ config = "tools/binman/test/yaml/config.yaml";
+ schema = "tools/binman/test/yaml/schema.yaml";
+ };
+ sec-cfg {
+ config = "tools/binman/test/yaml/config.yaml";
+ schema = "tools/binman/test/yaml/schema.yaml";
+ };
+ rm-cfg {
+ config = "tools/binman/test/yaml/config.yaml";
+ schema = "tools/binman/test/yaml/schema.yaml";
+ };
+ pm-cfg {
+ config = "tools/binman/test/yaml/config.yaml";
+ schema = "tools/binman/test/yaml/schema.yaml";
+ };
+ };
+ };
+};
diff --git a/tools/binman/test/279_ti_board_cfg_no_type.dts b/tools/binman/test/279_ti_board_cfg_no_type.dts
new file mode 100644
index 0000000000..f60e7bbbc3
--- /dev/null
+++ b/tools/binman/test/279_ti_board_cfg_no_type.dts
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+/ {
+ binman {
+ ti-board-config {
+ config = "tools/binman/test/yaml/config.yaml";
+ schema = "tools/binman/test/yaml/schema_notype.yaml";
+ };
+ };
+};
diff --git a/tools/binman/test/280_ti_board_cfg_no_file.dts b/tools/binman/test/280_ti_board_cfg_no_file.dts
new file mode 100644
index 0000000000..7b4b502830
--- /dev/null
+++ b/tools/binman/test/280_ti_board_cfg_no_file.dts
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+/ {
+ binman {
+ ti-board-config {
+ config = "tools/binman/test/yaml/do_not_exist.yaml";
+ schema = "tools/binman/test/yaml/not_here.yaml";
+ };
+ };
+};
diff --git a/tools/binman/test/281_ti_board_cfg_combined_no_file.dts b/tools/binman/test/281_ti_board_cfg_combined_no_file.dts
new file mode 100644
index 0000000000..ad44f04d5e
--- /dev/null
+++ b/tools/binman/test/281_ti_board_cfg_combined_no_file.dts
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+/ {
+ binman {
+ ti-board-config {
+ board-cfg {
+ config = "tools/binman/test/yaml/do_not_exist.yaml";
+ schema = "tools/binman/test/yaml/not_here.yaml";
+ };
+ };
+ };
+};
diff --git a/tools/binman/test/yaml/config.yaml b/tools/binman/test/yaml/config.yaml
new file mode 100644
index 0000000000..79fd67c7f4
--- /dev/null
+++ b/tools/binman/test/yaml/config.yaml
@@ -0,0 +1,19 @@
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/
+#
+# Test config
+#
+---
+
+main-branch:
+ obj:
+ a: 0x0
+ b: 0
+ arr: [0, 0, 0, 0]
+ another-arr:
+ - #1
+ c: 0
+ d: 0
+ - #2
+ c: 0
+ d: 0
diff --git a/tools/binman/test/yaml/schema.yaml b/tools/binman/test/yaml/schema.yaml
new file mode 100644
index 0000000000..60bf56f671
--- /dev/null
+++ b/tools/binman/test/yaml/schema.yaml
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/
+#
+# Test schema
+#
+---
+
+definitions:
+ u8:
+ type: integer
+ minimum: 0
+ maximum: 0xff
+ u16:
+ type: integer
+ minimum: 0
+ maximum: 0xffff
+ u32:
+ type: integer
+ minimum: 0
+ maximum: 0xffffffff
+
+type: object
+properties:
+ main-branch:
+ type: object
+ properties:
+ obj:
+ type: object
+ properties:
+ a:
+ $ref: "#/definitions/u32"
+ b:
+ $ref: "#/definitions/u16"
+ arr:
+ type: array
+ minItems: 4
+ maxItems: 4
+ items:
+ $ref: "#/definitions/u8"
+ another-arr:
+ type: array
+ minItems: 2
+ maxItems: 2
+ items:
+ type: object
+ properties:
+ c:
+ $ref: "#/definitions/u8"
+ d:
+ $ref: "#/definitions/u8"
+
diff --git a/tools/binman/test/yaml/schema_notype.yaml b/tools/binman/test/yaml/schema_notype.yaml
new file mode 100644
index 0000000000..d45d6cdf7e
--- /dev/null
+++ b/tools/binman/test/yaml/schema_notype.yaml
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/
+#
+# Test schema
+#
+---
+
+definitions:
+ u8:
+ type: integer
+ minimum: 0
+ maximum: 0xff
+ u16:
+ type: integer
+ minimum: 0
+ maximum: 0xffff
+ u32:
+ type: integer
+ minimum: 0
+ maximum: 0xffffffff
+
+type: object
+properties:
+ main-branch:
+ type: object
+ properties:
+ obj:
+ type: object
+ properties:
+ a:
+ $ref: "#/definitions/u4"
+ b:
+ $ref: "#/definitions/u16"
+ arr:
+ type: array
+ minItems: 4
+ maxItems: 4
+ items:
+ $ref: "#/definitions/u8"
+
--
2.34.1
next prev parent reply other threads:[~2023-04-21 12:32 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-21 12:31 [PATCH v3 00/19] Migration to using binman for bootloader Neha Malcom Francis
2023-04-21 12:31 ` Neha Malcom Francis [this message]
2023-04-24 19:42 ` [PATCH v3 01/19] binman: ti-board-config: Add support for TI board config binaries Simon Glass
2023-04-25 6:24 ` Neha Malcom Francis
2023-04-25 18:01 ` Simon Glass
2023-04-26 19:44 ` [PATCH 1/2] buildman: Create a requirements.txt file Tom Rini
2023-04-26 19:44 ` [PATCH 2/2] CI: Make use of buildman requirements.txt Tom Rini
2023-04-27 16:25 ` Simon Glass
2023-05-03 5:57 ` Neha Malcom Francis
2023-05-03 13:04 ` Tom Rini
2023-05-04 4:12 ` Neha Malcom Francis
2023-05-04 13:02 ` Tom Rini
2023-05-05 5:02 ` Neha Malcom Francis
2023-04-27 16:25 ` [PATCH 1/2] buildman: Create a requirements.txt file Simon Glass
2023-04-21 12:31 ` [PATCH v3 02/19] binman: ti-secure: Add support for TI signing Neha Malcom Francis
2023-04-24 19:42 ` Simon Glass
2023-04-21 12:31 ` [PATCH v3 03/19] ti: sysfw: tiboot3: Add support for packaging sysfw.itb and tiboot3.bin Neha Malcom Francis
2023-04-24 19:42 ` Simon Glass
2023-04-25 7:20 ` Neha Malcom Francis
2023-04-21 12:31 ` [PATCH v3 04/19] j721e: schema: yaml: Add general schema and J721E board config files Neha Malcom Francis
2023-04-21 12:31 ` [PATCH v3 05/19] j721e: dts: binman: Package tiboot3.bin, sysfw.itb, tispl.bin, u-boot.img Neha Malcom Francis
2023-04-24 19:42 ` Simon Glass
2023-04-21 12:31 ` [PATCH v3 06/19] j7200: yaml: Add J7200 board config files Neha Malcom Francis
2023-04-21 12:31 ` [PATCH v3 07/19] j7200: dts: binman: Package tiboot3.bin, tispl.bin, u-boot.img Neha Malcom Francis
2023-04-24 19:42 ` Simon Glass
2023-04-21 12:31 ` [PATCH v3 08/19] am65x: yaml: Add AM65x board config files Neha Malcom Francis
2023-04-21 12:31 ` [PATCH v3 09/19] am65: dts: binman: Package tiboot3.bin, sysfw.itb, tispl.bin, u-boot.img Neha Malcom Francis
2023-04-24 19:42 ` Simon Glass
2023-04-25 7:26 ` Neha Malcom Francis
2023-04-25 18:01 ` Simon Glass
2023-04-21 12:31 ` [PATCH v3 10/19] am64x: yaml: Add board configs for AM64x Neha Malcom Francis
2023-04-21 12:31 ` [PATCH v3 11/19] am64x: dts: binman: Package tiboot3.bin, tispl.bin u-boot.img Neha Malcom Francis
2023-04-24 19:42 ` Simon Glass
2023-04-25 7:31 ` Neha Malcom Francis
2023-04-25 18:46 ` Andrew Davis
2023-04-25 19:23 ` Simon Glass
2023-04-21 12:31 ` [PATCH v3 12/19] j721s2: yaml: Add board configs for J721S2 Neha Malcom Francis
2023-04-21 12:31 ` [PATCH v3 13/19] j721s2: dts: binman: Package tiboot3.bin, tispl.bin and u-boot.img Neha Malcom Francis
2023-04-24 19:42 ` Simon Glass
2023-04-21 12:31 ` [PATCH v3 14/19] am62: yaml: Add board configs for AM62 Neha Malcom Francis
2023-04-21 12:31 ` [PATCH v3 15/19] am625: dts: binman: Package tiboot3.bin, tispl.bin and u-boot.img Neha Malcom Francis
2023-04-24 19:42 ` Simon Glass
2023-04-21 12:32 ` [PATCH v3 16/19] am62a: yaml: Add board configs for AM62ax Neha Malcom Francis
2023-04-21 12:32 ` [PATCH v3 17/19] am62a: dts: binman: Package tiboot3.bin, tispl.bin, u-boot.img Neha Malcom Francis
2023-04-24 19:42 ` Simon Glass
2023-04-21 12:32 ` [PATCH v3 18/19] k3: tools: config.mk: Update makefile and remove scripts Neha Malcom Francis
2023-04-24 19:42 ` Simon Glass
2023-04-21 12:32 ` [PATCH v3 19/19] doc: board: ti: Update documentation for binman flow Neha Malcom Francis
2023-04-24 19:42 ` Simon Glass
2023-04-24 20:49 ` Tom Rini
2023-04-25 5:38 ` Heinrich Schuchardt
2023-04-25 7:36 ` Neha Malcom Francis
2023-04-25 6:23 ` Neha Malcom Francis
2023-04-26 22:37 ` [PATCH v3 00/19] Migration to using binman for bootloader Tom Rini
2023-05-03 7:27 ` Neha Malcom Francis
2023-05-03 12:56 ` Neha Malcom Francis
2023-05-03 16:34 ` Jan Kiszka
2023-05-04 4:43 ` Neha Malcom Francis
2023-05-04 6:13 ` Neha Malcom Francis
2023-05-04 7:45 ` Jan Kiszka
2023-05-07 12:11 ` Jan Kiszka
2023-05-08 5:05 ` Neha Malcom Francis
2023-05-09 8:58 ` Jan Kiszka
2023-05-03 13:57 ` Tom Rini
2023-05-04 5:40 ` Manorit Chawdhry
2023-05-16 4:59 ` Neha Malcom Francis
2023-05-04 8:38 ` Christian Gmeiner
2023-05-04 9:37 ` Neha Malcom Francis
2023-05-05 18:29 ` Christian Gmeiner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230421123203.1315330-2-n-francis@ti.com \
--to=n-francis@ti.com \
--cc=afd@ti.com \
--cc=alpernebiyasak@gmail.com \
--cc=bb@ti.com \
--cc=nm@ti.com \
--cc=rogerq@kernel.org \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=u-kumar1@ti.com \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.