[PATCH v7 00/24] EFI: ti: Enable EFI capsule updates

Enable on disk capsule updates, which includes defining the firmware components (tiboot3, spl, u-boot) and enabling processing of raw capsule updates.
This is enabled for several TI SoC based platforms: AM64, AM62, AM62p, AM69, BeaglePlay, J7, and BeagleboneAI. The configs to enable this are in a single base config file. This will make it more scalable to add additional EFI capsule features (like authentication) across all TI boards that have capsules enabled.
This series also includes enabling serial flash DFU for AM62 and MMC DFU for beagleplay.
Changes from v1: - Added sysfw.itb capsule definition to beagleboneai64 - removed extra commas in structure definitions
Changes from v2: - Added documentation on OSPI flash layouts - Improved comments for capsule GUIDs definitions - Defined board unique capsule GUIDs and put definitions in board specific files - Added a Capsule Update porting section to the documentation
Changes from v3: - Added better commit messages based upon checkpatch warnings. - Remove conditional inclusion of capsule update firmware info - Converted OSPI layout diagram to svg format Link to v3: https://lore.kernel.org/r/20240419205701.163821-1-j-humphreys@ti.com
Changes from v4: - Added am69 SK board - Corrected a few spelling mistakes and clarity improvements in k3 docs section - Added CONFIG_SET_DFU_ALT_INFO guard around set_dfu_alt_info() Link to v4: https://lore.kernel.org/r/20240509164123.1753050-1-j-humphreys@ti.com
Changes from v5: - Created an EFI capsule base config for TI boards, making adding additional capsule features on TI boards more scalable. Link to v5: https://lore.kernel.org/r/20240531222118.2618041-1-j-humphreys@ti.com
Changes from v6: - Rebased on latest -next - added tags Link to v6: https://lore.kernel.org/r/20240607223858.1971290-1-j-humphreys@ti.com
Jonathan Humphreys (24): doc: uefi: capsules: Add Capsule Update porting section doc: ti: k3: Correct spelling mistakes and improve clarity configs: ti: Create base EFI capsule configs for TI K3 devices board: am64x: Define capsule update firmware info configs: am64x: Enable EFI capsule update doc: board: ti: am64x: document OSPI layout board: j721e: Define capsule update firmware info configs: j721e: Enable EFI capsule update doc: board: ti: j721e: document OSPI layout board: beagleplay: Define capsule update firmware info configs: beagleplay: Enable DFU for MMC configs: beagleplay: Enable EFI capsule update board: am62x: Define capsule update firmware info configs: am62x: Enable EFI capsule update doc: board: ti: am62x: document OSPI layout board: am62px: Define capsule update firmware info configs: am62px: Enable EFI capsule update doc: board: ti: am62px: document OSPI layout board: beagleboneai64: Define capsule update firmware info configs: beagleboneai64: Enable EFI capsule update configs: j784s4_evm: Enable serial flash DFU support board: sk-am69: Define capsule update firmware info configs: j784s4: Enable EFI capsule update doc: board: ti: j784s4: document OSPI NOR layout
board/beagle/beagleboneai64/Kconfig | 4 +- board/beagle/beagleboneai64/beagleboneai64.c | 39 + board/beagle/beagleplay/Kconfig | 4 +- board/beagle/beagleplay/beagleplay.c | 34 + board/ti/am62px/evm.c | 34 + board/ti/am62x/evm.c | 34 + board/ti/am64x/evm.c | 34 + board/ti/j721e/evm.c | 40 + board/ti/j784s4/evm.c | 34 + configs/am62px_evm_a53_defconfig | 2 + configs/am62x_beagleplay_a53_defconfig | 4 + configs/am62x_evm_a53_defconfig | 1 + configs/am64x_evm_a53_defconfig | 2 + configs/j721e_beagleboneai64_a72_defconfig | 2 + configs/j721e_evm_a72_defconfig | 2 + configs/j784s4_evm_a72_defconfig | 5 + configs/k3_efi_capsule.config | 2 + doc/board/ti/am62px_sk.rst | 24 + doc/board/ti/am62x_sk.rst | 24 + doc/board/ti/am64x_evm.rst | 24 + doc/board/ti/img/ospi_sysfw-am64.svg | 802 ++++++++++ doc/board/ti/img/ospi_sysfw.svg | 1464 ++++++++++-------- doc/board/ti/img/ospi_sysfw2.svg | 802 ++++++++++ doc/board/ti/img/ospi_sysfw3.svg | 802 ++++++++++ doc/board/ti/j721e_evm.rst | 58 +- doc/board/ti/j784s4_evm.rst | 28 + doc/board/ti/k3.rst | 10 +- doc/develop/uefi/uefi.rst | 12 + include/configs/am62px_evm.h | 24 + include/configs/am62x_evm.h | 24 + include/configs/am64x_evm.h | 24 + include/configs/beagleboneai64.h | 55 + include/configs/beagleplay.h | 41 + include/configs/j721e_evm.h | 29 + include/configs/j784s4_evm.h | 24 + 35 files changed, 3864 insertions(+), 684 deletions(-) create mode 100644 configs/k3_efi_capsule.config create mode 100644 doc/board/ti/img/ospi_sysfw-am64.svg create mode 100644 doc/board/ti/img/ospi_sysfw2.svg create mode 100644 doc/board/ti/img/ospi_sysfw3.svg create mode 100644 include/configs/beagleboneai64.h create mode 100644 include/configs/beagleplay.h

Created a capsule update porting section in the documentation that outlines the steps a board developer must do when porting from an existing reference board implementation.
In particular, added a big warning that new capsule GUID's need to be defined.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com Acked-by: Ilias Apalodimas ilias.apalodimas@linaro.org --- doc/develop/uefi/uefi.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/doc/develop/uefi/uefi.rst b/doc/develop/uefi/uefi.rst index 0389b269c01..36ac75278fa 100644 --- a/doc/develop/uefi/uefi.rst +++ b/doc/develop/uefi/uefi.rst @@ -631,6 +631,18 @@ where version.dtso looks like:: The properties of image-type-id and image-index must match the value defined in the efi_fw_image array as image_type_id and image_index.
+Porting Capsule Updates to new boards +************************************* + +It is important, when using a reference board as a starting point for a custom +board, that certain steps are taken to properly support Capsule Updates. + +Capsule GUIDs need to be unique for each firmware and board. That is, if two +firmwares are built from the same source but result in different binaries +because they are built for different boards, they should have different GUIDs. +Therefore it is important when creating support for a new board, new GUIDs are +defined in the board's header file. *DO NOT* reuse capsule GUIDs. + Executing the boot manager ~~~~~~~~~~~~~~~~~~~~~~~~~~

Few cosmetic fixes for clarity and spelling mistakes.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com Reviewed-by: Mattijs Korpershoek mkorpershoek@baylibre.com --- doc/board/ti/k3.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/doc/board/ti/k3.rst b/doc/board/ti/k3.rst index a1c01d1cf02..927f3976d34 100644 --- a/doc/board/ti/k3.rst +++ b/doc/board/ti/k3.rst @@ -51,14 +51,14 @@ For all K3 SoCs the first core started will be inside the Security Management Subsystem (SMS) which will secure the device and start a core in the wakeup domain to run the ROM code. ROM will then initialize the boot media needed to load the binaries packaged inside `tiboot3.bin`, -including a 32bit U-Boot SPL, (called the wakup SPL) that ROM will jump +including a 32bit U-Boot SPL, (called the wakeup SPL) that ROM will jump to after it has finished loading everything into internal SRAM.
.. image:: img/boot_flow_01.svg :alt: Boot flow up to wakeup domain SPL
The wakeup SPL, running on a wakeup domain core, will initialize DDR and -any peripherals needed load the larger binaries inside the `tispl.bin` +any peripherals needed to load the larger binaries inside the `tispl.bin` into DDR. Once loaded the wakeup SPL will start one of the 'big' application cores inside the main domain to initialize the main domain, starting with Trusted Firmware-A (TF-A), before moving on to start @@ -94,7 +94,7 @@ essentially 4 unique but very similar flows: * Combined binary with a split firmware: (eg: AM62)
For devices that utilize the split binary approach, ROM is not capable -of loading the firmware into the SoC requiring the wakeup domain's +of loading the firmware into the SoC, requiring the wakeup domain's U-Boot SPL to load the firmware.
Devices with a split firmware will have two firmwares loaded into the @@ -114,8 +114,8 @@ K3 HS-SE (High Security - Security Enforced) devices enforce an authenticated boot flow for secure boot. HS-FS (High Security - Field Securable) is the state of a K3 device before it has been eFused with customer security keys. In the HS-FS state the authentication still can -function as in HS-SE but as there are no customer keys to verify the -signatures against the authentication will pass for certificates signed +function as in HS-SE, but as there are no customer keys to verify the +signatures against, the authentication will pass for certificates signed with any key.
Chain of trust

To better scale with the number of boards, separate TI K3 EFI capsule configs into its own file that can be shared across TI K3 boards. This will allow any platform level config changes to be done once.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- configs/k3_efi_capsule.config | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 configs/k3_efi_capsule.config
diff --git a/configs/k3_efi_capsule.config b/configs/k3_efi_capsule.config new file mode 100644 index 00000000000..e31cea37269 --- /dev/null +++ b/configs/k3_efi_capsule.config @@ -0,0 +1,2 @@ +CONFIG_EFI_CAPSULE_ON_DISK=y +CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y

Define the firmware components updatable via EFI capsule update, including defining capsule GUIDs for the various firmware components for the AM64x SK.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com Acked-by: Ilias Apalodimas ilias.apalodimas@linaro.org Reviewed-by: Tom Rini trini@konsulko.com --- board/ti/am64x/evm.c | 34 ++++++++++++++++++++++++++++++++++ include/configs/am64x_evm.h | 24 ++++++++++++++++++++++++ 2 files changed, 58 insertions(+)
diff --git a/board/ti/am64x/evm.c b/board/ti/am64x/evm.c index b8de69da06c..609e5cf6d51 100644 --- a/board/ti/am64x/evm.c +++ b/board/ti/am64x/evm.c @@ -7,6 +7,7 @@ * */
+#include <efi_loader.h> #include <asm/io.h> #include <dm/uclass.h> #include <k3-ddrss.h> @@ -27,6 +28,39 @@
DECLARE_GLOBAL_DATA_PTR;
+struct efi_fw_image fw_images[] = { + { + .image_type_id = AM64X_SK_TIBOOT3_IMAGE_GUID, + .fw_name = u"AM64X_SK_TIBOOT3", + .image_index = 1, + }, + { + .image_type_id = AM64X_SK_SPL_IMAGE_GUID, + .fw_name = u"AM64X_SK_SPL", + .image_index = 2, + }, + { + .image_type_id = AM64X_SK_UBOOT_IMAGE_GUID, + .fw_name = u"AM64X_SK_UBOOT", + .image_index = 3, + } +}; + +struct efi_capsule_update_info update_info = { + .dfu_string = "sf 0:0=tiboot3.bin raw 0 100000;" + "tispl.bin raw 100000 200000;u-boot.img raw 300000 400000", + .num_images = ARRAY_SIZE(fw_images), + .images = fw_images, +}; + +#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO) +void set_dfu_alt_info(char *interface, char *devstr) +{ + if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) + env_set("dfu_alt_info", update_info.dfu_string); +} +#endif + int board_init(void) { return 0; diff --git a/include/configs/am64x_evm.h b/include/configs/am64x_evm.h index f9f8c7bc2f6..9db83621ea8 100644 --- a/include/configs/am64x_evm.h +++ b/include/configs/am64x_evm.h @@ -9,6 +9,30 @@ #ifndef __CONFIG_AM642_EVM_H #define __CONFIG_AM642_EVM_H
+/** + * define AM64X_SK_TIBOOT3_IMAGE_GUID - firmware GUID for AM64X sk tiboot3.bin + * define AM64X_SK_SPL_IMAGE_GUID - firmware GUID for AM64X sk SPL + * define AM64X_SK_UBOOT_IMAGE_GUID - firmware GUID for AM64X sk UBOOT + * + * These GUIDs are used in capsules updates to identify the corresponding + * firmware object. + * + * Board developers using this as a starting reference should + * define their own GUIDs to ensure that firmware repositories (like + * LVFS) do not confuse them. + */ +#define AM64X_SK_TIBOOT3_IMAGE_GUID \ + EFI_GUID(0xede0a0d5, 0x9116, 0x4bfb, 0xaa, 0x54, \ + 0x09, 0xe9, 0x7b, 0x5a, 0xfe, 0x1a) + +#define AM64X_SK_SPL_IMAGE_GUID \ + EFI_GUID(0x77678f5c, 0x64d4, 0x4910, 0xad, 0x75, \ + 0x52, 0xc9, 0xd9, 0x5c, 0xdb, 0x1d) + +#define AM64X_SK_UBOOT_IMAGE_GUID \ + EFI_GUID(0xc6ad43a9, 0x7d31, 0x4f5d, 0x83, 0xe9, \ + 0xb8, 0xef, 0xec, 0xae, 0x05, 0xbf) + /* Now for the remaining common defines */ #include <configs/ti_armv7_common.h>

