summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorEmanuele Ghidoli <[email protected]>2025-12-05 09:06:11 +0100
committerTom Rini <[email protected]>2025-12-16 11:38:23 -0600
commit3f0528882c0dd9ead93415f140559a44ab1e9885 (patch)
tree0a80d3aec56d57f315a926fbfba9397dd5f31b6d /doc
parent6c8dee07c346fcca8f851e18ea554c81f3483d09 (diff)
board: toradex: add aquila am69 support
Add initial support for the Toradex Aquila AM69 module. The Aquila AM69 SoM is based on the TI AM69 SoC from the Jacinto 7 family and is designed for high-end embedded computing, featuring up to 32GB of LPDDR4 and 256GB eMMC storage, extensive multimedia support (3x Quad CSI, 2x Quad DSI, DisplayPort, 5x Audio I2S/TDM), six Ethernet interfaces (1x 1G, 4x 2.5G SGMII, 1x 10G), USB 3.2 Host/DRD support, and a Wi-Fi 7/BT 5.3 module, alongside an RX8130 RTC, I2C EEPROM and Temperature Sensor, and optional TPM 2.0 module. Link: https://www.toradex.com/computer-on-modules/aquila-arm-family/ti-am69 Link: https://www.toradex.com/products/carrier-board/aquila-development-board-kit Signed-off-by: Emanuele Ghidoli <[email protected]> Co-developed-by: Parth Pancholi <[email protected]> Signed-off-by: Parth Pancholi <[email protected]> Co-developed-by: Franz Schnyder <[email protected]> Signed-off-by: Franz Schnyder <[email protected]> Signed-off-by: Francesco Dolcini <[email protected]>
Diffstat (limited to 'doc')
-rw-r--r--doc/board/toradex/aquila-am69.rst219
-rw-r--r--doc/board/toradex/index.rst1
2 files changed, 220 insertions, 0 deletions
diff --git a/doc/board/toradex/aquila-am69.rst b/doc/board/toradex/aquila-am69.rst
new file mode 100644
index 00000000000..43d0f6b873b
--- /dev/null
+++ b/doc/board/toradex/aquila-am69.rst
@@ -0,0 +1,219 @@
+.. SPDX-License-Identifier: GPL-2.0-only
+.. sectionauthor:: Emanuele Ghidoli <[email protected]>
+
+Aquila AM69 Module
+==================
+
+Quick Start
+-----------
+
+- Setup environment variables
+- Get binary-only TI Linux firmware
+- Build the ARM trusted firmware binary
+- Build the OPTEE binary
+- Build U-Boot for the R5
+- Build U-Boot for the A72
+- Flash to eMMC
+- Boot
+
+Setup environment
+-----------------
+
+Suggested current toolchains are ARM 11.3 (https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads):
+
+- https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
+- https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz
+
+.. code-block:: console
+
+ $ export CROSS_COMPILE_32=<path/to/arm/toolchain/bin/>arm-none-linux-gnueabihf-
+ $ export CROSS_COMPILE_64=<path/to/arm64/toolchain/bin/>aarch64-none-linux-gnu-
+
+Get the TI Linux Firmware
+-------------------------
+
+.. code-block:: console
+
+ $ echo "Downloading TI Linux Firmware..."
+ $ git clone -b ti-linux-firmware https://git.ti.com/git/processor-firmware/ti-linux-firmware.git
+
+Get and Build the ARM Trusted Firmware (Trusted Firmware A)
+-----------------------------------------------------------
+
+.. code-block:: console
+
+ $ echo "Downloading and building TF-A..."
+ $ git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
+ $ cd trusted-firmware-a
+
+Then build ATF (TF-A):
+
+.. code-block:: console
+
+ $ export CROSS_COMPILE="$CROSS_COMPILE_64"
+ $ make PLAT=k3 TARGET_BOARD=j784s4 SPD=opteed K3_USART=0x8
+
+Get and Build OPTEE
+-------------------
+
+.. code-block:: console
+
+ $ echo "Downloading and building OPTEE..."
+ $ git clone https://github.com/OP-TEE/optee_os.git
+ $ cd optee_os
+
+Then build OPTEE:
+
+.. code-block:: console
+
+ $ export CROSS_COMPILE="$CROSS_COMPILE_32"
+ $ export CROSS_COMPILE64="$CROSS_COMPILE_64"
+ $ export CFG_CONSOLE_UART=0x8
+ $ make PLATFORM=k3-j784s4 CFG_ARM64_core=y
+
+Build U-Boot for R5
+-------------------
+
+.. code-block:: console
+
+ $ export CROSS_COMPILE="$CROSS_COMPILE_32"
+ $ export BINMAN_INDIRS=<path/to/ti-linux-firmware>
+ $ make O=/tmp/aquila-r5 aquila-am69_r5_config
+ $ make O=/tmp/aquila-r5
+
+Build U-Boot for A72
+--------------------
+
+.. code-block:: console
+
+ $ export CROSS_COMPILE=$CROSS_COMPILE_64
+ $ export BL31=<path/to/atf>/build/k3/j784s4/release/bl31.bin
+ $ export TEE=<path/to/optee>/out/arm-plat-k3/core/tee-pager_v2.bin
+ $ export BINMAN_INDIRS="<path/to/ti-linux-firmware> /tmp/aquila-r5"
+ $ make O=/tmp/aquila-a72 aquila-am69_a72_config
+ $ make O=/tmp/aquila-a72
+
+Flash to eMMC
+-------------
+
+.. code-block:: console
+
+ => mmc dev 0 1
+ => fatload mmc 1 ${loadaddr} tiboot3.bin
+ => mmc write ${loadaddr} 0x0 0x400
+ => fatload mmc 1 ${loadaddr} tispl.bin
+ => mmc write ${loadaddr} 0x400 0x1000
+ => fatload mmc 1 ${loadaddr} u-boot.img
+ => mmc write ${loadaddr} 0x1400 0xc00
+
+As a convenience, instead of having to remember all those addresses and sizes,
+one may also use the update U-Boot wrappers:
+
+.. code-block:: console
+
+ => tftpboot ${loadaddr} tiboot3.bin
+ => run update_tiboot3
+
+ => tftpboot ${loadaddr} tispl.bin
+ => run update_tispl
+
+ => tftpboot ${loadaddr} u-boot.img
+ => run update_uboot
+
+Boot
+----
+
+Output::
+
+ U-Boot SPL 2026.01-rc1-00200-g39abfe677ff5-dirty (Nov 03 2025 - 18:09:30 +0100)
+ SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.8--v11.01.08 (Fancy Rat)')
+ HW CFG: 0x00
+ Initialized 4 DRAM controllers
+ SPL initial stack usage: 13552 bytes
+ Trying to boot from MMC1
+ Authentication passed
+ Authentication passed
+ Authentication passed
+ Loading Environment from nowhere... OK
+ init_env from device 17 not supported!
+ Authentication passed
+ Authentication passed
+ Starting ATF on ARM64 core...
+
+ NOTICE: BL31: v2.13.0(release):v2.13.0-1063-g7a0a320df
+ NOTICE: BL31: Built : 13:30:07, Oct 28 2025
+ I/TC:
+ I/TC: OP-TEE version: 4.8.0 (gcc version 11.3.1 20220712 (Arm GNU Toolchain 11.3.Rel1)) #1 Tue Oct 28 12:32:30 UTC 2025 aarch64
+ I/TC: WARNING: This OP-TEE configuration might be insecure!
+ I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
+ I/TC: Primary CPU initializing
+ I/TC: GIC redistributor base address not provided
+ I/TC: Assuming default GIC group status and modifier
+ I/TC: SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.8--v11.01.08 (Fancy Rat)')
+ I/TC: Activated SA2UL device
+ I/TC: Enabled firewalls for SA2UL TRNG device
+ I/TC: EIP76D TRNG initialized
+ I/TC: SA2UL Drivers initialized
+ I/TC: HUK Initialized
+ I/TC: Disabling output console
+
+ U-Boot SPL 2026.01-rc1-00200-g39abfe677ff5-dirty (Nov 03 2025 - 18:11:30 +0100)
+ Unable to shutdown MCU R5 core 1, -22
+ SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.8--v11.01.08 (Fancy Rat)')
+ DM ABI: 3.0 (firmware ver 0x000b 'PSDK.11.01.00.04--v11.01.08a' patch_ver: 8)
+ HW CFG: 0x00
+ Trying to boot from MMC1
+ Authentication passed
+ Authentication passed
+
+
+ U-Boot 2026.01-rc1-00200-g39abfe677ff5-dirty (Nov 03 2025 - 18:11:30 +0100)
+
+ SoC: J784S4 SR1.0 HS-FS
+ DRAM: 2 GiB (total 32 GiB)
+ optee optee: OP-TEE: revision 4.8 (86660925433a8d4d)
+ Core: 191 devices, 35 uclasses, devicetree: separate
+ MMC: mmc@4f80000: 0, mmc@4fb0000: 1
+ Loading Environment from MMC... Reading from MMC(0)... OK
+ MISSING TORADEX CARRIER CONFIG BLOCKS
+ In: serial@2880000
+ Out: serial@2880000
+ Err: serial@2880000
+ Model: Toradex 0088 Aquila AM69 Octa 32GB WB IT V1.1A
+ Serial#: 12593784
+ Net: am65_cpsw_nuss ethernet@46000000: K3 CPSW: nuss_ver: 0x6BA02102 cpsw_ver: 0x6BA82102 ale_ver: 0x00293904 Ports:1
+
+ Warning: ethernet@46000000port@1 MAC addresses don't match:
+ Address in ROM is c0:d6:0a:de:0e:e6
+ Address in environment is 00:14:2d:c0:2a:78
+ eth0: ethernet@46000000port@1 [PRIME]
+ Hit any key to stop autoboot: 0
+ MMC: no card present
+ Cannot persist EFI variables without system partition
+ ** Booting bootflow '<NULL>' with efi_mgr
+ Loading Boot0000 'mmc 0' failed
+ EFI boot manager: Cannot load any image
+ Boot failed (err=-14)
+ MMC: no card present
+ MMC: no card present
+ MMC: no card present
+ MMC: no card present
+ ** Booting bootflow '[email protected]_1' with script
+ Loading DeviceTree: k3-am69-aquila-dev.dtb
+ 142461 bytes read in 2 ms (67.9 MiB/s)
+ 87 bytes read in 1 ms (85 KiB/s)
+ Working FDT set to 90200000
+ Applying Overlay: aquila-am69_spi1_spidev_overlay.dtbo
+ 560 bytes read in 1 ms (546.9 KiB/s)
+ Applying Overlay: aquila-am69_spi2_spidev_overlay.dtbo
+ 560 bytes read in 1 ms (546.9 KiB/s)
+ 7937825 bytes read in 28 ms (270.4 MiB/s)
+ Bootargs: root=PARTUUID=1d80c51f-02 ro rootwait console=tty1 console=ttyS2,115200
+ Uncompressing Kernel Image to 0
+ ## Flattened Device Tree blob at 90200000
+ Booting using the fdt blob at 0x90200000
+ Working FDT set to 90200000
+ Loading Device Tree to 00000000fce5c000, end 00000000fcea1fff ... OK
+ Working FDT set to fce5c000
+
+ Starting kernel ...
diff --git a/doc/board/toradex/index.rst b/doc/board/toradex/index.rst
index b6d49cc187e..27f059542e6 100644
--- a/doc/board/toradex/index.rst
+++ b/doc/board/toradex/index.rst
@@ -7,6 +7,7 @@ Toradex
:maxdepth: 2
apalis-imx8
+ aquila-am69
colibri_imx7
colibri-imx8x
smarc-imx8mp