]> git.ipfire.org Git - thirdparty/u-boot.git/log
thirdparty/u-boot.git
10 days agoboard: starfive: visionfive2: Add Milk-V Mars CM and Mars CM Lite selection by product_id
E Shattow [Tue, 21 Oct 2025 23:09:58 +0000 (16:09 -0700)] 
board: starfive: visionfive2: Add Milk-V Mars CM and Mars CM Lite selection by product_id

Add identifier for Milk-V Mars CM to dts selection callback in SPL, and
to fdtfile environment variable default value selection in payload.

Signed-off-by: E Shattow <e@freeshell.de>
Reviewed-by: Hal Feng <hal.feng@starfivetech.com>
10 days agoriscv: dts: starfive: prune redundant jh7110 overrides
E Shattow [Tue, 21 Oct 2025 20:54:00 +0000 (13:54 -0700)] 
riscv: dts: starfive: prune redundant jh7110 overrides

Prune overrides of upstream jh7110.dtsi now that the required nodes are
available through the devicetree-rebasing subtree.

Signed-off-by: E Shattow <e@freeshell.de>
10 days agoriscv: dts: starfive: add Milk-V Mars CM Lite system-on-module
E Shattow [Wed, 15 Oct 2025 10:22:53 +0000 (03:22 -0700)] 
riscv: dts: starfive: add Milk-V Mars CM Lite system-on-module

Milk-V Mars CM Lite is a System-on-Module based on the Milk-V Mars CM
without the onboard eMMC storage component populated and configured
instead for SD3.0 Card Slot on that interface via 100-pin connector.

Link to Milk-V Mars CM Lite schematics: https://github.com/milkv-mars/mars-files/tree/main/Mars-CM_Hardware_Schematices
Link to StarFive JH7110 Technical Reference Manual: https://doc-en.rvspace.org/JH7110/TRM/index.html
Link to Raspberry Pi CM4IO datasheet: https://datasheets.raspberrypi.com/cm4io/cm4io-datasheet.pdf

Add the devicetree file to make use of StarFive JH7110 common supported
features PMIC, EEPROM, UART, I2C, GPIO, PCIe, QSPI Flash, PWM, and
Ethernet. Also configure the eMMC interface mmc0 for SD Card use and
configure the common SD Card interface mmc1 for onboard SDIO BT+WiFi.

Signed-off-by: E Shattow <e@freeshell.de>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
[ upstream commit: 4cce8b2503ab50f75a2dbc3eef2e55722836588e ]

(cherry picked from commit c7821d537e5a61e5d543588674b71fb43ec0665b)

10 days agodt-bindings: riscv: starfive: add milkv,marscm-lite
E Shattow [Wed, 15 Oct 2025 10:22:52 +0000 (03:22 -0700)] 
dt-bindings: riscv: starfive: add milkv,marscm-lite

Add "milkv,marscm-lite" as a StarFive JH7110 SoC-based system-on-module.

Signed-off-by: E Shattow <e@freeshell.de>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
[ upstream commit: 12a29108384cfe073a4de778d5207d53b492f85e ]

(cherry picked from commit ae7213970a0c80e90fac9ff0d2aa2966655983f5)

10 days agoriscv: dts: starfive: add Milk-V Mars CM system-on-module
E Shattow [Wed, 15 Oct 2025 10:22:51 +0000 (03:22 -0700)] 
riscv: dts: starfive: add Milk-V Mars CM system-on-module

Milk-V Mars CM is a System-on-Module based on the StarFive VisionFive 2
board and Radxa CM3 System-on-Module compatible with the Raspberry Pi
CM4IO Classic IO Board.

Mars CM SoM features:

- StarFive JH7110 System on Chip with RV64GC up to 1.5GHz
- AXP15060 Power Management Unit
- LPDDR4 2GB / 4GB / 8GB DRAM memory
- BL24C04F 4K bits (512 x 8) EEPROM
- GigaDevice 25LQ128EWIG QSPI NOR Flash 16M or SoC ROM UART loader for
  boot (selectable by GPIO)
- eMMC5.0 8GB / 16GB / 32GB flash storage onboard
- AP6256 via SDIO 2.0 onboard wireless connectivity WiFi 5 + Bluetooth
  5.2 (optional, present in models with WiFi feature)
- 1x Motorcomm YT8531C Gigabit Ethernet PHY
- IMG BXE-4-32 Integrated GPU with 3D Acceleration:
  - H.264 & H.265 4K@60fps Decoding
  - H.265 1080p@30fps Encoding
  - JPEG encoder / decoder

Additional features available via 2x 100-pin connectors for CM4IO Board:
- 1x HDMI 2.0
- 1x MIPI DSI (4-lanes)
- 1x 2CH Audio out (via GPIO)
- 1x MIPI CSI (2x2-lanes or 1x4-lanes)
- 1x USB 2.0
- 1x PCIe 1-lane Host, Gen 2 (5Gbps)
- Up to 28x GPIO, supporting 3.3V
- UART x6
- PWM x8
- I2C x7
- SPI
- I2S

Link to Milk-V Mars CM schematics: https://github.com/milkv-mars/mars-files/tree/main/Mars-CM_Hardware_Schematices
Link to StarFive JH7110 Technical Reference Manual: https://doc-en.rvspace.org/JH7110/TRM/index.html
Link to Raspberry Pi CM4IO datasheet: https://datasheets.raspberrypi.com/cm4io/cm4io-datasheet.pdf

Add the devicetree file to make use of StarFive JH7110 common supported
features PMIC, EEPROM, UART, I2C, GPIO, eMMC, PCIe, QSPI Flash, PWM, and
Ethernet. Also configure the common SD Card interface mmc1 for onboard
SDIO BT+WiFi.

Signed-off-by: E Shattow <e@freeshell.de>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
[ upstream commit: 8d193bc0aa2e802be30de331317639482735d738 ]

(cherry picked from commit 8e935d097e975e6322b63fdc8ef9894c8582bef0)

10 days agodt-bindings: riscv: starfive: add milkv,marscm-emmc
E Shattow [Wed, 15 Oct 2025 10:22:50 +0000 (03:22 -0700)] 
dt-bindings: riscv: starfive: add milkv,marscm-emmc

Add "milkv,marscm-emmc" as a StarFive JH7110 SoC-based system-on-module.

Signed-off-by: E Shattow <e@freeshell.de>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
[ upstream commit: d1829e0b2f0619c39b0ce0b84fcbf67569108376 ]

(cherry picked from commit 4df5d2ff67fa10ad1ba5760dedf1b3cbc2037739)

10 days agoriscv: dts: starfive: add common board dtsi for Milk-V Mars CM variants
E Shattow [Wed, 15 Oct 2025 10:22:49 +0000 (03:22 -0700)] 
riscv: dts: starfive: add common board dtsi for Milk-V Mars CM variants

Add a common board dtsi for use by Milk-V Mars CM and Milk-V Mars CM Lite.

Signed-off-by: E Shattow <e@freeshell.de>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
[ upstream commit: 651b30c58775e334c79aa3ecd44a3d98ac201db2 ]

(cherry picked from commit 034af14dcd1e6dbfa4f41a340b6d92b054604858)

10 days agoriscv: dts: starfive: jh7110-common: drop mmc post-power-on-delay-ms
E Shattow [Wed, 15 Oct 2025 10:22:48 +0000 (03:22 -0700)] 
riscv: dts: starfive: jh7110-common: drop mmc post-power-on-delay-ms

Drop post-power-on-delay-ms from mmc0 mmc1 interfaces. There is no
known reason for these properties to continue, testing appears to be fine
without them [1].

1: https://lore.kernel.org/lkml/NT0PR01MB1312E0D9EE9F158A57B77700E63D2@NT0PR01MB1312.CHNPR01.prod.partner.outlook.cn/

Signed-off-by: E Shattow <e@freeshell.de>
Tested-by: Hal Feng <hal.feng@starfivetech.com>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
[ upstream commit: b5a861a438d1a456952665cf6167969f01209479 ]