Enable on disk, raw capsule update.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- configs/am64x_evm_a53_defconfig | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/configs/am64x_evm_a53_defconfig b/configs/am64x_evm_a53_defconfig index e000549d6d0..44c22458ab2 100644 --- a/configs/am64x_evm_a53_defconfig +++ b/configs/am64x_evm_a53_defconfig @@ -178,3 +178,5 @@ CONFIG_USB_FUNCTION_MASS_STORAGE=y CONFIG_SPL_DFU=y CONFIG_FS_FAT_MAX_CLUSTSIZE=16384 CONFIG_EFI_SET_TIME=y + +#include <configs/k3_efi_capsule.config>

Added OSPI flash layout diagram, as well as example commands to flash firmware to it.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- doc/board/ti/am64x_evm.rst | 24 + doc/board/ti/img/ospi_sysfw-am64.svg | 802 +++++++++++++++++++++++++++ 2 files changed, 826 insertions(+) create mode 100644 doc/board/ti/img/ospi_sysfw-am64.svg
diff --git a/doc/board/ti/am64x_evm.rst b/doc/board/ti/am64x_evm.rst index 6ae35b3fee3..88997b6a283 100644 --- a/doc/board/ti/am64x_evm.rst +++ b/doc/board/ti/am64x_evm.rst @@ -140,6 +140,30 @@ Image formats: .. image:: img/nodm_tispl.bin.svg :alt: tispl.bin image format
+OSPI: +----- +ROM supports booting from OSPI from offset 0x0. + +Flashing images to OSPI: + +Below commands can be used to download tiboot3.bin, tispl.bin, and u-boot.img, +over tftp and then flash those to OSPI at their respective addresses. + +.. prompt:: bash => + + sf probe + tftp ${loadaddr} tiboot3.bin + sf update $loadaddr 0x0 $filesize + tftp ${loadaddr} tispl.bin + sf update $loadaddr 0x100000 $filesize + tftp ${loadaddr} u-boot.img + sf update $loadaddr 0x300000 $filesize + +Flash layout for OSPI: + +.. image:: img/ospi_sysfw-am64.svg + :alt: OSPI flash partition layout + Switch Setting for Boot Mode ----------------------------
diff --git a/doc/board/ti/img/ospi_sysfw-am64.svg b/doc/board/ti/img/ospi_sysfw-am64.svg new file mode 100644 index 00000000000..f6244dce596 --- /dev/null +++ b/doc/board/ti/img/ospi_sysfw-am64.svg @@ -0,0 +1,802 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!--SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause--> + +<!--Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/--> + +<svg + version="1.1" + width="321px" + height="336px" + viewBox="-0.5 -0.5 321 336" + id="svg28701" + sodipodi:docname="ospi_sysfw-am64.svg" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:xhtml="http://www.w3.org/1999/xhtml%22%3E + <sodipodi:namedview + id="namedview28703" + pagecolor="#505050" + bordercolor="#eeeeee" + borderopacity="1" + inkscape:pageshadow="0" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="2.5982143" + inkscape:cx="160.49485" + inkscape:cy="168" + inkscape:window-width="3370" + inkscape:window-height="1376" + inkscape:window-x="70" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="g28699" /> + <defs + id="defs28505" /> + <g + id="g28699"> + <g + id="g28509"> + <rect + x="120" + y="15" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect28507" /> + </g> + <g + id="g28517"> + <g + transform="translate(-0.5 -0.5)" + id="g28515"> + <switch + id="switch28513"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 35px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.tiboot3(1M)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="39" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text28511">ospi.tiboot3(1M)</text> + </switch> + </g> + </g> + <g + id="g28521"> + <rect + x="60" + y="5" + width="60" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect28519" /> + </g> + <g + id="g28529"> + <g + transform="translate(-0.5 -0.5)" + id="g28527"> + <switch + id="switch28525"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 58px; height: 1px; padding-top: 20px; margin-left: 60px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x0</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="24" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text28523">0x0</text> + </switch> + </g> + </g> + <g + id="g28533"> + <rect + x="120" + y="55" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect28531" /> + </g> + <g + id="g28541"> + <g + transform="translate(-0.5 -0.5)" + id="g28539"> + <switch + id="switch28537"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 75px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.tispl(2M)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="79" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text28535">ospi.tispl(2M)</text> + </switch> + </g> + </g> + <g + id="g28545"> + <rect + x="0" + y="45" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect28543" /> + </g> + <g + id="g28553"> + <g + transform="translate(-0.5 -0.5)" + id="g28551"> + <switch + id="switch28549"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 60px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x100000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="64" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text28547">0x100000</text> + </switch> + </g> + </g> + <g + id="g28557"> + <rect + x="120" + y="95" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect28555" /> + </g> + <g + id="g28565"> + <g + transform="translate(-0.5 -0.5)" + id="g28563"> + <switch + id="switch28561"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 115px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.u-boot(4M)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="119" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text28559">ospi.u-boot(4M)</text> + </switch> + </g> + </g> + <g + id="g28569"> + <rect + x="0" + y="85" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect28567" /> + </g> + <g + id="g28577"> + <g + transform="translate(-0.5 -0.5)" + id="g28575"> + <switch + id="switch28573"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 100px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x300000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="104" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text28571">0x300000</text> + </switch> + </g> + </g> + <g + id="g28581"> + <rect + x="120" + y="135" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect28579" /> + </g> + <g + id="g28589"> + <g + transform="translate(-0.5 -0.5)" + id="g28587"> + <switch + id="switch28585"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 155px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.env(128K)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="159" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text28583">ospi.env(128K)</text> + </switch> + </g> + </g> + <g + id="g28593"> + <rect + x="0" + y="125" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect28591" /> + </g> + <g + id="g28601"> + <g + transform="translate(-0.5 -0.5)" + id="g28599"> + <switch + id="switch28597"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 140px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x700000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="144" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text28595">0x700000</text> + </switch> + </g> + </g> + <g + id="g28605"> + <rect + x="120" + y="175" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect28603" /> + </g> + <g + id="g28613"> + <g + transform="translate(-0.5 -0.5)" + id="g28611"> + <switch + id="switch28609"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 195px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.env.backup(128K)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="199" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text28607">ospi.env.backup(128K)</text> + </switch> + </g> + </g> + <g + id="g28617"> + <rect + x="0" + y="165" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect28615" /> + </g> + <g + id="g28625"> + <g + transform="translate(-0.5 -0.5)" + id="g28623"> + <switch + id="switch28621"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 180px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x720000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="184" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text28619">0x720000</text> + </switch> + </g> + </g> + <g + id="g28629"> + <rect + x="120" + y="215" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect28627" /> + </g> + <g + id="g28637"> + <g + transform="translate(-0.5 -0.5)" + id="g28635"> + <switch + id="switch28633"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 235px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">padding(768K)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="239" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text28631">padding(768K)</text> + </switch> + </g> + </g> + <g + id="g28641"> + <rect + x="0" + y="205" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect28639" /> + </g> + <g + id="g28649"> + <g + transform="translate(-0.5 -0.5)" + id="g28647"> + <switch + id="switch28645"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 220px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x740000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="224" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text28643">0x740000</text> + </switch> + </g> + </g> + <g + id="g28653"> + <rect + x="120" + y="255" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect28651" /> + </g> + <g + id="g28661"> + <g + transform="translate(-0.5 -0.5)" + id="g28659"> + <switch + id="switch28657"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 275px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.rootfs(UBIFS)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="279" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text28655">ospi.rootfs(UBIFS)</text> + </switch> + </g> + </g> + <g + id="g28665"> + <rect + x="0" + y="245" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect28663" /> + </g> + <g + id="g28673"> + <g + transform="translate(-0.5 -0.5)" + id="g28671"> + <switch + id="switch28669"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 260px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x800000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="264" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text28667">0x800000</text> + </switch> + </g> + </g> + <g + id="g28677"> + <rect + x="120" + y="295" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect28675" /> + </g> + <g + id="g28685"> + <g + transform="translate(-0.5 -0.5)" + id="g28683"> + <switch + id="switch28681"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 315px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.phypattern(256k)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="319" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text28679">ospi.phypattern(256k)</text> + </switch> + </g> + </g> + <g + id="g28689"> + <rect + x="0" + y="285" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect28687" /> + </g> + <g + id="g28697"> + <g + transform="translate(-0.5 -0.5)" + id="g28695"> + <switch + id="switch28693"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 300px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x3FC0000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="304" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text28691">0x3FC0000</text> + </switch> + </g> + </g> + </g> +</svg>

Define the firmware components updatable via EFI capsule update, including defining capsule GUIDs for the various firmware components for the SK-TDA4VM.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com Acked-by: Ilias Apalodimas ilias.apalodimas@linaro.org --- board/ti/j721e/evm.c | 40 +++++++++++++++++++++++++++++++++++++ include/configs/j721e_evm.h | 29 +++++++++++++++++++++++++++ 2 files changed, 69 insertions(+)
diff --git a/board/ti/j721e/evm.c b/board/ti/j721e/evm.c index 539eaf47186..f3452ff0a8f 100644 --- a/board/ti/j721e/evm.c +++ b/board/ti/j721e/evm.c @@ -7,6 +7,7 @@ * */
+#include <efi_loader.h> #include <generic-phy.h> #include <image.h> #include <net.h> @@ -32,6 +33,45 @@
DECLARE_GLOBAL_DATA_PTR;
+struct efi_fw_image fw_images[] = { + { + .image_type_id = J721E_SK_TIBOOT3_IMAGE_GUID, + .fw_name = u"J721E_SK_TIBOOT3", + .image_index = 1, + }, + { + .image_type_id = J721E_SK_SPL_IMAGE_GUID, + .fw_name = u"J721E_SK_SPL", + .image_index = 2, + }, + { + .image_type_id = J721E_SK_UBOOT_IMAGE_GUID, + .fw_name = u"J721E_SK_UBOOT", + .image_index = 3, + }, + { + .image_type_id = J721E_SK_SYSFW_IMAGE_GUID, + .fw_name = u"J721E_SK_SYSFW", + .image_index = 4, + } +}; + +struct efi_capsule_update_info update_info = { + .dfu_string = "sf 0:0=tiboot3.bin raw 0 80000;" + "tispl.bin raw 80000 200000;u-boot.img raw 280000 400000;" + "sysfw.itb raw 6C0000 100000", + .num_images = ARRAY_SIZE(fw_images), + .images = fw_images, +}; + +#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO) +void set_dfu_alt_info(char *interface, char *devstr) +{ + if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) + env_set("dfu_alt_info", update_info.dfu_string); +} +#endif + int board_init(void) { return 0; diff --git a/include/configs/j721e_evm.h b/include/configs/j721e_evm.h index c26438c8684..a5140ea6a11 100644 --- a/include/configs/j721e_evm.h +++ b/include/configs/j721e_evm.h @@ -22,6 +22,35 @@ #define CFG_SYS_UBOOT_BASE 0x50080000 #endif
+/** + * define J721E_SK_TIBOOT3_IMAGE_GUID - firmware GUID for J721e sk tiboot3.bin + * define J721E_SK_SPL_IMAGE_GUID - firmware GUID for J721e sk SPL + * define J721E_SK_UBOOT_IMAGE_GUID - firmware GUID for J721e sk UBOOT + * define J721E_SK_SYSFW_IMAGE_GUID - firmware GUID for J721e sk SYSFW + * + * These GUIDs are used in capsules updates to identify the corresponding + * firmware object. + * + * Board developers using this as a starting reference should + * define their own GUIDs to ensure that firmware repositories (like + * LVFS) do not confuse them. + */ +#define J721E_SK_TIBOOT3_IMAGE_GUID \ + EFI_GUID(0xe672b518, 0x7cd7, 0x4014, 0xbd, 0x8d, \ + 0x40, 0x72, 0x4d, 0x0a, 0xd4, 0xdc) + +#define J721E_SK_SPL_IMAGE_GUID \ + EFI_GUID(0x86f710ad, 0x10cf, 0x46ea, 0xac, 0x67, \ + 0x85, 0x6a, 0xe0, 0x6e, 0xfa, 0xd2) + +#define J721E_SK_UBOOT_IMAGE_GUID \ + EFI_GUID(0x81b58fb0, 0x3b00, 0x4add, 0xa2, 0x0a, \ + 0xc1, 0x85, 0xbb, 0xac, 0xa1, 0xed) + +#define J721E_SK_SYSFW_IMAGE_GUID \ + EFI_GUID(0x6fd10680, 0x361b, 0x431f, 0x80, 0xaa, \ + 0x89, 0x94, 0x55, 0x81, 0x9e, 0x11) + /* Now for the remaining common defines */ #include <configs/ti_armv7_common.h>

