pandora-u-boot.git
7 weeks agoarm: stm32mp: fix package IDs for stm32mp25
Patrice Chotard [Thu, 4 Jul 2024 13:54:35 +0000 (15:54 +0200)]
arm: stm32mp: fix package IDs for stm32mp25

Fix package IDs for stm32mp25.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoarm: stm32mp: implement new STM32MP25 revision ID system
Patrick Delaunay [Tue, 19 Mar 2024 19:14:27 +0000 (20:14 +0100)]
arm: stm32mp: implement new STM32MP25 revision ID system

The STM32MP25 revision ID are now defined with the OTP102, this patch
implements this new system.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice CHOTARD <patrice.chotard@foss.st.com>
7 weeks agoarm: stm32mp: disable console for UART serial boot
Patrice Chotard [Thu, 3 Apr 2025 13:04:35 +0000 (15:04 +0200)]
arm: stm32mp: disable console for UART serial boot

For UART serial boot, the console need to be deactivated to avoid issue
with tools STM32CubeProgrammer.

This patch adds also the missing dependency for CMD_STM32PROG_SERIAL,
to allow the silent and disable console. This avoid to add is on
board level for STM32MP15 (with TARGET_ST_STM32MP15X or
TARGET_ST_STM32MP13X)

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoarm: stm32mp: increase EARLY_TLB_SIZE to 0x10000
Patrice Chotard [Tue, 1 Apr 2025 16:14:18 +0000 (18:14 +0200)]
arm: stm32mp: increase EARLY_TLB_SIZE to 0x10000

Depending on Soc (STM32MP25 vs STM32MP21), the memory map can be
different and it generates a different TLB page table configuration/size.

Increase EARLY_TLB_SIZE to 0x10000 to fix following error message
and panic:

"Insufficient RAM for page table: 0xb000 > 0xa000. Please increase the
size in get_page_table_size()"

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoARM: dts: stm32: add sdmmc1 fixed clock for stm32mp257f-ev1-u-boot
Patrice Chotard [Fri, 4 Apr 2025 16:20:32 +0000 (18:20 +0200)]
ARM: dts: stm32: add sdmmc1 fixed clock for stm32mp257f-ev1-u-boot

Add sdmmc1 temporary fixed clock for stm32mp257f-ev1-u-boot

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoconfigs: stm32mp25: add PXE boot support
Patrice Chotard [Tue, 1 Apr 2025 16:11:39 +0000 (18:11 +0200)]
configs: stm32mp25: add PXE boot support

Configure the required configuration to allow PXE boot,
without autoload support by default.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoconfigs: stm32mp25: add USB host boot support
Patrice Chotard [Tue, 1 Apr 2025 16:12:51 +0000 (18:12 +0200)]
configs: stm32mp25: add USB host boot support

Add support for booting from USB pen drive, since USB host
port is available on the STM32MP2.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoboard: st: stm32mp2: change bootcmd for ST boards
Patrick Delaunay [Fri, 21 Oct 2022 15:37:28 +0000 (17:37 +0200)]
board: st: stm32mp2: change bootcmd for ST boards

For nor0 boot for the STMicroelectronics boards, the bootfs
is found in SD-Card = mmc0 for nor0 boot.

Introduce a new file configuration file stm32mp25_st_common.h
to manage this specific behavior for the STMicroelectronics
boards; change the boot order for nor0 boot and don't use
the default DISTRO order define in BOOT_TARGET_DEVICES:
mmc1, ubifs, mmc0, mmc2.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice CHOTARD <patrice.chotard@foss.st.com>
7 weeks agoconfigs: stm32mp25: add support of NAND and NOR boot
Patrice Chotard [Tue, 1 Apr 2025 16:08:44 +0000 (18:08 +0200)]
configs: stm32mp25: add support of NAND and NOR boot

Add support of UBI boot and activate the needed
configuration for U-Boot environment in UBI volume for
NAND or in a MTD partition for NOR device, SPI Flash:
ENV_OFFSET, ENV_OFFSET_REDUND, ENV_SECT_SIZE is
aligned with the default MTD partition on NOR device
of the STMicroelectronics boards.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoboard: st: stm32mp2: add user button support
Patrick Delaunay [Wed, 27 Jul 2022 08:38:11 +0000 (10:38 +0200)]
board: st: stm32mp2: add user button support

Handle user button 2 to force boot with STM32CubeProgrammer.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoboard: st: stm32mp2: add led support
Patrick Delaunay [Tue, 26 Jul 2022 17:26:16 +0000 (19:26 +0200)]
board: st: stm32mp2: add led support

Add led support, force default state on U-Boot initialization and put on
the Linux heartbeat led = "blue-led" during U-Boot execution.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoARM: dts: stm32: add "u-boot,mmc-env-partition" for stm32mp257f-ev1-u-boot
Patrice Chotard [Wed, 23 Apr 2025 07:45:02 +0000 (09:45 +0200)]
ARM: dts: stm32: add "u-boot,mmc-env-partition" for stm32mp257f-ev1-u-boot

Add "u-boot,mmc-env-partition" property for stm32mp257f-ev1-u-boot.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoboard: st: stm32mp2: add mmc_get_env_dev()
Patrice Chotard [Tue, 22 Apr 2025 15:33:42 +0000 (17:33 +0200)]
board: st: stm32mp2: add mmc_get_env_dev()

Use the boot instance to select the correct mmc device identifier,
this patch only to save the environment on eMMC = MMC(1) on
STMicroelectronics boards.

Set the CONFIG_SYS_MMC_ENV_DEV to -1 to select the mmc boot instance
by default.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoboard: st: stm32mp2: add env_get_location()
Patrice Chotard [Tue, 1 Apr 2025 16:08:44 +0000 (18:08 +0200)]
board: st: stm32mp2: add env_get_location()

In case of several environment location support, env_get_location
is needed to select the correct location depending of the boot
device .

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoarm: stm32mp: add boot_mode support for STM32MP25
Patrick Delaunay [Mon, 30 May 2022 17:20:45 +0000 (19:20 +0200)]
arm: stm32mp: add boot_mode support for STM32MP25

Add support of all the boot mode supported by STM32MP25x family
with information provided by TF-A in backup register

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoconfigs: stm32mp25: add bootcmd for stm32mp25 platform
Patrice Chotard [Tue, 1 Apr 2025 15:43:54 +0000 (17:43 +0200)]
configs: stm32mp25: add bootcmd for stm32mp25 platform

Handle boot for the 3 instance of MMC and call the command stm32prog
for serial boot on USB or on UART as it is done for other STM32MP platform.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoconfigs: stm32mp25: add MMC support
Patrice Chotard [Fri, 4 Apr 2025 06:53:11 +0000 (08:53 +0200)]
configs: stm32mp25: add MMC support

Enable MMC related flags support for stm32mp25

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoARM: stm32mp: add RIFSC system bus driver for STM32MP25
Patrick Delaunay [Tue, 1 Apr 2025 13:14:13 +0000 (15:14 +0200)]
ARM: stm32mp: add RIFSC system bus driver for STM32MP25

This driver is checking the access rights of the different
peripherals connected to the RIFSC bus. If access is denied,
the associated device is not binded.

Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com>
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Cover-letter:
Enable OF_UPSTREAM for STM32 and STi platforms
This series is enabling OF_UPSTREAM flag for STM32 MCU's, MPU's and
STi platforms.
For some boards, some defconfig and DT update are needed to keep the
same functional level.