(cherry picked from commit 9c18e97b9be437c97789c9687148f3dd3f25b809)

10 days agoriscv: dts: starfive: jh7110-common: drop no-mmc property from mmc1
E Shattow [Wed, 15 Oct 2025 10:22:47 +0000 (03:22 -0700)] 
riscv: dts: starfive: jh7110-common: drop no-mmc property from mmc1

Relax no-mmc restriction on mmc1 for jh7110 boards. The restriction is
only needed to block use of commands that would cause a device to
malfunction, which by testing and observation [1] is not any problem.

1: https://lore.kernel.org/lkml/NT0PR01MB1312E0D9EE9F158A57B77700E63D2@NT0PR01MB1312.CHNPR01.prod.partner.outlook.cn/

Signed-off-by: E Shattow <e@freeshell.de>
Tested-by: Hal Feng <hal.feng@starfivetech.com>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
[ upstream commit: 08128670a931a4117f7b93c703d0186c67c9e1e2 ]

(cherry picked from commit cd5d4277d9515be5c10752fd8140f03c3dfec541)

10 days agoriscv: dts: starfive: jh7110: bootph-pre-ram hinting needed by boot loader
E Shattow [Wed, 15 Oct 2025 10:22:46 +0000 (03:22 -0700)] 
riscv: dts: starfive: jh7110: bootph-pre-ram hinting needed by boot loader

Add bootph-pre-ram hinting to jh7110.dtsi:
  - CPU interrupt controller(s)
  - gmac1_rgmii_rxin fixed-clock (dependency of syscrg)
  - gmac1_rmii_refin fixed-clock (dependency of syscrg)
  - oscillator
  - core local interrupt timer
  - syscrg clock-controller
  - pllclk clock-controller (dependency of syscrg)
  - DDR memory controller

Signed-off-by: E Shattow <e@freeshell.de>
Reviewed-by: Hal Feng <hal.feng@starfivetech.com>
Reviewed-by: Emil Renner Berthing <emil.renner.berthing@canonical.com>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
[ upstream commit: 8181cc2f3f21657392da912eb20ee17514c87828 ]

(cherry picked from commit a31c1c85876bf9f15f3df14959354ab9a200ffa0)

10 days agoriscv: dts: starfive: jh7110: add DMC memory controller
E Shattow [Wed, 15 Oct 2025 10:22:45 +0000 (03:22 -0700)] 
riscv: dts: starfive: jh7110: add DMC memory controller

Add JH7110 SoC DDR external memory controller.

Signed-off-by: E Shattow <e@freeshell.de>
Reviewed-by: Hal Feng <hal.feng@starfivetech.com>
Reviewed-by: Emil Renner Berthing <emil.renner.berthing@canonical.com>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
[ upstream commit: 7114969021ec5c4c0f3df1da3a8790f75dda92e2 ]

(cherry picked from commit 8d5c520b73b7c29b714f75e99ed48baa55fc5fa1)

10 days agoriscv: dts: starfive: jh7110-common: drop no-sdio property from mmc1
E Shattow [Wed, 15 Oct 2025 10:22:44 +0000 (03:22 -0700)] 
riscv: dts: starfive: jh7110-common: drop no-sdio property from mmc1

Relax no-sdio restriction on mmc1 for jh7110 boards. Property was
introduced for StarFive VisionFive2 dts to configure mmc1 for SD Card
but this is not necessary, the restriction is only needed to block use of
commands that would cause a device to malfunction.

Signed-off-by: E Shattow <e@freeshell.de>
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
[ upstream commit: 481ee0fcbb9a0f0706d6d29de9570d1048aff631 ]

(cherry picked from commit b4e73596622f791e3c2a2449022671e4e579fbd0)

10 days agotimer: sifive_clint: Add GHRTv2 compaible string
Jimmy Ho [Mon, 13 Oct 2025 02:24:25 +0000 (10:24 +0800)] 
timer: sifive_clint: Add GHRTv2 compaible string

The current sifive_clint driver can fully support GHRTv2 clint.
Add the compatible of GHRTv2 clint, sifive,clint2, to sifive_clint_ids
list.

Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
Signed-off-by: Wayling Chen <wayling.chen@sifive.com>
Signed-off-by: Max Hsu <max.hsu@sifive.com>
Signed-off-by: Jimmy Ho <jimmy.ho@sifive.com>
11 days agoPrepare v2026.01-rc1 v2026.01-rc1
Tom Rini [Mon, 27 Oct 2025 22:10:23 +0000 (16:10 -0600)] 
Prepare v2026.01-rc1

Signed-off-by: Tom Rini <trini@konsulko.com>
11 days agoconfigs: Resync with savedefconfig
Tom Rini [Mon, 27 Oct 2025 15:57:45 +0000 (09:57 -0600)] 
configs: Resync with savedefconfig

Resync all defconfig files using qconfig.py

Signed-off-by: Tom Rini <trini@konsulko.com>
11 days agoMerge https://source.denx.de/u-boot/custodians/u-boot-sunxi
Tom Rini [Mon, 27 Oct 2025 15:46:51 +0000 (09:46 -0600)] 
Merge https://source.denx.de/u-boot/custodians/u-boot-sunxi

No big features this time, mostly a collection of patches that have been
lying around for a bit.  There are some DT updates, for those SoCs that
do not use OF_UPSTREAM yet, hopefully that's the last time we need to do
this exercise. And that's offset by switching over two more SoCs to
OF_UPSTREAM.  Two new boards get a defconfig, and some improvements for
the sun8i-emac Ethernet driver. Finally a patch that fixes occassional
DRAM size misdetection for new A523 boards.

There are a few outstanding patches that just wait for getting some
details confirmed, which I might send then later.

CI passed, and I tested this briefly on affected boards.

11 days agosunxi: dts: arm: update devicetree files from Linux kernel tree
Andre Przywara [Fri, 24 Oct 2025 00:30:00 +0000 (01:30 +0100)] 
sunxi: dts: arm: update devicetree files from Linux kernel tree

Sync the kernel devicetree source files for the Allwinner SoCs with
32-bit cores that do not use OF_UPSTREAM yet. The files were taken
from a v6.18-rc1 tree.

To maintain ABI compatibility with existing LTS kernels, one change
moving some IP blocks to the r_intc interrupt controller is excluded.
This effectively reverts Linux commits 994e5818392c and 9fdef3c3d8c2.

This commit also adds a new board devicetree for the A33 Vstar board,
plus one DT overlay for the OrangePi Zero interface board.

This update should not impact any existing U-Boot functionality.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
11 days agosunxi: dts: arm64: update devicetree files from Linux kernel tree
Andre Przywara [Fri, 24 Oct 2025 00:08:38 +0000 (01:08 +0100)] 
sunxi: dts: arm64: update devicetree files from Linux kernel tree

Sync the devicetree files from the official Linux kernel tree, v6.18-rc1.
This is covering Allwinner SoCs with 64-bit ARM cores.

The bulk is cosmetic changes: board model name changes, DT node renames,
whitespace fixes.
The actual changes are not dramatic: the CPU cores get their caches
described properly, some A64 video clocks get fixed, some A64 boards
describe the header pins for the WiFi module, the Pinephone adds an
alternative magnetometer used on some board revisions.
On the H5 side the microSD slots get marked as having no write-protect
detection, and the NanoPi Neo Plus2 board describes its regulators better.
The H6 boards switch from RSB to I2C for their PMIC connection.

As before, this omits the non-backwards compatible changes to the R_INTC
controller, to remain compatible with older kernels.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
11 days agosunxi: switch Allwinner A80 boards to OF_UPSTREAM
Andre Przywara [Sat, 25 Oct 2025 18:03:07 +0000 (19:03 +0100)] 
sunxi: switch Allwinner A80 boards to OF_UPSTREAM

In contrast to some other Allwinner SoCs, there is no difference between
the DTs for the Allwinner A80 SoCs (sun9i) between the U-Boot and the
Linux kernel repository.