Enable on disk, raw capsule update.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- configs/j721e_evm_a72_defconfig | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/configs/j721e_evm_a72_defconfig b/configs/j721e_evm_a72_defconfig index 451a6a91c4f..f99315789c7 100644 --- a/configs/j721e_evm_a72_defconfig +++ b/configs/j721e_evm_a72_defconfig @@ -211,3 +211,5 @@ CONFIG_UFS=y CONFIG_CADENCE_UFS=y CONFIG_TI_J721E_UFS=y CONFIG_EFI_SET_TIME=y + +#include <configs/k3_efi_capsule.config>

Updated OSPI flash layout diagram.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com Reviewed-by: Tom Rini trini@konsulko.com --- doc/board/ti/img/ospi_sysfw.svg | 1464 +++++++++++++++++-------------- doc/board/ti/j721e_evm.rst | 58 +- 2 files changed, 847 insertions(+), 675 deletions(-)
diff --git a/doc/board/ti/img/ospi_sysfw.svg b/doc/board/ti/img/ospi_sysfw.svg index 648f6fd03e5..2a2fd3f4863 100644 --- a/doc/board/ti/img/ospi_sysfw.svg +++ b/doc/board/ti/img/ospi_sysfw.svg @@ -1,725 +1,897 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!--SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause-->
-<!--Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/--> +<!--Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/-->
<svg version="1.1" width="321px" - height="336px" - viewBox="-0.5 -0.5 321 336" - id="svg142" + height="376px" + viewBox="-0.5 -0.5 321 376" + id="svg19243" sodipodi:docname="ospi_sysfw.svg" inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xhtml="http://www.w3.org/1999/xhtml%22%3E <sodipodi:namedview - id="namedview144" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageshadow="2" - inkscape:pageopacity="0.0" + id="namedview19245" + pagecolor="#505050" + bordercolor="#eeeeee" + borderopacity="1" + inkscape:pageshadow="0" + inkscape:pageopacity="0" inkscape:pagecheckerboard="0" showgrid="false" - inkscape:zoom="2.0297619" - inkscape:cx="156.66862" - inkscape:cy="168" - inkscape:window-width="3440" - inkscape:window-height="1416" - inkscape:window-x="0" - inkscape:window-y="0" + inkscape:zoom="2.3218085" + inkscape:cx="160.65063" + inkscape:cy="188" + inkscape:window-width="3370" + inkscape:window-height="1376" + inkscape:window-x="70" + inkscape:window-y="27" inkscape:window-maximized="1" - inkscape:current-layer="svg142" /> + inkscape:current-layer="g19241" /> <defs - id="defs2" /> + id="defs19023" /> <g - id="g132"> - <rect - x="120" - y="15" - width="200" - height="40" - fill="rgb(255, 255, 255)" - stroke="rgb(0, 0, 0)" - pointer-events="all" - id="rect4" /> - <g - transform="translate(-0.5 -0.5)" - id="g10"> - <switch - id="switch8"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 35px; margin-left: 121px;"> + id="g19241"> + <g + id="g19027"> + <rect + x="120" + y="15" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect19025" /> + </g> + <g + id="g19035"> + <g + transform="translate(-0.5 -0.5)" + id="g19033"> + <switch + id="switch19031"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: center;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 35px; margin-left: 121px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.tiboot3(512k)</xhtml:div> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.tiboot3(512k)</xhtml:div> + </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="220" - y="39" - fill="#000000" - font-family="Helvetica" - font-size="12px" - text-anchor="middle" - id="text6">ospi.tiboot3(512k)</text> - </switch> - </g> - <rect - x="60" - y="5" - width="60" - height="30" - fill="none" - stroke="none" - pointer-events="all" - id="rect12" /> - <g - transform="translate(-0.5 -0.5)" - id="g18"> - <switch - id="switch16"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 58px; height: 1px; padding-top: 20px; margin-left: 60px;"> + </foreignObject> + <text + x="220" + y="39" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text19029">ospi.tiboot3(512k)</text> + </switch> + </g> + </g> + <g + id="g19039"> + <rect + x="60" + y="5" + width="60" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect19037" /> + </g> + <g + id="g19047"> + <g + transform="translate(-0.5 -0.5)" + id="g19045"> + <switch + id="switch19043"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: right;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 58px; height: 1px; padding-top: 20px; margin-left: 60px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <xhtml:pre - style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x0</xhtml:pre> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x0</xhtml:pre> + </xhtml:div> </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="118" - y="24" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="end" - id="text14">0x0</text> - </switch> - </g> - <rect - x="120" - y="55" - width="200" - height="40" - fill="rgb(255, 255, 255)" - stroke="rgb(0, 0, 0)" - pointer-events="all" - id="rect20" /> - <g - transform="translate(-0.5 -0.5)" - id="g26"> - <switch - id="switch24"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 75px; margin-left: 121px;"> + </foreignObject> + <text + x="118" + y="24" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text19041">0x0</text> + </switch> + </g> + </g> + <g + id="g19051"> + <rect + x="120" + y="55" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect19049" /> + </g> + <g + id="g19059"> + <g + transform="translate(-0.5 -0.5)" + id="g19057"> + <switch + id="switch19055"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: center;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 75px; margin-left: 121px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.tispl(2M)</xhtml:div> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.tispl(2M)</xhtml:div> + </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="220" - y="79" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="middle" - id="text22">ospi.tispl(2M)</text> - </switch> - </g> - <rect - x="0" - y="45" - width="120" - height="30" - fill="none" - stroke="none" - pointer-events="all" - id="rect28" /> - <g - transform="translate(-0.5 -0.5)" - id="g34"> - <switch - id="switch32"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 60px; margin-left: 0px;"> + </foreignObject> + <text + x="220" + y="79" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text19053">ospi.tispl(2M)</text> + </switch> + </g> + </g> + <g + id="g19063"> + <rect + x="0" + y="45" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect19061" /> + </g> + <g + id="g19071"> + <g + transform="translate(-0.5 -0.5)" + id="g19069"> + <switch + id="switch19067"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: right;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 60px; margin-left: 0px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <xhtml:pre - style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x80000</xhtml:pre> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x80000</xhtml:pre> + </xhtml:div> </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="118" - y="64" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="end" - id="text30">0x80000</text> - </switch> - </g> - <rect - x="120" - y="95" - width="200" - height="40" - fill="rgb(255, 255, 255)" - stroke="rgb(0, 0, 0)" - pointer-events="all" - id="rect36" /> - <g - transform="translate(-0.5 -0.5)" - id="g42"> - <switch - id="switch40"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 115px; margin-left: 121px;"> + </foreignObject> + <text + x="118" + y="64" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text19065">0x80000</text> + </switch> + </g> + </g> + <g + id="g19075"> + <rect + x="120" + y="95" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect19073" /> + </g> + <g + id="g19083"> + <g + transform="translate(-0.5 -0.5)" + id="g19081"> + <switch + id="switch19079"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: center;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 115px; margin-left: 121px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.u-boot(4M)</xhtml:div> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.u-boot(4M)</xhtml:div> + </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="220" - y="119" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="middle" - id="text38">ospi.u-boot(4M)</text> - </switch> - </g> - <rect - x="0" - y="85" - width="120" - height="30" - fill="none" - stroke="none" - pointer-events="all" - id="rect44" /> - <g - transform="translate(-0.5 -0.5)" - id="g50"> - <switch - id="switch48"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 100px; margin-left: 0px;"> + </foreignObject> + <text + x="220" + y="119" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text19077">ospi.u-boot(4M)</text> + </switch> + </g> + </g> + <g + id="g19087"> + <rect + x="0" + y="85" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect19085" /> + </g> + <g + id="g19095"> + <g + transform="translate(-0.5 -0.5)" + id="g19093"> + <switch + id="switch19091"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: right;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 100px; margin-left: 0px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <xhtml:pre - style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x280000</xhtml:pre> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x280000</xhtml:pre> + </xhtml:div> </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="118" - y="104" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="end" - id="text46">0x280000</text> - </switch> - </g> - <rect - x="120" - y="135" - width="200" - height="40" - fill="rgb(255, 255, 255)" - stroke="rgb(0, 0, 0)" - pointer-events="all" - id="rect52" /> - <g - transform="translate(-0.5 -0.5)" - id="g58"> - <switch - id="switch56"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 155px; margin-left: 121px;"> + </foreignObject> + <text + x="118" + y="104" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text19089">0x280000</text> + </switch> + </g> + </g> + <g + id="g19099"> + <rect + x="120" + y="135" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect19097" /> + </g> + <g + id="g19107"> + <g + transform="translate(-0.5 -0.5)" + id="g19105"> + <switch + id="switch19103"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: center;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 155px; margin-left: 121px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.env(128K)</xhtml:div> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.env(128K)</xhtml:div> + </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="220" - y="159" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="middle" - id="text54">ospi.env(128K)</text> - </switch> - </g> - <rect - x="0" - y="125" - width="120" - height="30" - fill="none" - stroke="none" - pointer-events="all" - id="rect60" /> - <g - transform="translate(-0.5 -0.5)" - id="g66"> - <switch - id="switch64"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 140px; margin-left: 0px;"> + </foreignObject> + <text + x="220" + y="159" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text19101">ospi.env(128K)</text> + </switch> + </g> + </g> + <g + id="g19111"> + <rect + x="0" + y="125" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect19109" /> + </g> + <g + id="g19119"> + <g + transform="translate(-0.5 -0.5)" + id="g19117"> + <switch + id="switch19115"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: right;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 140px; margin-left: 0px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <xhtml:pre - style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x680000</xhtml:pre> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x680000</xhtml:pre> + </xhtml:div> </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="118" - y="144" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="end" - id="text62">0x680000</text> - </switch> - </g> - <rect - x="120" - y="175" - width="200" - height="40" - fill="rgb(255, 255, 255)" - stroke="rgb(0, 0, 0)" - pointer-events="all" - id="rect68" /> - <g - transform="translate(-0.5 -0.5)" - id="g74"> - <switch - id="switch72"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 195px; margin-left: 121px;"> + </foreignObject> + <text + x="118" + y="144" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text19113">0x680000</text> + </switch> + </g> + </g> + <g + id="g19123"> + <rect + x="120" + y="175" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect19121" /> + </g> + <g + id="g19131"> + <g + transform="translate(-0.5 -0.5)" + id="g19129"> + <switch + id="switch19127"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: center;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 195px; margin-left: 121px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.env.backup(128K)</xhtml:div> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.env.backup(128K)</xhtml:div> + </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="220" - y="199" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="middle" - id="text70">ospi.env.backup(128K)</text> - </switch> - </g> - <rect - x="0" - y="165" - width="120" - height="30" - fill="none" - stroke="none" - pointer-events="all" - id="rect76" /> - <g - transform="translate(-0.5 -0.5)" - id="g82"> - <switch - id="switch80"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 180px; margin-left: 0px;"> + </foreignObject> + <text + x="220" + y="199" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text19125">ospi.env.backup(128K)</text> + </switch> + </g> + </g> + <g + id="g19135"> + <rect + x="0" + y="165" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect19133" /> + </g> + <g + id="g19143"> + <g + transform="translate(-0.5 -0.5)" + id="g19141"> + <switch + id="switch19139"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: right;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 180px; margin-left: 0px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <xhtml:pre - style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x6A0000</xhtml:pre> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x6A0000</xhtml:pre> + </xhtml:div> </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="118" - y="184" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="end" - id="text78">0x6A0000</text> - </switch> - </g> - <rect - x="120" - y="215" - width="200" - height="40" - fill="rgb(255, 255, 255)" - stroke="rgb(0, 0, 0)" - pointer-events="all" - id="rect84" /> - <g - transform="translate(-0.5 -0.5)" - id="g90"> - <switch - id="switch88"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 235px; margin-left: 121px;"> + </foreignObject> + <text + x="118" + y="184" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text19137">0x6A0000</text> + </switch> + </g> + </g> + <g + id="g19147"> + <rect + x="120" + y="215" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect19145" /> + </g> + <g + id="g19155"> + <g + transform="translate(-0.5 -0.5)" + id="g19153"> + <switch + id="switch19151"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: center;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 235px; margin-left: 121px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.sysfw(1M)</xhtml:div> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.sysfw(1M)</xhtml:div> + </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="220" - y="239" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="middle" - id="text86">ospi.sysfw(1M)</text> - </switch> - </g> - <rect - x="0" - y="205" - width="120" - height="30" - fill="none" - stroke="none" - pointer-events="all" - id="rect92" /> - <g - transform="translate(-0.5 -0.5)" - id="g98"> - <switch - id="switch96"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 220px; margin-left: 0px;"> + </foreignObject> + <text + x="220" + y="239" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text19149">ospi.sysfw(1M)</text> + </switch> + </g> + </g> + <g + id="g19159"> + <rect + x="0" + y="205" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect19157" /> + </g> + <g + id="g19167"> + <g + transform="translate(-0.5 -0.5)" + id="g19165"> + <switch + id="switch19163"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: right;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 220px; margin-left: 0px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <xhtml:pre - style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x6C0000</xhtml:pre> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x6C0000</xhtml:pre> + </xhtml:div> </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="118" - y="224" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="end" - id="text94">0x6C0000</text> - </switch> - </g> - <rect - x="120" - y="255" - width="200" - height="40" - fill="rgb(255, 255, 255)" - stroke="rgb(0, 0, 0)" - pointer-events="all" - id="rect100" /> - <g - transform="translate(-0.5 -0.5)" - id="g106"> - <switch - id="switch104"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 275px; margin-left: 121px;"> + </foreignObject> + <text + x="118" + y="224" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text19161">0x6C0000</text> + </switch> + </g> + </g> + <g + id="g19171"> + <rect + x="120" + y="255" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect19169" /> + </g> + <g + id="g19179"> + <g + transform="translate(-0.5 -0.5)" + id="g19177"> + <switch + id="switch19175"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: center;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 275px; margin-left: 121px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">padding(256K)</xhtml:div> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">padding(256K)</xhtml:div> + </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="220" - y="279" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="middle" - id="text102">padding(256K)</text> - </switch> - </g> - <rect - x="0" - y="245" - width="120" - height="30" - fill="none" - stroke="none" - pointer-events="all" - id="rect108" /> - <g - transform="translate(-0.5 -0.5)" - id="g114"> - <switch - id="switch112"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 260px; margin-left: 0px;"> + </foreignObject> + <text + x="220" + y="279" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text19173">padding(256K)</text> + </switch> + </g> + </g> + <g + id="g19183"> + <rect + x="0" + y="245" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect19181" /> + </g> + <g + id="g19191"> + <g + transform="translate(-0.5 -0.5)" + id="g19189"> + <switch + id="switch19187"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: right;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 260px; margin-left: 0px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <xhtml:pre - style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x7C0000</xhtml:pre> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x7C0000</xhtml:pre> + </xhtml:div> </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="118" - y="264" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="end" - id="text110">0x7C0000</text> - </switch> - </g> - <rect - x="120" - y="295" - width="200" - height="40" - fill="rgb(255, 255, 255)" - stroke="rgb(0, 0, 0)" - pointer-events="all" - id="rect116" /> - <g - transform="translate(-0.5 -0.5)" - id="g122"> - <switch - id="switch120"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 315px; margin-left: 121px;"> + </foreignObject> + <text + x="118" + y="264" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text19185">0x7C0000</text> + </switch> + </g> + </g> + <g + id="g19195"> + <rect + x="120" + y="295" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect19193" /> + </g> + <g + id="g19203"> + <g + transform="translate(-0.5 -0.5)" + id="g19201"> + <switch + id="switch19199"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: center;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 315px; margin-left: 121px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.rootfs(UBIFS)</xhtml:div> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.rootfs(UBIFS)</xhtml:div> + </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="220" - y="319" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="middle" - id="text118">ospi.rootfs(UBIFS)</text> - </switch> - </g> - <rect - x="0" - y="285" - width="120" - height="30" - fill="none" - stroke="none" - pointer-events="all" - id="rect124" /> - <g - transform="translate(-0.5 -0.5)" - id="g130"> - <switch - id="switch128"> - <foreignObject - pointer-events="none" - width="100%" - height="100%" - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - style="overflow: visible; text-align: left;"> - <xhtml:div - style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 300px; margin-left: 0px;"> + </foreignObject> + <text + x="220" + y="319" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text19197">ospi.rootfs(UBIFS)</text> + </switch> + </g> + </g> + <g + id="g19207"> + <rect + x="0" + y="285" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect19205" /> + </g> + <g + id="g19215"> + <g + transform="translate(-0.5 -0.5)" + id="g19213"> + <switch + id="switch19211"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 300px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x800000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="304" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text19209">0x800000</text> + </switch> + </g> + </g> + <g + id="g19219"> + <rect + x="120" + y="335" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect19217" /> + </g> + <g + id="g19227"> + <g + transform="translate(-0.5 -0.5)" + id="g19225"> + <switch + id="switch19223"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 355px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.phypattern(128k)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="359" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text19221">ospi.phypattern(128k)</text> + </switch> + </g> + </g> + <g + id="g19231"> + <rect + x="0" + y="325" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect19229" /> + </g> + <g + id="g19239"> + <g + transform="translate(-0.5 -0.5)" + id="g19237"> + <switch + id="switch19235"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> <xhtml:div - data-drawio-colors="color: rgb(0, 0, 0); " - style="box-sizing: border-box; font-size: 0px; text-align: right;"> + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 340px; margin-left: 0px;"> <xhtml:div - style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <xhtml:pre - style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x800000</xhtml:pre> + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x3FE0000</xhtml:pre> + </xhtml:div> </xhtml:div> </xhtml:div> - </xhtml:div> - </foreignObject> - <text - x="118" - y="304" - fill="rgb(0, 0, 0)" - font-family="Helvetica" - font-size="12px" - text-anchor="end" - id="text126">0x800000</text> - </switch> + </foreignObject> + <text + x="118" + y="344" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text19233">0x3FE0000</text> + </switch> + </g> </g> </g> - <switch - id="switch140"> - <g - requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" - id="g134" /> - <a - transform="translate(0,-5)" - xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" - target="_blank" - id="a138"> - <text - text-anchor="middle" - font-size="10px" - x="50%" - y="100%" - id="text136">Text is not SVG - cannot display</text> - </a> - </switch> </svg> diff --git a/doc/board/ti/j721e_evm.rst b/doc/board/ti/j721e_evm.rst index a422a9bf1a0..80d91cafab0 100644 --- a/doc/board/ti/j721e_evm.rst +++ b/doc/board/ti/j721e_evm.rst @@ -150,6 +150,33 @@ Image formats: .. image:: img/sysfw.itb.svg :alt: sysfw.itb image format
+OSPI: +----- +ROM supports booting from OSPI from offset 0x0. + +Flashing images to OSPI: + +Below commands can be used to download tiboot3.bin, tispl.bin, u-boot.img, +and sysfw.itb over tftp and then flash those to OSPI at their respective +addresses. + +.. prompt:: bash => + + sf probe + tftp ${loadaddr} tiboot3.bin + sf update $loadaddr 0x0 $filesize + tftp ${loadaddr} tispl.bin + sf update $loadaddr 0x80000 $filesize + tftp ${loadaddr} u-boot.img + sf update $loadaddr 0x280000 $filesize + tftp ${loadaddr} sysfw.itb + sf update $loadaddr 0x6C0000 $filesize + +Flash layout for OSPI: + +.. image:: img/ospi_sysfw.svg + :alt: OSPI flash partition layout + R5 Memory Map: --------------
@@ -193,35 +220,8 @@ R5 Memory Map: - 0x41cffbfc - 0x41cfffff
-OSPI: ------ -ROM supports booting from OSPI from offset 0x0. - -Flashing images to OSPI: - -Below commands can be used to download tiboot3.bin, tispl.bin, u-boot.img, -and sysfw.itb over tftp and then flash those to OSPI at their respective -addresses. - -.. prompt:: bash => - - sf probe - tftp ${loadaddr} tiboot3.bin - sf update $loadaddr 0x0 $filesize - tftp ${loadaddr} tispl.bin - sf update $loadaddr 0x80000 $filesize - tftp ${loadaddr} u-boot.img - sf update $loadaddr 0x280000 $filesize - tftp ${loadaddr} sysfw.itb - sf update $loadaddr 0x6C0000 $filesize - -Flash layout for OSPI: - -.. image:: img/ospi_sysfw.svg - :alt: OSPI flash partition layout - -Firmwares: ----------- +Firmware: +---------
The J721e u-boot allows firmware to be loaded for the Cortex-R5 subsystem. The CPSW5G in J7200 and CPSW9G in J721E present in MAIN domain is configured

