From 5e941924708e913ddaa4e45ecc6a3520ed0172fb Mon Sep 17 00:00:00 2001 From: Dhruva Gole Date: Wed, 15 Oct 2025 14:53:39 +0530 Subject: [PATCH 1/4] fix(ATF): improve wording and grammar Improve the wording in the Getting ATF source code section along with a few grammatical fixes. Signed-off-by: Dhruva Gole --- source/linux/Foundational_Components_ATF.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/linux/Foundational_Components_ATF.rst b/source/linux/Foundational_Components_ATF.rst index df82766ac..36e6fc334 100644 --- a/source/linux/Foundational_Components_ATF.rst +++ b/source/linux/Foundational_Components_ATF.rst @@ -28,11 +28,11 @@ on to either the Linux kernel or U-Boot in the non-secure world. .. rubric:: Getting the ATF Source Code -The pre-built TF-A binary is in TI Processor SDK: +The pre-built TF-A binary is in the TI Processor SDK: /board-support/prebuilt-images//bl31.bin. Use this binary since it is tested with TI Processor SDK. -If it is not possible to use pre-build binary, use the following: +If it is not possible to use a pre-built binary, use the following: .. code-block:: console From 104e16fd69d24ed9d77f05698a1d9c5a496fa228 Mon Sep 17 00:00:00 2001 From: Dhruva Gole Date: Wed, 15 Oct 2025 15:03:40 +0530 Subject: [PATCH 2/4] fix(ATF): use TF-A instead of ATF throughout ATF is no longer the recognised short hand for Trusted Firmware-A anywhere. Replace all such instances of ATF with TF-A Signed-off-by: Dhruva Gole --- source/linux/Foundational_Components_ATF.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/linux/Foundational_Components_ATF.rst b/source/linux/Foundational_Components_ATF.rst index 36e6fc334..d22f8e5f9 100644 --- a/source/linux/Foundational_Components_ATF.rst +++ b/source/linux/Foundational_Components_ATF.rst @@ -8,7 +8,7 @@ Trusted Firmware-A (TF-A) provides a reference implementation of secure world software for Armv7-A and Armv8-A, including a Secure Monitor executing at Exception Level 3 (EL3). -Arm Trusted Firmware (ATF) is the initial code on ARMv8-A cores for all K3 platforms. +TF-A is the initial code on ARMv8-A cores for all K3 platforms. After setting up the initial core state and applying any needed errata fixes it sets up itself as the EL3 monitor handler. Following that, it installs the secure world open source Trusted Execution Environment (OP-TEE) software and passes execution @@ -26,7 +26,7 @@ on to either the Linux kernel or U-Boot in the non-secure world. | -.. rubric:: Getting the ATF Source Code +.. rubric:: Getting the TF-A Source Code The pre-built TF-A binary is in the TI Processor SDK: /board-support/prebuilt-images//bl31.bin. @@ -49,7 +49,7 @@ Where is the commit shown here: :ref:`tf-a-release-notes` :ref:`release-s :start-after: .. start_include_yocto_toolchain_host_setup :end-before: .. end_include_yocto_toolchain_host_setup -.. rubric:: Building ATF +.. rubric:: Building TF-A .. ifconfig:: CONFIG_part_variant in ('AM62LX', 'AM62X', 'AM62AX', 'AM62PX', 'AM64X', 'J722S') @@ -98,7 +98,7 @@ Where is the commit shown here: :ref:`tf-a-release-notes` :ref:`release-s .. code-block:: text +---------------------------+------------+ - | ATF image | 0x701c0000 | + | TF-A image | 0x701c0000 | +---------------------------+------------+ | OP-TEE image | 0x9e800000 | +---------------------------+------------+ @@ -112,7 +112,7 @@ Where is the commit shown here: :ref:`tf-a-release-notes` :ref:`release-s .. code-block:: text +---------------------------+------------+ - | ATF image | 0x80000000 | + | TF-A image | 0x80000000 | +---------------------------+------------+ | OP-TEE image | 0x80200000 | +---------------------------+------------+ @@ -126,7 +126,7 @@ Where is the commit shown here: :ref:`tf-a-release-notes` :ref:`release-s .. code-block:: text +---------------------------+------------+ - | ATF image | 0x70000000 | + | TF-A image | 0x70000000 | +---------------------------+------------+ | OP-TEE image | 0x9e800000 | +---------------------------+------------+ @@ -144,7 +144,7 @@ Where is the commit shown here: :ref:`tf-a-release-notes` :ref:`release-s .. code-block:: text +-----------------------------------------------------+------------------+-----------------------+---------------------+---------------+-------------------+----------+----------------------------------------+ - | Source | ATF | OPTEE | A53 SPL | A53 U-Boot | DTB | kernel | Comments | + | Source | TF-A | OPTEE | A53 SPL | A53 U-Boot | DTB | kernel | Comments | +=====================================================+==================+=======================+=====================+===============+===================+==========+========================================+ | /plat/ti/k3/board/lite/board.mk | | BL32_BASE | PRELOADED_BL33_BASE | | K3_HW_CONFIG_BASE | | Change K3_HW_CONFIG_BASE for | | | | | | | | | u-boot a53 skip case | From 0d80c6af1fc613993bf45bef032184b0c5f2c198 Mon Sep 17 00:00:00 2001 From: Dhruva Gole Date: Wed, 15 Oct 2025 14:55:44 +0530 Subject: [PATCH 3/4] fix(ATF): use the correct ATF links to clone Use the ti-fork of ATF for AM62L and for other devices move to an upstream baseline Signed-off-by: Dhruva Gole --- source/linux/Foundational_Components_ATF.rst | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/source/linux/Foundational_Components_ATF.rst b/source/linux/Foundational_Components_ATF.rst index d22f8e5f9..e15275803 100644 --- a/source/linux/Foundational_Components_ATF.rst +++ b/source/linux/Foundational_Components_ATF.rst @@ -34,10 +34,19 @@ Use this binary since it is tested with TI Processor SDK. If it is not possible to use a pre-built binary, use the following: -.. code-block:: console +.. ifconfig:: CONFIG_part_variant in ('AM62LX') + + .. code-block:: console + + $ git clone https://github.com/TexasInstruments/arm-trusted-firmware.git + $ git checkout + +.. ifconfig:: CONFIG_part_variant not in ('AM62LX') + + .. code-block:: console - $ git clone https://github.com/TexasInstruments/arm-trusted-firmware.git - $ git checkout + $ git clone https://review.trustedfirmware.org/TF-A/trusted-firmware-a.git + $ git checkout Where is the commit shown here: :ref:`tf-a-release-notes` :ref:`release-specific-build-information`. From 0fb0130d47b348b4f277cc1736065814723ae4a0 Mon Sep 17 00:00:00 2001 From: Dhruva Gole Date: Wed, 15 Oct 2025 18:13:35 +0530 Subject: [PATCH 4/4] feat(ATF): document SCMI for AM62L Add some more documentation talking about the transition to SCMI from TI SCI and also add what all we now support in TF-A via the SCMI interface. While at it, replace instance of ATF with TF-A throughout to align with currently recognized terminology. Signed-off-by: Dhruva Gole --- source/linux/Foundational_Components_ATF.rst | 38 ++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/source/linux/Foundational_Components_ATF.rst b/source/linux/Foundational_Components_ATF.rst index e15275803..12a27cd14 100644 --- a/source/linux/Foundational_Components_ATF.rst +++ b/source/linux/Foundational_Components_ATF.rst @@ -24,6 +24,44 @@ on to either the Linux kernel or U-Boot in the non-secure world. The SCMI IDs used in the AM62L TF-A implementation are documented in the `TF-A documentation `__. + .. rubric:: SCMI and TI SCI + + The AM62Lx represents a transition in Texas Instruments' approach to system control + interfaces. In the previous K3 devices, the Texas Instruments System Controller Interface (TI SCI) + was the primary protocol used for power, clock, and resource management. SCMI now serves + as a replacement for newer devices like the AM62L, offering similar functionality through + an industry-standard ARM protocol. This transition is in part due to the absence of any Device + Management (R5 core) in the AM62Lx. + + .. rubric:: Implementation Overview + + The AM62L TF-A implementation runs a SCMI server that manages: + + * **Power Domains**: Over 100 power domains are defined for various peripherals and subsystems + * **Clock Management**: Extensive clock control for all major peripherals including: + + - Multiple clock sources (PLLs, oscillators, external clocks) + - Clock multiplexers for flexible clock routing + - Clock dividers for frequency scaling + - Support for dynamic clock rate configuration + + .. rubric:: Clock Infrastructure + + The clock management system supports: + + * **Parent Clock Selection** - Multiple clock sources can be selected as parents for each peripheral + * **Clock Multiplexing** - Dynamic switching between different clock sources + * **Rate Configuration** - Flexible frequency configuration within supported ranges + + .. rubric:: Usage in Linux + + Linux kernel drivers can use standard SCMI client APIs to: + + * Request power state changes for devices + * Configure clock rates and parents + * Query current power and clock states + * Implement dynamic power management policies + | .. rubric:: Getting the TF-A Source Code