Remove the old copies of the A80 related .dts and .dtsi files, and switch
most of sun9i boards over to use OF_UPSTREAM.

There is the Sunchip CX-A99 (family of) board(s) for which we don't have
a DT in the kernel tree. Keep the .dts file in the legacy U-Boot DT
directory, and let the board's defconfig opt out of OF_UPSTREAM.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
11 days agosunxi: switch the Allwinner T113 SoC to OF_UPSTREAM
Andre Przywara [Sat, 25 Oct 2025 17:57:27 +0000 (18:57 +0100)] 
sunxi: switch the Allwinner T113 SoC to OF_UPSTREAM

In contrast to some other Allwinner SoCs, there is no difference between
the DTs for the Allwinner T113-s3 SoC (sun20i) between the U-Boot and the
Linux kernel repository.

Remove the old copies of the T113-s3 related .dts and .dtsi files, and
switch the whole SoC (represented by just one board) over to use
OF_UPSTREAM.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
11 days agonet: sun8i-emac: Add support for active-low leds with internal PHY
Paul Kocialkowski [Tue, 5 Aug 2025 17:48:27 +0000 (19:48 +0200)] 
net: sun8i-emac: Add support for active-low leds with internal PHY

A device-tree property is already defined to indicate that the internal
PHY should be used with active-low leds, which corresponds to a
specific bit in the dedicated syscon register.

Add support for setting this bit when the property is present.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
11 days agonet: sun8i-emac: Remove internal PHY config default value
Paul Kocialkowski [Tue, 5 Aug 2025 17:48:26 +0000 (19:48 +0200)] 
net: sun8i-emac: Remove internal PHY config default value

We know about all the relevant fields in the syscon register so there
is no reason to read it first and modify it.

Build the register from scratch instead, with all relevant fields set.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
11 days agosunxi: add support for NetCube Systems Kumquat
Lukas Schmid [Tue, 10 Jun 2025 05:38:55 +0000 (07:38 +0200)] 
sunxi: add support for NetCube Systems Kumquat

NetCube Systems Kumquat is a board based on the Allwinner V3s SoC,
including:

- 64MB DDR2 included in SoC
- 10/100 Mbps Ethernet
- USB-C DRD
- Audio Codec
- Isolated CAN-FD
- ESP32 over SDIO
- 8MB SPI-NOR Flash for bootloader
- I2C EEPROM for MAC addresses
- SDIO Connector for eMMC or SD-Card
- 8x 12/24V IOs, 4x normally open relays
- DS3232 RTC with Battery Backup
- QWIIC connectors for external I2C devices

Signed-off-by: Lukas Schmid <lukas.schmid@netcube.li>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
12 days agoMakefile: pass KEYDIR when set to sunxi-spl.bin mkimage
James Hilliard [Fri, 11 Apr 2025 01:10:25 +0000 (19:10 -0600)] 
Makefile: pass KEYDIR when set to sunxi-spl.bin mkimage

Currently we pass this for u-boot-spl.kwb targets, however when
building sunxi-spl.bin in the TOC0 format we may also need to
specify a KEYDIR, as such we should also pass this when set
to mkimage for the sunxi-spl.bin target.

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
12 days agosunxi: a523: Re-use H6/H616 DRAM size detection method
Andre Przywara [Mon, 20 Oct 2025 14:26:22 +0000 (15:26 +0100)] 
sunxi: a523: Re-use H6/H616 DRAM size detection method

The H6 and H616 DRAM initialisation code recently gained a joint and
improved size detection routine, which helped to avoid the occasional
DRAM size misdetection.

Use the same code for the A523 DRAM initialisation as well, which
suffers from the same misdetection at times.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Tested-by: Chen-Yu Tsai <wens@kernel.org>
12 days agosunxi: a523: Add OrangePi 4A defconfig
Chen-Yu Tsai [Mon, 20 Oct 2025 16:19:30 +0000 (00:19 +0800)] 
sunxi: a523: Add OrangePi 4A defconfig

The OrangePi 4A is a typical Raspberry Pi model B sized development
board from Xunlong designed around an Allwinner T527 SoC.

The board has the following features:
- Allwinner T527 SoC
- AXP717B + AXP323 PMICs
- Up to 4GB LPDDR4 DRAM
- micro SD slot
- optional eMMC module
- M.2 slot for PCIe 2.0 x1
- 16 MB SPI-NOR flash
- 4x USB 2.0 type-A ports (one can be used in gadget mode)
- 1x Gigabit ethernet w/ Motorcomm PHY (through yet to be supported GMAC200)
- 3.5mm audio jack via internal audio codec
- HDMI 2.0 output
- eDP, MIPI CSI (2-lane and 4-lane) and MIPI DSI (4-lane) connectors
- USB type-C port purely for power
- AP6256 (Broadcom BCM4345) WiFi 5.0 + BT 5.0
- unsoldered headers for ADC and an additional USB 2.0 host port
- 40-pin GPIO header

Add defconfig for it.

Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
12 days agoMerge tag 'efi-2026-01-rc1-2' of https://source.denx.de/u-boot/custodians/u-boot-efi
Tom Rini [Sun, 26 Oct 2025 13:51:18 +0000 (07:51 -0600)] 
Merge tag 'efi-2026-01-rc1-2' of https://source.denx.de/u-boot/custodians/u-boot-efi

Pull request efi-2026-01-rc1-2

CI:

* https://source.denx.de/u-boot/custodians/u-boot-efi/-/pipelines/28024

Documentation:

* develop: virtio: Fix qemu example (true/false -> on/off)
* separate read and write command documentation
* usage: Add general rule for `$?`
* askenv: Reword and remove return value
* seama: Reword return value section
* usage: Use glob for all commands
* Fix typos and formatting

UEFI:

* console: support editable input fields

12 days agodoc/usage: Add a reference to General rules for commands
Tom Rini [Fri, 24 Oct 2025 17:22:09 +0000 (11:22 -0600)] 
doc/usage: Add a reference to General rules for commands

For clarity, add a reference link to the start of the section on command
documentation that all commands follow some general rules.

Signed-off-by: Tom Rini <trini@konsulko.com>
12 days agodoc: usage: Use glob for all commands
Tom Rini [Fri, 24 Oct 2025 17:22:08 +0000 (11:22 -0600)] 
doc: usage: Use glob for all commands

Make use of the glob syntax to automatically include all command
documents.

Signed-off-by: Tom Rini <trini@konsulko.com>
12 days agodoc: seama: Reword return value section
Tom Rini [Fri, 24 Oct 2025 16:02:59 +0000 (10:02 -0600)] 
doc: seama: Reword return value section

With the addition of general text about how the return value is handled,
reference that while retaining the additional information about setting
$seama_image_size

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Tom Rini <trini@konsulko.com>
12 days agodoc: askenv: Reword and remove return value
Tom Rini [Fri, 24 Oct 2025 16:02:58 +0000 (10:02 -0600)] 
doc: askenv: Reword and remove return value

With the addition of general text about how the return value is handled,
remove the examples from the askenv documentation as they are all normal
expected results.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
12 days agodoc: usage: Add general rule for `$?`
Tom Rini [Fri, 24 Oct 2025 16:02:57 +0000 (10:02 -0600)] 
doc: usage: Add general rule for `$?`

For nearly all commands in U-Boot the '?' variable is handled the same
way with 0 meaning success, 1 meaning any failure.  Explain this in the
general rules section of the cmdline documentation (with a link to a
counter example) and then remove the redundant wording from most
commands. We retain a section about the return value in a number of
places where we are doing something such as always returning a specific
value or we have useful additional information to go along with the
normal return codes.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
12 days agodoc: develop: virtio: Fix qemu example (true/false -> on/off)
Wolfgang Wallner [Fri, 24 Oct 2025 15:12:05 +0000 (17:12 +0200)] 
doc: develop: virtio: Fix qemu example (true/false -> on/off)