Define the firmware components updatable via EFI capsule update, including defining capsule GUIDs for the various firmware components for the BeaglePlay.
Note this involved creating BeaglePlay's own beagleplay.h board header file instead of reusing am62_evm's.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com Acked-by: Ilias Apalodimas ilias.apalodimas@linaro.org --- board/beagle/beagleplay/Kconfig | 4 +-- board/beagle/beagleplay/beagleplay.c | 34 +++++++++++++++++++++++ include/configs/beagleplay.h | 41 ++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 include/configs/beagleplay.h
diff --git a/board/beagle/beagleplay/Kconfig b/board/beagle/beagleplay/Kconfig index 7dbd833acb4..b0e67dc8ef3 100644 --- a/board/beagle/beagleplay/Kconfig +++ b/board/beagle/beagleplay/Kconfig @@ -35,7 +35,7 @@ config SYS_VENDOR default "beagle"
config SYS_CONFIG_NAME - default "am62x_evm" + default "beagleplay"
source "board/ti/common/Kconfig"
@@ -50,7 +50,7 @@ config SYS_VENDOR default "beagle"
config SYS_CONFIG_NAME - default "am62x_evm" + default "beagleplay"
config SPL_LDSCRIPT default "arch/arm/mach-omap2/u-boot-spl.lds" diff --git a/board/beagle/beagleplay/beagleplay.c b/board/beagle/beagleplay/beagleplay.c index af36439e2e2..a21f09e3122 100644 --- a/board/beagle/beagleplay/beagleplay.c +++ b/board/beagle/beagleplay/beagleplay.c @@ -6,6 +6,7 @@ * Copyright (C) 2022-2023 Robert Nelson, BeagleBoard.org Foundation */
+#include <efi_loader.h> #include <cpu_func.h> #include <env.h> #include <fdt_support.h> @@ -15,6 +16,39 @@
DECLARE_GLOBAL_DATA_PTR;
+struct efi_fw_image fw_images[] = { + { + .image_type_id = BEAGLEPLAY_TIBOOT3_IMAGE_GUID, + .fw_name = u"BEAGLEPLAY_TIBOOT3", + .image_index = 1, + }, + { + .image_type_id = BEAGLEPLAY_SPL_IMAGE_GUID, + .fw_name = u"BEAGLEPLAY_SPL", + .image_index = 2, + }, + { + .image_type_id = BEAGLEPLAY_UBOOT_IMAGE_GUID, + .fw_name = u"BEAGLEPLAY_UBOOT", + .image_index = 3, + } +}; + +struct efi_capsule_update_info update_info = { + .dfu_string = "mmc 0=tiboot3.bin raw 0 2000 mmcpart 1;" + "tispl.bin fat 0 1;u-boot.img fat 0 1", + .num_images = ARRAY_SIZE(fw_images), + .images = fw_images, +}; + +#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO) +void set_dfu_alt_info(char *interface, char *devstr) +{ + if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) + env_set("dfu_alt_info", update_info.dfu_string); +} +#endif + int board_init(void) { return 0; diff --git a/include/configs/beagleplay.h b/include/configs/beagleplay.h new file mode 100644 index 00000000000..4baeab664af --- /dev/null +++ b/include/configs/beagleplay.h @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Configuration header file for BeaglePlay + * + * https://beagleplay.org/ + * + * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/ + */ + +#ifndef __CONFIG_BEAGLEPLAY_H +#define __CONFIG_BEAGLEPLAY_H + +/** + * define BEAGLEPLAY_TIBOOT3_IMAGE_GUID - firmware GUID for BeaglePlay + * tiboot3.bin + * define BEAGLEPLAY_SPL_IMAGE_GUID - firmware GUID for BeaglePlay SPL + * define BEAGLEPLAY_UBOOT_IMAGE_GUID - firmware GUID for BeaglePlay UBOOT + * + * These GUIDs are used in capsules updates to identify the corresponding + * firmware object. + * + * Board developers using this as a starting reference should + * define their own GUIDs to ensure that firmware repositories (like + * LVFS) do not confuse them. + */ +#define BEAGLEPLAY_TIBOOT3_IMAGE_GUID \ + EFI_GUID(0x0e225a09, 0xf720, 0x4d57, 0x91, 0x20, \ + 0xe2, 0x8f, 0x73, 0x7f, 0x5a, 0x5e) + +#define BEAGLEPLAY_SPL_IMAGE_GUID \ + EFI_GUID(0xb2e7cc49, 0x1a5a, 0x4036, 0xae, 0x01, \ + 0x33, 0x87, 0xc3, 0xbe, 0xf6, 0x57) + +#define BEAGLEPLAY_UBOOT_IMAGE_GUID \ + EFI_GUID(0x92c92b11, 0xa7ee, 0x486f, 0xaa, 0xa2, \ + 0x71, 0x3d, 0x84, 0x42, 0x5b, 0x0e) + +/* Now for the remaining common defines */ +#include <configs/ti_armv7_common.h> + +#endif /* __CONFIG_BEAGLEPLAY_H */