The major impact concerns MPU's platform with introduction of STM32
System Bus.
END

Series-version: 2

Series-changes: 2
  - Replace LOG_CATEGORY UCLASS_SIMPLE_BUS by UCLASS_NOP in both
    /arch/arm/mach-stm32mp/stm32mp2/rifsc.c and
    /arch/arm/mach-stm32mp/stm32mp1/etzpc.c.
  - Update board/st/stm32mp1/MAINTAINERS.
  - Fix DSI clock ssetting.

7 weeks agoARM: dts: stm32: convert stm32mp2 board to OF_UPSTREAM
Patrice Chotard [Tue, 1 Apr 2025 13:14:12 +0000 (15:14 +0200)]
ARM: dts: stm32: convert stm32mp2 board to OF_UPSTREAM

Enable OF_UPSTREAM flag for STM32MP2 platforms.
Add fixed-clock ck_flexgen_08 and ck_icn_ls_mcu until STM32MP25
clock driver will be available.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
7 weeks agostm32mp: fdt: remove ETZPC peripheral cleanup
Lionel Debieve [Tue, 1 Apr 2025 13:14:11 +0000 (15:14 +0200)]
stm32mp: fdt: remove ETZPC peripheral cleanup

Due to feature domains management, there is no more
need to maintain the fdt cleanup.

Signed-off-by: Lionel Debieve <lionel.debieve@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
7 weeks agoARM: dts: stm32: add ETZPC as a system bus for STM32MP1x boards
Lionel Debieve [Tue, 1 Apr 2025 13:14:10 +0000 (15:14 +0200)]
ARM: dts: stm32: add ETZPC as a system bus for STM32MP1x boards

The STM32 System Bus is an internal bus on which devices are connected.
ETZPC is a peripheral overseeing the firewall bus that configures
and control access to the peripherals connected on it.

For more information on which peripheral is securable, please read
the STM32MP13 or STM32MP15 reference manual.

Signed-off-by: Lionel Debieve <lionel.debieve@foss.st.com>
Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
7 weeks agoARM: stm32mp: add ETZPC system bus driver for STM32MP1
Lionel Debieve [Tue, 1 Apr 2025 13:14:09 +0000 (15:14 +0200)]
ARM: stm32mp: add ETZPC system bus driver for STM32MP1

This driver is checking the access rights of the different
peripherals connected to the ETZPC bus. If access is denied,
the associated device is not bound.

Signed-off-by: Lionel Debieve <lionel.debieve@foss.st.com>
Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com>
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
7 weeks agoclk: stm32mp1: fix DSI clock setting
Patrice Chotard [Tue, 1 Apr 2025 13:14:08 +0000 (15:14 +0200)]
clk: stm32mp1: fix DSI clock setting

DSI is the peripheral clock, while DSI_K is an internal kernel clock.
Even though they get the same register and same bit set to be gated,
resulting in the same behavior.

Signed-off-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
7 weeks agoconfigs: stm32: introduce stm32mp15-odyssey_defconfig
Patrice Chotard [Tue, 1 Apr 2025 13:14:07 +0000 (15:14 +0200)]
configs: stm32: introduce stm32mp15-odyssey_defconfig

U-Boot DT for stm32mp157c-odyssey is richer than the kernel DT one.
None of the stm32mp157c-odyssey's contributors answered to my request
to update kernel DT and i didn't have this board to test.
The simpler is to add a dedicated stm32mp15-odyssey_defconfig with
OF_UPSTREAM flag unset.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
7 weeks agoARM: dts: stm32: convert stm32mp15 board to OF_UPSTREAM
Patrice Chotard [Tue, 1 Apr 2025 13:14:06 +0000 (15:14 +0200)]
ARM: dts: stm32: convert stm32mp15 board to OF_UPSTREAM

Enable OF_UPSTREAM flag for STM32MP15 platforms, except for
stm32mp15-odyssey,see following patch :

"configs: stm32: introduce stm32mp15-odyssey_defconfig"

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
7 weeks agoARM: dts: stm32: convert stm32mp13 board to OF_UPSTREAM
Patrice Chotard [Tue, 1 Apr 2025 13:14:05 +0000 (15:14 +0200)]
ARM: dts: stm32: convert stm32mp13 board to OF_UPSTREAM

Enable OF_UPSTREAM flag for STM32MP13 platforms.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
7 weeks agoARM: dts: stm32: convert stm23f4 boards to OF_UPSTREAM
Patrice Chotard [Tue, 1 Apr 2025 13:14:04 +0000 (15:14 +0200)]
ARM: dts: stm32: convert stm23f4 boards to OF_UPSTREAM

Enable OF_UPSTREAM flag for STM32MPF4 platforms.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
7 weeks agoARM: dts: stm32: convert stm23f7 boards to OF_UPSTREAM
Patrice Chotard [Tue, 1 Apr 2025 13:14:03 +0000 (15:14 +0200)]
ARM: dts: stm32: convert stm23f7 boards to OF_UPSTREAM

Enable OF_UPSTREAM flag for STM32F7 platforms.

Use upstream device tree for DSI and LTDC nodes,
As now in upstream DT, in panel@0 node, power-supply property is
present, which is a fixed-regulator, add DM_REGULATOR_FIXED flag
for stm32f769-disco boards.

Set also DEFAULT_FDT_FILE in defconfigs and use it in stm32f746-disco.h
to indicate which FDT file to load (All STM32F7 boards are using this
file).

If something is missing, it must be added in upstream device tree
in linux kernel ("px_clk" for DSI by example).

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
7 weeks agoARM: dts: stm32: convert stm23h7 boards to OF_UPSTREAM
Patrice Chotard [Tue, 1 Apr 2025 13:14:02 +0000 (15:14 +0200)]
ARM: dts: stm32: convert stm23h7 boards to OF_UPSTREAM

Enable OF_UPSTREAM flag for STM32H7 platforms.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
7 weeks agoARM: dts: sti: convert stih410-b2260 board to OF_UPSTREAM
Patrice Chotard [Tue, 1 Apr 2025 13:14:01 +0000 (15:14 +0200)]
ARM: dts: sti: convert stih410-b2260 board to OF_UPSTREAM

Enable OF_UPSTREAM flag for stih410-b2260 board.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
7 weeks agotools/make_pip: Use venv when invoking pip
Mattijs Korpershoek [Wed, 16 Apr 2025 12:36:28 +0000 (14:36 +0200)]
tools/make_pip: Use venv when invoking pip

Recent Ubuntu versions (24.04+) disallow pip by default when
installing packages. The recommended approach is to use a virtual
environment (venv) instead.
Because of this, "make pip" is failing on such versions.

To prepare CI container migration to Ubuntu 24.04, use a venv in the
make_pip script.

Note: This has been reported on [1]

[1] https://source.denx.de/u-boot/custodians/u-boot-dm/-/issues/37

Signed-off-by: Mattijs Korpershoek <mkorpershoek@kernel.org>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
7 weeks agoCI: Update to latest containers
Tom Rini [Thu, 24 Apr 2025 22:02:48 +0000 (16:02 -0600)]
CI: Update to latest containers

This changes to using "venv" rather than "virtualenv" for Python
sandboxing.