The given qemu examples use true/false, while qemu actually on/off.

Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
12 days agodoc: Fix whitespace in devicetree example in overlay-fdt-boot.rst
Wolfgang Wallner [Fri, 24 Oct 2025 15:12:04 +0000 (17:12 +0200)] 
doc: Fix whitespace in devicetree example in overlay-fdt-boot.rst

Fix the whitespace and add a missing quotation mark
(default = "foo-reva.dtb") in overlay-fdt-boot.rst.

Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
12 days agoboot: Fix typo
Wolfgang Wallner [Fri, 24 Oct 2025 15:12:03 +0000 (17:12 +0200)] 
boot: Fix typo

Fix a typo in image-fit.c.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
12 days agobootm: Fix typo in bootm.h
Wolfgang Wallner [Fri, 24 Oct 2025 15:12:02 +0000 (17:12 +0200)] 
bootm: Fix typo in bootm.h

Fix a typo in include/bootm.h.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
12 days agoimage: Fix typos in image.h
Wolfgang Wallner [Fri, 24 Oct 2025 15:12:01 +0000 (17:12 +0200)] 
image: Fix typos in image.h

Fix some typos in include/image.h.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
12 days agoboot: kconfig: Fix typos
Wolfgang Wallner [Fri, 24 Oct 2025 15:12:00 +0000 (17:12 +0200)] 
boot: kconfig: Fix typos

Fix typos in boot/Kconfig.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
12 days agodoc: Fix typos
Wolfgang Wallner [Fri, 24 Oct 2025 15:11:59 +0000 (17:11 +0200)] 
doc: Fix typos

Fix typos/wording in various files in doc/.

Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
Reviewed-by: E Shattow <e@freeshell.de>
12 days agodoc: develop: Change formatting to make binman doc more readable
Wolfgang Wallner [Fri, 24 Oct 2025 15:11:58 +0000 (17:11 +0200)] 
doc: develop: Change formatting to make binman doc more readable

Change the formatting of binman.rst so that the compiled HTML output
becomes more readable. Changes include enumerations and the escaping of
arguments starting with a double dash (e.g. --debug).

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
12 days agodoc: develop: Fix typos in binman/binman.rst
Wolfgang Wallner [Fri, 24 Oct 2025 15:11:57 +0000 (17:11 +0200)] 
doc: develop: Fix typos in binman/binman.rst

Fix some typos in binman.rst.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
12 days agoefi_loader: efi_console: support editable input fields
Casey Connolly [Thu, 23 Oct 2025 14:26:46 +0000 (16:26 +0200)] 
efi_loader: efi_console: support editable input fields

When editing eficonfig "optional data" (typically cmdline arguments)
it's useful to be able to edit the string rather than having to re-type
the entire thing. Implement support for editing buffers to make this a
whole lot nicer. Specifically, add support for moving the cursor with
the arrow keys and End key as well as deleting backwards with the delete
key.

Signed-off-by: Casey Connolly <casey.connolly@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Tested-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
12 days agodoc: separate read and write command documentation
Heinrich Schuchardt [Sat, 18 Oct 2025 11:07:44 +0000 (13:07 +0200)] 
doc: separate read and write command documentation

* Avoid two step navigation to get to the description of the write command.
* Add missing index entries
* Correct formatting of the examples.
* Describe configuration and return value.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 weeks agoMerge patch series "firmware: scmi: Support SCMI LMM/CPU protocol for i.MX95"
Tom Rini [Fri, 24 Oct 2025 18:09:02 +0000 (12:09 -0600)] 
Merge patch series "firmware: scmi: Support SCMI LMM/CPU protocol for i.MX95"

Peng Fan (OSS) <peng.fan@oss.nxp.com> says:

i.MX95 System Manager(SM) implements Logical Machine Management(LMM) and
CPU protocol to manage Logical Machine(LM) and CPUs(eg, M7).

To manage M7 in a separate LM or in same LM as U-Boot/Linux itself. LMM
APIs and CPU APIs are needed.

When M7 is in LM 'lm-m7', and this LM is managable by 'uboot-lm', U-Boot
could use LMM_BOOT, LMM_SHUTDOWN and etc to manage 'lm-m7'.

If in same LM, use CPU_START, CPU_STOP, CPU_RESET_VECTOR_SET and etc to
manage M7.

Both LMM/CPU APIs will be used by remoteproc driver.

The documentation could be found in Linux Kernel:
drivers/firmware/arm_scmi/vendors/imx/imx95.rst

Link: https://lore.kernel.org/r/20251017-scmi-lmm-v1-0-9fd41e7a5ac0@nxp.com
2 weeks agobootstd: make it possible to use tftp for netboot with standardboot
Benjamin Hahn [Tue, 21 Oct 2025 14:34:17 +0000 (16:34 +0200)] 
bootstd: make it possible to use tftp for netboot with standardboot

Add the option to load the bootscript with the tftp command (static IP)
instead of the dhcp command (dynamic IP). For this a new function
tftpb_run similar to dhcp_run, is needed. The selection of which command
to use can be done with the ip_dyn environment variable, which can be
set to yes or no. The ip_dyn variable was chosen as it is already in use
on the imx platforms.
Also edit the bootstd doc.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Benjamin Hahn <B.Hahn@phytec.de>
2 weeks agofirmware: scmi: Add i.MX95 SCMI CPU Protocol
Peng Fan [Fri, 17 Oct 2025 09:32:34 +0000 (17:32 +0800)] 
firmware: scmi: Add i.MX95 SCMI CPU Protocol

This protocol allows an agent to start, stop a CPU or set reset vector.
It is used to manage auxiliary CPUs in an LM (e.g. additional cores in an
AP cluster).

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Alice Guo <alice.guo@nxp.com>
2 weeks agophy: ti: phy-j721e-wiz: Allow reinitialization when SERDES is pre-configured
Hrushikesh Salunke [Fri, 17 Oct 2025 05:25:19 +0000 (10:55 +0530)] 
phy: ti: phy-j721e-wiz: Allow reinitialization when SERDES is pre-configured

Move the SERDES configuration check after clock and reset initialization
and change it from a hard failure to a skip of WIZ initialization. This
allows the driver to probe successfully when the SERDES has been
pre-configured by a previous boot stage (e.g., ROM or SPL).

This approach aligns with how the Linux kernel handles pre-configured
SERDES, where the driver gracefully skips reinitialization rather than
failing to probe.

Signed-off-by: Hrushikesh Salunke <h-salunke@ti.com>
2 weeks agofirmware: scmi: Add i.MX95 SCMI LMM protocol driver
Peng Fan [Fri, 17 Oct 2025 09:32:33 +0000 (17:32 +0800)] 
firmware: scmi: Add i.MX95 SCMI LMM protocol driver

Add Logical Machine Management(LMM) protocol which is intended for boot,
shutdown, and reset of other logical machines (LM). It is usually used to
allow one LM to manager another used as an offload or accelerator engine.

Following Linux Kernel, created a separate folder for holding vendor
protocol drivers.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Alice Guo <alice.guo@nxp.com>
2 weeks agoarm: armv8: Make save_boot_params simpler
Ilias Apalodimas [Thu, 16 Oct 2025 13:27:43 +0000 (16:27 +0300)] 
arm: armv8: Make save_boot_params simpler

The idiom used in save_boot_params is common for armv7.
In armv8 is much easier to do the same thing with adr/adrp.

So let's simplify the code a bit.

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 weeks agofirmware: scmi: Support probe vendor ID 0x80 and 0x82
Peng Fan [Fri, 17 Oct 2025 09:32:32 +0000 (17:32 +0800)] 
firmware: scmi: Support probe vendor ID 0x80 and 0x82

Preparing to add i.MX LMM and CPU protocol driver, support probe SCMI
vendor ID 0x80(i.MX SCMI LMM ID) and 0x82(i.MX SCMI CPU ID). And use
Kconfig option to support conditional compilation.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Alice Guo <alice.guo@nxp.com>
2 weeks agoenv: fat, ubi: Fix gd->env_valid for the first write
Tom Rini [Tue, 21 Oct 2025 20:37:01 +0000 (14:37 -0600)] 
env: fat, ubi: Fix gd->env_valid for the first write