MMC DFU is required for capsule updates.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- configs/am62x_beagleplay_a53_defconfig | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/configs/am62x_beagleplay_a53_defconfig b/configs/am62x_beagleplay_a53_defconfig index ec62670d55d..dbdbaf98348 100644 --- a/configs/am62x_beagleplay_a53_defconfig +++ b/configs/am62x_beagleplay_a53_defconfig @@ -70,6 +70,9 @@ CONFIG_SPL_OF_TRANSLATE=y CONFIG_CLK=y CONFIG_SPL_CLK=y CONFIG_CLK_TI_SCI=y +CONFIG_DFU_MMC=y +CONFIG_SYS_DFU_DATA_BUF_SIZE=0x40000 +CONFIG_SYS_DFU_MAX_FILE_SIZE=0x180000 CONFIG_DMA_CHANNELS=y CONFIG_TI_K3_NAVSS_UDMA=y CONFIG_TI_SCI_PROTOCOL=y

Enable on disk, raw capsule update.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- configs/am62x_beagleplay_a53_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/am62x_beagleplay_a53_defconfig b/configs/am62x_beagleplay_a53_defconfig index dbdbaf98348..18f6f8865b5 100644 --- a/configs/am62x_beagleplay_a53_defconfig +++ b/configs/am62x_beagleplay_a53_defconfig @@ -125,4 +125,5 @@ CONFIG_FS_FAT_MAX_CLUSTSIZE=16384 CONFIG_LZO=y CONFIG_EFI_SET_TIME=y
+#include <configs/k3_efi_capsule.config> #include <configs/am62x_a53_usbdfu.config>

Define the firmware components updatable via EFI capsule update, including defining capsule GUIDs for the various firmware components for the AM62x SK.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com Acked-by: Ilias Apalodimas ilias.apalodimas@linaro.org --- board/ti/am62x/evm.c | 34 ++++++++++++++++++++++++++++++++++ include/configs/am62x_evm.h | 24 ++++++++++++++++++++++++ 2 files changed, 58 insertions(+)
diff --git a/board/ti/am62x/evm.c b/board/ti/am62x/evm.c index b3e8680dfab..9bdd0223cdb 100644 --- a/board/ti/am62x/evm.c +++ b/board/ti/am62x/evm.c @@ -7,6 +7,7 @@ * */
+#include <efi_loader.h> #include <env.h> #include <spl.h> #include <init.h> @@ -46,6 +47,39 @@ int splash_screen_prepare(void) } #endif
+struct efi_fw_image fw_images[] = { + { + .image_type_id = AM62X_SK_TIBOOT3_IMAGE_GUID, + .fw_name = u"AM62X_SK_TIBOOT3", + .image_index = 1, + }, + { + .image_type_id = AM62X_SK_SPL_IMAGE_GUID, + .fw_name = u"AM62X_SK_SPL", + .image_index = 2, + }, + { + .image_type_id = AM62X_SK_UBOOT_IMAGE_GUID, + .fw_name = u"AM62X_SK_UBOOT", + .image_index = 3, + } +}; + +struct efi_capsule_update_info update_info = { + .dfu_string = "sf 0:0=tiboot3.bin raw 0 80000;" + "tispl.bin raw 80000 200000;u-boot.img raw 280000 400000", + .num_images = ARRAY_SIZE(fw_images), + .images = fw_images, +}; + +#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO) +void set_dfu_alt_info(char *interface, char *devstr) +{ + if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) + env_set("dfu_alt_info", update_info.dfu_string); +} +#endif + int board_init(void) { return 0; diff --git a/include/configs/am62x_evm.h b/include/configs/am62x_evm.h index c8fe59b7531..0d98f14a4bc 100644 --- a/include/configs/am62x_evm.h +++ b/include/configs/am62x_evm.h @@ -9,6 +9,30 @@ #ifndef __CONFIG_AM625_EVM_H #define __CONFIG_AM625_EVM_H
+/** + * define AM62X_SK_TIBOOT3_IMAGE_GUID - firmware GUID for AM62X sk tiboot3.bin + * define AM62X_SK_SPL_IMAGE_GUID - firmware GUID for AM62X sk SPL + * define AM62X_SK_UBOOT_IMAGE_GUID - firmware GUID for AM62X sk UBOOT + * + * These GUIDs are used in capsules updates to identify the corresponding + * firmware object. + * + * Board developers using this as a starting reference should + * define their own GUIDs to ensure that firmware repositories (like + * LVFS) do not confuse them. + */ +#define AM62X_SK_TIBOOT3_IMAGE_GUID \ + EFI_GUID(0xabcb83d2, 0x9cb6, 0x4351, 0xb8, 0xf1, \ + 0x64, 0x94, 0xbb, 0xe3, 0x70, 0x0a) + +#define AM62X_SK_SPL_IMAGE_GUID \ + EFI_GUID(0xaee355fc, 0xbf97, 0x4264, 0x8c, 0x82, \ + 0x43, 0x72, 0x55, 0xef, 0xdc, 0x1d) + +#define AM62X_SK_UBOOT_IMAGE_GUID \ + EFI_GUID(0x28ab8c6c, 0xfca8, 0x41d3, 0x8e, 0xa1, \ + 0x5f, 0x17, 0x1b, 0x7d, 0x29, 0x29) + /* Now for the remaining common defines */ #include <configs/ti_armv7_common.h>

Enable on disk, raw capsule update.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- configs/am62x_evm_a53_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/am62x_evm_a53_defconfig b/configs/am62x_evm_a53_defconfig index 16294a6a794..aea9aa205c9 100644 --- a/configs/am62x_evm_a53_defconfig +++ b/configs/am62x_evm_a53_defconfig @@ -113,4 +113,5 @@ CONFIG_SYSRESET_TI_SCI=y CONFIG_FS_FAT_MAX_CLUSTSIZE=16384 CONFIG_EFI_SET_TIME=y
+#include <configs/k3_efi_capsule.config> #include <configs/am62x_a53_usbdfu.config>

Added OSPI flash layout diagram, as well as example commands to flash firmware to it.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com Reviewed-by: Tom Rini trini@konsulko.com --- doc/board/ti/am62x_sk.rst | 24 + doc/board/ti/img/ospi_sysfw2.svg | 802 +++++++++++++++++++++++++++++++ 2 files changed, 826 insertions(+) create mode 100644 doc/board/ti/img/ospi_sysfw2.svg
diff --git a/doc/board/ti/am62x_sk.rst b/doc/board/ti/am62x_sk.rst index d5f7fe3b036..2a25e84f6c9 100644 --- a/doc/board/ti/am62x_sk.rst +++ b/doc/board/ti/am62x_sk.rst @@ -164,6 +164,30 @@ Image formats: .. image:: img/dm_tispl.bin.svg :alt: tispl.bin image format
+OSPI: +----- +ROM supports booting from OSPI from offset 0x0. + +Flashing images to OSPI: + +Below commands can be used to download tiboot3.bin, tispl.bin, and u-boot.img, +over tftp and then flash those to OSPI at their respective addresses. + +.. prompt:: bash => + + sf probe + tftp ${loadaddr} tiboot3.bin + sf update $loadaddr 0x0 $filesize + tftp ${loadaddr} tispl.bin + sf update $loadaddr 0x80000 $filesize + tftp ${loadaddr} u-boot.img + sf update $loadaddr 0x280000 $filesize + +Flash layout for OSPI: + +.. image:: img/ospi_sysfw2.svg + :alt: OSPI flash partition layout + A53 SPL DDR Memory Layout -------------------------
diff --git a/doc/board/ti/img/ospi_sysfw2.svg b/doc/board/ti/img/ospi_sysfw2.svg new file mode 100644 index 00000000000..06711df4117 --- /dev/null +++ b/doc/board/ti/img/ospi_sysfw2.svg @@ -0,0 +1,802 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!--SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause--> + +<!--Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/--> + +<svg + version="1.1" + width="321px" + height="336px" + viewBox="-0.5 -0.5 321 336" + id="svg24863" + sodipodi:docname="ospi_sysfw2.svg" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:xhtml="http://www.w3.org/1999/xhtml%22%3E + <sodipodi:namedview + id="namedview24865" + pagecolor="#505050" + bordercolor="#eeeeee" + borderopacity="1" + inkscape:pageshadow="0" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="2.5982143" + inkscape:cx="160.49485" + inkscape:cy="168" + inkscape:window-width="3370" + inkscape:window-height="1376" + inkscape:window-x="70" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="g24861" /> + <defs + id="defs24667" /> + <g + id="g24861"> + <g + id="g24671"> + <rect + x="120" + y="15" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect24669" /> + </g> + <g + id="g24679"> + <g + transform="translate(-0.5 -0.5)" + id="g24677"> + <switch + id="switch24675"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 35px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.tiboot3(512k)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="39" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text24673">ospi.tiboot3(512k)</text> + </switch> + </g> + </g> + <g + id="g24683"> + <rect + x="60" + y="5" + width="60" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect24681" /> + </g> + <g + id="g24691"> + <g + transform="translate(-0.5 -0.5)" + id="g24689"> + <switch + id="switch24687"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 58px; height: 1px; padding-top: 20px; margin-left: 60px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x0</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="24" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text24685">0x0</text> + </switch> + </g> + </g> + <g + id="g24695"> + <rect + x="120" + y="55" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect24693" /> + </g> + <g + id="g24703"> + <g + transform="translate(-0.5 -0.5)" + id="g24701"> + <switch + id="switch24699"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 75px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.tispl(2M)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="79" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text24697">ospi.tispl(2M)</text> + </switch> + </g> + </g> + <g + id="g24707"> + <rect + x="0" + y="45" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect24705" /> + </g> + <g + id="g24715"> + <g + transform="translate(-0.5 -0.5)" + id="g24713"> + <switch + id="switch24711"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 60px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x80000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="64" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text24709">0x80000</text> + </switch> + </g> + </g> + <g + id="g24719"> + <rect + x="120" + y="95" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect24717" /> + </g> + <g + id="g24727"> + <g + transform="translate(-0.5 -0.5)" + id="g24725"> + <switch + id="switch24723"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 115px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.u-boot(4M)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="119" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text24721">ospi.u-boot(4M)</text> + </switch> + </g> + </g> + <g + id="g24731"> + <rect + x="0" + y="85" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect24729" /> + </g> + <g + id="g24739"> + <g + transform="translate(-0.5 -0.5)" + id="g24737"> + <switch + id="switch24735"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 100px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x280000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="104" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text24733">0x280000</text> + </switch> + </g> + </g> + <g + id="g24743"> + <rect + x="120" + y="135" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect24741" /> + </g> + <g + id="g24751"> + <g + transform="translate(-0.5 -0.5)" + id="g24749"> + <switch + id="switch24747"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 155px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.env(128K)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="159" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text24745">ospi.env(128K)</text> + </switch> + </g> + </g> + <g + id="g24755"> + <rect + x="0" + y="125" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect24753" /> + </g> + <g + id="g24763"> + <g + transform="translate(-0.5 -0.5)" + id="g24761"> + <switch + id="switch24759"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 140px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x680000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="144" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text24757">0x680000</text> + </switch> + </g> + </g> + <g + id="g24767"> + <rect + x="120" + y="175" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect24765" /> + </g> + <g + id="g24775"> + <g + transform="translate(-0.5 -0.5)" + id="g24773"> + <switch + id="switch24771"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 195px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.env.backup(128K)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="199" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text24769">ospi.env.backup(128K)</text> + </switch> + </g> + </g> + <g + id="g24779"> + <rect + x="0" + y="165" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect24777" /> + </g> + <g + id="g24787"> + <g + transform="translate(-0.5 -0.5)" + id="g24785"> + <switch + id="switch24783"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 180px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x6C0000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="184" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text24781">0x6C0000</text> + </switch> + </g> + </g> + <g + id="g24791"> + <rect + x="120" + y="215" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect24789" /> + </g> + <g + id="g24799"> + <g + transform="translate(-0.5 -0.5)" + id="g24797"> + <switch + id="switch24795"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 235px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">padding(768K)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="239" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text24793">padding(768K)</text> + </switch> + </g> + </g> + <g + id="g24803"> + <rect + x="0" + y="205" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect24801" /> + </g> + <g + id="g24811"> + <g + transform="translate(-0.5 -0.5)" + id="g24809"> + <switch + id="switch24807"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 220px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x740000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="224" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text24805">0x740000</text> + </switch> + </g> + </g> + <g + id="g24815"> + <rect + x="120" + y="255" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect24813" /> + </g> + <g + id="g24823"> + <g + transform="translate(-0.5 -0.5)" + id="g24821"> + <switch + id="switch24819"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 275px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.rootfs(UBIFS)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="279" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text24817">ospi.rootfs(UBIFS)</text> + </switch> + </g> + </g> + <g + id="g24827"> + <rect + x="0" + y="245" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect24825" /> + </g> + <g + id="g24835"> + <g + transform="translate(-0.5 -0.5)" + id="g24833"> + <switch + id="switch24831"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 260px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x800000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="264" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text24829">0x800000</text> + </switch> + </g> + </g> + <g + id="g24839"> + <rect + x="120" + y="295" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect24837" /> + </g> + <g + id="g24847"> + <g + transform="translate(-0.5 -0.5)" + id="g24845"> + <switch + id="switch24843"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 315px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.phypattern(256k)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="319" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text24841">ospi.phypattern(256k)</text> + </switch> + </g> + </g> + <g + id="g24851"> + <rect + x="0" + y="285" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect24849" /> + </g> + <g + id="g24859"> + <g + transform="translate(-0.5 -0.5)" + id="g24857"> + <switch + id="switch24855"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 300px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x3FC0000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="304" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text24853">0x3FC0000</text> + </switch> + </g> + </g> + </g> +</svg>

