summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
23 hoursMerge tag 'u-boot-rockchip-2027.01-20260828' of ↵nextTom Rini
https://git.u-boot-project.org/u-boot/custodians/u-boot-rockchip into next - Fixed possible SPI hangs when only PICO is routed (TX-only), - Added support for ROC-RK3399-PC-PLUS (via roc-pc-rk3399_defconfig)
4 daysblkcache: include the hardware partition in the cache keyDaniel Golle
The block cache keys its entries on (iftype, devnum, start, blkcnt, blksz) but not on the block descriptor's hardware partition. Devices that expose several independent address spaces through blk_desc->hwpart therefore alias each other in the cache: once a block has been cached for one hwpart, reads of the same LBA on another hwpart return the data cached for the first one. For MMC this is masked because switching hwpart invalidates the cache, but a UBI block device selects the target volume purely through hwpart and does not invalidate on switch, so scanning several UBI volumes returns the first volume's blocks for all of them. Add hwpart to the cache key so entries for different hardware partitions (or UBI volumes) are kept distinct. Fixes: e40cf34a29f1 ("drivers: block: add block device cache") Signed-off-by: Daniel Golle <[email protected]>
5 daystools: fit: sign all config image referencesJames Hilliard
Target-side configuration verification builds the signed-region list from every image-reference property in the selected configuration. Host-side signing still uses either the signature node sign-images property or the legacy kernel/fdt/script default list. This lets mkimage generate configuration signatures which U-Boot cannot verify when the configuration references other image types, such as firmware, loadables or ramdisk entries. It also lets the host and target disagree when sign-images names only a subset of the configuration images. Build the host-side signing list from the configuration properties in the same way as target-side verification. Use one shared property classifier so the host and target cannot drift apart again. This makes signed configurations cover the root node, the configuration node, every referenced image node, and its hash, cipher and dm-verity subnodes, regardless of image type. Warn when a legacy sign-images property is present, since it no longer limits the signed image list. Require every referenced image to have at least one hash subnode. Add sandbox coverage proving that a firmware reference omitted from sign-images is still recorded in hashed-nodes and verified. Update the signed-configuration documentation to describe the same rule and the hash-subnode requirement. Fixes: 2092322b31cc ("boot: Add fit_config_get_hash_list() to build signed node list") Signed-off-by: James Hilliard <[email protected]> Reviewed-by: Simon Glass <[email protected]>
5 daysMerge tag 'mediatek-for-next-2026-08-24' of ↵Tom Rini
https://git.u-boot-project.org/u-boot/custodians/u-boot-mediatek into next * New HDMI PHY and I2C DDC drivers, default EDID_ADDR macro * MT8189 clock qualifier fix * Phase-aware PSCI reset (MT8195/MT8365) * dwc_eth_qos MT8366 support * MediaTek TPHY v3 hardware support * mtk_snor mt8188/mt8189 compatible-string cleanup * MT6358/MT6366 PMIC regulator + pwrap support * MediaTek pinctrl Kconfig cleanup (per-SoC symbols → single driver + TARGET_*) * New MT8366 pinctrl driver + dt-bindings header * MediaTek serial driver clock-handling fixes
6 daysMerge tag 'v2026.10-rc3' into nextTom Rini
6 daysdt-bindings: pinctrl: add MT8366 pin function headerDeep Pani
Add a header with MT8366 pin function definitions for use in devicetrees. Upstreaming of MT8366 has not even started yet, so we will have to carry a downstream version of this for some time. Signed-off-by: Deep Pani <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: David Lechner <[email protected]>
6 dayspower: regulator: add MT6358 driver with MT6366 supportDavid Lechner
Add a new driver for MediaTek MT6366 PMIC regulators. The register layout is compatible with MT6358, so the driver itself is called "mt6358". Only support for MT6366 is added currently for use with the MediaTek Genio 360 EVK. Reviewed-by: Julien Stephan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: David Lechner <[email protected]>
6 dayslmb: Return -EFAULT when freeing unallocated memory regionsJonas Karlman
Make lmb_free() return -EFAULT when the requested memory region is not allocated, instead of the generic -1 error value. Document the updated error code in the public API comment and change the LMB unit test to check for the new -EFAULT errno value. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Randolph Sapp <[email protected]>
6 dayslmb: Return -EFAULT when requested region is not part of memory mapJonas Karlman
lmb_alloc_addr() is documented to return -EINVAL when the requested memory region is not part of the LMB memory map. However, -EINVAL is also used to e.g. indicate that a NULL pointer is passed as the addr parameter or when the requested memory region partially overlaps an existing region. Change lmb_alloc_addr() to return -EFAULT when the requested memory region is not part of the LMB memory map to make the type of error known to callers. Also extend unit tests to validate that the return code has stay the same when the requested memory region partially overlaps. No caller of lmb_alloc_addr() is checking what type of error code is returned, so this change has no intended behavior change. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Randolph Sapp <[email protected]>
6 daysspi: Handle spi-{tx, rx}-bus-width 0 as SPI_NO_TX/SPI_NO_RXCole Munz
The spi-peripheral-props binding shipped in dts/upstream allows a bus width of 0, meaning no RX or TX is possible on this device. The switches in spi_slave_of_to_plat() only handle 1/2/4/8, so a width of 0 falls through to the default case and warns "spi-rx-bus-width 0 not supported" on every boot, even though the devicetree is valid per the binding. The fact that the wire is missing is then dropped from plat->mode. Map 0 to new SPI_NO_TX/SPI_NO_RX mode bits, as Linux has done since v5.12 ("spi: Add SPI_NO_TX/RX support", mainline d962608ce218). Bits 16 and 17 are the first free mode bits. Mapping the bits is not enough on its own, as Quentin pointed out: nothing would stop a caller from asking for a transfer in a direction that has no wire, and every controller driver would need its own guard. Validate centrally in dm_spi_xfer() instead, matching Linux's __spi_validate(): a din on a SPI_NO_RX device or a dout on a SPI_NO_TX device fails with -EINVAL before it reaches the driver. A new sandbox test covers both rejections. This comes up on devices with no MISO line at all, such as a write-only SPI display described with spi-rx-bus-width = <0>. Signed-off-by: Cole Munz <[email protected]> Acked-by: Quentin Schulz <[email protected]> Link: https://patch.msgid.link/ae6a85d6f985b63c8f5a3fe8deeab89d79757b14.1787309754.git.Munzzyy1@proton.me Signed-off-by: Quentin Schulz <[email protected]>
10 daysMerge tag 'u-boot-dfu-next-20260819' of ↵Tom Rini
https://git.u-boot-project.org/u-boot/custodians/u-boot-dfu into next CI: https://git.u-boot-project.org/u-boot/custodians/u-boot-dfu/-/pipelines/1016 u-boot-dfu-next-20260819 Android: * avb: Make the AVB root key source pluggable * avb: Add OP-TEE root key digest provider * avb: Add board-specific root key provider * avb: Update docs for root key source
10 daysarm64: renesas: r8a779g3: Switch to distro boot command on Retronix R-Car ↵Marek Vasut
V4H Sparrow Hawk Switch Retronix R-Car V4H Sparrow Hawk to distro boot command to obtain generic distro boot capability. The boot scripts now search each of the SD, NVMe, USB boot devices for either a fitImage with embedded script, regular boot script, or extlinux.conf, and boot the first one found. This allows for standardized boot of the device, similar to other such devices. There are slight customizations to the distro boot commands, specifically the PCIe controller is started before USB controller, because the USB controller is attached to the PCIe controller. Furthermore, USB ethernet boot is not enabled. Signed-off-by: Marek Vasut <[email protected]>
10 daysarm64: renesas: r8a779g3: Add bootloader update environment on Retronix ↵Marek Vasut
R-Car V4H Sparrow Hawk Add bootloader update environment to Retronix R-Car V4H Sparrow Hawk. The "update_loader_from_{mmc,nvme,usb}" script updates U-Boot "flash.bin" in SPI NOR at offset 0x0 from SD card, NVMe SSD and USB mass storage device respectively. Each script sets up parameters for the generic update script "update_loader_from_blk", which can be used to update the "flash.bin" from any block device. The parameters are these: - renesas_update_loader_iface ....... Update block device (mmc, nvme, usb, ...) - renesas_update_loader_dev ......... Update block device number (0, 1, ...) - renesas_update_loader_part ........ Update block device partition (1, 2, ...) - renesas_update_loader_filename .... Update file name (flash.bin) - renesas_update_loader_sf_offset ... SPI NOR target offset (0x0) Signed-off-by: Marek Vasut <[email protected]>
10 daysarm64: renesas: r8a779g3: Add PCIe firmware environment on Retronix R-Car ↵Marek Vasut
V4H Sparrow Hawk Add PCIe controller firmware handling environment to Retronix R-Car V4H Sparrow Hawk. The "renesas_rcar_gen4_load_firmware" script is used to load PCIe controller firmware from SPI NOR offset 0x300000. The "flash_pcie_fw_to_qspi_from_mmc" script is used to write the firmware from SD card to SPI NOR offset 0x300000 . Signed-off-by: Marek Vasut <[email protected]>
11 daysarm: socfpga: n5x: use common soc64 env settingsTien Fong Chee
Drop the N5X board-local CFG_EXTRA_ENV_SETTINGS override and use the common SoC64 environment from socfpga_soc64_common.h, matching other SoC64 boards. Do not enable CONFIG_DISTRO_DEFAULTS. N5X continues to use the legacy common env helpers referenced by BOOTCOMMAND (fatscript and mmc* / mmcfit*) with a board u-boot.scr that only enables the FPGA bridges, which matches the current N5X SD image layout. Also set CONFIG_SYS_LOAD_ADDR=0x02000000, matching Agilex/S10, so kernel and FIT loads sit above the 32 MiB /reserved-memory svcbuffer at 0x0 in socfpga_agilex.dtsi (included by the N5X board DT). Drop CONFIG_SYS_BOOTM_LEN=0x2000000 so the ARM64 default (128 MiB) applies; the previous 32 MiB override is too small for current images. Tested-on: Intel SoCFPGA N5X SoCDK hardware (ddr retention, linux boot). Signed-off-by: Tien Fong Chee <[email protected]> Signed-off-by: Chen Huei Lok <[email protected]>
13 daysglobal_data: Only include driver model fields when DM is enabledJonas Karlman
The struct list_head dmtag_list, struct udevice *dm_root, struct list_head uclass_root_s and struct list_head *uclass_root fields in struct global_data takes up 24/48 bytes of memory on ARMv7/AArch64. However, these fields are only used when $(PHASE_)DM is enabled. Guard driver model related fields using CONFIG_IS_ENABLED(DM) to save memory space when U-Boot proper is built with DM=y and xPL is built without xPL_DM. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Tom Rini <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-08-15remoteproc: renesas: rsip: Extract SCP initialization from board fileMarek Vasut
Move the SCP initialization from board file into remoteproc driver where this is supposed to be. Add SCP MDLC DT node and describe the SCP reset controlled by the SCP MDLC in remoteproc DT node. Adjust the driver to control the SCP reset via reset framework instead of the current board-specific register poking. Signed-off-by: Marek Vasut <[email protected]>
2026-08-13spl: Fix link when LZMA is enabled without legacy image format supportAlexey Charkov
spl_load_legacy_lzma() lives in common/spl/spl_legacy.c, which is only built when CONFIG_$(PHASE_)LEGACY_IMAGE_FORMAT is set, but the call site in _spl_load() is guarded by CONFIG_SPL_LZMA alone. Enabling LZMA decompression without the legacy image format therefore fails to link: ld: common/spl/spl.o: in function `_spl_load': include/spl_load.h:73: undefined reference to `spl_load_legacy_lzma' CONFIG_SPL_LZMA is also needed to support LZMA-compressed payloads with a FIT-only SPL, so add the missing condition to avoid including the legacy image related function call when legacy image support is not built. Signed-off-by: Alexey Charkov <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-08-13edid: add default EDID_ADDR macroJulien Stephan
EDID info is most of the time stored at address 0x50, so define a macro for it in the common edid.h header. Also drop the now-duplicate definition from the Rockchip edp_rk3288.h header and rely on the common one. Signed-off-by: Julien Stephan <[email protected]> Reviewed-by: Heiko Schocher <[email protected]> Link: https://patch.msgid.link/20260727-mt8188-add-ddc-i2c-driver-v2-1-bf1c45fcd588@baylibre.com Signed-off-by: David Lechner <[email protected]>
2026-08-13Merge tag 'u-boot-rockchip-2026.10-20260813' of ↵Tom Rini
https://git.u-boot-project.org/u-boot/custodians/u-boot-rockchip CI: https://git.u-boot-project.org/u-boot/custodians/u-boot-rockchip/-/pipelines/972 - Disable JTAG for RK3576. Fix for boards potentially not being able to use SD card anymore due to automatic switch to JTAG based on level of one specific pin,
2026-08-13Merge tag 'net-20260813' of ↵Tom Rini
https://git.u-boot-project.org/u-boot/custodians/u-boot-net Pull request net-20260813. net: - phy: dp83867: enable extended read / write for driver - phy: fix duplicate eth_phy binding - Drop unnecessary device_set_name - dwc_eth_xgmac: Return -ENODEV when phy_connect() fails - nfs: clean up bounds checks in nfs_readlink_reply() - rtl8169: add support for RTL8126A and RTL8127A - srand_mac(): fix -ENODEV crash with CONFIG_DM_RNG net-legacy: - Fix out-of-bounds write in IP fragment reassembly - test: net: add regression test for IP reassembly overflow net-lwip: - Add tftpsrv command - Handle chained pbufs in transmit path - sntp: fix netif leak when ntpserverip is unset - wget: free mbedtls x509 cert context to avoid memory leak - Fix DHCP fine timer interval
2026-08-12avb: make the AVB root key source pluggableIgor Opaniuk
AVB's whole chain of trust reduces to a single public key, and that key is currently hard-coded in U-Boot as the AVB reference/test key, whose private half is public. That is fine for bring-up but unusable for a locked product, which must anchor its root of trust in something an attacker cannot swap out -- a hash fused into the SoC, a secure element -- rather than a blob compiled into the bootloader. Make the source of the trusted key digest selectable so a board can decide where its root of trust lives, without touching the verification logic and with any lookup failure treated as untrusted. The built-in key remains the default, so existing users are unaffected; the sources a production device actually needs are added in the following patches. Signed-off-by: Igor Opaniuk <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-08-12xilinx: versal2: Add PM UFS firmware interfaceMichal Simek
Add firmware interface for UFS access but also keep IO interface when firmware is not enabled. Signed-off-by: Michal Simek <[email protected]> Link: https://patch.msgid.link/6419fe4f6f1f451aee624c7762b7aa690d50e498.1784870711.git.michal.simek@amd.com
2026-08-12arm64: versal2: Select GIC redistributor base at runtimeMichal Simek
The GIC redistributor base address depends on the part: the 2VM3654 device has 4 APU cores and 3 GIC ITS blocks, which shifts the redistributor region up compared to the base 8 core / single ITS part. A single U-Boot binary must therefore pick the right base at runtime instead of relying on the compile-time GICR_BASE used by the generic lowlevel_init(). Add a SoC specific lowlevel_init() that reads the PMC TAP IDCODE and selects GICR_BASE_2VM3654 for the 2VM3654 device, otherwise keeps the default GICR_BASE. CONFIG_ARMV8_MULTIENTRY is not supported on Versal Gen 2 so the generic slave handling is intentionally dropped. Signed-off-by: Michal Simek <[email protected]> Link: https://patch.msgid.link/4c0dc2b6e29d300db15be0844879ab4d028d98a9.1783493630.git.michal.simek@amd.com
2026-08-11Merge patch series "k3-am62-pocketbeagle2: add board and variant support"Tom Rini
Randolph Sapp <[email protected]> says: Resubmitting with a synced rm-cfg.yaml and tuned diff parameters. We desperately need to add documentation about how the rm-cfg.yaml is generated here. And the beagleplay needs to get it's rm-cfg resynced with am62x at some point. Since it's been decided internally to follow along with what Zephyr is doing and make a completely separate device tree for the 1GB + eMMC Industrial board, I'm resubmitting v3 with the variant support patch dropped. We will circle back to enable the Industrial part once the dt has been accepted kernel side. See the following link for more information regarding that decision: https://lore.kernel.org/u-boot/[email protected]/ Add initial board support for the PocketBeagle 2 from BeagleBoard.org. This is based on the current official series from Robert Nelson [1] and work from Bryan Brattlof [2]. Now that the various memory issues have been resolved we can clearly see at runtime that there's an issue with the current device. One of our reservations overlaps with the u-boot stack. To get around this we'll need to change the relocation address to something we know will not collide. [1] https://github.com/beagleboard/u-boot/tree/v2026.01-am62-pocketbeagle2 [2] https://github.com/bryanbrattlof/beagleboot/tree/b4/pb2i Link: https://lore.kernel.org/r/[email protected]
2026-08-11k3-am62-pocketbeagle2: add support for efi capsulesRandolph Sapp
Add support for EFI capsules for this device. One large caveat is that the partition holding boot binaries cannot be the ESP partition due to the following ROM limitations. - The boot disk must be MBR - The boot partition must be labeled 0x0c with a boot flag A separate ESP partition should be provided for EFI capabilities. Signed-off-by: Randolph Sapp <[email protected]>
2026-08-11k3-am62-pocketbeagle2: add initial board supportRandolph Sapp
Add initial board support for the PocketBeagle 2, based on Robert Nelson and Bryan Brattlof's work. Unify all debug consoles to main_uart6. Use DDR config v10.32 from our sysconfig tool [1] for Kingston's memory [2], (4Gb Desnity with a CL of 11 and CWL of 9). Add support for the SPL_TEXT_BASE config parameter. Ensure all files have a summary and SPDX identifier. Also, use board_get_usable_ram_top() to fixup our relocaddr since otherwise the u-boot stack reservation will collide with the wkup_r5fss0_core0_memory_region. [1] https://dev.ti.com/sysconfig [2] https://mm.digikey.com/Volume0/opasdata/d220001/medias/docus/6465/D2516AN9EXGXN-TU.pdf Signed-off-by: Randolph Sapp <[email protected]> Reviewed-by: Andrew Davis <[email protected]>
2026-08-11Merge patch series "lib: resync lib/div64.c and <linux/math64.h> with Linux ↵Tom Rini
v7.1" Alexey Charkov <[email protected]> says: U-Boot's <linux/math64.h> was last really synced with Linux in 2017 by commit 0342e335ba88 ("lib: div64: sync with Linux"). Since then it has only been patched locally twice, and both times in ways that increased the divergence rather than tracking upstream. The one that prompted this series is DIV64_U64_ROUND_UP(). Commit 3adc17f60bf8 ("lib: div64: Add support for round up of div64_u64") added it inside the #if BITS_PER_LONG == 64 branch, whereas upstream defines it unconditionally after that block, so any 32-bit user fails to build. While auditing the header, two bugs turned up in lib/div64.c, so this series starts with those. Both are 32-bit only: - div64_u64() and div64_u64_rem() shifted by 1 + fls(high) instead of fls(high), losing a bit of the divisor. Linux fixed this in 2019, while U-Boot never picked it up. - div64_s64() used abs() on s64 operands. U-Boot's abs() is not 64-bit safe: its own comment says to use abs64() instead. Both operands were silently truncated to 32 bits. Transitive headers that affect what <linux/math64.h> offers were checked too. <linux/math.h> and <vdso/math64.h> have no U-Boot equivalent and are not needed; do_div() comes from U-Boot's <div64.h> in place of <asm/div64.h>. Deliberately left out of this resync: - CONFIG_ARCH_SUPPORTS_INT128 is tested by <linux/math64.h> but isn't defined anywhere in U-Boot, so the __int128 fast paths for mul_u64_u32_shr() and mul_u64_u64_shr() are dead code on arm64, riscv64 and x86_64 where they could have been useful. Wiring it up in the arch Kconfigs looks like an easy win (but could result in subtle behavior changes or code size drift, so needs to be approached separately). - abs() in <linux/kernel.h> diverges from Linux and is not 64-bit safe. Patch 2 and patch 5 work around it with abs64() at the two call sites that need it. Replacing it with Linux's __abs_choose_expr() version would be the root fix, but changes abs()'s return type from long to typeof(x) for every caller in the tree. - abs_diff() lives in <linux/math64.h> here rather than upstream's <linux/math.h>; it could move to <linux/kernel.h> alongside abs(). - mul_u64_add_u64_div_u64() and the mul_u64_u64_div_u64() macros are not ported, as they need a u128 type and ~110 lines of lib/math/div64.c that nothing in U-Boot calls yet. Build tested with both gcc and clang for evb-rk3288-rk808 (32-bit LE), generic-rk3576 (64-bit LE), malta (32-bit big-endian, which is what actually compiles the __BIG_ENDIAN union paths), plus sandbox and tools-only. No size change on any phase. Link: https://git.u-boot-project.org/u-boot/contributors/alchark/u-boot/-/pipelines/812 Link: https://lore.kernel.org/r/[email protected]
2026-08-11lib: math64: sync <linux/math64.h> with Linux v7.1Alexey Charkov
U-Boot's copy was last synced with Linux in 2017 by commit 0342e335ba88 ("lib: div64: sync with Linux"). Since then it has only been touched twice locally, and both times in ways that increased the divergence rather than tracking upstream. Take the file from the v7.1 tag. The immediate motivation is DIV64_U64_ROUND_UP(). Commit 3adc17f60bf8 ("lib: div64: Add support for round up of div64_u64") added it inside the #if BITS_PER_LONG == 64 branch, whereas Linux defines it unconditionally after that block. Any 32-bit user therefore fails to compile: error: implicit declaration of function 'DIV64_U64_ROUND_UP'; did you mean 'DIV_ROUND_UP'? This has been surfaced while reworking fractional PLL logic for Rockchip RK3588/RK3576, which unexpectedly failed to compile on 32-bit variants [1]. Newly available as a result: DIV64_U64_ROUND_UP() on 32-bit, DIV_U64_ROUND_UP(), DIV64_U64_ROUND_CLOSEST(), DIV_U64_ROUND_CLOSEST(), DIV_S64_ROUND_CLOSEST(), roundup_u64(), add_u64_u32() and mul_s64_u64_shr(), plus upstream's kernel-doc for everything that was already here and __always_inline on mul_u64_u32_shr()/mul_u64_u64_shr(). The file is otherwise a verbatim copy of v7.1. Four deviations: - The includes. U-Boot has no <linux/math.h>, no <asm/div64.h> and no <vdso/math64.h>. do_div() comes from U-Boot's <div64.h>, BITS_PER_LONG from <linux/bitops.h>, and abs64() from <linux/kernel.h>, which is where U-Boot keeps the rest of what upstream puts in <linux/math.h>. - mul_s64_u64_shr() uses abs64() rather than abs(), because U-Boot's abs() evaluates its argument as int for anything that is not a long. - mul_u64_add_u64_div_u64() and the mul_u64_u64_div_u64() and mul_u64_u64_div_u64_roundup() macros built on it are not ported. They would need ~110 lines of lib/math/div64.c brought along, plus a u128 type and OPTIMIZER_HIDE_VAR(), and U-Boot has no users for them yet. - abs_diff(), added locally by commit f1f4a1d1d835 ("compat: math64: add abs_diff()"), is kept. Upstream has it in <linux/math.h>. Build tested for evb-rk3288-rk808 (32-bit LE), generic-rk3576 (64-bit LE), malta (32-bit BE, which is what compiles the __BIG_ENDIAN union paths in mul_u64_u64_shr() and mul_u64_u32_div()), sandbox and tools-only, with both gcc and clang. All six DIV*_ROUND_* macros plus roundup_u64(), mul_s64_u64_shr(), add_u64_u32() and abs_diff() were additionally instantiated on 32-bit ARM to confirm they now resolve. Closes: https://patchwork.ozlabs.org/project/uboot/patch/[email protected]/#3731361 [1] Signed-off-by: Alexey Charkov <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-08-11lib: div64: inline __iter_div_u64_rem() into its only userAlexey Charkov
__iter_div_u64_rem() is only split out in Linux for its vDSO header, which has no use in U-Boot. Inline the body of the helper directly into its only user, which is the iter_div_u64_rem() wrapper in this same file, and drop the static inline, so that a subsequent resync of include/linux/math64.h against Linux does not have to carry an exception for it. include/vdso/math64.h is deliberately not created: its only other resident, mul_u64_u32_add_u64_shr(), has no U-Boot user. No functional change: the generated code is identical, verified by comparing objdump -d of lib/div64.o before and after for evb-rk3288-rk808_defconfig. The compiler was already inlining the sole call. iter_div_u64_rem() itself has no in-tree callers either, but it is upstream API and is left in place. Signed-off-by: Alexey Charkov <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-08-11Merge branch 'qcom-next' of ↵Tom Rini
https://git.u-boot-project.org/u-boot/custodians/u-boot-snapdragon into next * Support for building mbn files during the build with the new mkmbn tool. * Remove UCLASS_SMEM and the old smem driver (Qualcomm was the only user of both), replace it with a port of the Linux SMEM driver. * Refactor memory map parsing and support reading the memory layout from the SMEM database. * Set the serial# from SMEM. * Introduce initial support for SPL in mach-snapdragon. * Add a defconfig for sm8650 with U-Boot as the primary bootloader. * Workaround an MMC issue by limiting the transfer size. * Add support for SM7125/SC7180 (clock/pinctrl drivers and UFS phy). * Add support for the QCS6490 powered Rubik Pi 3 board and document it.
2026-08-11include: linux: Import hw_bitfield.h from Linux v6.18Jonas Karlman
Hardware of various vendors, but very notably Rockchip, often uses 32-bit registers where the upper 16-bit half of the register is a write-enable mask for the lower half. Add hw_bitfield.h with two macros: FIELD_PREP_WM16, and FIELD_PREP_WM16_CONST. The latter is a version that can be used in initializers, like FIELD_PREP_CONST. Import hw_bitfield.h from Linux commit 21368fcbb124 ("bitmap: introduce hardware-specific bitfield operations"), first introduced in v6.18-rc1. This contains two changes compared to the Linux version: - include of linux/limit.h was dropped - use of const_true() in FIELD_PREP_WM16_CONST() was dropped Signed-off-by: Jonas Karlman <[email protected]> Acked-by: Quentin Schulz <[email protected]> Reviewed-by: Tom Rini <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Quentin Schulz <[email protected]>
2026-08-11scmi: pinctrl: Rename SCMI_PIN_DEFUALT to SCMI_PIN_DEFAULTUdit Kumar
Fix typo in enum scmi_config_type in include/scmi_protocols.h. The enum value SCMI_PIN_DEFUALT was misspelled and should be SCMI_PIN_DEFAULT to match the correct English spelling. This fixes potential compilation issues and improves code clarity for any code that references this enum value Fixes: 0cb160f1b629 ("scmi: pinctrl: add pinctrl driver for SCMI") Signed-off-by: Udit Kumar <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-08-11power: regulator: tps65219: Fix LDO selector boundariesKumara Bhimeswararao Matsa
According to the TPS65219 datasheet, selectors 0x38 through 0x3f saturate at 3.4 V for LDO1 and LDO2. For LDO3 and LDO4, selectors 0x00 through 0x0c saturate at 1.2 V, while selectors 0x36 through 0x3f saturate at 3.3 V. The driver currently uses 0x56, 0x12, and 0x54 as selector boundary values. These values do not match the selector boundaries defined by the datasheet. Use the correct selector boundary values of 0x38, 0x0c, and 0x36 for interpolation. Fixes: b5cfa0c7ca4f ("power: add driver for the TPS65219 PMIC") Signed-off-by: Kumara Bhimeswararao Matsa <[email protected]> Acked-by: Maarten Brock <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-08-11firmware: scmi: Support probe vendor ID 0x81Michal Simek
Preparing to add the AMD/Xilinx SCMI vendor protocol driver, support probe of SCMI vendor ID 0x81. Add the protocol ID, the per-agent protocol device slot, the probe/lookup switch cases and the scmi command name, gated by a Kconfig option for conditional compilation. The same wiring has been done by commit 7830ccc77a13 ("firmware: scmi: Support probe vendor ID 0x80 and 0x82"). Signed-off-by: Michal Simek <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-08-10bootretry: only reinitialize retry_time when bootretry env variable has been ↵Rasmus Villemoes
touched Commit aa5ef3c0a752 ("bootretry: check for bootretry variable changes") broke the feature where one can define different keys for "delaying" versus "stopping" boot. The way the latter is implemented is by the code in autoboot.c calling bootretry_dont_retry() when the stop sequence has been detected, and that simply sets the retry_time variable in bootretry.c to -1. However, with the mentioned commit, that is unconditionally overridden on every command, since it gets re-initialized from either the bootretry environment variable or CONFIG_BOOT_RETRY_TIME, thus making "delay" and "stop" effectively the same. To fix that, while still picking up changes to the bootretry environment variable, use the proper mechanism for C code to be notified about changes to environment variables. Since the callback is invoked before the change has actually been done to the environment (callbacks can reject the change from taking effect), we cannot simply call the existing bootretry_init_cmd_timeout() from the callback, as its env_get() would not see the new value. Instead, refactor most of it to an internal bootretry_parse(), and call that with the new value (which is NULL in the case bootretry is being deleted, so that works exactly as it should). Signed-off-by: Rasmus Villemoes <[email protected]>
2026-08-10serial: coreboot: Accept DBG2 subtype 0x12Desapogu Jayaramudu
U-Boot running as a coreboot payload obtains serial console information either from the coreboot table or from the ACPI DBG2 table. When serial console support is disabled in coreboot, the coreboot table does not contain serial information. In this case U-Boot falls back to parsing the DBG2 table. Some AMD platforms or any other platforms that uses memory-mapped I/O advertise the debug UART using DBG2 subtype 0x0012 ("16550-compatible with parameters defined in Generic Address Structure"). U-Boot currently accepts only subtype 0x0000, causing DBG2 UART detection to fail and leaving no console output. Accept subtype 0x0012 as well and keep the existing handling logic. Signed-off-by: Desapogu Jayaramudu <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-08-10Merge patch series "boot: fit: authenticate the dm-verity roothash"Tom Rini
Daniel Golle <[email protected]> says: A signed FIT configuration can delegate the integrity of a (potentially large) root filesystem image to the kernel's dm-verity instead of having U-Boot hash the whole payload at boot: the FIT carries a "dm-verity" subnode with the roothash, salt and block parameters, U-Boot passes the roothash to Linux through the dm-mod.create bootargs, and dm-verity then validates the filesystem block by block against it. For that to be safe the roothash has to be trusted, and in a signed configuration the only thing that establishes trust is the configuration signature. The roothash was not covered by it. fit_config_add_hash() collected the image node, its hash subnodes and its cipher subnode into the signed region, but not the dm-verity subnode, so the roothash, the sole integrity anchor for the filesystem, was left unsigned. The result is a verified-boot bypass for the root filesystem: an attacker who can rewrite the boot medium can replace the filesystem, recompute a matching dm-verity tree, write the new roothash into the unsigned dm-verity subnode, and the configuration signature still verifies. dm-verity then faithfully validates the malicious filesystem against the attacker's roothash. This series closes the gap. Link: https://lore.kernel.org/r/[email protected]
2026-08-10test: fit: verify dm-verity roothash is covered by the config signatureDaniel Golle
A dm-verity protected filesystem image is not hashed by U-Boot; its integrity is delegated to the kernel, which trusts the roothash taken from the FIT dm-verity subnode. For that chain of trust to hold, the roothash (and salt) must be part of the region covered by the configuration signature, otherwise an attacker can replace both the filesystem and the roothash while keeping the signature valid. Add two independent checks of this property: - test/py/tests/test_fit_verity_sign.py signs a configuration that references a filesystem image carrying a dm-verity subnode, then confirms that tampering the roothash or the salt is rejected by fit_check_sign. A control that tampers a byte known to be signed proves the check can fail. A matching page is added under doc/develop/pytest/ so the module documentation is rendered with the rest of the generated docs. - test/boot/fit_verity.c gains a runtime unit test that builds the exact node list the configuration signature is computed over, turns it into hashed regions and checks both that the roothash bytes fall inside a signed region and that tampering them changes the hash. It needs no private key, so it also runs on real devices and uses the same hash path a device would. To let the unit test build the signed-region node list, rename the config node-list helper to fit_config_get_signed_nodes(), make it non-static and declare it in image.h. Signed-off-by: Daniel Golle <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-08-08Merge branch 'main' of ↵Tom Rini
https://git.u-boot-project.org/u-boot/custodians/u-boot-sh This includes temporary U-Boot DT ECC carveouts for R-Car Gen5, they will be dropped from U-Boot DTs once OF_UPSTREAM DTs get re-synced. This also includes RPC-IF support for R-Car Gen5 and env storage in RPC HF. This also includes an update for R-Car Gen5 UFS controller driver.
2026-08-07arm: renesas: Enable RPC on R-Car R8A78000 X5H Cortex-M33 RSIP portMarek Vasut
Enable RPC and HyperFlash support on R-Car R8A78000 X5H Cortex-M33 RSIP. RPC is used both to update the HF content, which includes the U-Boot on RSIP itself and SCP firmware, as well as access the U-Boot environment for U-Boot on RSIP. Signed-off-by: Marek Vasut <[email protected]>
2026-08-07Merge tag 'u-boot-imx-main-20260807' of ↵Tom Rini
https://git.u-boot-project.org/u-boot/custodians/u-boot-imx CI: https://git.u-boot-project.org/u-boot/custodians/u-boot-imx/-/pipelines/906 - Fix a boot regression on i.MX7 related to the system counter. - Add Aquila iMX95 0243 PID4. - Update phycore_imx8mm DDR timings. - Add FRDM-IMX95 initial support. - Handle FCFB header during SPI NOR boot and CST backend selection.
2026-08-07soc: qcom: smem: stub functionsCasey Connolly
Allow smem to be optional for Qualcomm platforms by providing stub functions. Reviewed-by: Neil Armstrong <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Sumit Garg <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2026-08-07soc: qcom: smem: get serial number from socinfoCasey Connolly
Implement socinfo support to fetch the serial number if available. Tested-by: Sumit Garg <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2026-08-07soc: qcom: smem: adjust for U-BootCasey Connolly
Port over the smem code to U-Boot and ensure the smem region gets mapped after dcache is enabled. Tested-by: Sumit Garg <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2026-08-07soc: qcom: import smem from Linux 6.11-rc2Casey Connolly
Import the SMEM driver from Linux. Reviewed-by: Neil Armstrong <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Sumit Garg <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2026-08-07Revert "dm: SMEM (Shared memory) uclass"Casey Connolly
SMEM is a highly Qualcomm specific interface, while having a dedicated UCLASS for it offers a nice abstraction, for things like memory layout parsing we need to use it before the driver model is available. Therefore, it doesn't make sense to fit SMEM into the driver model. Instead let's adopt a model closer to Linux, and parse SMEM really early during boot (as soon as we have the FDT). This reverts commit 7b384eccc785b596f68448b155cbda26df57fb23. Reviewed-by: Sumit Garg <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Tested-by: Sumit Garg <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2026-08-06Merge branch 'main' of ↵Tom Rini
https://git.u-boot-project.org/u-boot/custodians/u-boot-riscv CI: https://git.u-boot-project.org/u-boot/custodians/u-boot-riscv/-/pipelines/884 - board: MPFS: add hardware RNG support and fix RNG consumers - board: sophgo: add support for Milk-V Duo 256M
2026-08-06imx: Add FRDM-IMX95 initial supportJoseph Guo
Add boot support and peripherals like eMMC/SD, UART, I2C, GPIO, ENETC0/1 and PCIE0/1 for iMX95 15x15 FRDM. Updated doc for build instructions. Signed-off-by: Lei Xu <[email protected]> Signed-off-by: Joseph Guo <[email protected]>
2026-08-05board: sophgo: add support for Milk-V Duo 256MHiago De Franco
Add U-Boot support for Milk-V Duo 256M. This board has a different SoC compared to the Milk-V Duo 64M, it uses the Sophgo SG2002 instead of the Sophgo CV1800B. Both SoCs share many common IP blocks, so this board reuses the existing cv1800b CPU support. The board shares the same 'board.c' with Milk-V Duo 64MB (CV1800B), so use the same file for now. Link: https://milkv.io/docs/duo/getting-started/duo256m Signed-off-by: Hiago De Franco <[email protected]> Acked-by: Leo Yu-Chi Liang <[email protected]>