summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2026-06-04pci: brcmstb: Fix PCIe bus numbersAndrea della Porta
The linux kernel assigns a new domain for every Root Complex where bus numbering starts from 0 for each domain. U-Boot does not have domains and uses a flattened bus numbering scheme instead. This means that any device or bridge on the second enumerated RC will receive a bus number equal to the last assigned one +1. This bus number contributes to the address written into the index register, which will select the configuration space to be read. Compensate for this contribution by subtracting the base bus number. Signed-off-by: Andrea della Porta <[email protected]> Signed-off-by: Torsten Duwe <[email protected]> Tested-by: Pedro Falcato <[email protected]> Reviewed-by: Peter Robinson <[email protected]>
2026-06-03Merge tag 'net-20260603' of https://source.denx.de/u-boot/custodians/u-boot-netTom Rini
Pull request net-20260603. net: - ti: icssg: Fix portname buffer overflow - pxe: Fix potential initrd_filesize buffer overflow net-legacy: - bootp, dhcpv6: Prevent out-of-bound reads and buffer overflow - sntp: Check packet length in sntp_handler
2026-06-03Merge tag 'net-next-20260603' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-net into next Pull request net-next-20260603 - eth, phy: Convert several drivers to use the dev APIs - Guard SYS_RX_ETH_BUFFER with NET - phy: Kconfig: use bool instead of tristate
2026-06-03drivers: nvme: Log I/O timeoutsDenis Mukhin
Current code silently swallows any timed-out commands scheduled to NVMe. Log those to be able to debug any potential problems with the NVMe hardware/firmware. Signed-off-by: Denis Mukhin <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Reviewed-by: Simon Glass <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Neil Armstrong <[email protected]>
2026-06-03net: ti: icssg: Fix portname buffer overflowFrancois Berder
portname consists of dev->parent->name ("icssg0-eth", "icssg1-eth", or "ethernet") and dev->name is the port node name ("port@0" or "port@1"). Every board DTS in the repository produces a string that overflows the buffer: "icssg1-eth-port@0" 17 chars + NUL = 18 bytes (AM642 EVM, IoT2050) "ethernet-port@0" 15 chars + NUL = 16 bytes (SR-SOM, phyboard) This commits increases portname to 64 bytes and replaces sprintf by snprintf so that any future DT node name cannot overflow it regardless of length. Signed-off-by: Francois Berder <[email protected]> Reviewed-by: Jerome Forissier <[email protected]>
2026-06-03net: mvpp2: convert FDT access to ofnode APIPeng Fan
Convert mvpp2 driver from legacy fdtdec/fdt_* APIs to the ofnode-based interfaces. Replace usage of dev_of_offset(), fdtdec_lookup_phandle(), fdtdec_get_int(), fdt_parent_offset(), and related helpers with their ofnode equivalents, including dev_ofnode(), ofnode_parse_phandle(), ofnode_read_s32_default(), ofnode_get_parent(), and ofnode_for_each_subnode(). Remove direct dependencies on gd->fdt_blob. Main changes: - Use ofnode_valid() instead of integer checks for node presence - Switch fixed-link detection to ofnode_find_subnode() - Replace uclass_get_device_by_of_offset() with uclass_get_device_by_ofnode() - Update subnode iteration and device binding to use ofnode No functional changes. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-06-03net: mvpp2: Use dev_read_addr_index_ptr()Peng Fan
Use dev_read_addr_index_ptr() which supports both live device tree and flat DT backends, avoiding direct dependency on devfdt_* helpers. No functional changes. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-06-03net: dc2114x: Use dev_remap_addr()Peng Fan
Use dev_remap_addr() to simplify code. dev_remap_addr() does same thing as dev_read_addr() + map_physmem(). And it supports both live device tree and flat DT backends, avoiding direct dependency on devfdt_* helpers. No functional changes. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-06-03net: calxedaxgmac: Use dev_read_addr()Peng Fan
Use dev_read_addr() which supports both live device tree and flat DT backends, avoiding direct dependency on devfdt_* helpers. No functional changes. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-06-03net: qe: dm_qe_uec: Use dev_read_addr()Peng Fan
Use dev_read_addr() which supports both live device tree and flat DT backends, avoiding direct dependency on devfdt_* helpers. No functional changes. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Peng Fan <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2026-06-03net: ethoc: Use dev_read_addr_index()Peng Fan
Use dev_read_addr_index() which supports both live device tree and flat DT backends, avoiding direct dependency on devfdt_* helpers. No functional changes. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-06-03phy: cadence: Use device APIPeng Fan
Use dev_remap_addr_index() and dev_read_addr_size_index() which support both live device tree and flat DT backends, avoiding direct dependency on devfdt_* helpers. No functional changes. Signed-off-by: Peng Fan <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2026-06-03phy: marvell: comphy: Use dev_read_addr_index_ptr()Peng Fan
Use dev_read_addr_index_ptr() which supports both live device tree and flat DT backends, avoiding direct dependency on devfdt_* helpers. No functional changes. Signed-off-by: Peng Fan <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2026-06-03phy: ti-pipe3: Use device API for DT parsingPeng Fan
Replace legacy FDT parsing in get_reg() with the device API dev_read_phandle_with_args() which removes direct access to gd->fdt_blob and aligns the driver with modern U-Boot DT handling. The offset is retrieved from the phandle argument instead of manually parsing the property cells. Add validation for the argument count to avoid out-of-bounds access on malformed DTs. Also switch from devfdt_get_addr_size_index() to dev_read_addr_size_index() for consistency with the DM API. No functional changes. Signed-off-by: Peng Fan <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2026-06-03phy: Kconfig: use bool instead of tristateDavid Lechner
Change all uses of tristate in the PHY Kconfigs to bool. U-Boot does not support modules, so tristate does not make sense here. Signed-off-by: David Lechner <[email protected]> Reviewed-by: Tom Rini <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Macpaul Lin <[email protected]> Reviewed-by: Anshul Dalal <[email protected]> Reviewed-by: Casey Connolly <[email protected]>
2026-06-03net: tsec: make tsec_private a private structureQuentin Schulz
Move the definition of tsec_private within the only file that makes use of it. This adds the benefit of include/tsec.h not referencing PKTBUFSRX (which is set to CONFIG_SYS_RX_ETH_BUFFER, which we're trying to move to be under CONFIG_NET dependency) anymore. Considering drivers/net/tsec.c is only built if CONFIG_NET=y, this is fine. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Quentin Schulz <[email protected]>
2026-06-03usb: dwc3: generic: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]>
2026-06-03usb: dwc3: sti: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]>
2026-06-03usb: dwc3: am62: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]>
2026-06-02usb: xhci-mvebu: Enable Armada 375 in XHCI driverTony Dinh
Add armada-375-xhci to the compatible list in XHCI MVEBU driver. Tested with WD MyCloud Gen2 NAS. Signed-off-by: Tony Dinh <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2026-06-02timer: sp804: Fix dev_read_addr error checkFrancois Berder
dev_read_addr returns FDT_ADDR_T_NONE (-1) in case of error and not 0. Signed-off-by: Francois Berder <[email protected]>
2026-06-02Merge patch series "Clean up bloblist initialization"Tom Rini
Tom Rini <[email protected]> says: This series does a few small but important cleanups to how we check for, and initialize a bloblist. The first thing is that the way things are done today, our HANDOFF code can only work with a fixed bloblist location, so express that requirement in Kconfig. Next, we demote the scary message about "Bloblist at ... not found" to a debug because we most often see that because the bloblist doesn't (and can't) exist yet. Finally, we remove bloblist_maybe_init and split this in to an exists and a real init. This results in practically no growth (between 8 bytes growth to 12 bytes saved, with some outliers saving much more thanks to knowing it's impossible to have been passed a bloblist yet). This also cleans up some of the code around checking for / knowing about a bloblist existing. Link: https://lore.kernel.org/r/[email protected]
2026-05-30Merge patch series "video: bridge: anx6345: Staticize and constify driver ops"Tom Rini
This series from Marek Vasut <[email protected]> adds "static" and "const" keywords to structs where they are missing and would be useful to have. Link: https://lore.kernel.org/r/[email protected]
2026-05-30video console: add 6x8 console font from linuxAlexey Charkov
Small screens on the order of 256x144 pixels can't fit much text at 8x16, and 4x6 is virtually illegible, so add an in-between 6x8 font from Linux. Font data obtained from lib/fonts/font_6x8.c in the Linux kernel at commit db65872b38dc ("lib/fonts: Remove internal symbols and macros from public header file") Link: https://github.com/torvalds/linux/blob/db65872b38dc9f18a62669d6ae1e4ec7868a85a9/lib/fonts/font_6x8.c Signed-off-by: Alexey Charkov <[email protected]>
2026-05-30video: kconfig: replace tristate with bool for LCD panel driversDario Binacchi
U-Boot does not support loadable modules, therefore using 'tristate' in Kconfig is incorrect since the 'm' option cannot be selected. Replace tristate with bool for the affected LCD panel drivers to reflect the U-Boot build model and avoid misleading configuration options. No functional change intended. Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Tom Rini <[email protected]> Reviewed-by: Svyatoslav Ryhel <[email protected]>
2026-05-30video: Kconfig: fix indentation of help textDario Binacchi
Fix the indentation of the help text for VIDEO_LCD_NOVATEK_NT35510 and VIDEO_LCD_ORISETECH_OTM8009A to align with the standard Kconfig format. Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Heinrich Schuchardt <[email protected]>
2026-05-30video: simplefb: Parse memory region from memory-region propertyAelin Reidel
Linux' simplefb driver allows setting the memory-region property to a phandle to a node that describes the memory to be used for the framebuffer. If it is present, it will override the "reg" property. This adds support for parsing the property and prefers it if present. Signed-off-by: Aelin Reidel <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-05-30video: simplefb: Map framebuffer region on probe on ARM64Luca Weiss
The framebuffer buffer might not be mapped on some devices. This is #ifdef'ed for ARM64 since mmu_map_region() is not defined for any other architecture. Signed-off-by: Luca Weiss <[email protected]> Acked-by: Sumit Garg <[email protected]>
2026-05-30video: Correct dependencies for VIDEO_TIDSSTom Rini
The VIDEO_TIDSS functionality can only work with PANEL enabled, so express this dependency in Kconfig for all phases. Signed-off-by: Tom Rini <[email protected]>
2026-05-30video: Correct dependencies for VIDEO_LCD_RAYDIUM_RM68200Tom Rini
The VIDEO_LCD_RAYDIUM_RM68200 functionality can only work with BACKLIGHT enabled, so express this dependency in Kconfig. Signed-off-by: Tom Rini <[email protected]>
2026-05-30video: Correct dependencies of LOGICORE_DP_TXTom Rini
In order to build LOGICORE_DP_TX we must also have enabled AXI, so add that as a dependency as well. Signed-off-by: Tom Rini <[email protected]>
2026-05-29video: tegra: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Acked-by: Svyatoslav Ryhel <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-05-29video: tda19988: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-05-29video: stm32: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Patrice Chotard <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Raphaël Gallais-Pou <[email protected]>
2026-05-29video: imx: ldb: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-05-29video: dw_mipi_dsi: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-05-29video: console: truetype: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-05-29video: console: rotate: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-05-29video: console: normal: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-05-29video: bridge: ptn3460: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-05-29video: bridge: ps862x: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-05-29video: bridge: anx6345: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-05-28mmc: bcmstb: Fix non-removable check in bcm2712 initJan Čermák
sdhci_brcmstb_init_2712() reads host->mmc->host_caps to decide whether to force card-detect for a non-removable eMMC, or to route the CD signal for a removable SD card. At the time this function runs from sdhci_bcmstb_probe(), however, host->mmc->host_caps is still zero, that field is only populated later by the MMC uclass, after the driver's probe returns. mmc_of_parse() has already filled plat->cfg.host_caps from the device tree by this point, so check that field instead. Without the fix, every BCM2712 SDHCI instance takes the else branch and writes SDIO_CFG_SD_PIN_SEL = SDIO_CFG_SD_PIN_SEL_CARD (0x02), including the non-removable eMMC on boards such as CM5 on Home Assistant Yellow. The SDIO_CFG block lies outside the SDHCI core's reset scope, so this value persists across SDHCI_RESET_ALL into the next stage. On the BCM2712, having SD_PIN_SEL set to "SD" when the Linux kernel performs its first set_power(MMC_POWER_UP) write racily prevents the SDHCI POWER_ON bit from latching (see [1] for the whole backstory) - the voltage bits stick but POWER_ON drops - which wedges the first CMD0 the full 10 s software timeout. On Home Assistant Yellow this manifested as a ~20 s eMMC probe delay on roughly one in two Linux boots when U-Boot was the previous stage. Booting directly from the Pi firmware (no U-Boot in between) left SD_PIN_SEL at its default and did not exhibit the race. Reading plat->cfg.host_caps lets init_2712 see the "non-removable" property and take the correct branch, leaving SD_PIN_SEL untouched for the eMMC. [1] https://github.com/home-assistant/operating-system/pull/3700#issuecomment-4430229511 Fixes: 10127cdbab64 ("mmc: bcmstb: Add support for bcm2712 SD controller") Signed-off-by: Jan Čermák <[email protected]> Reviewed-by: Ivan T. Ivanov <[email protected]>
2026-05-28nvme: free prp_pool on nvme_init() failure pathsPrashant Kamble
nvme_init() allocates prp_pool after configuring the admin queue, but some later error paths return without freeing it. Free prp_pool before freeing the queue array in the failure paths after nvme_setup_io_queues() and namespace ID buffer allocation. This fixes a memory leak during NVMe initialization failures. Signed-off-by: Prashant Kamble <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Neil Armstrong <[email protected]>
2026-05-28nvme: avoid deleting uncreated queuesPrashant Kamble
nvme_create_queue() may issue Delete CQ or Delete SQ commands even when the corresponding queue creation failed. Avoid sending delete commands for queues that were never successfully created. Signed-off-by: Prashant Kamble <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Neil Armstrong <[email protected]>
2026-05-28nvme: fix dcache invalidation range in identify commandPrashant Kamble
When the identify buffer crosses a page boundary, PRP2 is used and dma_addr is advanced to the second page: dma_addr += (page_size - offset); The subsequent invalidate_dcache_range() calls then use the modified dma_addr instead of the original buffer start address. As a result, the beginning of the identify buffer is not invalidated and the invalidation range extends past the end of the buffer. Fix this by preserving the original DMA buffer address for cache invalidation. Suggested-by: Neil Armstrong <[email protected]> Signed-off-by: Prashant Kamble <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Neil Armstrong <[email protected]>
2026-05-26mmc: bcm2835_sdhci: Parse generic MMC device tree propertiesLiel Harel
The bcm2835 SDHCI driver sets up the MMC host configuration via sdhci_setup_cfg(), but does not parse generic MMC device tree properties. As a result, properties such as bus-width are ignored. On Raspberry Pi Compute Module 4, the eMMC node describes an 8-bit bus, but U-Boot initialized the device as 4-bit. Call mmc_of_parse() before sdhci_setup_cfg() so that generic MMC properties are folded into the host configuration before the MMC core selects the bus width. Before this change, mmc info reported: Bus Speed: 52000000 Bus Width: 4-bit After this change, mmc info reports: Bus Speed: 52000000 Bus Width: 8-bit Tested on Raspberry Pi Compute Module 4 with onboard eMMC. Signed-off-by: Liel Harel <[email protected]> Reviewed-by: Peter Robinson <[email protected]> Tested-by: Peter Robinson <[email protected]> # on the CM4 as well
2026-05-26video: arm: rpi: Add brcm,bcm2712-hdmi0 compatiblePeter Robinson
The 'brcm,bcm2712-hdmi0' compatible string is used on RPi5. There appears to be no change that impacts early boot output on the display controller so add the RPi5 compatible string. Signed-off-by: Peter Robinson <[email protected]> Reviewed-by: Matthias Brugger <[email protected]>
2026-05-25cros_ec: Sync ec_commands.h from upstream Chrome OS ECSimon Glass
Sync include/ec_commands.h from upstream commit 4f3d17aa34 ("skywalker: set SLEEP_TIMEOUT_MS to 50 seconds"). The new file makes two build assumptions that do not hold for U-Boot. It hides '<stdint.h>' from __KERNEL__ builds, leaving UINT16_MAX (used by EC_RES_MAX) undefined for U-Boot; widen the gate to '!defined(__KERNEL__) || defined(__UBOOT__)' It gates '<linux/limits.h>' on '#ifdef __KERNEL__'; the matching '#else' branch defines BIT()/BIT_ULL()/GENMASK()/GENMASK_ULL() locally, assuming kernel headers provide those macros otherwise. U-Boot defines __KERNEL__ too but has no <linux/limits.h>. Nest a '!defined(__UBOOT__)' check around the include so the __UBOOT__ path stays in the __KERNEL__ branch (no local BIT/GENMASK defines), which avoids redefinition warnings against U-Boot's linux/bitops.h. Pull in linux/bitops.h up front for U-Boot so the file's own BIT() and GENMASK() uses still resolve. Adapt callers to two interface changes. The 'ec_current_image' enum tag is now 'ec_image' (EC_IMAGE_* constants unchanged); rename it in affected files to match. The VBNV-context interface was dropped upstream, but it still used in lab Chromebooks; keep those constants and structs in cros_ec.h Likewise, MEC_EMI_BASE and MEC_EMI_SIZE are a U-Boot-local addition to ec_commands.h that the upstream sync removes; preserve them in cros_ec.h next to the VBNV block, and switch the only consumer (arch/x86/cpu/apollolake/cpu_spl.c) to include cros_ec.h Signed-off-by: Simon Glass <[email protected]>
2026-05-25led: Fix toggling LED on initial SW blinkFrancois Berder
If the LED is in the ON state, it is briefly set to OFF then to ON immediately due to falling-through in the default case. This commit ensures that no fall-through occurs and thus a LED initially in the ON state is turned off before blinking. Signed-off-by: Francois Berder <[email protected]> Fixes: 9e3d83301e4f ("led: toggle LED on initial SW blink") Acked-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]>