Signed-off-by: Tom Rini <trini@konsulko.com>
7 weeks agopython: Use and refer to the venv module rather than virtualenv
Tom Rini [Tue, 15 Apr 2025 18:10:26 +0000 (12:10 -0600)]
python: Use and refer to the venv module rather than virtualenv

Using some form of sandbox with Python modules is a long standing best
practice with the language. There are a number of ways to have a Python
sandbox be created. At this point in time, it seems the Python community
is moving towards using the "venv" module provided with Python rather
than a separate tool. To match that we make the following changes:

- Refer to a "Python sandbox" rather than virtualenv in comments, etc.
- Install the python3-venv module in our container and not virtualenv.
- In our CI files, invoke "python -m venv" rather than "virtualenv".
- In documentation, tell users to install python3-venv and not
  virtualenv.

Signed-off-by: Tom Rini <trini@konsulko.com>
7 weeks agoMerge patch series "Add PCIe support for TI AM64 SoC"
Tom Rini [Thu, 24 Apr 2025 16:46:17 +0000 (10:46 -0600)]
Merge patch series "Add PCIe support for TI AM64 SoC"

Hrushikesh Salunke <h-salunke@ti.com> says:

TI's AM64 SoC has a single instance of Cadence PCIe Controller. This
series enables support for PCIe in AM64 SoC and to configure it in
Root-Complex mode of operation.

Link: https://lore.kernel.org/r/20250416120830.138965-1-h-salunke@ti.com
7 weeks agoconfigs: am64x_evm_a53_defconfig: Enable configs for PCIe support
Hrushikesh Salunke [Wed, 16 Apr 2025 12:08:30 +0000 (17:38 +0530)]
configs: am64x_evm_a53_defconfig: Enable configs for PCIe support

TI's AM64 SoC has single instance of PCIe Controller namely PCIe0 which
is Cadence PCIe Controller. To support PCIe functionality with PCIe0
instance in Root-Complex mode enable corresponding configs. Also enable
configs to support NVMe over PCIe.

Signed-off-by: Hrushikesh Salunke <h-salunke@ti.com>
Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
7 weeks agopci: pcie_cdns_ti: Enable PCIe root-complex mode in AM64 SoC
Hrushikesh Salunke [Wed, 16 Apr 2025 12:08:29 +0000 (17:38 +0530)]
pci: pcie_cdns_ti: Enable PCIe root-complex mode in AM64 SoC

TI's AM64 SoC has single instance of PCIe Controller namely PCIe0 which
is Cadence PCIe Controller. Add support to configure PCIe0 in Root-
Complex mode of operation.

Signed-off-by: Hrushikesh Salunke <h-salunke@ti.com>
Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
7 weeks agopci: pcie_cdns_ti: Include linux/sizes.h header
Hrushikesh Salunke [Wed, 16 Apr 2025 12:08:28 +0000 (17:38 +0530)]
pci: pcie_cdns_ti: Include linux/sizes.h header

Driver uses macro SZ_4G to configure inbound base address register.
The macro is used without including the header file in which it is
defined. Fix this.

Fixes: 59ad5480098 ("pci: Add TI K3 Cadence PCIe Controller")
Signed-off-by: Hrushikesh Salunke <h-salunke@ti.com>
Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
7 weeks agoMerge patch series "arm: mach-k3: remove some firewalls left over by ROM"
Tom Rini [Thu, 24 Apr 2025 16:45:41 +0000 (10:45 -0600)]
Merge patch series "arm: mach-k3: remove some firewalls left over by ROM"

Bryan Brattlof <bb@ti.com> says:

This small series is here to remove some firewalls setup by ROM during
their boot and clean things up for Linux later on. Ideally this would be
a simple call to remove_fwl_configs() however the location of the
firewall is problematic (could potentially crash the core) when we're
currently executing from the memory region protected by the firewall.

So we need to introduce a function which allows us to disable specific
firewall regions and skip others to ensure boot stability.

Link: https://lore.kernel.org/r/20250414-firewalls-v1-0-89090085c08b@ti.com
7 weeks agoarm: mach-k3: am625: remove any firewalls ROM has configured for HSRAM
Bryan Brattlof [Mon, 14 Apr 2025 20:20:03 +0000 (15:20 -0500)]
arm: mach-k3: am625: remove any firewalls ROM has configured for HSRAM

ROM will configure a firewall to only allow HSRAM to be touched by the
R5 core. Any outside entity like DMA or the A53s will not have access to
this region. This can be problematic when U-Boot, running on the A53,
loads firmware that runs out of this region.

To simplify things remove the firewall here and let the remote core
firmware place a new firewall themselves if they wish for the memory
region.

Signed-off-by: Bryan Brattlof <bb@ti.com>
7 weeks agoarm: mach-k3: support disabling a single firewall region
Bryan Brattlof [Mon, 14 Apr 2025 20:20:02 +0000 (15:20 -0500)]
arm: mach-k3: support disabling a single firewall region

During boot some firewall regions could contain the R5's code which if
we change the firewalls settings will crash the core. To get around this
issue, define a new function which allows us to specify specific regions
we want unlocked.

Signed-off-by: Bryan Brattlof <bb@ti.com>
7 weeks agoMerge patch series "More MMC fixes"
Tom Rini [Thu, 24 Apr 2025 16:44:59 +0000 (10:44 -0600)]
Merge patch series "More MMC fixes"

Judith Mendez <jm@ti.com> says:

This patch series fixes MMC_HS_52 mode in am654_sdhci driver,
as well as HIGH_SPEED_ENA and UHS_MODE_SELECT for HS modes.

Also add TI_COMMON_CMD_OPTIONS to K3 Sitara board a53 defconfigs.

Link: https://www.ti.com/lit/er/sprz574a/sprz574a.pdf
Link: https://lore.kernel.org/r/20250417234334.3661321-1-jm@ti.com
7 weeks agoconfigs: am62*_evm_a53_defconfig: Add TI_COMMON_CMD_OPTIONS
Judith Mendez [Thu, 17 Apr 2025 23:43:34 +0000 (18:43 -0500)]
configs: am62*_evm_a53_defconfig: Add TI_COMMON_CMD_OPTIONS

Add TI_COMMON_CMD_OPTIONS config options to Sitara K3 boards at
a53 stage since we rely on most of the commands implied for testing
and debugging purposes. Since all commands are now enabled by
default, remove the redundant CMD_* options in the a53 defconfigs.

Also add MMC_REG & MMC_SPEED_MODE_SET useful commands to
TI_COMMON_CMD_OPTIONS.

Signed-off-by: Judith Mendez <jm@ti.com>
Reviewed-by: Bryan Brattlof <bb@ti.com>
7 weeks agommc: am654_sdhci: Add am654_sdhci_set_control_reg
Judith Mendez [Thu, 17 Apr 2025 23:43:33 +0000 (18:43 -0500)]
mmc: am654_sdhci: Add am654_sdhci_set_control_reg

This patch adds am654_sdhci_set_control_reg to am654_sdhci.

This is required to fix UHS_MODE_SELECT for TI K3 boards.

If any of HIGH_SPEED_ENA, V1P8_SIGNAL_ENA, UHS_MODE_SELECT
are set, then data will be launched on the pos-edge of the
clock.

