| 520d3f54 | 17-Mar-2026 |
Harrison Mutai <harrison.mutai@arm.com> |
fix(marvell): provide a default compile target
The DDR drivers require the `CROSS_COMPILE` prefix to be set. Platform builds break if a user builds for Marvell without explicitly providing this. Thi
fix(marvell): provide a default compile target
The DDR drivers require the `CROSS_COMPILE` prefix to be set. Platform builds break if a user builds for Marvell without explicitly providing this. This is hidden in CI because we always set the target. Provide a default as a workaround.
Change-Id: Id93d71876a81e442e6612eae2b0e7cb12e0fd55a Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
show more ...
|
| 9b6cb3c6 | 11-Feb-2026 |
Vincent Jardin <vjardin@free.fr> |
fix(marvell): work around uutils coreutils truncate -s %SIZE bug
The boot-image.bin assembly uses "truncate -s %128K" to pad bl1.bin to a 128 KiB boundary before appending the FIP. This ensures the
fix(marvell): work around uutils coreutils truncate -s %SIZE bug
The boot-image.bin assembly uses "truncate -s %128K" to pad bl1.bin to a 128 KiB boundary before appending the FIP. This ensures the FIP starts at offset 0x20000, which is where BL1 expects it at runtime (PLAT_MARVELL_FIP_BASE = PLAT_MARVELL_ATF_LOAD_ADDR + 0x20000).
uutils coreutils (Rust rewrite of GNU coreutils), shipped as the default coreutils on Ubuntu 25.04+, has a bug in its truncate implementation of the "%" (round up to multiple) operator.
The RoundUp formula at line 71 of src/uu/truncate/src/truncate.rs in uutils coreutils 0.5.0 is:
fsize + fsize % size
The correct formula (used by GNU coreutils and fixed on uutils main branch) is:
checked_next_multiple_of(fsize, size)
which is equivalent to: fsize + (size - fsize % size) % size
Example with bl1.bin (24696 bytes) and "truncate -s %128K":
GNU coreutils: 24696 + (131072 - 24696 % 131072) % 131072 = 24696 + 106376 = 131072 (0x20000) -- correct
uutils 0.5.0: 24696 + 24696 % 131072 = 24696 + 24696 = 49392 (0xC0F0) -- wrong
As a result, the FIP is placed at offset 0xC0F0 instead of 0x20000 in boot-image.bin. BL1 then fails at runtime with:
WARNING: Firmware Image Package header check failed. WARNING: Failed to obtain reference to image id=1 (-2) ERROR: Failed to load BL2 firmware.
The workaround detects the bug at make parse time by creating a 1-byte test file and checking whether "truncate -s %128K" produces 131072 bytes. If not, it falls back to explicit numeric sizes.
Reference: uutils coreutils 0.5.0 buggy source: https: //github.com/uutils/coreutils/blob/0.5.0/src/uu/truncate/src/truncate.rs#L71 Change-Id: I208a7ca7ca4c113817969935c26bd0c7f0207d7d Signed-off-by: Vincent Jardin <vjardin@free.fr>
show more ...
|
| 72a50294 | 12-Jan-2026 |
Vincent Jardin <vjardin@free.fr> |
fix(a8k): add XFI params for NBX SFI 10G
Add XFI static values for CP0 and CP1 Comphy4 lanes which connect to the SFP+ cages on the NBX board. The tuning values for a80x0 configures the SerDes equal
fix(a8k): add XFI params for NBX SFI 10G
Add XFI static values for CP0 and CP1 Comphy4 lanes which connect to the SFP+ cages on the NBX board. The tuning values for a80x0 configures the SerDes equalizer, TX amplitude, pre-emphasis and RX filter coefficients for 10.3125 Gbps operation of both 10G ports of the CPU.
Change-Id: Ic4f0fb6331c504f98cb7e832848dd3481931dbb7 Signed-off-by: Vincent Jardin <vjardin@free.fr>
show more ...
|
| 40929c29 | 07-Jan-2026 |
Vincent Jardin <vjardin@free.fr> |
fix(a8k): mv_ddr path may not be a git repo
When the mv-ddr-marvell folder is not a git tree the build fails complaining that it "does not contain valid mv-ddr-marvell git repository".
For instance
fix(a8k): mv_ddr path may not be a git repo
When the mv-ddr-marvell folder is not a git tree the build fails complaining that it "does not contain valid mv-ddr-marvell git repository".
For instance, it shall be removed when Building using Buildroot.
Change-Id: Ieaff6281785993873c7cb26ddc1d90d0896ad1b7 Signed-off-by: Vincent Jardin <vjardin@free.fr>
show more ...
|
| 88a6e612 | 29-Dec-2025 |
Vincent Jardin <vjardin@free.fr> |
feat(a8k): add a80x0_nbx Free Mobile board
Add TF-A platform support for the a80x0_nbx board (Free Mobile Nodebox10G), a network appliance based on the Marvell Armada 8040 SoC with dual CP110 compan
feat(a8k): add a80x0_nbx Free Mobile board
Add TF-A platform support for the a80x0_nbx board (Free Mobile Nodebox10G), a network appliance based on the Marvell Armada 8040 SoC with dual CP110 companion processors.
Hardware configuration: - Quad-core ARM Cortex-A72 @ 1.3GHz - DDR4 memory with ECC support (single channel, 32-bit) - Dual CP110 companion processors (CP0 and CP1) - SGMII 1G Ethernet on CP0 lane 5 - I2C buses for peripheral access (CP0: 100kHz, CP1: 400kHz) - NS16550 UART console at 115200 baud - eMMC boot via Xenon SDHCI controller
Key features implemented:
1. Ramoops buffer preservation across cold boot (ramoopsies driver) On ECC-enabled DDR configurations, the memory controller must scrub all memory during initialization to establish valid parity bits. This would normally destroy the Linux kernel ramoops buffer containing crash logs from the previous boot. The ramoopsies driver intercepts the DDR scrubbing function using the GNU linker --wrap feature, saving the 32KB ramoops buffer (at 0x3FFF8000) to SRAM before scrubbing and restoring it afterward. The driver also handles pending SError exceptions that occur when reading uninitialized ECC memory by installing a minimal exception vector that acknowledges and clears them.
2. UART-based skip image recovery mechanism The platform uses the USER_DEFINED skip image detection callback to implement software-based boot recovery without requiring a dedicated GPIO button. Users can trigger recovery mode by holding the 's' key during early boot, causing the bootloader to load from the secondary/recovery image instead of the primary firmware.
3. SerDes/ComPhy configuration PHY porting layer configured with default tuning values for XFI (10G) and SATA interfaces, following the principle of minimal bootloader configuration. Advanced SerDes tuning is deferred to the Linux kernel where it can be more easily adjusted.
The implementation includes comprehensive documentation and a build verification script to validate proper symbol exports, DDR driver integration, and flash image format compliance.
Based on original work by Nicolas Schichan <nschichan@freebox.fr> for the ramoops preservation mechanism and USER_DEFINED skip image detection concept.
Change-Id: Iaacbb29631f27b47fbf5cc300d8c63aaf1e89e51 Signed-off-by: Vincent Jardin <vjardin@free.fr>
show more ...
|