All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gokul Praveen <g-praveen@ti.com>
To: Bryan Brattlof <bb@ti.com>
Cc: <trini@konsulko.com>, <n-francis@ti.com>, <a-nandan@ti.com>,
	<u-boot@lists.u-boot-project.org>
Subject: Re: [PATCH v3 3/3] doc: ti: document A Core no-SPL boot mode for J784S4 EVM
Date: Wed, 2 Sep 2026 12:08:04 +0530	[thread overview]
Message-ID: <5b0bbcca-cef5-4b8a-86d4-03658e73707a@ti.com> (raw)
In-Reply-To: <20260901162036.6jzuqt2qn4tdxxqf@bryanbrattlof.com>

Hi Bryan,

On 01/09/26 21:50, Bryan Brattlof wrote:
> On August 19, 2026 thus sayeth Gokul Praveen:
>> This patch adds user documentation for the A Core no-SPL boot mode
>> on J784S4 EVM, where R5 SPL directly loads U-Boot proper, bypassing
>> the A Core SPL stage.
>>
>> The documentation covers the boot flow, build steps, and usage
>> instructions for this boot mode using tinospl.bin.
>>
>> Signed-off-by: Gokul Praveen <g-praveen@ti.com>
>> ---
>>   doc/board/ti/j784s4_evm.rst | 143 ++++++++++++++++++++++++++++++++++++
>>   1 file changed, 143 insertions(+)
>>
>> diff --git a/doc/board/ti/j784s4_evm.rst b/doc/board/ti/j784s4_evm.rst
>> index ec82228ab90..cf870066291 100644
>> --- a/doc/board/ti/j784s4_evm.rst
>> +++ b/doc/board/ti/j784s4_evm.rst
>> @@ -637,6 +637,149 @@ to the J784S4 endpoint:
>>   This program copies the boot image to the PCIe endpoint's memory region and
>>   writes the necessary control words to signal image transfer completion.
>>   
>> +A-Core No-SPL Boot Mode
>> +----------------
>> +
>> +A-Core No-SPL Boot Mode on J784S4 platforms is a boot approach that bypasses
>> +the A72 SPL while retaining U-Boot in the boot flow. This mode provides faster
>> +boot times compared to normal boot while maintaining U-Boot's flexibility for
>> +kernel loading and system configuration.
>> +
>> +**Key differences from Normal Boot:**
>> +
>> +* Skips A72 SPL execution
>> +* U-Boot binary included in tinospl.bin alongside TFA, OP-TEE, and DM
>> +* U-Boot loads at CONFIG_TEXT_BASE=0x80080000 (A72 SPL's earlier load location)
>> +
>> +Boot Flow
>> +^^^^^^^^^
>> +
>> +**Normal boot flow:**
>> +
>> +.. code-block::
>> +
>> +             | tiboot3.bin |         tispl.bin          | u-boot.img |  Image  |
>> +             |-------------+----------------------------+------------+---------|
>> +    R5 Core  |    SPL      |                            |            |         |
>> +    ---------|       \     |                            |            |         |
>> +    A72 Core |        ------> TFA -> OP-TEE -> A72 SPL -->  U-Boot  --> Kernel |
>> +
>> +**With  A-Core no-SPL boot mode:**
>> +
>> +.. code-block::
>> +
>> +             | tiboot3.bin |        tinospl.bin          |  Image  |
>> +             |-------------+-----------------------------+---------|
>> +    R5 Core  |    SPL      |                             |         |
>> +    ---------|       \     |                             |         |
>> +    A72 Core |        ------> TFA -> OP-TEE -> DM -> U-Boot --> Kernel |
> Why would DM need to run on any of the Cortex-A cores in this boot mode?
Appologies for that, it was a mistake in the documentation. I will 
update that.
>> +
>> +Build Process
>> +^^^^^^^^^^^^^
>> +
>> +Enabling A-Core no-SPL boot mode requires re-building U-Boot as follows:
>> +
>> +0. Setup environment variables:
>> +"""""""""""""""""""""""""""""""
>> +
>> +Refer to the build procedure above for setting up the environment variables.
>> +
>> +1. U-Boot:
>> +""""""""""
>> +
>> +* **1.1 R5:**
>> +
>> +.. prompt:: bash $
>> +
>> + # use the no-SPL config fragment for K3 platforms
>> + export UBOOT_NOSPL_CFG_FRAGMENTR="k3_r5_nospl.config"
>> + export UBOOT_CFG_CORTEXR="${UBOOT_CFG_CORTEXR} ${UBOOT_NOSPL_CFG_FRAGMENTR}"
>> +
>> +.. include::  k3.rst
>> +    :start-after: .. k3_rst_include_start_build_steps_spl_r5
>> +    :end-before: .. k3_rst_include_end_build_steps_spl_r5
>> +
>> +* **1.2 A72:**
>> +
>> +.. prompt:: bash $
>> +
>> + # use the no-SPL config fragment for A72
>> + export UBOOT_NOSPL_CFG_FRAGMENTA="k3_a72_nospl.config"
>> + export UBOOT_CFG_CORTEXA="${UBOOT_CFG_CORTEXA} ${UBOOT_NOSPL_CFG_FRAGMENTA}"
>> +
>> +.. include::  k3.rst
>> +    :start-after: .. k3_rst_include_start_build_steps_uboot
>> +    :end-before: .. k3_rst_include_end_build_steps_uboot
>> +
>> +.. note::
>> +
>> +    The ``tinospl.bin`` file is automatically generated by binman during
>> +    the A72 U-Boot build process. This binary contains TFA, OP-TEE, DM, and
>> +    the U-Boot binary with its device tree.
>> +
>> +Usage
>> +^^^^^
>> +
>> +A-Core No-SPL Boot Mode uses a specialized binary called ``tinospl.bin`` which
>> +contains all necessary components to boot directly to U-Boot without loading
>> +the A72 SPL.
>> +
>> +**tinospl.bin structure:**
>> +
>> +The tinospl.bin is a FIT image containing:
>> +
>> +* **ATF (ARM Trusted Firmware)** - loaded at CONFIG_K3_ATF_LOAD_ADDR
>> +* **OP-TEE** - loaded at CONFIG_K3_OPTEE_LOAD_ADDR
>> +* **DM (Device Manager)** - loaded at 0x89000000
>> +* **U-Boot** - loaded at CONFIG_TEXT_BASE (0x80080000)
>> +* **DTB (Device Tree Blob)** - U-Boot device tree
>> +
>> +The R5 SPL requires both ``tiboot3.bin`` and ``tinospl.bin`` to be present
>> +in the boot partition (first partition) of the MMC device. By default, the SD
>> +card boot partition is used (``mmcdev=1``). The ``bootpart`` environment variable
>> +defaults to 1:2, specifying the second partition of the SD card.
>> +
>> +To use eMMC instead of SD as the boot media, rebuild the R5 SPL with the
>> +following diff:
>> +
>> +.. code-block:: diff
>> +
>> +    diff --git a/board/ti/j784s4/j784s4.env b/board/ti/j784s4/j784s4.env
>> +    index 82b9f0741bb..73d59ac425c 100644
>> +    --- a/board/ti/j784s4/j784s4.env
>> +    +++ b/board/ti/j784s4/j784s4.env
>> +    @@ -17,8 +17,8 @@ run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr}
>> +
>> +     boot_targets=mmc1 mmc0 usb pxe dhcp
>> +     boot=mmc
>> +    -mmcdev=1
>> +    -bootpart=1:2
>> +    +mmcdev=0
>> +    +bootpart=0:2
>> +     bootdir=/boot
>> +     rd_spec=-
>> +
> Does this still work? Long ago we moved all of TI's reference boards to
> use the stdboot flow[0].

Yes, this still works, Bryan.

Regards

Gokul Praveen

> ~Bryan
>
> [0] https://git.u-boot-project.org/u-boot/u-boot/-/blob/main/configs/j784s4_evm_a72_defconfig?ref_type=heads#L34

  reply	other threads:[~2026-09-02 10:32 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-19 10:19 [PATCH v3 0/3] A-core no-SPL Boot Support Gokul Praveen
2026-08-19 10:19 ` [PATCH v3 1/3] configs: add A-core no-SPL mode fragment for k3 devices Gokul Praveen
2026-09-01 16:52   ` Andrew Davis
2026-08-19 10:19 ` [PATCH v3 2/3] arm: k3-binman: add tinospl.bin for direct U-Boot boot Gokul Praveen
2026-08-19 10:19 ` [PATCH v3 3/3] doc: ti: document A Core no-SPL boot mode for J784S4 EVM Gokul Praveen
2026-09-01 16:20   ` Bryan Brattlof
2026-09-02  6:38     ` Gokul Praveen [this message]
2026-08-31  6:35 ` [PATCH v3 0/3] A-core no-SPL Boot Support Gokul Praveen
2026-09-01 16:23 ` Bryan Brattlof
2026-09-02  9:13   ` Gokul Praveen
2026-09-02 13:45     ` Bryan Brattlof
2026-09-03  6:41       ` Gokul Praveen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5b0bbcca-cef5-4b8a-86d4-03658e73707a@ti.com \
    --to=g-praveen@ti.com \
    --cc=a-nandan@ti.com \
    --cc=bb@ti.com \
    --cc=n-francis@ti.com \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.u-boot-project.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.