Define the firmware components updatable via EFI capsule update, including defining capsule GUIDs for the various firmware components for the AM62px SK.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com Acked-by: Ilias Apalodimas ilias.apalodimas@linaro.org --- board/ti/am62px/evm.c | 34 ++++++++++++++++++++++++++++++++++ include/configs/am62px_evm.h | 24 ++++++++++++++++++++++++ 2 files changed, 58 insertions(+)
diff --git a/board/ti/am62px/evm.c b/board/ti/am62px/evm.c index 97a95ce8cc2..1a2c46c462b 100644 --- a/board/ti/am62px/evm.c +++ b/board/ti/am62px/evm.c @@ -6,6 +6,7 @@ * */
+#include <efi_loader.h> #include <asm/arch/hardware.h> #include <asm/io.h> #include <dm/uclass.h> @@ -13,6 +14,39 @@ #include <fdt_support.h> #include <spl.h>
+struct efi_fw_image fw_images[] = { + { + .image_type_id = AM62PX_SK_TIBOOT3_IMAGE_GUID, + .fw_name = u"AM62PX_SK_TIBOOT3", + .image_index = 1, + }, + { + .image_type_id = AM62PX_SK_SPL_IMAGE_GUID, + .fw_name = u"AM62PX_SK_SPL", + .image_index = 2, + }, + { + .image_type_id = AM62PX_SK_UBOOT_IMAGE_GUID, + .fw_name = u"AM62PX_SK_UBOOT", + .image_index = 3, + } +}; + +struct efi_capsule_update_info update_info = { + .dfu_string = "sf 0:0=tiboot3.bin raw 0 80000;" + "tispl.bin raw 80000 200000;u-boot.img raw 280000 400000", + .num_images = ARRAY_SIZE(fw_images), + .images = fw_images, +}; + +#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO) +void set_dfu_alt_info(char *interface, char *devstr) +{ + if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) + env_set("dfu_alt_info", update_info.dfu_string); +} +#endif + int board_init(void) { return 0; diff --git a/include/configs/am62px_evm.h b/include/configs/am62px_evm.h index 06b12860e21..57a1ba9dc3c 100644 --- a/include/configs/am62px_evm.h +++ b/include/configs/am62px_evm.h @@ -8,6 +8,30 @@ #ifndef __CONFIG_AM62PX_EVM_H #define __CONFIG_AM62PX_EVM_H
+/** + * define AM62PX_SK_TIBOOT3_IMAGE_GUID - firmware GUID for AM62PX sk tiboot3.bin + * define AM62PX_SK_SPL_IMAGE_GUID - firmware GUID for AM62PX sk SPL + * define AM62PX_SK_UBOOT_IMAGE_GUID - firmware GUID for AM62PX sk UBOOT + * + * These GUIDs are used in capsules updates to identify the corresponding + * firmware object. + * + * Board developers using this as a starting reference should + * define their own GUIDs to ensure that firmware repositories (like + * LVFS) do not confuse them. + */ +#define AM62PX_SK_TIBOOT3_IMAGE_GUID \ + EFI_GUID(0xb08471b7, 0xbe2d, 0x4489, 0x87, 0xa1, \ + 0xca, 0xb2, 0x8a, 0x0c, 0xf7, 0x43) + +#define AM62PX_SK_SPL_IMAGE_GUID \ + EFI_GUID(0xd02ed781, 0x6d71, 0x4c1a, 0xa9, 0x99, \ + 0x3c, 0x6a, 0x41, 0xc3, 0x63, 0x24) + +#define AM62PX_SK_UBOOT_IMAGE_GUID \ + EFI_GUID(0x7e6aea51, 0x965c, 0x44ab, 0xb3, 0x88, \ + 0xda, 0xeb, 0x03, 0xb5, 0x4f, 0x66) + /* Now for the remaining common defines */ #include <configs/ti_armv7_common.h>

Enable on disk, raw capsule update.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- configs/am62px_evm_a53_defconfig | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/configs/am62px_evm_a53_defconfig b/configs/am62px_evm_a53_defconfig index 9f40c9a0b3c..e1c9c8535e4 100644 --- a/configs/am62px_evm_a53_defconfig +++ b/configs/am62px_evm_a53_defconfig @@ -179,3 +179,5 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0x6165 CONFIG_SPL_DFU=y CONFIG_FS_FAT_MAX_CLUSTSIZE=16384 CONFIG_EFI_SET_TIME=y + +#include <configs/k3_efi_capsule.config>

Added OSPI flash layout diagram, as well as example commands to flash firmware to it.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com Reviewed-by: Tom Rini trini@konsulko.com --- doc/board/ti/am62px_sk.rst | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
diff --git a/doc/board/ti/am62px_sk.rst b/doc/board/ti/am62px_sk.rst index 1f2982c36f9..c80b5068117 100644 --- a/doc/board/ti/am62px_sk.rst +++ b/doc/board/ti/am62px_sk.rst @@ -156,6 +156,30 @@ Image formats: .. image:: img/dm_tispl.bin.svg :alt: tispl.bin image format
+OSPI: +----- +ROM supports booting from OSPI from offset 0x0. + +Flashing images to OSPI: + +Below commands can be used to download tiboot3.bin, tispl.bin, and u-boot.img, +over tftp and then flash those to OSPI at their respective addresses. + +.. prompt:: bash => + + sf probe + tftp ${loadaddr} tiboot3.bin + sf update $loadaddr 0x0 $filesize + tftp ${loadaddr} tispl.bin + sf update $loadaddr 0x80000 $filesize + tftp ${loadaddr} u-boot.img + sf update $loadaddr 0x280000 $filesize + +Flash layout for OSPI: + +.. image:: img/ospi_sysfw2.svg + :alt: OSPI flash partition layout + A53 SPL DDR Memory Layout -------------------------

Define the firmware components updatable via EFI capsule update, including defining capsule GUIDs for the various firmware components for the BeagleBoneAI64.
Note this involved creating BeagleBoneAI64's own beagleboneai64.h board header file instead of reusing j721e_evm's.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- board/beagle/beagleboneai64/Kconfig | 4 +- board/beagle/beagleboneai64/beagleboneai64.c | 39 ++++++++++++++ include/configs/beagleboneai64.h | 55 ++++++++++++++++++++ 3 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 include/configs/beagleboneai64.h
diff --git a/board/beagle/beagleboneai64/Kconfig b/board/beagle/beagleboneai64/Kconfig index 7cfccf9baf0..0f21582614d 100644 --- a/board/beagle/beagleboneai64/Kconfig +++ b/board/beagle/beagleboneai64/Kconfig @@ -37,7 +37,7 @@ config SYS_VENDOR default "beagle"
config SYS_CONFIG_NAME - default "j721e_evm" + default "beagleboneai64"
source "board/ti/common/Kconfig"
@@ -52,7 +52,7 @@ config SYS_VENDOR default "beagle"
config SYS_CONFIG_NAME - default "j721e_evm" + default "beagleboneai64"
source "board/ti/common/Kconfig"
diff --git a/board/beagle/beagleboneai64/beagleboneai64.c b/board/beagle/beagleboneai64/beagleboneai64.c index c5b4ff7df47..1e43d1c1bd2 100644 --- a/board/beagle/beagleboneai64/beagleboneai64.c +++ b/board/beagle/beagleboneai64/beagleboneai64.c @@ -7,6 +7,7 @@ * Copyright (C) 2022-2023 Robert Nelson, BeagleBoard.org Foundation */
+#include <efi_loader.h> #include <cpu_func.h> #include <env.h> #include <fdt_support.h> @@ -14,6 +15,44 @@
DECLARE_GLOBAL_DATA_PTR;
+struct efi_fw_image fw_images[] = { + { + .image_type_id = BEAGLEBONEAI64_TIBOOT3_IMAGE_GUID, + .fw_name = u"BEAGLEBONEAI64_TIBOOT3", + .image_index = 1, + }, + { + .image_type_id = BEAGLEBONEAI64_SPL_IMAGE_GUID, + .fw_name = u"BEAGLEBONEAI64_SPL", + .image_index = 2, + }, + { + .image_type_id = BEAGLEBONEAI64_UBOOT_IMAGE_GUID, + .fw_name = u"BEAGLEBONEAI64_UBOOT", + .image_index = 3, + }, + { + .image_type_id = BEAGLEBONEAI64_SYSFW_IMAGE_GUID, + .fw_name = u"BEAGLEBONEAI64_SYSFW", + .image_index = 4, + } +}; + +struct efi_capsule_update_info update_info = { + .dfu_string = "mmc 0=tiboot3.bin raw 0 2000 mmcpart 1;" + "tispl.bin fat 0 1;u-boot.img fat 0 1; sysfw.itb fat 0 1", + .num_images = ARRAY_SIZE(fw_images), + .images = fw_images, +}; + +#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO) +void set_dfu_alt_info(char *interface, char *devstr) +{ + if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) + env_set("dfu_alt_info", update_info.dfu_string); +} +#endif + int board_init(void) { return 0; diff --git a/include/configs/beagleboneai64.h b/include/configs/beagleboneai64.h new file mode 100644 index 00000000000..85d57248bb6 --- /dev/null +++ b/include/configs/beagleboneai64.h @@ -0,0 +1,55 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Configuration header file for BeagleBoneAI64 + * + * https://beagleboard.org/ai-64 + * + * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/ + */ + +#ifndef __CONFIG_BEAGLEBONEAI64_H +#define __CONFIG_BEAGLEBONEAI64_H + +/* FLASH Configuration */ +#define CFG_SYS_FLASH_BASE 0x000000000 + +/* SPL Loader Configuration */ +#define CFG_SYS_UBOOT_BASE 0x50080000 + +/** + * define BEAGLEBONEAI64_TIBOOT3_IMAGE_GUID - firmware GUID for BeagleBoneAI64 + * tiboot3.bin + * define BEAGLEBONEAI64_SPL_IMAGE_GUID - firmware GUID for BeagleBoneAI64 + * SPL + * define BEAGLEBONEAI64_UBOOT_IMAGE_GUID - firmware GUID for BeagleBoneAI64 + * UBOOT + * define BEAGLEBONEAI64_SYSFW_IMAGE_GUID - firmware GUID for BeagleBoneAI64 + * SYSFW + * + * These GUIDs are used in capsules updates to identify the corresponding + * firmware object. + * + * Board developers using this as a starting reference should + * define their own GUIDs to ensure that firmware repositories (like + * LVFS) do not confuse them. + */ +#define BEAGLEBONEAI64_TIBOOT3_IMAGE_GUID \ + EFI_GUID(0x772a4810, 0x2194, 0x4923, 0x87, 0x54, \ + 0x01, 0x15, 0x87, 0x0e, 0xf3, 0x67) + +#define BEAGLEBONEAI64_SPL_IMAGE_GUID \ + EFI_GUID(0x83447222, 0x1e26, 0x40cd, 0xa3, 0x95, \ + 0xb7, 0xde, 0x09, 0x57, 0xe8, 0x75) + +#define BEAGLEBONEAI64_UBOOT_IMAGE_GUID \ + EFI_GUID(0x4249ff77, 0xc17d, 0x4eb7, 0xa1, 0xdb, \ + 0x45, 0xaa, 0x98, 0x87, 0xd4, 0x9e) + +#define BEAGLEBONEAI64_SYSFW_IMAGE_GUID \ + EFI_GUID(0xdfc9c683, 0x49b7, 0x46bd, 0xb3, 0xc1, \ + 0x3a, 0x3b, 0x2f, 0xdb, 0x13, 0x5b) + +/* Now for the remaining common defines */ +#include <configs/ti_armv7_common.h> + +#endif /* __CONFIG_BEAGLEBONEAI64_H */

