Tom Rini [Mon, 29 Jun 2026 19:44:52 +0000 (13:44 -0600)]
Merge patch series "arm: aspeed: add initial AST2700 SoC support"
Ryan Chen <ryan_chen@aspeedtech.com> says:
AST2700 is the 8th generation of Integrated Remote Management
Processor introduced by ASPEED Technology Inc. It is a Board
Management Controller (BMC) SoC family with a dual-die architecture:
SoC0 ("CPU" die with four ARM Cortex-A35 application cores) and
SoC1 ("IO" die with peripherals) each SoC have its own SCU PLLs,
clock dividers and reset domains.
Marek Vasut [Fri, 12 Jun 2026 02:05:38 +0000 (04:05 +0200)]
treewide: Staticize and constify acpi ops
Set the acpi_ops structure as static const where applicable. The
The structure is not accessible from outside of drivers and is not
going to be modified at runtime. The structure may be unused in a
couple of drivers depending on their configuration, mark those
sites with __maybe_unused .
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Reviewed-by: Simon Glass <sjg@chromium.org>
Alexander Koch [Thu, 11 Jun 2026 22:48:34 +0000 (00:48 +0200)]
env: Avoid mixing of environment and driver prints on env load
The current environment loading code prints a partial string
"Loading Environment from %s..." and then triggers env driver
loading function. That env driver loading function may trigger
further prints, either from the env driver itself or from any
other driver that gets probed at that time. The result is a
print which mixed environment loading code prints and driver
code prints, as follows:
"
Environment code print _________________________
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vv
Loading Environment from SPIFlash... SF: Detected w25q128jw... OK
^^^^^^^^^^^^^^^^^^^^^^
Driver code print
"
Adjust the environment loading code print such, that it places
CR at the end of the line. This way, when the driver code prints
something, it overwrites the previous "Loading Environment from %s"
output and the result is not mixed. Furthermore, in case the env
was loaded correctly, print the "Loading Environment from %s ... OK"
in full again. This either overwrites the "Loading Environment from"
message and appends the print with "OK", or, it prints the line in
full after all the driver code prints.
This is not ideal, but it is the best we can do with only CR and
without ANSI control sequences. The result looks as follows:
"
SF: Detected w25q128jw with page size 256 Bytes, erase size 4 KiB, total 16 MiB
Loading Environment from SPIFlash... OK
"
Signed-off-by: Alexander Koch <akoch@initse.com> Signed-off-by: Marek Vasut <marex@nabladev.com>
rtc: mcfrtc: fix leap year calculation using wrong variable
The leap year check in rtc_set() passes the loop variable 'i' (month
index, always 1 when the condition is true) to isleap() instead of the
actual year. Since isleap(1) is always false, February 29th is never
accounted for when computing the day count, resulting in the RTC being
set one day behind for any date after February in a leap year.
Pass tmp->tm_year to isleap() so the leap day is correctly included.
Ryan Chen [Fri, 12 Jun 2026 09:43:13 +0000 (17:43 +0800)]
ram: aspeed: add SDRAM controller driver for AST2700
Add a SDRAM controller driver for the AST2700, derived from the
existing AST2700 controller code used by the Ibex SPL but adapted
to run from ARM U-Boot proper on the Cortex-A35 cores.
The DDR4/DDR5 controller and its DesignWare PHY are programmed by
the Ibex SPL before ARM U-Boot proper takes over. This driver
reads back the configuration left by the SPL, probes the
controller, and exposes ram_info (base and size, with the VGA
carve-out subtracted) via UCLASS_RAM so that dram_init() can
populate gd->ram_size.
The PHY firmware-load entry points (dwc_ddrphy_phyinit_userCustom_*)
are kept compiled but call a __weak fmc_hdr_get_prebuilt() stub
when ARM U-Boot proper is the caller; the real implementation is
provided by the Ibex SPL via the same fmc_hdr.h descriptor format
(here added for the ARM build).
Adds the supporting register-layout headers under
arch/arm/include/asm/arch-aspeed/:
- sdram.h: SDRAM controller and DWC PHY register definitions
- scu.h: SCU bits referenced by the SDRAM driver
- fmc_hdr.h: prebuilt-blob descriptor (binary-compatible with
arch/riscv/include/asm/arch-ast2700/fmc_hdr.h used
by the Ibex SPL)
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
Ryan Chen [Fri, 12 Jun 2026 09:43:12 +0000 (17:43 +0800)]
reset: ast2700: add reset driver support
Add reset controller driver for the dual-die AST2700 SoC. The
controller manages module-level reset signals via the modrst
register block at offset 0x200 within each SCU.
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
Ryan Chen [Fri, 12 Jun 2026 09:43:11 +0000 (17:43 +0800)]
clk: ast2700: add clock driver support
Add clock controller driver for the dual-die AST2700 SoC. The chip
has two SCUs (SoC0/CPU at 0x12c02000, SoC1/IO at 0x14c02000), each
with its own PLLs (HPLL/APLL/DPLL/MPLL), clock dividers and clock
gate controls. This commit registers two UCLASS_CLK drivers
matching "aspeed,ast2700-scu0" and "aspeed,ast2700-scu1".
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
Ryan Chen [Fri, 12 Jun 2026 09:43:10 +0000 (17:43 +0800)]
arm: dts: aspeed: Add initial AST27xx SoC device tree
Add initial device tree support for the ASPEED AST27xx family, the
8th-generation Baseboard Management Controller (BMC) SoCs.
AST27xx SOC Family
- https://www.aspeedtech.com/server_ast2700/
- https://www.aspeedtech.com/server_ast2720/
- https://www.aspeedtech.com/server_ast2750/
The AST27xx features a dual-SoC architecture consisting of two ties,
referred to as SoC0 and SoC1 - interconnected through an internal
property bus. Both SoCs share the same address decoding scheme,
while each maintains independent clock and reset domains.
- SoC0 (CPU die): contains a dual-core Cortex-A35 cluster and two
Cortex-M4 cores, along with high-speed peripherals.
- SoC1 (I/O die): includes the BootMCU (responsible for system
boot) and its own clock/reset domains low-speed peripherals.
The device tree describes the SoC0 and SoC1 domains and their peripheral
layouts.
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
Ryan Chen [Fri, 12 Jun 2026 09:43:09 +0000 (17:43 +0800)]
arm: aspeed: add ASPEED AST2700 SoC family support
Add initial support for the ASPEED AST2700, an arm64 (Cortex-A35)
Baseboard Management Controller (BMC) SoC. AST2700 is Aspeed's 8th
generation BMC and uses a dual-die architecture: SoC0 (the "CPU"
die) hosts the four Cortex-A35 cores and its own SCU at 0x12c02000,
while SoC1 (the "IO" die) hosts the peripherals and its own SCU at
0x14c02000.
This commit adds:
- ASPEED_AST2700 Kconfig option and the ast2700 mach subdir
(mach Makefile, ast2700/Kconfig, board/aspeed/evb_ast2700/*)
- arm64 MMU map covering the SoC device window and the DRAM
region at 0x4_0000_0000 (up to 8 GiB)
- lowlevel_init.S for early CPU bring-up
- cpu-info: print SoC ID (AST2700/2720/2750 A0/A1/A2 variants)
and reset cause (cold reset, EXT reset, WDT reset)
- board_common: dram_init via UCLASS_RAM, AHBC timeout init
- platform: env_get_location() that selects SPI/eMMC based on
the IO-die HW strap; arch_misc_init() that exposes
${boot_device} and ${verify} to the boot script
- SCU0/SCU1 register layout header (scu_ast2700.h)
- configs/evb-ast2700_defconfig and include/configs/evb_ast2700.h
for the AST2700 EVB board
The defconfig depends on ast2700-evb.dts, which is introduced in
a subsequent patch; this commit must be applied with the
remaining series for evb-ast2700_defconfig to build.
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
Ryan Chen [Fri, 12 Jun 2026 09:43:08 +0000 (17:43 +0800)]
spi: aspeed: add AST2700 support
AST2700 is a 64-bit SoC whose flash AHB windows are decoded above
the 32-bit address space, so rework AHB addresses to uintptr_t and
decoded window sizes to size_t.
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
- Move environment variables to .env file on imx7ul-evk/imx6ull-evk/mx6-sabre
- imx ipuv3 improvements.
- Initial support for aquila imx95
- Add support for OPTEE on i.MX93
- Allow users to inhibit i.MX trip point setup
- Add support for imx93_frdm 2CS 2GB DRAM support
- Add optee binary to i.MX9 platform types
- Enable booting Image.gz on imx8m-evk/imx9-evk
Peng Fan [Fri, 19 Jun 2026 16:06:05 +0000 (00:06 +0800)]
imx8mm/n_evk: enable booting Image.gz and avoid extra memcpy
Add support for booting compressed kernel Image.gz by defining
kernel_comp_addr_r and kernel_comp_size in the default environment.
Set kernel_comp_addr_r to a high memory region to provide a dedicated
decompression buffer, avoiding overlap between compressed
input and decompressed output.
Also adjust CONFIG_SYS_LOAD_ADDR from 0x40480000 to 0x40400000.
With TEXT_OFFSET=0, the kernel is relocated directly to loadaddr, so
separating decompression and execution regions is required to guarantee
safe decompression without additional copying.
Peng Fan [Fri, 19 Jun 2026 16:06:04 +0000 (00:06 +0800)]
imx8mq_evk: enable booting Image.gz and avoid extra memcpy
Add support for booting compressed kernel Image.gz by defining
kernel_comp_addr_r and kernel_comp_size in the default environment.
Set kernel_comp_addr_r to a high memory region to provide a dedicated
decompression buffer, avoiding overlap between compressed
input and decompressed output.
Also adjust CONFIG_SYS_LOAD_ADDR from 0x40480000 to 0x40400000.
With TEXT_OFFSET=0, the kernel is relocated directly to loadaddr, so
separating decompression and execution regions is required to guarantee
safe decompression without additional copying.
Peng Fan [Fri, 19 Jun 2026 16:06:03 +0000 (00:06 +0800)]
imx8mp_evk: enable booting Image.gz and avoid extra memcpy
Add support for booting compressed kernel Image.gz by defining
kernel_comp_addr_r and kernel_comp_size in the default environment.
Set kernel_comp_addr_r to a high memory region (0x80000000) to provide
a dedicated decompression buffer, avoiding overlap between compressed
input and decompressed output.
Also adjust CONFIG_SYS_LOAD_ADDR from 0x40480000 to 0x40600000.
With TEXT_OFFSET=0, the kernel is relocated directly to loadaddr, so
separating decompression and execution regions is required to guarantee
safe decompression without additional copying.
Brian Ruley [Tue, 16 Jun 2026 12:51:41 +0000 (15:51 +0300)]
clk: imx6q: use clk_divider_table instead of fixed factor for pll5 divs
Now that non-linear clk divider tables are supported, replace the fixed
factor implementation with the proper divider, which allows more fine
control over clock rates.
Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
The existing clk_register_divider() only supports linear or
power-of-two divider mappings. Some hardware (e.g. i.MX6 PLL5
post_div and video_div) uses non-linear register-value-to-divisor
mappings that require a lookup table.
Add clk_register_divider_table() which accepts a clk_div_table,
and reimplement clk_register_divider() as a wrapper passing
table=NULL.
Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
Brian Ruley [Tue, 16 Jun 2026 12:51:39 +0000 (15:51 +0300)]
video: imx: ipuv3: enable ipu clk before writing registers in CCF
Obviously, the clock has to be enabled if writing to it's registers.
This was missed because the board I tested on had enabled the clocks in
early init.
Also, remove the completely useless "ipu_clk_enabled" struct member and
use the accurate usecount / enabled_count instead.
Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
Brian Ruley [Tue, 16 Jun 2026 12:51:38 +0000 (15:51 +0300)]
clk: imx6q: configure ldb clock selectors
A hardware bug prevents LDB clock selectors from being configured later
on non-plus i.MX6QD variants, so let's set the desired configuration in
the probe before we register them. We also have to make the necessary
clock functions available in XPL builds.
Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
Brian Ruley [Tue, 16 Jun 2026 12:51:35 +0000 (15:51 +0300)]
clk: imx6q: guard video clocks behind config
Do not touch the video clocks unless explicitly required by the
configuration. This avoids the issue of the binary size increase on SPL
builds that do not enable video. For those that do, they should increase
the size limit to fit the new code and data.
Signed-off-by: Brian Ruley <brian.ruley@gehealthcare.com>
Marek Vasut [Sat, 13 Jun 2026 03:11:43 +0000 (05:11 +0200)]
imx: fdt: Allow users to inhibit trip point setup
During development or various dangerous experiments, it may
be necessary to override the trip points. Allow users to do
that. However, do keep in mind that this may damage the SoC.
OPTEE-OS starts correctly when "opteed" is enabled for Secure Payload
Dispatcher in TF-A (tested on OP-TEE version: 4.9.0), however imx93
devices require a patch for OPTEE targets because binman does not see
the tee.bin file when it is available.
Enable conditional OPTEE support for imx93 devices.
Signed-off-by: Krzysztof Drobiński <krzysztof@kd-solutions.pl> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Aristo Chen [Wed, 10 Jun 2026 13:24:24 +0000 (13:24 +0000)]
mx6sabre: Move environment variables to .env files
Move the shared environment from CFG_EXTRA_ENV_SETTINGS in
mx6sabre_common.h to a common text environment fragment in
include/env/nxp/mx6sabre_common.env. The mx6sabresd and mx6sabreauto
board environments include this fragment and add their own console
setting, which is the only board specific difference between them. The
eMMC firmware update variables remain guarded by CONFIG_SUPPORT_EMMC_BOOT
inside the fragment. The now unused CONSOLE_DEV defines and the
linux/stringify.h include are dropped.
The generated default environment is unchanged for both boards. This was
verified by comparing the output of scripts/get_default_envs.sh before
and after the change, which produced identical results.
Signed-off-by: Aristo Chen <aristo.chen@canonical.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
Aristo Chen [Wed, 10 Jun 2026 13:24:23 +0000 (13:24 +0000)]
mx6ullevk: Move environment variables to .env file
Move the board environment from CFG_EXTRA_ENV_SETTINGS in the config
header to board/nxp/mx6ullevk/mx6ullevk.env for better maintainability.
The file is named after CONFIG_SYS_BOARD so it is selected automatically
without setting CONFIG_ENV_SOURCE_FILE. Drop the now unused
linux/stringify.h include.
The generated default environment is unchanged. This was verified by
comparing the output of scripts/get_default_envs.sh before and after the
change, which produced identical results.
Signed-off-by: Aristo Chen <aristo.chen@canonical.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
Aristo Chen [Wed, 10 Jun 2026 13:24:22 +0000 (13:24 +0000)]
mx7ulp_evk: Move environment variables to .env file
Move the board environment from CFG_EXTRA_ENV_SETTINGS in the config
header to board/nxp/mx7ulp_evk/mx7ulp_evk.env for better
maintainability. The file is named after CONFIG_SYS_BOARD so it is
selected automatically without setting CONFIG_ENV_SOURCE_FILE.
The generated default environment is unchanged. This was verified by
comparing the output of scripts/get_default_envs.sh before and after the
change, which produced identical results.
Signed-off-by: Aristo Chen <aristo.chen@canonical.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
Peng Fan [Tue, 9 Jun 2026 08:36:23 +0000 (16:36 +0800)]
imx: Guard print_cpuinfo with !CONFIG_IS_ENABLED(CPU)
When CONFIG_CPU is enabled, print_cpuinfo is defined in common/board_f.c
with static property. However in imx cpu.c, print_cpuinfo is not a local
function, so guard it with !CONFIG_IS_ENABLED(CPU).
And all i.MX8M boards has CONFIG_CPU and CONFIG_CPU_IMX set, so remove the
dead code.
However legacy print_cpuinfo also print reset reason, to keep reset
reason printed as before, export get_reset_reason() and invoke it
at arch_misc_init().
Peng Fan [Tue, 9 Jun 2026 08:36:19 +0000 (16:36 +0800)]
imx952: Update gpio node regs
Same to 85319b2e672 ("board: toradex: smarc-imx95: remove gpio1 reg"),
there is no need to use dual base for i.MX952 gpio, so drop the U-Boot
specific reg changes.
Tom Rini [Thu, 25 Jun 2026 20:17:51 +0000 (14:17 -0600)]
Merge patch series "Kconfig restyle part 2"
Johan Jonker <jbx6244@gmail.com> says:
The Kconfig menu attribute '---help---' is deprecated.
If we change to "help" the text has to indent.
This again has to align with other attributes,
so we have to restyle them as well.
And as there's a script then change all Kconfig files
excluding 'arch' and 'board' directories from part 1.
Restyle all Kconfigs:
Menu entries : no space left
Menu attributes: 1 TAB
Help text : 1 TAB + 2 spaces
Replace '---help---' by 'help'
Problems:
People creating indents in help texts.
The script doesn't care. It puts everything left aligned.
Help texts with empty lines. It stops aligning as help test.
Other fixes:
While using checkpatch.pl or the script some issues showed up,
so fix them as well.
Johan Jonker [Wed, 10 Jun 2026 14:41:21 +0000 (16:41 +0200)]
Kconfig: drivers: restyle remaining
Restyle all Kconfigs for the rest of "drivers":
Menu entries : no space left
Menu attributes: 1 TAB
Help text : 1 TAB + 2 spaces
Replace '---help---' by 'help'
Signed-off-by: Johan Jonker <jbx6244@gmail.com>
[trini: Add missing indentation on a few more multi-paragraph help texts] Signed-off-by: Tom Rini <trini@konsulko.com>
Johan Jonker [Wed, 10 Jun 2026 14:40:50 +0000 (16:40 +0200)]
Kconfig: video: restyle
Restyle all Kconfigs for "video":
Menu entries : no space left
Menu attributes: 1 TAB
Help text : 1 TAB + 2 spaces
Replace '---help---' by 'help'
Signed-off-by: Johan Jonker <jbx6244@gmail.com>
[trini: Add missing indentation on a multi-paragraph help text] Signed-off-by: Tom Rini <trini@konsulko.com>
Johan Jonker [Wed, 10 Jun 2026 14:40:13 +0000 (16:40 +0200)]
Kconfig: power: restyle
Restyle all Kconfigs for "power":
Menu entries : no space left
Menu attributes: 1 TAB
Help text : 1 TAB + 2 spaces
Replace '---help---' by 'help'
Signed-off-by: Johan Jonker <jbx6244@gmail.com>
[trini: Add missing indentation on a few more multi-paragraph help texts] Signed-off-by: Tom Rini <trini@konsulko.com>
Johan Jonker [Wed, 10 Jun 2026 14:39:20 +0000 (16:39 +0200)]
Kconfig: mtd: restyle
Restyle all Kconfigs for "mtd":
Menu entries : no space left
Menu attributes: 1 TAB
Help text : 1 TAB + 2 spaces
Replace '---help---' by 'help'
Signed-off-by: Johan Jonker <jbx6244@gmail.com>
[trini: Add missing indentation on a few more multi-paragraph help texts] Signed-off-by: Tom Rini <trini@konsulko.com>
Tom Rini [Thu, 25 Jun 2026 20:07:01 +0000 (14:07 -0600)]
Merge patch series "Kconfig restyle"
Johan Jonker <jbx6244@gmail.com> says:
The Kconfig menu attribute '---help---' is deprecated.
If we change to "help" the text has to indent.
This again has to align with other attributes,
so we have to restyle them as well.
And as there's a script then change all Kconfig
to start with the 'arch' and 'board' directories.
Restyle all Kconfigs:
Menu entries : no space left
Menu attributes: 1 TAB
Help text : 1 TAB + 2 spaces
Replace '---help---' by 'help'
Problems:
People creating indents in help texts.
The script doesn't care. It puts everything left aligned.
Help texts with empty lines. It stops aligning as help test.
Other fixes:
While using checkpatch.pl or the script some issues showed up,
so fix them as well.
There was a discussion recently on the mailing lists regarding our
management of memory above ram_top [0]. The tl;dr is that we have two problems.
The first one is that U-Boot always relocates to the top of the first available
bank unless there's special board code to sidestep that. The second is we don't
successfully deal with devices that can only do 32-bit DMA.
This patch series deals with the first problem by adding a Kconfig option
allowing platforms to relocate to the top of the last discovered bank.
It's worth noting that this is easily testable with QEMU
Ilias Apalodimas [Wed, 17 Jun 2026 07:48:23 +0000 (10:48 +0300)]
common: Add an option to relocate on ram top
Right now we only relocate u-boot to the top of the first
memory bank unless the board specific code overwrites it.
This is problematic when loading big binaries as it
fragments the contiguous memory space for no apparent reason.
On certain platforms, it is currently not possible to relocate U-Boot
above the 32bit boundary, due to various dependencies on content located
below the 32bit boundary. One such example is ethernet, where the packet
buffer built into U-Boot binary is placed below the 32bit boundary and
allows loading of data via ethernet even above 32bit boundary due to
memory copy from the packet buffer to the destination location.
A previous patch moves the bi_dram[] info from bd to gd and make
the memory bank information available early. So move the
dram_init_banksize() INITCALL before the relocation address calculation
and use it to derive the address.
Also add a Kconfig option and allow the common code to relocate U-Boot
to the top of the last discovered bank.
It's worth noting that this patch changes when dram_init_banksize()
is called. It's now called much earlier in the board init process.
That is a significant ordering change for every board with a custom
dram_init_banksize(), and it is unconditional (not gated on RELOC_ADDR_TOP).
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org> # Radxa ROCK 5B Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Tested-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
Ilias Apalodimas [Wed, 17 Jun 2026 07:48:22 +0000 (10:48 +0300)]
rpi: Add a local get_effective_memsize()
We are about to change the place we call dram_init_banksize().
The goal is to have all the information we need to pick a proper
relocation address in gd->dram[].
However, the RPI boards, and specifically the tested rpi4, seems
to hang if we relocate anywhere above the address returned from
bcm2835_mbox_call_prop().
So store that address and return it on get_effective_memsize()
which is used to calculate ram_top.
Ilias Apalodimas [Wed, 17 Jun 2026 07:48:20 +0000 (10:48 +0300)]
common: move ram_base calculation to independent INITCALL()
Currently, ram_base is calculated within setup_dest_addr().
However, upcoming patches that enable U-Boot relocation to the highest
DRAM bank require ram_base to be initialized earlier.
The default dram_init_banksize() definition relies on ram_base
to calculate the start of the first bank. But following patches
will move that function to execute immediately before setup_dest_addr().
So let's split the ram_base initialization in its own INITCALL.
Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Anshul Dalal <anshuld@ti.com> Tested-by: Michal Simek <michal.simek@amd.com> # Versal Gen 2 Vek385 Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Tested-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
Ilias Apalodimas [Wed, 17 Jun 2026 07:48:19 +0000 (10:48 +0300)]
treewide: move bi_dram[] from bd to gd
Currently, the bi_dram[] information is stored in the board info
structure (bd). Because bd is only valid after reserve_board(),
dram_init_banksize() must be called late in the initialization process.
This limitation is problematic, as it forces us to rely on a variety of
bespoke functions to determine board RAM, bank memory sizes, and other
early setup requirements.
By moving bi_dram[] into the global data (gd), we can run it earlier.
This is particularly convenient since boards define their own
dram_init_banksize() routines, which do not always rely on parsing
Device Tree (DT) memory nodes.
Additionally, U-Boot defaults to relocating to the top of the first memory
bank. While boards currently use custom functions to override this
behavior, having the DRAM bank information available earlier in gd makes
relocating to a different bank trivial and standardizes the process.
Kuan-Wei Chiu [Mon, 8 Jun 2026 15:47:49 +0000 (15:47 +0000)]
rtc: goldfish: Return error when device address is invalid
goldfish_rtc_of_to_plat() currently returns success even when
dev_read_addr() fails to find a valid address. This leaves plat->reg
unset (or 0) and defers the failure to probe().
Return -EINVAL immediately when the address is FDT_ADDR_T_NONE so the
failure is reported at the of_to_plat stage where it belongs. This
aligns the driver with the recent fix introduced in the goldfish
serial driver by Naveen Kumar Chaudhary. [1]
Kuan-Wei Chiu [Mon, 8 Jun 2026 15:47:48 +0000 (15:47 +0000)]
timer: goldfish: Return error when device address is invalid
goldfish_timer_of_to_plat() currently returns success even when
dev_read_addr() fails to find a valid address. This leaves plat->reg
unset and defers the failure to probe().
Return -EINVAL immediately when the address is FDT_ADDR_T_NONE so the
failure is reported at the of_to_plat stage where it belongs. This
aligns the driver with the recent fix introduced in the goldfish
serial driver by Naveen Kumar Chaudhary. [1]
serial: goldfish: return error when device address is invalid
goldfish_serial_of_to_plat() returns success even when dev_read_addr()
fails to find a valid address. This leaves plat->reg unset and defers
the failure to probe().
Return -EINVAL immediately when the address is FDT_ADDR_T_NONE so the
failure is reported at the of_to_plat stage where it belongs.
serial: cortina: check RX FIFO status before reading data
ca_serial_getc() reads from the URX_DATA register unconditionally
without first checking whether the RX FIFO contains valid data. When
the FIFO is empty, this returns whatever stale value is in the
register, which the DM serial framework interprets as a valid
character.
The DM serial framework expects getc() to return -EAGAIN when no data
is available, so it can handle retries and call schedule() to service
the watchdog between attempts.
Add a check of the UINFO register's UINFO_RX_FIFO_EMPTY bit before
reading URX_DATA, returning -EAGAIN when no data is pending. This
is consistent with how ca_serial_putc() already checks
UINFO_TX_FIFO_FULL before writing.
Alexander Stein [Fri, 5 Jun 2026 13:44:46 +0000 (15:44 +0200)]
global_data: fix type for gd_malloc_ptr()
With commit 92aa3ec321b5 ("global_data: Reduce size of early-malloc vars")
the type changes from (unsigned) long to int. But the type for default
if SYS_MALLOC_F_LEN is unset was not changed. Remove the suffix.
Fixes the warning:
common/spl/spl.c:800:23: warning: format '%x' expects argument of type
'unsigned int', but argument 2 has type 'long int' [-Wformat=]
Fixes: 92aa3ec321b5 ("global_data: Reduce size of early-malloc vars") Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com> Reviewed-by: Simon Glass <sjg@chromium.org>
* bootdev: fix typos
* board: renesas: Document Renesas RZ/N1D and RZ/N1S as arm
* board: renesas: Document Renesas Geist board support
* board: renesas: Document Renesas Gray Hawk board support
* board: renesas: Document Renesas Ironhide board support
* android: fastboot: Document halt behaviour
UEFI:
* fix memory leak in efi_var_collect()
* set revision field in block IO protocol
* fix guid comparison in efi_selftest_loaded_image.c
* fix use-after-free in efi_selftest_memory.c
Vincent Stehlé [Thu, 11 Jun 2026 06:59:50 +0000 (08:59 +0200)]
efi_selftest: fix use-after-free
When the `memory' efi selftest verifies the Devicetree memory reservation,
it accesses the memory_map buffer after it has been freed with free_pool().
Move the verification earlier to fix this.
Fixes: 34c96659ed57 ("efi_selftest: check fdt is marked as runtime data") Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de> Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org> Cc: Tom Rini <trini@konsulko.com> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Vincent Stehlé [Tue, 9 Jun 2026 08:07:04 +0000 (10:07 +0200)]
lib/efi_loader: fix block io revision
The Revision field of the EFI_BLOCK_IO_PROTOCOL structure must be set to
one of the two valid values [1], but this is not initialized in the
efi_loader; fix it.
Link: https://uefi.org/specs/UEFI/2.11/13_Protocols_Media_Access.html#efi-block-io-protocol Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de> Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org> Cc: Tom Rini <trini@konsulko.com> Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>