As resolved and explained in detail in commit e589d5822cac ("env: spi:
Fix gd->env_valid for the first write") and archived discussion there is
a corner case where we don't do the right thing with redundant
environments. This same exact check was present in the mmc code and
resolved with commit 813a0df27a8a ("env: Invert gd->env_valid for
env_mmc_save") and in the discussion of that patch, I noted that both
fat and ubi (and at the time, sf) were doing the same thing. Take the
time now to correct fat and ubi environment.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 weeks agofirmware: scmi: Cleanup the SCMI MISC ID
Peng Fan [Fri, 17 Oct 2025 09:32:31 +0000 (17:32 +0800)] 
firmware: scmi: Cleanup the SCMI MISC ID

SCMI_IMX_PROTOCOL_ID_MISC was never used, so drop it. And move
SCMI_PROTOCOL_ID_IMX_MISC out of enum scmi_std_protocol to
scmi_nxp_protocols.h, because it is i.MX specific and following Linux
Kernel style, use macro definition.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Alice Guo <alice.guo@nxp.com>
2 weeks agofirmware: scmi: Conditionally compile protocol support
Peng Fan [Fri, 17 Oct 2025 09:32:30 +0000 (17:32 +0800)] 
firmware: scmi: Conditionally compile protocol support

Add conditional compilation for SCMI protocol support in scmi_get_protocol()
and scmi_add_protocol() based on corresponding Kconfig options. This ensures
that only the enabled protocols are compiled and accessed, and reducing binary
size.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Alice Guo <alice.guo@nxp.com>
2 weeks agomakefile: Fix recursive makes
Ilias Apalodimas [Wed, 22 Oct 2025 12:23:15 +0000 (15:23 +0300)] 
makefile: Fix recursive makes

Since the Kbuild bump to 5.1 and specifically
commit af1a9935708a ("kbuild: make -r/-R effective in top Makefile for old Make versions")
the recursion rules have changed.

'make O=/output/dir/' as well as './test/py/test.py --bd sandbox --build'
is working fine but anything that recursively called the makefile was
failing e.g 'make tests', 'make qcheck' etc, which calls a bash script
that ends up calling the makefile again.

The reason is that the internal 'sub_make_done' variable of the makefile
was set after the first pass and the output dir was never evaluated
properly.  Reset the variable value if we are executing any of these
tests.

Fixes: af1a9935708a ("kbuild: make -r/-R effective in top Makefile for old Make versions")
Reported-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Test-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 weeks agoMerge patch series "boot: Support priority for global bootmeths"
Tom Rini [Wed, 22 Oct 2025 20:17:16 +0000 (14:17 -0600)] 
Merge patch series "boot: Support priority for global bootmeths"

Simon Glass <sjg@chromium.org> says:

At present global bootmeths always run first, before all other
bootmeths. Optimisations in the code take advantage of this, putting
them at the end, so they can be used once and then forgotten.

In some cases it is useful to run global bootmeths later in the boot.
For example, the EFI-bootmgr bootmeth may itself scan devices and the
network, so running it first can hold up the boot significantly for
boards not actually relying on EFI-bootmgr to boot.

This series introduces a new field in global bootmeths which indicates
the priority, using the same scheme as is used with bootdev hunters.
Thus it is possible to insert the EFI-bootmgr bootmeth just before the
hunter for network bootdevs is invoked.

Despite the simplicity of the concept and the relatively small series,
this is a fairly significant enhancement. It is also quite tricky to
implement, largely due to the way the original code was written, with
global bootmeths being a small, size-optimised add-on to the original
bootstd implementation.

For now we only allow each global bootmeth to run at most once, but this
implementation is written in a way that we could relax that if needed.
Then the bootmeth itself could decide whether to run at any particular
point in the bootflow iteration.

Link: https://lore.kernel.org/r/20251015154423.908468-1-sjg@chromium.org
2 weeks agoboot: Run the EFI bootmgr just before network devices
Simon Glass [Wed, 15 Oct 2025 15:44:14 +0000 (16:44 +0100)] 
boot: Run the EFI bootmgr just before network devices

At present the EFI bootmgr scans all devices in the system before
deciding which one to boot. Ideally it would use the bootstd iterator
for this, but in the meantime, give it a lower priority, so it runs
just before the network devices.

Note that if there are no hunted network devices hunted, then it will
run at the end, after all bootdevs are exhausted. In other words, it
will always run.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 weeks agoboot: Run global bootmeths after all bootdevs are exhausted
Simon Glass [Wed, 15 Oct 2025 15:44:13 +0000 (16:44 +0100)] 
boot: Run global bootmeths after all bootdevs are exhausted

When there are no more bootdevs we should still go through the global
bootmeths, since some may not have yet been used, if their priority has
not yet come up.

Add a final check for this at the end of the iterator.

Update the documentation to match the new behaviour of global bootmeths.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 weeks agoboot: Don't change the method count after global bootmeths
Simon Glass [Wed, 15 Oct 2025 15:44:12 +0000 (16:44 +0100)] 
boot: Don't change the method count after global bootmeths

At present before scanning global bootmeths, the iterator sets the
method count to the index of the first global bootmeth. Now that we
support scanning the global bootmeths multiple times, we must leave this
count alone.

Check against have_global and first_glob_method instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 weeks agoboot: Implement a priority for global bootmeths
Simon Glass [Wed, 15 Oct 2025 15:44:11 +0000 (16:44 +0100)] 
boot: Implement a priority for global bootmeths

Allow bootmeths to select when they want to run, using the bootdev
priority. Provide a new bootmeth_glob_allowed() function which checks if
a bootmeth is ready to use.

Fix a comment in bootflow_system() which is a test for global bootmeths.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 weeks agoboot: Only run global bootmeths once each
Simon Glass [Wed, 15 Oct 2025 15:44:10 +0000 (16:44 +0100)] 
boot: Only run global bootmeths once each

Use the methods_done flags to make sure that each global bootmeth is
only used once. For now this has no effect, since they are all processed
at the start.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 weeks agoboot: Support rescanning the global bootmeths
Simon Glass [Wed, 15 Oct 2025 15:44:09 +0000 (16:44 +0100)] 
boot: Support rescanning the global bootmeths

Add the logic to scan through the global bootmeths for every new
bootdev, in preparation for allowing global bootmeths to select where in
the hunter ordering they go.

Use a new bootmeth_glob_allowed() function to check if a bootmeth is
allowed, ensuring that each can run at most once.

For now this has no actual effect, since the global bootmeths are
unconditionally processed at the start, with iter->methods_done being
updated to include all of them. Therefore when scanning again, no
unprocessed global bootmeths will be found.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 weeks agoboot: Keep track of which bootmeths have been used
Simon Glass [Wed, 15 Oct 2025 15:44:08 +0000 (16:44 +0100)] 
boot: Keep track of which bootmeths have been used

Add a bitfield which tracks when bootmeths have been used. This will be
needed when global bootmeths can be used later in the iteration.

Fix a missing bootflow_free() while here.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 weeks agoboot: Add a flag for whether there are global bootmeths
Simon Glass [Wed, 15 Oct 2025 15:44:07 +0000 (16:44 +0100)] 
boot: Add a flag for whether there are global bootmeths

The current 'doing_global' refers to being in the state of processing
global bootmeths. Since global bootmeths are currently used once at the
start, it becomes false once the last global bootmeth has been used.

In preparation for allowing bootmeths to run at other points in the
bootstd interation, add a new 'have_global' flag which tracks whether
there are any global bootmeths in the method_order[] list. It is set up
when iteration starts. Unlike doing_global which resets back to false
after the global bootmeths have been handled, once have_global is set to
true, it remains true for the entire iteration process. This provides a
quick check as to whether global-bootmeth processing is needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 weeks agoboot: Update first_glob_method when dropping a bootmeth
Simon Glass [Wed, 15 Oct 2025 15:44:06 +0000 (16:44 +0100)] 
boot: Update first_glob_method when dropping a bootmeth

For now we only support dropping non-global bootmeths from the
iteration. Update first_glob_method in that case and add a few checks
that things are correct.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 weeks agoboot: Add a new test for global bootmeths
Simon Glass [Wed, 15 Oct 2025 15:44:05 +0000 (16:44 +0100)] 
boot: Add a new test for global bootmeths

These have different behaviour from normal bootmeths and we are about to
enhance it. So add a test and also an extra check in bootflow_iter()

Signed-off-by: Simon Glass <sjg@chromium.org>
2 weeks agoboot: Try all bootmeths on the final partition
Simon Glass [Wed, 15 Oct 2025 15:44:04 +0000 (16:44 +0100)] 
boot: Try all bootmeths on the final partition

At present, normally when one bootmeth fails on a partition, we move on
and try the next bootmeth. However, this was not the case for the final
partition due to a bug. Rework the logic so that all partitions are
treated the same.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 weeks agoMerge patch series "Add support for dynamic MMU configuration"
Tom Rini [Wed, 22 Oct 2025 18:23:48 +0000 (12:23 -0600)] 
Merge patch series "Add support for dynamic MMU configuration"

Anshul Dalal <anshuld@ti.com> says:

In U-Boot, TI only provides a single memory map for all k3 platforms, this
does not scale for devices where atf and optee lie outside the range 0x80000000
- 0x80080000 and 0x9e780000 - 0xa0000000 respectively.

There are also issues for devices with < 2GiB of memory (eg am62SiP with 512MiB
of RAM) as the maximum size for the first DRAM bank is hardcoded to 2GiB in the
current memory map. Furthermore the second DRAM bank is mapped even for devices
that only have a single bank.

Therefore this patch set adds the required functionality to create the MMU table
at runtime based on the device-tree.

The patch set has been build tested on all effected platforms but boot-tested
only on TI's K3 EVMs, the beagleplay and phytec's phycore-am6* platforms.

The following effected boards have not been boot tested:
 - verdin-am62
 - iot2050

Link: https://lore.kernel.org/r/20251017131540.3636067-1-anshuld@ti.com
2 weeks agoarm: mach-k3: reserve space for page table entries
Anshul Dalal [Fri, 17 Oct 2025 13:15:33 +0000 (18:45 +0530)] 
arm: mach-k3: reserve space for page table entries

With the memory map configuration being done dynamically, reserve extra
space during U-Boot relocation to ensure we have enough for the fixups.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Anshul Dalal <anshuld@ti.com>
2 weeks agomach-k3: add carveouts for TFA and optee
Anshul Dalal [Fri, 17 Oct 2025 13:15:32 +0000 (18:45 +0530)] 
mach-k3: add carveouts for TFA and optee

K3 platforms have reserved memory regions for TFA and OPTEE which should
be unmapped for U-Boot. While other "no-map" memory regions like the
memory pools for remote cores should not be unmapped to allow U-Boot to
load firmware during remoteproc.

Therefore this patch adds the necessary fdt fixups to properly set the
load address for TFA/OPTEE and unmaps both by mmu_unmap_reserved_mem.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Anshul Dalal <anshuld@ti.com>
Tested-by: Wadim Egorov <w.egorov@phytec.de>
2 weeks agomach-k3: add reserved memory fixups for next boot stage
Anshul Dalal [Fri, 17 Oct 2025 13:15:31 +0000 (18:45 +0530)] 
mach-k3: add reserved memory fixups for next boot stage

The boot flow in K3 platforms requires the subsequent boot stages to be
aware of the memory reserved for previous boot binaries. In the regular
boot sequence of:

R5 SPL -> ATF -> OP-TEE -> A-core SPL -> U-Boot -> Kernel,

Both A-core SPL and U-Boot should be made aware of the memory reserved
for ATF and OP-TEE from their device-tree. Currently this information is
absent.

Therefore this patch adds the reserved-memory regions as part of
spl_perform_arch_fixups for the next stage's DT. This is called during
both R5 and A-core SPL which fixes up the DT for their respective next
stages: A-core SPL and U-Boot proper.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Anshul Dalal <anshuld@ti.com>
Tested-by: Wadim Egorov <w.egorov@phytec.de>
2 weeks agospl: split spl_board_fixups to arch/board specific
Anshul Dalal [Fri, 17 Oct 2025 13:15:30 +0000 (18:45 +0530)] 
spl: split spl_board_fixups to arch/board specific

The current spl_board_fixups API allows for modification of spl_image
before the SPL jumps to it. This can be used to modify the DT for the
next boot stage, however the current API only allows either the machine
arch or the board to use it.

This limits the utility of the API as there might be certain fixups that
should be applied to all boards sharing the same machine architecture
with others being board specific.

For TI's K3 specifically, this prevents us from performing architecture
level fixups since a lot of TI boards are already making use of the
spl_board_fixups API.

Therefore this patch splits the API into two to allow both board and the
architecture specific fixups. The order is kept as arch then board to
give board specific fixups the precedence.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Anshul Dalal <anshuld@ti.com>
Tested-by: Wadim Egorov <w.egorov@phytec.de>
2 weeks agoarm: armv8: mmu: add mmu_unmap_reserved_mem
Anshul Dalal [Fri, 17 Oct 2025 13:15:29 +0000 (18:45 +0530)] 
arm: armv8: mmu: add mmu_unmap_reserved_mem

For armv8, U-Boot uses a static map defined as 'mem_map' for configuring
the MMU's page tables, done by mmu_setup.

Though this works well for simpler platforms, it makes creating runtime
carveouts by modifying the static array at runtime exceedingly complex
like in mach-snapdragon/board.c.

Creation of such carveouts are much better handled by APIs such as
mmu_change_region_attr once the page tables are configured. Usually such
carveouts are configured via the device-tree's reserved-memory node
which provides the address and size for the carveout.

Therefore this patch adds mmu_unmap_reserved_mem which acts as a wrapper
over mmu_change_region_attr, helping unmap a reserved-memory region.

Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Anshul Dalal <anshuld@ti.com>
Tested-by: Wadim Egorov <w.egorov@phytec.de>
2 weeks agomach-k3: map all banks using mem_map_from_dram_banks
Anshul Dalal [Fri, 17 Oct 2025 13:15:28 +0000 (18:45 +0530)] 
mach-k3: map all banks using mem_map_from_dram_banks

The static memory map for K3 (k3_mem_map) only maps the first DRAM bank
and therefore doesn't scale for platforms with multiple memory banks.

This patch modifies enable_caches to add mem_map_from_dram_banks which
appends all the memory banks to k3_mem_map before calling mmu_setup.

Signed-off-by: Anshul Dalal <anshuld@ti.com>
Tested-by: Wadim Egorov <w.egorov@phytec.de>
2 weeks agoarm: armv8: mmu: add mem_map_from_dram_banks
Anshul Dalal [Fri, 17 Oct 2025 13:15:27 +0000 (18:45 +0530)] 
arm: armv8: mmu: add mem_map_from_dram_banks

For armv8, U-Boot uses a static map defined as 'mem_map' for configuring
the MMU as part of mmu_setup.

But since the exact configuration of memory banks might not be known at
build time, many platforms such as imx9, versal2 etc. utilize
gd->bd->bi_dram to configure the static map at runtime.

Therefore this patch adds a new API mem_map_from_dram_banks that
modifies the static map in a similar way. Allowing the caller to map all
dram banks by just passing the index to last entry in their mem_map and
it's length.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Anshul Dalal <anshuld@ti.com>
Tested-by: Wadim Egorov <w.egorov@phytec.de>
2 weeks agoarm: armv8: invalidate dcache entries on dcache_enable
Anshul Dalal [Fri, 17 Oct 2025 13:15:26 +0000 (18:45 +0530)] 
arm: armv8: invalidate dcache entries on dcache_enable

In dcache_enable, currently the dcache entries are only invalidated when
the MMU is not enabled. This causes issues when dcache_enable is called
with the MMU already configured, in such cases the existing dcache
entries are not flushed which might result in un-expected behavior.

This patch invalidates the cache entries on every call of dcache_enable
before enabling dcache (by setting CR_C). This makes dcache_enable
behave similar to icache_enable as well.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Anshul Dalal <anshuld@ti.com>
Tested-by: Wadim Egorov <w.egorov@phytec.de>
2 weeks agoarm: armv8: mmu: export mmu_setup
Anshul Dalal [Fri, 17 Oct 2025 13:15:25 +0000 (18:45 +0530)] 
arm: armv8: mmu: export mmu_setup

The mmu_setup function configures the page tables based on the board
supplied mem_map struct array. It is called implicitly as part of
dcache_enable but this limits us to only be able to use APIs such as
mmu_change_region_attr only after caches are enabled.

This might lead to speculative accesses before we can unmap a region
that is marked as cacheable in the static memory map.

Therefore this patch exports the mmu_setup function in mmu.h allowing
users to have more control over when the mmu is configured.

For K3 specifically this allows for the following configuration sequence
as part of enable_caches:

static mem_map fixups (TODO) -> mmu_setup -> carveouts using
mmu_change_region_attr (TODO) -> icache/dcache enable

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Anshul Dalal <anshuld@ti.com>
Tested-by: Wadim Egorov <w.egorov@phytec.de>
2 weeks agomach-k3: use custom enable_cache
Anshul Dalal [Fri, 17 Oct 2025 13:15:24 +0000 (18:45 +0530)] 
mach-k3: use custom enable_cache

U-Boot's provided enable_caches enforces the following sequence:
icache_enable -> mmu_setup (as part of dcache_enable) -> dcache_enable

Whereas for K3 devices, we would like to add entries to the provided
static array (k3_mem_map) as per gd->bd->bi_dram and then call mmu_setup
to configure the MMU but also create carveouts for TFA/TEE before we
enable caches to prevent speculative accesses to the region. Thus the
following desired sequence:

add dram banks -> mmu_setup -> carveout TFA/TEE -> icache/dcache enable

Therefore this patch adds K3's own implementation of enable_cache for
ARM64, allowing for greater control over the cache enablement sequence.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Anshul Dalal <anshuld@ti.com>
Tested-by: Wadim Egorov <w.egorov@phytec.de>
2 weeks agomach-k3: use minimal memory map for all K3
Anshul Dalal [Fri, 17 Oct 2025 13:15:23 +0000 (18:45 +0530)] 
mach-k3: use minimal memory map for all K3

The K3 family of SoCs encompasses a wide variety of devices with varying
DDR configurations and memory carveout requirements, the current static
memory map provides basic support for TI EVMs but does not scale well
for newer platforms (such as AM62SiP with 512MiB of RAM).

Therefore this patch replaces the existing memory map with a minimal
one, that could be more easily modified at runtime.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Anshul Dalal <anshuld@ti.com>
Tested-by: Wadim Egorov <w.egorov@phytec.de>
2 weeks agoMerge tag 'net-20251022' of https://source.denx.de/u-boot/custodians/u-boot-net
Tom Rini [Wed, 22 Oct 2025 15:07:56 +0000 (09:07 -0600)] 
Merge tag 'net-20251022' of https://source.denx.de/u-boot/custodians/u-boot-net

Pull request net-20251022

net:
- airoha: improvements
- Tighten a few more driver dependencies
- designware: fix bitbang init error
- phy: Make driver overloading get_phy_id depend on !COMPILE_TEST
- phy: add paged PHY register accessors
- make dhcp_run() common for NET and NET_LWIP
- dwc_eth_ops: Correct check for FDT_64BIT
- mediatek: mt7988: various fixup + MDIO detach
- phy: aquantia: switch to use phy_get_ofnode(), fix bindings typo

net-legacy:
- bootp: Prevent buffer overflow to avoid leaking the RAM content
- tftp: make TFTP ports unconditionally configurable

misc:
- uthreads: Make use of CONFIG_IS_ENABLED consistently

2 weeks agoMerge tag 'u-boot-at91-2026.01-a' of https://source.denx.de/u-boot/custodians/u-boot...
Tom Rini [Wed, 22 Oct 2025 15:06:11 +0000 (09:06 -0600)] 
Merge tag 'u-boot-at91-2026.01-a' of https://source.denx.de/u-boot/custodians/u-boot-at91

First set of u-boot-at91 features for the 2026.01 cycle:

This small fixes set includes a change on clocks register value and a
fix for the sam9x60ek default timer.

2 weeks agonet: designware: fix bitbang init error
Jim Liu [Tue, 14 Oct 2025 05:20:05 +0000 (13:20 +0800)] 
net: designware: fix bitbang init error

The Synchronous Abort and reset errors occurred due
to incorrect parameter passing during initialization.

Signed-off-by: Jim Liu <JJLIU0@nuvoton.com>
[jf: add missing #if IS_ENABLED(CONFIG_BITBANGMII)]
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
2 weeks agonet: phy: Make driver overloading get_phy_id depend on !COMPILE_TEST
Tom Rini [Fri, 10 Oct 2025 17:36:33 +0000 (11:36 -0600)] 
net: phy: Make driver overloading get_phy_id depend on !COMPILE_TEST

With commit 597fe041a85f ("net/phy: enable get_phy_id redefinable") we
made get_phy_id a public but weak function, so that PHY drivers that had
required non-standard ways of getting the PHY ID could be supported.
However, overloading a weak function multiple times is (rightly) a link
error. At this point, we have two PHYs which make use of this feature,
so make both of them only available when COMPILE_TEST is unset, as part
of being able to support "allyesconfig" in the future.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 weeks agonet: bootp: Prevent buffer overflow to avoid leaking the RAM content
Paul HENRYS [Thu, 9 Oct 2025 15:43:28 +0000 (17:43 +0200)] 
net: bootp: Prevent buffer overflow to avoid leaking the RAM content

CVE-2024-42040 describes a possible buffer overflow when calling
bootp_process_vendor() in bootp_handler() since the total length
of the packet is passed to bootp_process_vendor() without being
reduced to len-(offsetof(struct bootp_hdr,bp_vend)+4).

The packet length is also checked against its minimum size to avoid
reading data from struct bootp_hdr outside of the packet length.

Signed-off-by: Paul HENRYS <paul.henrys_ext@softathome.com>
Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com>
2 weeks agonet: phy: add paged PHY register accessors
Lucien.Jheng [Mon, 6 Oct 2025 12:49:15 +0000 (20:49 +0800)] 
net: phy: add paged PHY register accessors

Synchronize paged PHY helpers with Linux v6.17.

Add support for PHY devices that use paged register access by
implementing the following functions:
- phy_save_page(): Save current page number
- phy_select_page(): Switch to a specific page and return previous page
- phy_restore_page(): Restore previously saved page

Also adds read_page and write_page callbacks to the phy_driver
structure to enable driver-specific page handling.

These helpers allow safe access to paged PHY registers by ensuring
proper page selection and restoration,
even in error conditions, which will be used by the Airoha PHY driver.

Signed-off-by: Lucien.Jheng <lucienzx159@gmail.com>
2 weeks agonet: airoha: increase the number of rx network buffers
Mikhail Kshevetskiy [Wed, 8 Oct 2025 07:31:39 +0000 (10:31 +0300)] 
net: airoha: increase the number of rx network buffers

According to commit 997786bbf473 ("drivers/net/airoha_eth: fix stalling
in package receiving") the minimal possible value of SYS_RX_ETH_BUFFER
is 4. Unfortunately it's too small for reliable ping.

Observations shows that SYS_RX_ETH_BUFFER must be at least 8.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
2 weeks agonet: airoha: simplify rx/free packet logic a bit
Mikhail Kshevetskiy [Wed, 8 Oct 2025 07:31:38 +0000 (10:31 +0300)] 
net: airoha: simplify rx/free packet logic a bit

The commit 997786bbf473 ("drivers/net/airoha_eth: fix stalling in package
receiving") can be improved. Instead of returning previous descriptor
it's possible:
 * do nothing in even descriptor case
 * return 2 descriptor to the queue (current and previous) in the odd
   descriptor case.

This patch:
 * implements above approach
 * remove logic not required within new approach
 * adds note that PKTBUFSRX must be even and larger than 7
   for reliable driver operations

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
2 weeks agonet: make dhcp_run() common for NET and NET_LWIP
Jerome Forissier [Thu, 9 Oct 2025 12:30:14 +0000 (14:30 +0200)] 
net: make dhcp_run() common for NET and NET_LWIP

There are currently two implementations of dhcp_run(): one in cmd/net.c
for NET and one in net/lwip/dhcp.c for NET_LWIP. There is no
justification for that. Therefore, move the NET version into
net/net-common.c to be used by both stacks, and drop the NET_LWIP
version which by the way does not look totally correct.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Suggested-by: Tom Rini <trini@konsulko.com>
Acked-by: Benjamin Hahn <B.Hahn@phytec.de>
2 weeks agonet: mediatek: move MT7531 MMIO MDIO to dedicated driver
Christian Marangi [Sat, 20 Sep 2025 16:09:44 +0000 (18:09 +0200)] 
net: mediatek: move MT7531 MMIO MDIO to dedicated driver

In preparation for support of MDIO on AN7581, move the MT7531 MMIO logic
to a dedicated driver and permit usage of the mdio read/write function
to the mtk_eth driver.

This only affect MT7988 that can use MMIO operation to access the Switch
register. The MT7988 code is updated to make use of the external driver.

This permits Airoha driver to make use of DM_MDIO to bind for the MT7531
driver that have the same exact register.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2 weeks agonet: mediatek: mt7988: free allocated MDIO bus on cleanup
Christian Marangi [Sat, 20 Sep 2025 16:09:43 +0000 (18:09 +0200)] 
net: mediatek: mt7988: free allocated MDIO bus on cleanup

Correctly free the MDIO Bus on calling cleanup function. While at it
also fix a copy-paste error and rename the cleanup function name to the
more specific name.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2 weeks agonet: mediatek: mt7988: restore PHY page on PHY setting exit
Christian Marangi [Sat, 20 Sep 2025 16:09:42 +0000 (18:09 +0200)] 
net: mediatek: mt7988: restore PHY page on PHY setting exit

On exiting the phy_setting function for MT7988, the PHY page is never
restored to Page 0. This can cause all kind of problem with reading the
status of the PHY at runtime.

Correctly restore PHY page on exiting the PHY setting function.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2 weeks agonet: mediatek: mt7531/7988: fix broken PHY turn ON/OFF
Christian Marangi [Sat, 20 Sep 2025 16:09:41 +0000 (18:09 +0200)] 
net: mediatek: mt7531/7988: fix broken PHY turn ON/OFF

The PHY for MT7531/MT7988 are never actully turned ON/OFF for the
affected PHY as we are read/writing to the wrong PHY address.

This is caused by the fact that we use the MT753X_PHY_ADDR macro 2
times offsetting the address multiple times.

One in the _setup() function and one in the mt7531_mii_read/write.

Drop the additional usage of MT753X_PHY_ADDR in setup() to correctly
set the PHY.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2 weeks agodoc: bindings: fix aquantia-phy.txt typo
Beiyan Yun [Tue, 23 Sep 2025 07:12:59 +0000 (15:12 +0800)] 
doc: bindings: fix aquantia-phy.txt typo

Fix typo: "weays" -> "ways"

Signed-off-by: Beiyan Yun <root@infi.wang>
2 weeks agonet: phy: aquantia: switch to use phy_get_ofnode()
Beiyan Yun [Tue, 23 Sep 2025 07:12:58 +0000 (15:12 +0800)] 
net: phy: aquantia: switch to use phy_get_ofnode()

Use PHY API phy_get_ofnode() helper to get PHY DT node.

Signed-off-by: Beiyan Yun <root@infi.wang>
2 weeks agonet: Tighten more driver dependencies
Tom Rini [Thu, 25 Sep 2025 20:44:14 +0000 (14:44 -0600)] 
net: Tighten more driver dependencies

In this case, the mediatek network drivers cannot build outside of
ARCH_MEDIATEK or ARCH_MTMIPS, and so express this requirement in Kconfig
as well. In the case of DWC_ETH_XGMAC / DWC_ETH_XGMAC_SOCFPGA, the file
controlled by the DWC_ETH_XGMAC option references a socfpga-specific
array defined in the file controlled by DWC_ETH_XGMAC_SOCFPGA. Rework
these options in Kconfig to handle this dependency.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 weeks agonet: Remove BOOTP_VENDOREX support
Tom Rini [Thu, 25 Sep 2025 20:44:13 +0000 (14:44 -0600)] 
net: Remove BOOTP_VENDOREX support

It has been over a decade since we had a platform that implemented the
bootp vendor extension support hook. Remove this option due to lack of
use.

Signed-off-by: Tom Rini <trini@konsulko.com>
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
2 weeks agonet: Add SYS_FAULT_MII_ADDR to Kconfig
Tom Rini [Thu, 25 Sep 2025 20:44:12 +0000 (14:44 -0600)] 
net: Add SYS_FAULT_MII_ADDR to Kconfig

The support found under SYS_FAULT_ECHO_LINK_DOWN requires that the
SYS_FAULT_MII_ADDR symbol also be set. This wasn't previously found in
Kconfig, so add it now.

Signed-off-by: Tom Rini <trini@konsulko.com>
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
2 weeks agoarm: socfpga: Tighten a few more driver dependencies
Tom Rini [Thu, 25 Sep 2025 20:44:11 +0000 (14:44 -0600)] 
arm: socfpga: Tighten a few more driver dependencies

Some drivers which depend on SoCFPGA specific headers had not had
appropriate dependencies list in Kconfig. Add ARCH_SOCFPGA or
TARGET_SOCFPGA_SOC64 where appropriate.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 weeks agouthreads: Make use of CONFIG_IS_ENABLED consistently
Tom Rini [Wed, 1 Oct 2025 20:30:50 +0000 (14:30 -0600)] 
uthreads: Make use of CONFIG_IS_ENABLED consistently

We do not yet support UTHREADS in xPL phases. However, we have the need
to dummy out certain functions so that xPL can build when full U-Boot
has UTHREADS enabled. Update the few places that need to use
CONFIG_IS_ENABLED so that we have the correct dummy in xPL.

Signed-off-by: Tom Rini <trini@konsulko.com>
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
2 weeks agotftp: make TFTP ports unconditionally configurable
Alvin Šipraga [Thu, 2 Oct 2025 09:43:36 +0000 (11:43 +0200)] 
tftp: make TFTP ports unconditionally configurable

A few lines of code being guarded by the CONFIG_TFTP_PORT option seems
an unnecessary restriction on the TFTP support provided by a vanilla
U-Boot image. In cases where the TFTP server cannot run as superuser -
and hence cannot run on the well-known port 69 - this quirk incurs a
full reconfiguration and rebuild of the bootloader only in order to
select the appropriate destination port.

Remove the CONFIG_TFTP_PORT option entirely and make the tftpdstp and
tftpsrcp variables always have an effect. Their being unset will mean
that U-Boot behaves the same as if CONFIG_TFTP_PORT was unset. Update
the documentation accordingly. And fix up the single board which was
originally enabling this option.

Signed-off-by: Alvin Šipraga <alvin@pqrs.dk>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
2 weeks ago.mailmap: update email address for Chen-Yu Tsai
Chen-Yu Tsai [Mon, 20 Oct 2025 14:55:27 +0000 (22:55 +0800)] 
.mailmap: update email address for Chen-Yu Tsai

The email forwarder I'm using has run into severe problems with Gmail
lately. Switch over to my kernel.org address.

Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>