On Fri, 14 Jun 2024 at 19:36, Jonathan Humphreys j-humphreys@ti.com wrote:
Define the firmware components updatable via EFI capsule update, including defining capsule GUIDs for the various firmware components for the BeagleBoneAI64.
Note this involved creating BeagleBoneAI64's own beagleboneai64.h board header file instead of reusing j721e_evm's.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com
board/beagle/beagleboneai64/Kconfig | 4 +- board/beagle/beagleboneai64/beagleboneai64.c | 39 ++++++++++++++ include/configs/beagleboneai64.h | 55 ++++++++++++++++++++ 3 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 include/configs/beagleboneai64.h
diff --git a/board/beagle/beagleboneai64/Kconfig b/board/beagle/beagleboneai64/Kconfig index 7cfccf9baf0..0f21582614d 100644 --- a/board/beagle/beagleboneai64/Kconfig +++ b/board/beagle/beagleboneai64/Kconfig @@ -37,7 +37,7 @@ config SYS_VENDOR default "beagle"
config SYS_CONFIG_NAME
default "j721e_evm"
default "beagleboneai64"
source "board/ti/common/Kconfig"
@@ -52,7 +52,7 @@ config SYS_VENDOR default "beagle"
config SYS_CONFIG_NAME
default "j721e_evm"
default "beagleboneai64"
source "board/ti/common/Kconfig"
diff --git a/board/beagle/beagleboneai64/beagleboneai64.c b/board/beagle/beagleboneai64/beagleboneai64.c index c5b4ff7df47..1e43d1c1bd2 100644 --- a/board/beagle/beagleboneai64/beagleboneai64.c +++ b/board/beagle/beagleboneai64/beagleboneai64.c @@ -7,6 +7,7 @@
- Copyright (C) 2022-2023 Robert Nelson, BeagleBoard.org Foundation
*/
+#include <efi_loader.h> #include <cpu_func.h> #include <env.h> #include <fdt_support.h> @@ -14,6 +15,44 @@
DECLARE_GLOBAL_DATA_PTR;
+struct efi_fw_image fw_images[] = {
{
.image_type_id = BEAGLEBONEAI64_TIBOOT3_IMAGE_GUID,
.fw_name = u"BEAGLEBONEAI64_TIBOOT3",
.image_index = 1,
},
{
.image_type_id = BEAGLEBONEAI64_SPL_IMAGE_GUID,
.fw_name = u"BEAGLEBONEAI64_SPL",
.image_index = 2,
},
{
.image_type_id = BEAGLEBONEAI64_UBOOT_IMAGE_GUID,
.fw_name = u"BEAGLEBONEAI64_UBOOT",
.image_index = 3,
},
{
.image_type_id = BEAGLEBONEAI64_SYSFW_IMAGE_GUID,
.fw_name = u"BEAGLEBONEAI64_SYSFW",
.image_index = 4,
}
+};
+struct efi_capsule_update_info update_info = {
.dfu_string = "mmc 0=tiboot3.bin raw 0 2000 mmcpart 1;"
"tispl.bin fat 0 1;u-boot.img fat 0 1; sysfw.itb fat 0 1",
.num_images = ARRAY_SIZE(fw_images),
.images = fw_images,
+};
+#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO) +void set_dfu_alt_info(char *interface, char *devstr) +{
if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT))
env_set("dfu_alt_info", update_info.dfu_string);
+} +#endif
int board_init(void) { return 0; diff --git a/include/configs/beagleboneai64.h b/include/configs/beagleboneai64.h new file mode 100644 index 00000000000..85d57248bb6 --- /dev/null +++ b/include/configs/beagleboneai64.h @@ -0,0 +1,55 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/*
- Configuration header file for BeagleBoneAI64
- Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
- */
+#ifndef __CONFIG_BEAGLEBONEAI64_H +#define __CONFIG_BEAGLEBONEAI64_H
+/* FLASH Configuration */ +#define CFG_SYS_FLASH_BASE 0x000000000
+/* SPL Loader Configuration */ +#define CFG_SYS_UBOOT_BASE 0x50080000
+/**
- define BEAGLEBONEAI64_TIBOOT3_IMAGE_GUID - firmware GUID for BeagleBoneAI64
tiboot3.bin
- define BEAGLEBONEAI64_SPL_IMAGE_GUID - firmware GUID for BeagleBoneAI64
SPL
- define BEAGLEBONEAI64_UBOOT_IMAGE_GUID - firmware GUID for BeagleBoneAI64
UBOOT
- define BEAGLEBONEAI64_SYSFW_IMAGE_GUID - firmware GUID for BeagleBoneAI64
SYSFW
- These GUIDs are used in capsules updates to identify the corresponding
- firmware object.
- Board developers using this as a starting reference should
- define their own GUIDs to ensure that firmware repositories (like
- LVFS) do not confuse them.
- */
+#define BEAGLEBONEAI64_TIBOOT3_IMAGE_GUID \
EFI_GUID(0x772a4810, 0x2194, 0x4923, 0x87, 0x54, \
0x01, 0x15, 0x87, 0x0e, 0xf3, 0x67)
+#define BEAGLEBONEAI64_SPL_IMAGE_GUID \
EFI_GUID(0x83447222, 0x1e26, 0x40cd, 0xa3, 0x95, \
0xb7, 0xde, 0x09, 0x57, 0xe8, 0x75)
+#define BEAGLEBONEAI64_UBOOT_IMAGE_GUID \
EFI_GUID(0x4249ff77, 0xc17d, 0x4eb7, 0xa1, 0xdb, \
0x45, 0xaa, 0x98, 0x87, 0xd4, 0x9e)
+#define BEAGLEBONEAI64_SYSFW_IMAGE_GUID \
EFI_GUID(0xdfc9c683, 0x49b7, 0x46bd, 0xb3, 0xc1, \
0x3a, 0x3b, 0x2f, 0xdb, 0x13, 0x5b)
+/* Now for the remaining common defines */ +#include <configs/ti_armv7_common.h>
+#endif /* __CONFIG_BEAGLEBONEAI64_H */
2.34.1
Reviewed-by: Ilias Apalodimas ilias.apalodimas@linaro.org

Enable on disk, raw capsule update.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- configs/j721e_beagleboneai64_a72_defconfig | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/configs/j721e_beagleboneai64_a72_defconfig b/configs/j721e_beagleboneai64_a72_defconfig index a354876f8c2..86c565a9211 100644 --- a/configs/j721e_beagleboneai64_a72_defconfig +++ b/configs/j721e_beagleboneai64_a72_defconfig @@ -172,3 +172,5 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0x6163 CONFIG_SPL_DFU=y CONFIG_LZO=y CONFIG_EFI_SET_TIME=y + +#include <configs/k3_efi_capsule.config>

Enable serial flash DFU support for capsule update of firmware.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- configs/j784s4_evm_a72_defconfig | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/configs/j784s4_evm_a72_defconfig b/configs/j784s4_evm_a72_defconfig index 2aa16eb7270..141f2e0e156 100644 --- a/configs/j784s4_evm_a72_defconfig +++ b/configs/j784s4_evm_a72_defconfig @@ -85,6 +85,9 @@ CONFIG_CLK=y CONFIG_SPL_CLK=y CONFIG_CLK_CCF=y CONFIG_CLK_TI_SCI=y +CONFIG_DFU_SF=y +CONFIG_SYS_DFU_DATA_BUF_SIZE=0x40000 +CONFIG_SYS_DFU_MAX_FILE_SIZE=0x800000 CONFIG_DMA_CHANNELS=y CONFIG_TI_K3_NAVSS_UDMA=y CONFIG_TI_SCI_PROTOCOL=y

Define the firmware components updatable via EFI capsule update, including defining capsule GUIDs for the various firmware components for the AM69 SK.
TODO: possibly make the struct's sk specific. TODO: add doc commit (and make sure doc is sk/NOR specific, and add OSIP boot mode) TODO: update doc to show sk defconfig when building
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com Acked-by: Ilias Apalodimas ilias.apalodimas@linaro.org --- board/ti/j784s4/evm.c | 34 ++++++++++++++++++++++++++++++++++ include/configs/j784s4_evm.h | 24 ++++++++++++++++++++++++ 2 files changed, 58 insertions(+)
diff --git a/board/ti/j784s4/evm.c b/board/ti/j784s4/evm.c index aed0ea5b949..548dbd5925d 100644 --- a/board/ti/j784s4/evm.c +++ b/board/ti/j784s4/evm.c @@ -7,12 +7,46 @@ * */
+#include <efi_loader.h> #include <init.h> #include <spl.h> #include "../common/fdt_ops.h"
DECLARE_GLOBAL_DATA_PTR;
+struct efi_fw_image fw_images[] = { + { + .image_type_id = AM69_SK_TIBOOT3_IMAGE_GUID, + .fw_name = u"AM69_SK_TIBOOT3", + .image_index = 1, + }, + { + .image_type_id = AM69_SK_SPL_IMAGE_GUID, + .fw_name = u"AM69_SK_SPL", + .image_index = 2, + }, + { + .image_type_id = AM69_SK_UBOOT_IMAGE_GUID, + .fw_name = u"AM69_SK_UBOOT", + .image_index = 3, + } +}; + +struct efi_capsule_update_info update_info = { + .dfu_string = "sf 0:0=tiboot3.bin raw 0 80000;" + "tispl.bin raw 80000 200000;u-boot.img raw 280000 400000", + .num_images = ARRAY_SIZE(fw_images), + .images = fw_images, +}; + +#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO) +void set_dfu_alt_info(char *interface, char *devstr) +{ + if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) + env_set("dfu_alt_info", update_info.dfu_string); +} +#endif + int board_init(void) { return 0; diff --git a/include/configs/j784s4_evm.h b/include/configs/j784s4_evm.h index 4a2ccdce144..53eb2bff221 100644 --- a/include/configs/j784s4_evm.h +++ b/include/configs/j784s4_evm.h @@ -9,6 +9,30 @@ #ifndef __CONFIG_J784S4_EVM_H #define __CONFIG_J784S4_EVM_H
+/** + * define AM69_SK_TIBOOT3_IMAGE_GUID - firmware GUID for AM69 SK tiboot3.bin + * define AM69_SK_SPL_IMAGE_GUID - firmware GUID for AM69 SK SPL + * define AM69_SK_UBOOT_IMAGE_GUID - firmware GUID for AM69 SK UBOOT + * + * These GUIDs are used in capsules updates to identify the corresponding + * firmware object. + * + * Board developers using this as a starting reference should + * define their own GUIDs to ensure that firmware repositories (like + * LVFS) do not confuse them. + */ +#define AM69_SK_TIBOOT3_IMAGE_GUID \ + EFI_GUID(0xadf49ec5, 0x61bb, 0x4dbe, 0x8b, 0x8d, \ + 0x39, 0xdf, 0x4d, 0x7e, 0xbf, 0x46) + +#define AM69_SK_SPL_IMAGE_GUID \ + EFI_GUID(0x787f0059, 0x63a1, 0x461c, 0xa1, 0x8e, \ + 0x9d, 0x83, 0x83, 0x45, 0xfe, 0x8e) + +#define AM69_SK_UBOOT_IMAGE_GUID \ + EFI_GUID(0x9300505d, 0x6ec5, 0x4ff8, 0x99, 0xe4, \ + 0x54, 0x59, 0xa0, 0x4b, 0xe6, 0x17) + /* Now for the remaining common defines */ #include <configs/ti_armv7_common.h>

Enable on disk, raw capsule update.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- configs/j784s4_evm_a72_defconfig | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/configs/j784s4_evm_a72_defconfig b/configs/j784s4_evm_a72_defconfig index 141f2e0e156..3cfa006f86b 100644 --- a/configs/j784s4_evm_a72_defconfig +++ b/configs/j784s4_evm_a72_defconfig @@ -161,3 +161,5 @@ CONFIG_SPL_SYSRESET=y CONFIG_SYSRESET_TI_SCI=y CONFIG_DM_THERMAL=y CONFIG_EFI_SET_TIME=y + +#include <configs/k3_efi_capsule.config>

Added OSPI NOR flash layout diagram, as well as example commands to flash firmware to it. Added OSPI boot mode pin setting.
Signed-off-by: Jonathan Humphreys j-humphreys@ti.com --- doc/board/ti/img/ospi_sysfw3.svg | 802 +++++++++++++++++++++++++++++++ doc/board/ti/j784s4_evm.rst | 28 ++ 2 files changed, 830 insertions(+) create mode 100644 doc/board/ti/img/ospi_sysfw3.svg
diff --git a/doc/board/ti/img/ospi_sysfw3.svg b/doc/board/ti/img/ospi_sysfw3.svg new file mode 100644 index 00000000000..382867c6f4f --- /dev/null +++ b/doc/board/ti/img/ospi_sysfw3.svg @@ -0,0 +1,802 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!--SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause--> + +<!--Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/--> + +<svg + version="1.1" + width="321px" + height="336px" + viewBox="-0.5 -0.5 321 336" + id="svg205" + sodipodi:docname="ospi_sysfw3.svg" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:xhtml="http://www.w3.org/1999/xhtml%22%3E + <sodipodi:namedview + id="namedview207" + pagecolor="#505050" + bordercolor="#eeeeee" + borderopacity="1" + inkscape:pageshadow="0" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="3.4732143" + inkscape:cx="160.37018" + inkscape:cy="168" + inkscape:window-width="3370" + inkscape:window-height="1376" + inkscape:window-x="70" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="g203" /> + <defs + id="defs9" /> + <g + id="g203"> + <g + id="g13"> + <rect + x="120" + y="15" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect11" /> + </g> + <g + id="g21"> + <g + transform="translate(-0.5 -0.5)" + id="g19"> + <switch + id="switch17"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 35px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.tiboot3(512k)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="39" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text15">ospi.tiboot3(512k)</text> + </switch> + </g> + </g> + <g + id="g25"> + <rect + x="60" + y="5" + width="60" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect23" /> + </g> + <g + id="g33"> + <g + transform="translate(-0.5 -0.5)" + id="g31"> + <switch + id="switch29"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 58px; height: 1px; padding-top: 20px; margin-left: 60px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x0</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="24" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text27">0x0</text> + </switch> + </g> + </g> + <g + id="g37"> + <rect + x="120" + y="55" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect35" /> + </g> + <g + id="g45"> + <g + transform="translate(-0.5 -0.5)" + id="g43"> + <switch + id="switch41"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 75px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.tispl(2M)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="79" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text39">ospi.tispl(2M)</text> + </switch> + </g> + </g> + <g + id="g49"> + <rect + x="0" + y="45" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect47" /> + </g> + <g + id="g57"> + <g + transform="translate(-0.5 -0.5)" + id="g55"> + <switch + id="switch53"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 60px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x80000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="64" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text51">0x80000</text> + </switch> + </g> + </g> + <g + id="g61"> + <rect + x="120" + y="95" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect59" /> + </g> + <g + id="g69"> + <g + transform="translate(-0.5 -0.5)" + id="g67"> + <switch + id="switch65"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 115px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.u-boot(4M)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="119" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text63">ospi.u-boot(4M)</text> + </switch> + </g> + </g> + <g + id="g73"> + <rect + x="0" + y="85" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect71" /> + </g> + <g + id="g81"> + <g + transform="translate(-0.5 -0.5)" + id="g79"> + <switch + id="switch77"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 100px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x280000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="104" + fill="#000000" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text75">0x280000</text> + </switch> + </g> + </g> + <g + id="g85"> + <rect + x="120" + y="135" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect83" /> + </g> + <g + id="g93"> + <g + transform="translate(-0.5 -0.5)" + id="g91"> + <switch + id="switch89"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 155px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.env(128K)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="159" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text87">ospi.env(128K)</text> + </switch> + </g> + </g> + <g + id="g97"> + <rect + x="0" + y="125" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect95" /> + </g> + <g + id="g105"> + <g + transform="translate(-0.5 -0.5)" + id="g103"> + <switch + id="switch101"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 140px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x680000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="144" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text99">0x680000</text> + </switch> + </g> + </g> + <g + id="g109"> + <rect + x="120" + y="175" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect107" /> + </g> + <g + id="g117"> + <g + transform="translate(-0.5 -0.5)" + id="g115"> + <switch + id="switch113"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 195px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.env.backup(128K)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="199" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text111">ospi.env.backup(128K)</text> + </switch> + </g> + </g> + <g + id="g121"> + <rect + x="0" + y="165" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect119" /> + </g> + <g + id="g129"> + <g + transform="translate(-0.5 -0.5)" + id="g127"> + <switch + id="switch125"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 180px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x6A0000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="184" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text123">0x6A0000</text> + </switch> + </g> + </g> + <g + id="g133"> + <rect + x="120" + y="215" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect131" /> + </g> + <g + id="g141"> + <g + transform="translate(-0.5 -0.5)" + id="g139"> + <switch + id="switch137"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 235px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">padding(1280K)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="239" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text135">padding(1280K)</text> + </switch> + </g> + </g> + <g + id="g145"> + <rect + x="0" + y="205" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect143" /> + </g> + <g + id="g153"> + <g + transform="translate(-0.5 -0.5)" + id="g151"> + <switch + id="switch149"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 220px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x6C0000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="224" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text147">0x6C0000</text> + </switch> + </g> + </g> + <g + id="g157"> + <rect + x="120" + y="255" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect155" /> + </g> + <g + id="g165"> + <g + transform="translate(-0.5 -0.5)" + id="g163"> + <switch + id="switch161"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 275px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.rootfs(UBIFS)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="279" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text159">ospi.rootfs(UBIFS)</text> + </switch> + </g> + </g> + <g + id="g169"> + <rect + x="0" + y="245" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect167" /> + </g> + <g + id="g177"> + <g + transform="translate(-0.5 -0.5)" + id="g175"> + <switch + id="switch173"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 260px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x800000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="264" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text171">0x800000</text> + </switch> + </g> + </g> + <g + id="g181"> + <rect + x="120" + y="295" + width="200" + height="40" + fill="none" + stroke="rgb(0, 0, 0)" + pointer-events="all" + id="rect179" /> + </g> + <g + id="g189"> + <g + transform="translate(-0.5 -0.5)" + id="g187"> + <switch + id="switch185"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 315px; margin-left: 121px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ospi.phypattern(256k)</xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="220" + y="319" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="middle" + id="text183">ospi.phypattern(256k)</text> + </switch> + </g> + </g> + <g + id="g193"> + <rect + x="0" + y="285" + width="120" + height="30" + fill="none" + stroke="none" + pointer-events="all" + id="rect191" /> + </g> + <g + id="g201"> + <g + transform="translate(-0.5 -0.5)" + id="g199"> + <switch + id="switch197"> + <foreignObject + pointer-events="none" + width="100%" + height="100%" + requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" + style="overflow: visible; text-align: left;"> + <xhtml:div + style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 118px; height: 1px; padding-top: 300px; margin-left: 0px;"> + <xhtml:div + data-drawio-colors="color: rgb(0, 0, 0); " + style="box-sizing: border-box; font-size: 0px; text-align: right;"> + <xhtml:div + style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <xhtml:pre + style="box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", Courier, monospace; line-height: 1.4; margin-top: 0px; margin-bottom: 0px; padding: 12px; overflow: auto; color: rgb(64, 64, 64); text-align: start;">0x3FC0000</xhtml:pre> + </xhtml:div> + </xhtml:div> + </xhtml:div> + </foreignObject> + <text + x="118" + y="304" + fill="rgb(0, 0, 0)" + font-family="Helvetica" + font-size="12px" + text-anchor="end" + id="text195">0x3FC0000</text> + </switch> + </g> + </g> + </g> +</svg> diff --git a/doc/board/ti/j784s4_evm.rst b/doc/board/ti/j784s4_evm.rst index 5c4bd2c927d..2ffec3dbd3b 100644 --- a/doc/board/ti/j784s4_evm.rst +++ b/doc/board/ti/j784s4_evm.rst @@ -153,6 +153,31 @@ Image formats .. image:: img/dm_tispl.bin.svg :alt: tispl.bin format
+OSPI: +----- +ROM supports booting from OSPI from offset 0x0. + +Flashing images to OSPI NOR: + +Below commands can be used to download tiboot3.bin, tispl.bin, and +u-boot.img over tftp and then flash those to OSPI at their respective +addresses. + +.. prompt:: bash => + + sf probe + tftp ${loadaddr} tiboot3.bin + sf update $loadaddr 0x0 $filesize + tftp ${loadaddr} tispl.bin + sf update $loadaddr 0x80000 $filesize + tftp ${loadaddr} u-boot.img + sf update $loadaddr 0x280000 $filesize + +Flash layout for OSPI NOR: + +.. image:: img/ospi_sysfw3.svg + :alt: OSPI NOR flash partition layout + R5 Memory Map -------------
@@ -262,6 +287,9 @@ section. * - SD - 0000
+ * - OSPI + - 0010 + * - EMMC - 0110

On 11:35-20240614, Jonathan Humphreys wrote:
Enable on disk capsule updates, which includes defining the firmware components (tiboot3, spl, u-boot) and enabling processing of raw capsule updates.
This is enabled for several TI SoC based platforms: AM64, AM62, AM62p, AM69, BeaglePlay, J7, and BeagleboneAI. The configs to enable this are in a single base config file. This will make it more scalable to add additional EFI capsule features (like authentication) across all TI boards that have capsules enabled.
This series also includes enabling serial flash DFU for AM62 and MMC DFU for beagleplay.
Changes from v1:
- Added sysfw.itb capsule definition to beagleboneai64
- removed extra commas in structure definitions
Changes from v2:
- Added documentation on OSPI flash layouts
- Improved comments for capsule GUIDs definitions
- Defined board unique capsule GUIDs and put definitions in board specific files
- Added a Capsule Update porting section to the documentation
Changes from v3:
- Added better commit messages based upon checkpatch warnings.
- Remove conditional inclusion of capsule update firmware info
- Converted OSPI layout diagram to svg format
Link to v3: https://lore.kernel.org/r/20240419205701.163821-1-j-humphreys@ti.com
Changes from v4:
- Added am69 SK board
- Corrected a few spelling mistakes and clarity improvements in k3 docs section
- Added CONFIG_SET_DFU_ALT_INFO guard around set_dfu_alt_info()
Link to v4: https://lore.kernel.org/r/20240509164123.1753050-1-j-humphreys@ti.com
Changes from v5:
- Created an EFI capsule base config for TI boards, making adding additional capsule features on TI boards more scalable.
Link to v5: https://lore.kernel.org/r/20240531222118.2618041-1-j-humphreys@ti.com
Changes from v6:
- Rebased on latest -next
- added tags
Link to v6: https://lore.kernel.org/r/20240607223858.1971290-1-j-humphreys@ti.com
Jonathan Humphreys (24): doc: uefi: capsules: Add Capsule Update porting section doc: ti: k3: Correct spelling mistakes and improve clarity configs: ti: Create base EFI capsule configs for TI K3 devices board: am64x: Define capsule update firmware info configs: am64x: Enable EFI capsule update doc: board: ti: am64x: document OSPI layout board: j721e: Define capsule update firmware info configs: j721e: Enable EFI capsule update doc: board: ti: j721e: document OSPI layout board: beagleplay: Define capsule update firmware info configs: beagleplay: Enable DFU for MMC configs: beagleplay: Enable EFI capsule update board: am62x: Define capsule update firmware info configs: am62x: Enable EFI capsule update doc: board: ti: am62x: document OSPI layout board: am62px: Define capsule update firmware info configs: am62px: Enable EFI capsule update doc: board: ti: am62px: document OSPI layout board: beagleboneai64: Define capsule update firmware info configs: beagleboneai64: Enable EFI capsule update configs: j784s4_evm: Enable serial flash DFU support board: sk-am69: Define capsule update firmware info configs: j784s4: Enable EFI capsule update doc: board: ti: j784s4: document OSPI NOR layout
Jon,
Could you submit a follow on patch to add under the appropriate subsection of [1] instructions for build environment and steps to copy the capsules?
I just ran into an issue with next where my build container was missing uuid-dev package and my builds broke overnight for u-boot/next. looking for documentation, I did not see the change.
[1] https://github.com/u-boot/u-boot/blob/master/doc/board/ti/k3.rst?plain=1#L20...

On Fri, 14 Jun 2024 11:35:27 -0500, Jonathan Humphreys wrote:
Enable on disk capsule updates, which includes defining the firmware components (tiboot3, spl, u-boot) and enabling processing of raw capsule updates.
This is enabled for several TI SoC based platforms: AM64, AM62, AM62p, AM69, BeaglePlay, J7, and BeagleboneAI. The configs to enable this are in a single base config file. This will make it more scalable to add additional EFI capsule features (like authentication) across all TI boards that have capsules enabled.
[...]
Applied to u-boot/next, thanks!
participants (4)
-
Ilias Apalodimas
-
Jonathan Humphreys
-
Nishanth Menon
-
Tom Rini