Since K3 SoCs did not meet timing requirements for High Speed
SDR mode at rising clock edge, none of these three should be
set, therefore limit UHS_MODE_SELECT to only be set for modes
above MMC_HS_52.

This fixes MMC write issue on am64x evm at mode High Speed
SDR.

Signed-off-by: Judith Mendez <jm@ti.com>
Reviewed-by: Bryan Brattlof <bb@ti.com>
7 weeks agommc: am654_sdhci: Fix HIGH_SPEED_ENA
Judith Mendez [Thu, 17 Apr 2025 23:43:32 +0000 (18:43 -0500)]
mmc: am654_sdhci: Fix HIGH_SPEED_ENA

High Speed enable bit switches data launch from the falling
clock edge (half cycle timing) to the rising clock edge (full
cycle timing). For all SD UHS modes, data launch must happen
at the rising clock edge, so set HIGH_SPEED_ENA for SDR12 and
SDR25 modes. For all HS modes, data launch must happen at the
falling clock edge, so do not set HIGH_SPEED_ENA for MMC_HS_52.

Signed-off-by: Judith Mendez <jm@ti.com>
Reviewed-by: Bryan Brattlof <bb@ti.com>
7 weeks agommc: am654_sdhci: Add MMC_HS_52 to timing data
Judith Mendez [Thu, 17 Apr 2025 23:43:31 +0000 (18:43 -0500)]
mmc: am654_sdhci: Add MMC_HS_52 to timing data

This patch adds MMC_HS_52 to the timing data structure.

Previously, this bus mode tap settings were not populated and
were instead populated for MMC_HS which is a different bus mode
up to 26MHz. Since we intended these settings according to the
device data sheet[0] for MMC_HS_52 up to 52MHz, populate MMC_HS
tap settings for MMC_HS_52.

While we are here, fix typo in ti,itap-del-sel-mms-hs.

[0] https://www.ti.com/lit/ds/symlink/am625.pdf Table 7-79

Signed-off-by: Judith Mendez <jm@ti.com>
Reviewed-by: Bryan Brattlof <bb@ti.com>
7 weeks agoMerge tag 'u-boot-dfu-20250424' of https://source.denx.de/u-boot/custodians/u-boot-dfu
Tom Rini [Thu, 24 Apr 2025 16:44:17 +0000 (10:44 -0600)]
Merge tag 'u-boot-dfu-20250424' of https://source.denx.de/u-boot/custodians/u-boot-dfu

u-boot-dfu-20250425

Usb gadget:
- Fix ACM gadget release
- Allow ACM gadget restart after releasing it
- Add 'enabled' flag to usb_ep structure

DFU:
- Fix alt buffer clearing for DeveloperBox board

7 weeks agocmd: cls: do not repeat clearing of console
Sughosh Ganu [Wed, 19 Mar 2025 11:20:03 +0000 (16:50 +0530)]
cmd: cls: do not repeat clearing of console

There is no need to repeat the command to clear the console. Remove
it's repeat attribute.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
7 weeks agospi: cadence-qspi: Add disable STIG mode quikrs.
Boon Khai Ng [Wed, 16 Apr 2025 03:17:51 +0000 (11:17 +0800)]
spi: cadence-qspi: Add disable STIG mode quikrs.

Adding quirk to disable STIG mode since cadence controller has
issue for read/write using the STIG mode. STIG mode is enabled
by default since 2023.04 for small read/write(<8bytes).

Updated STIG mode reading from dev_get_driver_data by assigning
to platdata struct before read quirks variable.

The STIG mode is disabled for normal read case and enabled
for QSPI Jedec ID read/write since it requires STIG read/write.

Porting from linux implementation
https://lore.kernel.org/all/20241204063338.296959-1-niravkumar
.l.rabara@intel.com/T/

Signed-off-by: Boon Khai Ng <boon.khai.ng@altera.com>
Reviewed-by: Tien Fong Chee <tien.fong.chee@altera.com>
7 weeks agoarm: mach-k3: r5: j7200: Add clk dev data for WKUP UART
Bhavya Kapoor [Tue, 15 Apr 2025 17:36:51 +0000 (23:06 +0530)]
arm: mach-k3: r5: j7200: Add clk dev data for WKUP UART

Add clk and dev data for wakeup uart to enable wakeup
UART as console.

Reported-by: KEERTHY <j-keerthy@ti.com>
Signed-off-by: Bhavya Kapoor <b-kapoor@ti.com>
7 weeks agomach-k3: common_fdt: Move carveout struct
Daniel Schultz [Tue, 15 Apr 2025 15:12:41 +0000 (08:12 -0700)]
mach-k3: common_fdt: Move carveout struct

Labels are not allowed before declarations. Move the carveout struct
at the beginning and only update 'end' at this point.

This will fix following error:

arch/arm/mach-k3/common_fdt.c: In function 'fdt_fixup_reserved':
arch/arm/mach-k3/common_fdt.c:156:2: error: a label can only be part of a statement and a declaration is not a statement
  156 |  struct fdt_memory carveout = {
      |  ^~~~~~
make[1]: *** [scripts/Makefile.build:256: arch/arm/mach-k3/common_fdt.o] Error 1
make: *** [Makefile:1919: arch/arm/mach-k3] Error 2

Fixes: 096aa229a9e ("mach-k3: common_fdt: create a reserved memory node")

Signed-off-by: Daniel Schultz <d.schultz@phytec.de>
Reviewed-by: Udit Kumar <u-kumar1@ti.com>
Reviewed-by: Bryan Brattlof <bb@ti.com>
7 weeks agomach-k3: add eMMC FS boot support for am62[ap]
Anshul Dalal [Tue, 15 Apr 2025 09:52:24 +0000 (15:22 +0530)]
mach-k3: add eMMC FS boot support for am62[ap]

This makes spl_mmc_boot_mode consistent across am62x, 62a and 62p.

If MMCSD_MODE_EMMCBOOT is returned, FS boot fails since it checks for FS
on the hardware partitions, not the UDA. So to allow FS boot from EMMC,
the function should return MMCSD_MODE_FS instead which allows us to read
from FS on the UDA.

Signed-off-by: Anshul Dalal <anshuld@ti.com>
7 weeks agoarm: dts: am62a: allow booting from eMMC
Anshul Dalal [Tue, 15 Apr 2025 09:51:36 +0000 (15:21 +0530)]
arm: dts: am62a: allow booting from eMMC

The bootph-all property in u-boot enables driver initialization prior to
relocation, this is necessary to use the device as boot media.

sdhci0 is the phandle for eMMC on am62a, so this change allows us to use
eMMC as a boot media.

Signed-off-by: Anshul Dalal <anshuld@ti.com>
7 weeks agoconfigs: set SPL_TEXT_BASE by default for k3 platforms
Anshul Dalal [Tue, 15 Apr 2025 09:50:27 +0000 (15:20 +0530)]
configs: set SPL_TEXT_BASE by default for k3 platforms

SPL_TEXT_BASE is used as the load address for the main domain SPL on k3
platforms.

Since the config value is the same for every board, this patch sets the
value 0x80080000 as default for all 64-bit ARCH_K3, 0x43c00000 as
default for the R5 cores and deletes the instances of SPL_TEXT_BASE in
individual defconfigs.

Signed-off-by: Anshul Dalal <anshuld@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
7 weeks agotest/py: spi: Prevent to overwrite the reserved memory
Love Kumar [Tue, 15 Apr 2025 09:41:09 +0000 (15:11 +0530)]
test/py: spi: Prevent to overwrite the reserved memory

Update SPI negative tests to prevent SF command from overwriting the
reserved memory area.

Signed-off-by: Love Kumar <love.kumar@amd.com>
7 weeks agosmbios: Do not look up children of invalid nodes
Samuel Holland [Mon, 14 Apr 2025 19:47:04 +0000 (12:47 -0700)]
smbios: Do not look up children of invalid nodes

If there is no UCLASS_SYSINFO device available, parent_node will be
ofnode_null(). Calling ofnode_find_subnode() then triggers an assertion:

  drivers/core/ofnode.c:598: ofnode_find_subnode: Assertion `ofnode_valid(node)' failed.

Check for a valid parent_node, not just that OF_CONTROL is enabled.

Fixes: 44ffb6f0ecaf ("smbios: Allow properties to come from the device tree")
Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
7 weeks agonet: dwc_eth_qos: Fix hang when freeing packet after stop
Samuel Holland [Mon, 14 Apr 2025 19:30:11 +0000 (12:30 -0700)]
net: dwc_eth_qos: Fix hang when freeing packet after stop

If eqos_free_pkt() is called after eqos_stop(), eqos_stop_resets() will
have been called already. This may prevent accessing the MMIO space to
update the RX descriptor tail pointer, so we must skip the descriptor
maintenance logic. This is okay because the descriptors and tail pointer
will all be rewritten anyway during the next call to eqos_start().

This hang was observed after a failed TFTP transaction:

  eqos_recv(dev=000000047fb57330, flags=1):
  eqos_recv: *packetp=000000c3ffb5c080, length=151

  TFTP error: 'file <FILE> not found for <IP>' (1)
  Not retrying...
  eqos_stop(dev=000000047fb57330):
  eqos_stop: OK
  eqos_free_pkt(packet=000000c3ffb5c080, length=151)
  <HANG>

Fixes: ba4dfef1469f ("net: add driver for Synopsys Ethernet QoS device")
Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
7 weeks agoMerge patch series "Uthreads"
Tom Rini [Wed, 23 Apr 2025 19:21:39 +0000 (13:21 -0600)]
Merge patch series "Uthreads"

Jerome Forissier <jerome.forissier@linaro.org> says:

This series introduces threads and uses them to improve the performance
of the USB bus scanning code and to implement background jobs in the
shell via two new commands: 'spawn' and 'wait'.

The threading framework is called 'uthread' and is inspired from the
barebox threads [2]. setjmp() and longjmp() are used to save and
restore contexts, as well as a non-standard extension called initjmp().
This new function is added in several patches, one for each
architecture that supports HAVE_SETJMP. A new symbol is defined:
HAVE_INITJMP. Two tests, one for initjmp() and one for the uthread
scheduling, are added to the lib suite.

After introducing threads and making schedule() and udelay() a thread
re-scheduling point, the USB stack initialization is modified to benefit
from concurrency when UTHREAD is enabled, where uthreads are used in
usb_init() to initialize and scan multiple busses at the same time.
The code was tested on arm64 and arm QEMU with 4 simulated XHCI buses
and some devices. On this platform the USB scan takes 2.2 s instead of
5.6 s. Tested on i.MX93 EVK with two USB hubs, one ethernet adapter and
one webcam on each, "usb start" takes 2.4 s instead of 4.6 s.

Finally, the spawn and wait commands are introduced, allowing the use of
threads from the shell. Tested on the i.MX93 EVK with a spinning HDD
connected to USB1 and the network connected to ENET1. The USB plus DHCP
init sequence "spawn usb start; spawn dhcp; wait" takes 4.5 seconds
instead of 8 seconds for "usb start; dhcp".

[1] https://patchwork.ozlabs.org/project/uboot/list/?series=446674
[2] https://github.com/barebox/barebox/blob/master/common/bthread.c

Link: https://lore.kernel.org/r/20250418141114.2056981-1-jerome.forissier@linaro.org
7 weeks agoconfigs: qemu: enable UTHREAD and CMD_SPAWN in various defconfigs
Jerome Forissier [Fri, 18 Apr 2025 14:09:45 +0000 (16:09 +0200)]
configs: qemu: enable UTHREAD and CMD_SPAWN in various defconfigs

Enable UTHREAD and CMD_SPAWN on supported QEMU platforms for testing
purposes.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
7 weeks agoMAINTAINERS: add UTHREAD
Jerome Forissier [Fri, 18 Apr 2025 14:09:44 +0000 (16:09 +0200)]
MAINTAINERS: add UTHREAD

Add myself as the maintainer for the UTHREAD framework, the spawn/wait
commands and the associated tests.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
7 weeks agotest: cmd: add test for spawn and wait commands
Jerome Forissier [Fri, 18 Apr 2025 14:09:43 +0000 (16:09 +0200)]
test: cmd: add test for spawn and wait commands

Test the spawn and wait commands.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
7 weeks agocmd: add spawn and wait commands
Jerome Forissier [Fri, 18 Apr 2025 14:09:42 +0000 (16:09 +0200)]
cmd: add spawn and wait commands

Add a spawn command which runs another command in the background, as
well as a wait command to suspend the shell until one or more background
jobs have completed. The job_id environment variable is set by spawn and
wait accepts optional job ids, so that one can selectively wait on any
job.

Example:

 => date; spawn sleep 5; spawn sleep 3; date; echo "waiting..."; wait; date
 Date: 2025-02-21 (Friday)    Time: 17:04:52
 Date: 2025-02-21 (Friday)    Time: 17:04:52
 waiting...
 Date: 2025-02-21 (Friday)    Time: 17:04:57
 =>

Another example showing how background jobs can make initlizations
faster. The board is i.MX93 EVK, with one spinning HDD connected to
USB1 via a hub, and a network cable plugged into ENET1.

 # From power up / reset
 u-boot=> setenv autoload 0
 u-boot=> setenv ud "usb start; dhcp"
 u-boot=> time run ud
 [...]
 time: 8.058 seconds

 # From power up / reset
 u-boot=> setenv autoload 0
 u-boot=> setenv ud "spawn usb start; spawn dhcp; wait"
 u-boot=> time run ud
 [...]
 time: 4.475 seconds

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
7 weeks agodm: usb: initialize and scan multiple buses simultaneously with uthread
Jerome Forissier [Fri, 18 Apr 2025 14:09:41 +0000 (16:09 +0200)]
dm: usb: initialize and scan multiple buses simultaneously with uthread

Use the uthread framework to initialize and scan USB buses in parallel
for better performance. The console output is slightly modified with a
final per-bus report of the number of devices found, common to UTHREAD
and !UTHREAD. The USB tests are updated accordingly.

Tested on two platforms:

1. arm64 QEMU on a somewhat contrived example (4 USB buses, each with
one audio device, one keyboard, one mouse and one tablet)

 $ make qemu_arm64_defconfig
 $ make -j$(nproc) CROSS_COMPILE="ccache aarch64-linux-gnu-"
 $ qemu-system-aarch64 -M virt -nographic -cpu max -bios u-boot.bin \
     $(for i in {1..4}; do echo -device qemu-xhci,id=xhci$i \
         -device\ usb-{audio,kbd,mouse,tablet},bus=xhci$i.0; \
     done)

2. i.MX93 EVK (imx93_11x11_evk_defconfig) with two USB hubs, each with
one webcam and one ethernet adapter, resulting in the following device
tree:

 USB device tree:
   1  Hub (480 Mb/s, 0mA)
   |  u-boot EHCI Host Controller
   |
   +-2  Hub (480 Mb/s, 100mA)
     |  GenesysLogic USB2.1 Hub
     |
     +-3  Vendor specific (480 Mb/s, 350mA)
     |    Realtek USB 10/100/1000 LAN 001000001
     |
     +-4   (480 Mb/s, 500mA)
           HD Pro Webcam C920 8F7CD51F

   1  Hub (480 Mb/s, 0mA)
   |  u-boot EHCI Host Controller
   |
   +-2  Hub (480 Mb/s, 100mA)
     |   USB 2.0 Hub
     |
     +-3  Vendor specific (480 Mb/s, 200mA)
     |    Realtek USB 10/100/1000 LAN 000001
     |
     +-4   (480 Mb/s, 500mA)
          Generic OnLan-CS30 201801010008

Note that i.MX was tested on top of the downstream repository [1] since
USB doesn't work in the upstream master branch.

[1] https://github.com/nxp-imx/uboot-imx/tree/lf-6.6.52-2.2.0
    commit 6c4545203d12 ("LF-13928 update key for capsule")

The time spent in usb_init() ("usb start" command) is reported on
the console. Here are the results:

        | CONFIG_UTHREAD=n | CONFIG_UTHREAD=y
--------+------------------+-----------------
QEMU    |          5628 ms |          2212 ms
i.MX93  |          4591 ms |          2441 ms

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
7 weeks agodm: usb: move bus initialization into new static function usb_init_bus()
Jerome Forissier [Fri, 18 Apr 2025 14:09:40 +0000 (16:09 +0200)]
dm: usb: move bus initialization into new static function usb_init_bus()

To prepare for the introduction of threads in the USB initialization
sequence, move code out of usb_init() into a new helper function:
usb_init_bus() and count the number of USB controllers initialized
successfully by using the DM device_active() function.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
7 weeks agotest: lib: add uthread_mutex test
Jerome Forissier [Fri, 18 Apr 2025 14:09:39 +0000 (16:09 +0200)]
test: lib: add uthread_mutex test

Add a test for uthread mutexes.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
7 weeks agotest: lib: add uthread test
Jerome Forissier [Fri, 18 Apr 2025 14:09:38 +0000 (16:09 +0200)]
test: lib: add uthread test

Add a thread framework test to the lib tests. Update the API
documentation to use the test as an example.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
7 weeks agolib: time: hook uthread_schedule() into udelay()
Jerome Forissier [Fri, 18 Apr 2025 14:09:37 +0000 (16:09 +0200)]
lib: time: hook uthread_schedule() into udelay()

Introduce a uthread scheduling loop into udelay() when CONFIG_UTHREAD
is enabled. This means that any uthread calling into udelay() may yield
to uthread and be scheduled again later. There is no delay in the
scheduling loop because tests have shown that such a delay can have a
detrimental effect on the console (input drops characters).

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
7 weeks agocyclic: invoke uthread_schedule() from schedule()
Jerome Forissier [Fri, 18 Apr 2025 14:09:36 +0000 (16:09 +0200)]
cyclic: invoke uthread_schedule() from schedule()

Make the schedule() call from the CYCLIC framework a uthread scheduling
point too. This makes sense since schedule() is called from a lot of
places where uthread_schedule() needs to be called.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Stefan Roese <sr@denx.de>
7 weeks agouthread: add uthread_mutex
Jerome Forissier [Fri, 18 Apr 2025 14:09:35 +0000 (16:09 +0200)]
uthread: add uthread_mutex

Add struct uthread_mutex and uthread_mutex_lock(),
uthread_mutex_trylock(), uthread_mutex_unlock() to protect shared data
structures from concurrent modifications.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
7 weeks agouthread: add cooperative multi-tasking interface
Jerome Forissier [Fri, 18 Apr 2025 14:09:34 +0000 (16:09 +0200)]
uthread: add cooperative multi-tasking interface

Add a new internal API called uthread (Kconfig symbol: UTHREAD) which
provides cooperative multi-tasking. The goal is to be able to improve
the performance of some parts of U-Boot by overlapping lengthy
operations, and also implement background jobs in the U-Boot shell.
Each uthread has its own stack allocated on the heap. The default stack
size is defined by the UTHREAD_STACK_SIZE symbol and is used when
uthread_create() receives zero for the stack_sz argument.

The implementation is based on context-switching via initjmp()/setjmp()/
longjmp() and is inspired from barebox threads [1]. A notion of thread
group helps with dependencies, such as when a thread needs to block
until a number of other threads have returned.

The name "uthread" comes from "user-space threads" because the
scheduling happens with no help from a higher privileged mode, contrary
to more complex models where kernel threads are defined. But the 'u'
may as well stand for 'U-Boot' since the bootloader may actually be
running at any privilege level and the notion of user vs. kernel may
not make much sense in this context.

[1] https://github.com/barebox/barebox/blob/master/common/bthread.c

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
7 weeks agotest: lib: add initjmp() test
Jerome Forissier [Fri, 18 Apr 2025 14:09:33 +0000 (16:09 +0200)]
test: lib: add initjmp() test

Test the initjmp() function when HAVE_INITJMP is set. Use the test as an
example in the API documentation.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
7 weeks agosandbox: add initjmp()
Jerome Forissier [Fri, 18 Apr 2025 14:09:32 +0000 (16:09 +0200)]
sandbox: add initjmp()

Add initjm[() to sandbox, a non-standard extension to setjmp()/
longjmp() allowing to initialize a jump buffer with a function pointer
and a stack pointer. This will be useful to later introduce threads.
With this new function it becomes possible to longjmp() to a particular
function pointer (rather than to a point previously reached during
program execution as is the case with setjmp()), and with a custom stack.
Both things are needed to spin off a new thread. Then the usual
setjmp()/longjmp() pair is enough to save and restore a context, i.e.,
switch thread. The implementation is taken verbatim from barebox [1] with
the exception of the additional stack_sz argument. It is quite complex
because contrary to U-Boot platform code we don't know how the system's
C library implements the jump buffer, so we can't just write the function
and stack pointers into it.

[1] https://github.com/barebox/barebox/blob/b2a15c383ddc/arch/sandbox/os/setjmp.c

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
7 weeks agoriscv: add initjmp()
Jerome Forissier [Fri, 18 Apr 2025 14:09:31 +0000 (16:09 +0200)]
riscv: add initjmp()

Implement initjmp() for RISC-V, a non-standard extension to setjmp()/
longjmp() allowing to initialize a jump buffer with a function pointer
and a stack pointer. This will be useful to later introduce threads.
With this new function it becomes possible to longjmp() to a particular
function pointer (rather than to a point previously reached during
program execution as is the case with setjmp()), and with a custom stack.
Both things are needed to spin off a new thread. Then the usual
setjmp()/longjmp() pair is enough to save and restore a context, i.e.,
switch thread.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
7 weeks agoarm: add initjmp()
Jerome Forissier [Fri, 18 Apr 2025 14:09:30 +0000 (16:09 +0200)]
arm: add initjmp()

Implement initjmp() for Arm. a non-standard extension to setjmp()/
longjmp() allowing to initialize a jump buffer with a function pointer
and a stack pointer. This will be useful to later introduce threads.
With this new function it becomes possible to longjmp() to a particular
function pointer (rather than to a point previously reached during
program execution as is the case with setjmp()), and with a custom stack.
Both things are needed to spin off a new thread. Then the usual
setjmp()/longjmp() pair is enough to save and restore a context, i.e.,
switch thread.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
7 weeks agoarch: introduce initjmp() and Kconfig symbol HAVE_INITJMP
Jerome Forissier [Fri, 18 Apr 2025 14:09:29 +0000 (16:09 +0200)]
arch: introduce initjmp() and Kconfig symbol HAVE_INITJMP

Add the HAVE_INIJMP symbol to be set by architectures that support
initjmp(), a non-standard extension to setjmp()/longjmp() allowing to
initialize a jump buffer with a function pointer and a stack pointer.
This will be useful to later introduce threads. With this new function
it becomes possible to longjmp() to a particular function pointer
(rather than to a point previously reached during program execution as
is the case with setjmp()), and with a custom stack. Both things are
needed to spin off a new thread. Then the usual setjmp()/longjmp() pair
is enough to save and restore a context, i.e., switch thread.

Add the initjmp() prototype to <include/setjmp.h> since it is common to
all architectures.

Add an entry to the API documentation: doc/api/setjmp.rst.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
7 weeks agoMerge tag 'u-boot-rockchip-20250423' of https://source.denx.de/u-boot/custodians...
Tom Rini [Wed, 23 Apr 2025 17:34:53 +0000 (11:34 -0600)]
Merge tag 'u-boot-rockchip-20250423' of https://source.denx.de/u-boot/custodians/u-boot-rockchip

CI: https://source.denx.de/u-boot/custodians/u-boot-rockchip/-/pipelines/25909

Please pull the updates for rockchip platform:
- New SoC support: RK3528, RK3576
- New Board support: rk3528 Radxa E20C, rk3576 Firefly ROC-RK3576-PC;
- Add generic board for rk3288 and rk3399;
- rng driver binding update;
- misc updates on board level or header files;

7 weeks agoMerge tag 'mmc-2025-04-23' of https://source.denx.de/u-boot/custodians/u-boot-mmc
Tom Rini [Wed, 23 Apr 2025 14:57:13 +0000 (08:57 -0600)]
Merge tag 'mmc-2025-04-23' of https://source.denx.de/u-boot/custodians/u-boot-mmc

- Introducing back send_init_stream for omap_hsmmc
  to perform the 74 clocks cycle sequence
- Move scmi regulator subnode hack to scmi_regulator
- Typo fix

7 weeks agoMerge tag 'net-20250423' of https://source.denx.de/u-boot/custodians/u-boot-net
Tom Rini [Wed, 23 Apr 2025 14:53:23 +0000 (08:53 -0600)]
Merge tag 'net-20250423' of https://source.denx.de/u-boot/custodians/u-boot-net

Pull request net-20250423

net:
- Make initr_net() invocation command line agnostic

net-legacy:
- net: dhcpv6: remove excluded middle expression
- net: dhcp6: Send DHCPv6 using multicast MAC

net-lwip:
- lwIP sandbox tests

misc:
- cmd: Remove CMD_NET protection

7 weeks agoboard: rockchip: Add minimal generic RK3399 board
Jonas Karlman [Sun, 30 Mar 2025 17:20:35 +0000 (17:20 +0000)]
board: rockchip: Add minimal generic RK3399 board

Add a minimal generic RK3399 board that only have eMMC, SDMMC, SPI flash
and USB OTG enabled. This defconfig can be used to boot from eMMC,
SD-card or SPI flash on most RK3399 boards that follow reference board
design.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Christopher Obbard <christopher.obbard@linaro.org>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agoboard: rockchip: Add minimal generic RK3328 board
Jonas Karlman [Sun, 30 Mar 2025 17:20:34 +0000 (17:20 +0000)]
board: rockchip: Add minimal generic RK3328 board

Add a minimal generic RK3328 board that only have eMMC, SDMMC, SPI flash
and USB OTG enabled. This defconfig can be used to boot from eMMC,
SD-card or SPI flash on most RK3328 boards that follow reference board
design.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Christopher Obbard <christopher.obbard@linaro.org>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agorockchip: rk3576: Add support for ROC-RK3576-PC board
Heiko Stuebner [Tue, 15 Apr 2025 21:51:28 +0000 (23:51 +0200)]
rockchip: rk3576: Add support for ROC-RK3576-PC board

The ROC-RK3576-PC is a SBC made by Firefly, designed around the RK3576
SoC. This adds the needed board infrastructure and config for it.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agoarm64: dts: rockchip: Add devicetree for the ROC-RK3576-PC
Heiko Stuebner [Tue, 15 Apr 2025 21:51:27 +0000 (23:51 +0200)]
arm64: dts: rockchip: Add devicetree for the ROC-RK3576-PC

As the name implies, it is built around the RK3576 SoC with 4x Cortex-A72
cores, four Cortex-A53 cores and Mali-G52 MC3 GPU.

Storage options are EMMC, SD-Card, a 2242 M.2 slot and the possibility to
use UFS 2.0 storage.

Video Output options are a HDMI port, a DSI connector as well as Display-
Port via the TypeC connector (all of them not yet supported).

Networking options are a Low-profile Gigabit Ethernet RJ45 port with
Motorcomm YT8531 PHY as well as WiFi via an AMPAK AP6256 module.

USB ports on the board are 1x USB 3.0 port, 1x USB 2.0 port, 1x USB Type-C
and it comes with 40-pin GPIO header

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20250210205126.1173631-3-heiko@sntech.de
[ upstream commit: 887ff17cdd8f088a52e2b61e71f2b6c9b9678de6 ]

(cherry picked from commit 388e7272d092bd20e414cd408bac39d8fd02d765)
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agodt-bindings: arm: rockchip: Add Firefly ROC-RK3576-PC binding
Heiko Stuebner [Tue, 15 Apr 2025 21:51:26 +0000 (23:51 +0200)]
dt-bindings: arm: rockchip: Add Firefly ROC-RK3576-PC binding

Add devicetree binding for the ROC-RK3576-PC SBC.

The board is based on the RK3576 SoC (4*Cortex-A72 + 4*Cortex-A53).

Acked-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20250210205126.1173631-2-heiko@sntech.de
[ upstream commit: 2be4a4171401761cb5fb02225d8b18351f6807c0 ]

(cherry picked from commit 89026942ddd0475d78b11b019285fff0c1d47266)
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agoarm64: dts: rockchip: add rk3576 otp node
Heiko Stuebner [Tue, 15 Apr 2025 21:51:25 +0000 (23:51 +0200)]
arm64: dts: rockchip: add rk3576 otp node

This adds the otp node to the rk3576 soc devicetree including the
individual fields we know about.

Tested-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20250210224510.1194963-7-heiko@sntech.de
[ upstream commit: 8715d2eeb062f6859c252bb6c87b363230b66e9f ]

(cherry picked from commit d67cf6de8aacb4abcdfb516eeb8a511a4a657bc1)
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agonet: dwc_eth_qos_rockchip: Add support for RK3576
Heiko Stuebner [Tue, 15 Apr 2025 21:51:24 +0000 (23:51 +0200)]
net: dwc_eth_qos_rockchip: Add support for RK3576

Add rk_gmac_ops and other special handling that is needed for GMAC to
work on RK3576.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agommc: rockchip_dw_mmc: Add support for rk3576
Heiko Stuebner [Tue, 15 Apr 2025 21:51:23 +0000 (23:51 +0200)]
mmc: rockchip_dw_mmc: Add support for rk3576

The rk3576 uses a different base-compatible, as starting with this
generation, the clock phase tuning is done via registers inside
the mmc controller and not from inside the CRU.

In U-Boot we do not tune at all, so no other code changes are
necessary.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agommc: rockchip_sdhci: Add support for RK3576
Heiko Stuebner [Tue, 15 Apr 2025 21:51:22 +0000 (23:51 +0200)]
mmc: rockchip_sdhci: Add support for RK3576

Add support for RK3576 to the rockchip sdhci driver.

It's pretty similar to its cousins found in the RK3568 and RK3588 and the
specific hs400-tx-tap number was taken from the vendor-u-boot.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agorockchip: otp: Add support for RK3576
Heiko Stuebner [Tue, 15 Apr 2025 21:51:21 +0000 (23:51 +0200)]
rockchip: otp: Add support for RK3576

Add support for RK3576 compatible.
The RK3576 OTP uses the same read mechanism as the RK3588, just
with different values for offset and size.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agoram: rockchip: Add rk3576 ddr driver support
Heiko Stuebner [Tue, 15 Apr 2025 21:51:20 +0000 (23:51 +0200)]
ram: rockchip: Add rk3576 ddr driver support

Add ddr driver for rk3576 to get the ram capacity.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agoreset: rockchip: implement rk3576 lookup table
Elaine Zhang [Tue, 15 Apr 2025 21:51:19 +0000 (23:51 +0200)]
reset: rockchip: implement rk3576 lookup table

The current DT bindings for the rk3576 clock use a different ID than the
one that is supposed to be written to the hardware registers.
Thus, we cannot use directly the id provided in the phandle, but rather
use a lookup table to correctly setup the hardware.

This follows the implementation done in the Linux-Kernel and also
how the rk3588 does this both in the Linux-Kernel as well as U-Boot.

Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
[adapted from mainline Linux code for u-boot]
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agoclk: rockchip: Add rk3576 clk support
Elaine Zhang [Tue, 15 Apr 2025 21:51:18 +0000 (23:51 +0200)]
clk: rockchip: Add rk3576 clk support

Add clock driver support for Rockchip RK3576 SoC.

Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
[adapted to mainline u-boot]
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agopinctrl: rockchip: support rk3576 pinctrl
Steven Liu [Tue, 15 Apr 2025 21:51:17 +0000 (23:51 +0200)]
pinctrl: rockchip: support rk3576 pinctrl

Add support for the rk3576 variant of pinctrl.

Signed-off-by: Steven Liu <steven.liu@rock-chips.com>
[adapted to mainline u-boot]
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agoarm: rockchip: Add RK3576 arch core support
Xuhui Lin [Tue, 15 Apr 2025 21:51:16 +0000 (23:51 +0200)]
arm: rockchip: Add RK3576 arch core support

The Rockchip RK3576 is a ARM-based SoC with quad-core Cortex-A72
and quad-core Cortex-A53 including 6TOPS NPU, Mali-G52 MC3, HDMI Out,
DP, eDP, MIPI DSI, MIPI CSI2, LPDDR4/4X/5, eMMC5.1, SD3.0/MMC4.5, UFS,
USB OTG 3.0, Type-C, USB 2.0, PCIe 2.1, SATA 3, Ethernet, SDIO3.0, I2C,
UART, SPI, GPIO and PWM.

Add arch core support for it.

Signed-off-by: Xuhui Lin <xuhui.lin@rock-chips.com>
[adapted for mainline u-boot]
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agorockchip: mkimage: Add rk3576 support
Xuhui Lin [Tue, 15 Apr 2025 21:51:15 +0000 (23:51 +0200)]
rockchip: mkimage: Add rk3576 support

Add support for rk3576 package header in mkimage tool.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agorockchip: sdram: honor CFG_SYS_SDRAM_BASE when defining ram regions
Heiko Stuebner [Tue, 15 Apr 2025 21:51:14 +0000 (23:51 +0200)]
rockchip: sdram: honor CFG_SYS_SDRAM_BASE when defining ram regions

Currently the sdram code for arm64 expects CFG_SYS_SDRAM_BASE to be 0.
The ram being in front and the device-area behind it.

The upcoming RK3576 uses a different layout, with the device area
in front the ram, which then also extends past the 4G mark.

Adapt both the generic zone definitions as well as the ATAG parser
to be usable on devices where CFG_SYS_SDRAM_BASE is not 0.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agoboard: rockchip: Add Radxa E20C
Jonas Karlman [Mon, 7 Apr 2025 22:47:03 +0000 (22:47 +0000)]
board: rockchip: Add Radxa E20C

The Radxa E20C is an ultra-compact network computer with a RK3528A SoC
that offers a wide range of networking capabilities.

Features tested on a Radxa E20C v1.104:
- SD-card boot
- eMMC boot

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agoboard: rockchip: Add minimal generic RK3528 board
Jonas Karlman [Mon, 7 Apr 2025 22:47:02 +0000 (22:47 +0000)]
board: rockchip: Add minimal generic RK3528 board

Add a minimal generic RK3528 board that only have eMMC and SD-card
enabled. This defconfig can be used to boot from eMMC or SD-card on most
RK3528 boards that follow reference board design.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agonet: dwc_eth_qos_rockchip: Add support for RK3528
Jonas Karlman [Mon, 7 Apr 2025 22:47:01 +0000 (22:47 +0000)]
net: dwc_eth_qos_rockchip: Add support for RK3528

Rockchip RK3528 has two Ethernet controllers based on Synopsys DWC
Ethernet QoS IP.

Add initial support for the RK3528 GMAC variant.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agophy: rockchip-inno-usb2: Add support for RK3528
Jonas Karlman [Mon, 7 Apr 2025 22:47:00 +0000 (22:47 +0000)]
phy: rockchip-inno-usb2: Add support for RK3528

Add support for the two USB2.0 PHYs use in the RK3528 SoC.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agophy: rockchip-inno-usb2: Add support for clkout_ctl_phy
Jonas Karlman [Mon, 7 Apr 2025 22:46:59 +0000 (22:46 +0000)]
phy: rockchip-inno-usb2: Add support for clkout_ctl_phy

The 480m clk is controlled using regs in the PHY address space and not
in the USB GRF address space on e.g. RK3528 and RK3506.

Add a clkout_ctl_phy usb2phy_reg to handle enable/disable of the 480m
clk on these SoCs.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
7 weeks agorng: rockchip: Add support for rkrng variant
Lin Jinhan [Mon, 7 Apr 2025 22:46:58 +0000 (22:46 +0000)]
rng: rockchip: Add support for rkrng variant

Add support for rkrng variant, used by e.g. RK3528 and RK3576.

Imported from vendor U-Boot linux-6.1-stan-rkr5 tag with minor
adjustments for mainline.

Signed-off-by: Lin Jinhan <troy.lin@rock-chips.com>
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>