summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2026-01-08mmc: Fix missing 1 ms delay after mmc power upChristoph Stoidner
mmc/sd specification requires a 1 ms delay (stable supply voltage) after vdd was enabled and before issuing first command. For most sdcard/soc combinations, the missing delay seems to be not a problem because the processing time between enabling vdd and the first command is often hundreds of microseconds or more. However, in our specific case, some sdcards were not detected by u-boot: * soc: NXP i.MX 93 * sdcards: SanDisk Ultra, 64GB micro SDXC 1, MediaRange, 8GB, SDHC * measured time between vdd and first command: approx. 784us * symptom: both sdcards did not respond at all to first commands, u-boot mmc subsystem ran into timeout and stops to initialize the cards Signed-off-by: Christoph Stoidner <[email protected]> Cc: Peng Fan <[email protected]> Cc: Jaehoon Chung <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-01-07i2c: samsung: add support for Exynos7 HS-I2CKaustabh Chakraborty
Exynos7 (and later) HS-I2C blocks have special interrupts regarding various data transfer states (see HSI2C_INT_I2C_TRANS_EN). Add support for enabling and handling these interrupt bits. Add the corresponding compatible, 'samsung,exynos7-hsi2c'. In order to differentiate between the multiple device variants, an enum is introduced which is used where difference in implementations exist. Signed-off-by: Kaustabh Chakraborty <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2026-01-06clk: mediatek: remove CLOCK_PARENT_* aliasesDavid Lechner
Remove the CLOCK_* aliases of the CLOCK_PARENT_* macros. One name for each flag is sufficient. Signed-off-by: David Lechner <[email protected]>
2026-01-06Merge patch series "Add support for MT8188"Tom Rini
Julien Stephan <[email protected]> says: The MediaTek MT8188 is a ARM64-based SoC with a dual-core Cortex-A78 cluster and a six-core Cortex-A55 cluster. It includes UART, SPI, USB3.0 dual role, SD and MMC cards, UFS, PWM, I2C, I2S, S/PDIF, and several LPDDR3 and LPDDR4 options. This series adds basic support for MT8188. Link: https://lore.kernel.org/r/[email protected]
2026-01-06clk: mediatek: add MT8188 clock driverJulien Masson
The following clocks have been added for MT8188 SoC: apmixedsys, topckgen, infracfg, pericfg and imp_iic_wrap These clocks driver are based on the ones present in the kernel: drivers/clk/mediatek/clk-mt8188-* Signed-off-by: Julien Masson <[email protected]> Signed-off-by: Julien Stephan <[email protected]> Reviewed-by: Macpaul Lin <[email protected]>
2026-01-06arm: mediatek: add support for MediaTek MT8188 SoCJulien Masson
This adds basic support for MediaTek MT8188 SoC. Add watchdog support by adding upstream compatible string. Add tphy support by adding "mediatek,generic-tphy-v2" compatible string in arch/arm/dts/mt8188-u-boot.dtsi Signed-off-by: Julien Masson <[email protected]> Signed-off-by: Julien Stephan <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Reviewed-by: Macpaul Lin <[email protected]>
2026-01-06spi: Correct dependencies on AIROHA_SNFI_SPITom Rini
This driver is only possible to build on ARCH_AIROHA, so update the dependencies. Fixes: 6134e4efd432 ("spi: airoha: Add Airoha SPI NAND driver") Signed-off-by: Tom Rini <[email protected]>
2026-01-05Merge branch 'next'Tom Rini
2026-01-05clk: scmi: Remove duplicated scmi_generic_protocol_version() requestPatrice Chotard
scmi_generic_protocol_version() request is done twice in scmi_clk_probe(). Remove first call which is useless. Fixes: ae7e0330ce22 ("clk: scmi: add compatibility with clock protocol 2.0") Reviewed-by: Peng Fan <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Patrice Chotard <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-01-05clk: scmi: Fix priv initialization in scmi_clk_gate()Patrice Chotard
In scmi_clk_probe(), in case of CLK_CCF is not enabled, parent private data is not set, so in scmi_clk_gate(), an uninitialized priv struct is retrieved. SCMI request is performed either using scmi_clk_state_in_v1 or scmi_clk_state_in_v2 struct depending of the unpredictable value of priv->version which leads to error during SCMI clock enable. Issue detected on STM32MP157C-DK2 board using the SCMI device tree stm32mp157c-dk2-scmi.dts. Fixes: 0619cb32030b ("firmware: scmi: Add clock v3.2 CONFIG_SET support") Reviewed-by: Peng Fan <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Patrice Chotard <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-01-05clk: scmi: Fix typo scmi_clk_get_attibutePatrice Chotard
Fix typo attibute, rename scmi_clk_get_attibute() to scmi_clk_get_attribute(). Reviewed-by: Peng Fan <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Patrice Chotard <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-01-02dm: crypto: Check malloc return valueFrancois Berder
tmp_buffer is allocated using malloc but failure is not handled. This commit ensures that we do not use a NULL pointer if malloc fails. Signed-off-by: Francois Berder <[email protected]>
2026-01-02pwm: aspeed: replace %pe in dev_err()David Lechner
Replace %pe with %d and adjust the argument accordingly in a dev_err() call in the pwm-aspeed driver. U-boot doesn't support the %pe format specifier. Likely it was copied from Linux. Signed-off-by: David Lechner <[email protected]> Reviewed-by: Chia-Wei Wang <[email protected]>
2026-01-02kbuild: Bump the build system to 6.1Sughosh Ganu
Our last sync with the kernel was 5.1. We are so out of sync now, that tracking the patches and backporting them one by one makes little sense and it's going to take ages. This is an attempt to sync up Makefiles to 6.1. Unfortunately due to sheer amount of patches this is not easy to review, but that's what we decided during a community call for the bump to 5.1, so we are following the same guidelines here. Signed-off-by: Sughosh Ganu <[email protected]> Signed-off-by: Ilias Apalodimas <[email protected]>a #rebased on -next
2025-12-31Merge patch series "modify npcm7xx/8xx feature and bug fixed"Tom Rini
Jim Liu <[email protected]> says: Modify npcm7xx/8xx features and bug fixes. Link: https://lore.kernel.org/r/[email protected]
2025-12-31arm: dts: mediatek: switch mt8365 to OF_UPSTREAMDavid Lechner
Change mt8365_evk_defconfig to use CONFIG_OF_UPSTREAM=y and delete the U-Boot copy of the devicetree source files for mt8365. The upstream devicetree is identical to the U-Boot one being removed (other than having more nodes for devices not used by U-Boot and upstream fixed a compatible string in &scpsys, also not affecting U-Boot). There was one minor glitch with upstream missing a few topckgen macro definitions, so those are added to the clock driver directly as a workaround. Reviewed-by: Macpaul Lin <[email protected]> Signed-off-by: David Lechner <[email protected]>
2025-12-31gpio: sgpio: modify persist check conditionJim Liu
Modify the persist check condition to fix init error. Signed-off-by: Jim Liu <[email protected]>
2025-12-31dts: fix typo in the pin name of GPIO191/GPIO192Stanley Chu
Fix typos in the pin name of GPIO191 and GPIO192 Signed-off-by: Stanley Chu <[email protected]>
2025-12-31pinctrl: npcm8xx: Add smb11ddc pin configStanley Chu
smb11ddcm: connect SMB11 to external DDC pins smb11ddcs: connect SMB11 to internal GFXDDC Signed-off-by: Stanley Chu <[email protected]>
2025-12-31watchdog: npcm: Support more timeout valueStanley Chu
Calculate a timeout value that is close to the requested value. Signed-off-by: Stanley Chu <[email protected]>
2025-12-30Merge patch series "video: Remove unused drivers, clean up dependencies"Tom Rini
Tom Rini <[email protected]> says: This is v2 of the series I originally posted back in August[1]. The changes here are that I've dropped the first patch as TI has recently posted their rework of the driver in question, and I added Svyatoslav's Reviewed-by tag. The end goal here is that "allyesconfig" will be able to build (on sandbox). [1]: https://patchwork.ozlabs.org/project/uboot/list/?series=468123&state=* Link: https://lore.kernel.org/r/[email protected]
2025-12-30drivers: video: tidss: Refactor tidss_drvSwamil Jain
- Refactor tidss_drv to improve modularity, enabling support for more display interfaces beyond OLDI in the future - Add detection and initialization of active OLDI panels using the DT - Port tidss_oldi.c from the upstream Linux kernel oldi series[0] and derive several APIs from it to determine the dual link pixel order - Add tidss_oldi_init() and helper routines to handle OLDI-specific setup and move related helper routines to tidss_oldi.c [0]: https://lore.kernel.org/all/[email protected]/ Signed-off-by: Swamil Jain <[email protected]> Tested-by: Anshul Dalal <[email protected]>
2025-12-30video: simplefb: Add stride handlingIgor Belwon
Some framebuffers (i.e MediaTek) do not have regular stride - its line length is more than the display width by 8 pixels (on MT6878). As such, introduce the optional stride property, which fixes these framebuffers. Signed-off-by: Igor Belwon <[email protected]>
2025-12-30Merge patch series "video: display: refactor display_read_timing to avoid ↵Tom Rini
code duplication" Julien Stephan <[email protected]> says: Commit 2dcf143398ad ("dm: video: Repurpose the 'displayport' uclass to 'display'") left the display_read_edid() function unused by mistake. This series addresses that oversight and introduces a new useful cmd. Patch 1: - Refactors display_read_timing() to use the existing display_read_edid() function, eliminating redundant code. - Marks display_read_edid() as static since it is not used outside of the file. Patch 2: - Adds a new read_edid command, which can be very useful for debugging or developing new display drivers. - As this command uses display_read_edid(), the function is made non-static again. Link: https://lore.kernel.org/r/[email protected]
2025-12-30cmd: add new command to read edidJulien Stephan
Add a new command to read EDID info from connected display. When applicable EDID can also be retrieved by commands such as: i2c dev x i2c edid 0x50 but the new read_edid function relies on the implementation of the read_edid callback from DISPLAY driver. Signed-off-by: Julien Stephan <[email protected]>
2025-12-30video: stm32: stm32_ltdc: Add missing <linux/sizes.h> to stm32_ltdc.cTom Rini
This driver references the SZ_ macros while relying on an indirection inclusion of <linux/sizes.h>. Add the missing include directly. Signed-off-by: Tom Rini <[email protected]>
2025-12-30video: sharp-lq101r1sx01: Do not make use of 'z' for printing non-size_tTom Rini
The debug macros in this driver make use of the z prefix when printing regular, non-size_t variables and this results in a warning. Drop 'z'. Signed-off-by: Tom Rini <[email protected]>
2025-12-30video: ihs_video_out: Add missing <asm/io.h> to ihs_video_out.cTom Rini
This driver references IO macros while relying on an indirection inclusion of <asm/io.h>. Add the missing include directly. Signed-off-by: Tom Rini <[email protected]>
2025-12-30video: anx9804: Only build when neededTom Rini
The logic for how to handle this video driver is slightly odd. Only in the case of when CONFIG_VIDEO_LCD_PANEL_EDP_4_LANE_1620M_VIA_ANX9804 is enabled do we need to have this file built, and otherwise we have a dummy function in use. Correct the logic by only building this file when needed. Signed-off-by: Tom Rini <[email protected]>
2025-12-30video: Tighten some video driver dependenciesTom Rini
A few video drivers cannot build without access to some platform specific header files. Express those requirements in Kconfig as well. Signed-off-by: Tom Rini <[email protected]>
2025-12-30video: tegra: Rework some of the driver dependenciesTom Rini
Looking these drivers over, all of them cannot build without access to some platform specific header files. Express those requirements in Kconfig as well. Furthermore, update the logic a bit more to reflect which parts are optional when other drivers are enabled and which parts cannot be enabled (meaningfully) by themselves. Reviewed-by: Svyatoslav Ryhel <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2025-12-30video: mali_dp: Remove unused driverTom Rini
This driver is unused. Remove it. Signed-off-by: Tom Rini <[email protected]>
2025-12-30video: display: refactor display_read_timing to avoid code duplicationJulien Stephan
Commit 2dcf143398ad ("dm: video: Repurpose the 'displayport' uclass to 'display'") left the display_read_edid() function unused by mistake. Mark the function as static and reuse it within display_read_timing() to avoid code duplication. Signed-off-by: Julien Stephan <[email protected]>
2025-12-29clk: renesas: Do not disable realtime modules on R8A77995 D3Niklas Söderlund
Later versions of the datasheet makes it clear D3 do not have any realtime module stop control registers (RMSTPCRx). Remove the manipulation of them from the module clock table to match this. Suggested-by: Marek Vasut <[email protected]> Signed-off-by: Niklas Söderlund <[email protected]>
2025-12-29clk: renesas: Do not enable MSTP4 extra modules on R8A77995 D3Niklas Söderlund
Since commit a2bd99549c61 ("clk: renesas: Tear clock controller down last before booting OS") enabling the module gated by bit 8 in MSTP4 prevents Linux from booting. The bits 8 and 7 of MSTP4 where only documented in early versions of the datasheet and have since been removed. To allow Linux to boot update the MSTP4 enable value to reflect the hardware default, 0x80. Suggested-by: Marek Vasut <[email protected]> Signed-off-by: Niklas Söderlund <[email protected]>
2025-12-29Merge tag 'u-boot-imx-next-20251229' of ↵Tom Rini
https://gitlab.denx.de/u-boot/custodians/u-boot-imx into next CI: https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/28866 - Swicth imx8ulp-evk to standard boot and OF_UPSTREAM. - Cleanup of the IPUv3 video driver. - Add support for the NXP FRDM-IMX91 board. - Make flash.bin target available on i.MX9. - Fix mxsfb pixel clock polarity.
2025-12-29video: imx: ipuv3: refactor to use dm-managed stateBrian Ruley
Get rid of most globals that are spread around between TU's and place them in their own structs managed by dm. Device state is now owned by each driver instance. This design mirrors the Linux IPUv3 driver architecture. This work is done in preparation to migrate the driver to the clock framework. While not the primary intent, this change also enables multiple IPU instances to exist contemporarily. Signed-off-by: Brian Ruley <[email protected]>
2025-12-29video: imx: ipuv3: use CONFIG_IS_ENABLEDBrian Ruley
Bring driver up-to-date with U-Boot conventions, but also takes into account SPL and TPL, let compiler optimize while keeping code more readable. Signed-off-by: Brian Ruley <[email protected]>
2025-12-29video: imx: ipuv3: add names to clk function identifiersBrian Ruley
The API should provide clear distinction in the order of parameters. Signed-off-by: Brian Ruley <[email protected]>
2025-12-29video: imx: ipuv3: fix camel casesBrian Ruley
U-Boot style specifies to use snake case and checkpatch nudge to check them every time. Signed-off-by: Brian Ruley <[email protected]>
2025-12-29video: imx: ipuv3: prefer kernel typesBrian Ruley
Conform with U-Boot guidelines and pass checkpatch checks for upcoming changes. Signed-off-by: Brian Ruley <[email protected]>
2025-12-29video: imx: ipuv3: apply clang-formatBrian Ruley
Bring the code into compliance with U-Boot's coding style guidelines for upcoming changes. Sort includes to tidy things up and apply { RemoveBracesLLVM: true } to remove unnecessary blocks. Signed-off-by: Brian Ruley <[email protected]>
2025-12-29video: imx: ipuv3: remove undefined function declarationsBrian Ruley
These functions don't seem to be defined nor called anywhere so remove them. Signed-off-by: Brian Ruley <[email protected]>
2025-12-29video: mxsfb: fix pixel clock polaritySam Meredith
DISPLAY_FLAGS_PIXDATA_NEGEDGE means the controller drives the data on pixel clocks falling edge. That is DOTCLK_POL=0 (default) not 1. The mxsfb-drm driver in the Linux kernel has made the same change and it remains to this day: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v6.19-rc2&id=53990e416bb7adaa59d045f325a47f31a11b75ee I found this was required on an IMX8X SoM. Without the patch a splash screen displays with aliasing-like jagged edges. Signed-off-by: Sam Meredith <[email protected]> [fabio: Put more information into the commit log] Signed-off-by: Fabio Estevam <[email protected]>
2025-12-27i2c: Avoid calling dev_read_*() if CONFIG_OF_PLATDATA=yMarek Vasut
If CONFIG_OF_PLATDATA=y , then the udevice has no valid OF node associated with it and ofnode_valid(node) evaluates to 0. The dev_read_u32_default() call ultimately reaches ofnode_read_u32_index() which invokes fdt_getprop() and passes result of ofnode_to_offset(node) as an offset parameter into it. The ofnode_to_offset(node) returns -1 for invalid node, which leads to an fdt_getprop(..., -1, ...) invocation, which will crash sandbox with SIGSEGV because libfdt can not handle negative node offsets without full tree check, which U-Boot inhibits to keep size lower. Since i2c_child_post_bind() already calls dev_has_ofnode(dev), reuse the same call and assign i2c->speed_hz = I2C_SPEED_STANDARD_RATE in case the device has no valid node associated with it, and do not call any of the dev_read_*() functions for devices without valid nodes. Signed-off-by: Marek Vasut <[email protected]>
2025-12-27i2c: Inline i2c_chip_of_to_plat() into i2c_child_post_bind()Marek Vasut
The i2c_chip_of_to_plat() is called only from i2c_child_post_bind(), inline i2c_chip_of_to_plat() into i2c_child_post_bind(). Drop the if CONFIG_IS_ENABLED(OF_REAL) and depend on if (!dev_has_ofnode(dev)) which does check CONFIG_IS_ENABLED(OF_REAL) internally too. Signed-off-by: Marek Vasut <[email protected]>
2025-12-27gpio: sandbox: Avoid calling dev_read_*() if CONFIG_OF_PLATDATA=yMarek Vasut
If CONFIG_OF_PLATDATA=y , then the udevice has no valid OF node associated with it and ofnode_valid(node) evaluates to 0. The dev_read_u32_default() call ultimately reaches ofnode_read_u32_index() which invokes fdt_getprop() and passes result of ofnode_to_offset(node) as an offset parameter into it. The ofnode_to_offset(node) returns -1 for invalid node, which leads to an fdt_getprop(..., -1, ...) invocation, which will crash sandbox with SIGSEGV because libfdt can not handle negative node offsets without full tree check, which U-Boot inhibits to keep size lower. Since gpio_sandbox_probe() already calls dev_has_ofnode(dev) and assigns uc_priv->gpio_count to CONFIG_SANDBOX_GPIO_COUNT accordingly, add matching dev_has_ofnode(dev) check into sandbox_gpio_of_to_plat() and do not call any of the dev_read_*() functions for devices without valid nodes there either. Signed-off-by: Marek Vasut <[email protected]>
2025-12-27clk: fixed_rate: Avoid calling dev_read_*() if CONFIG_OF_PLATDATA=yMarek Vasut
If CONFIG_OF_PLATDATA=y , then the udevice has no valid OF node associated with it and ofnode_valid(node) evaluates to 0. The dev_read_u32_default() call ultimately reaches ofnode_read_u32_index() which invokes fdt_getprop() and passes result of ofnode_to_offset(node) as an offset parameter into it. The ofnode_to_offset(node) returns -1 for invalid node, which leads to an fdt_getprop(..., -1, ...) invocation, which will crash sandbox with SIGSEGV because libfdt can not handle negative node offsets without full tree check, which U-Boot inhibits to keep size lower. Add dev_has_ofnode(dev) check and do not assign clock rate in case the device has no valid node associated with it, and do not call any of the dev_read_*() functions for devices without valid nodes. Signed-off-by: Marek Vasut <[email protected]>
2025-12-24power: regulator: Fix dependency of SPL_DM_REGULATOR_GPIOPeng Fan
gpio-regulator uses dm gpio API, so it depends on SPL_DM_GPIO, not SPL_GPIO. Reported-by: Tom Rini <[email protected]> Reviewed-by: Tom Rini <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2025-12-24power: regulator: remove SPL_REGULATOR_PWM due to unmeetable SPL_DM_PWM ↵Quentin Schulz
dependency SPL_DM_PWM option simply doesn't exist. Moreover, drivers/pwm is only included by drivers/Makefile for non-xPL stages so making SPL_REGULATOR_PWM properly build for SPL/xPL is more involved than just adding an SPL_DM_PWM option. Reading the original commit (ddc824f89aa8 ("power: regulator: Allow PWM regulator to be omitted from SPL."), the intent seemingly wasn't to allow building support in XPL but rather to allow removing it which is done by using $(PHASE_) ($(SPL_) at that time) in the Makefile. If anyone needs that, let them figure out what they need to do without misleading potential users of this symbol by simply removing it. Fixes: 2a846e04c622 ("power: regulator: Correct dependencies on SPL_REGULATOR_PWM") Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Anshul Dalal <[email protected]> Reviewed-by: Kory Maincent <[email protected]> Signed-off-by: Peng Fan <[email protected]>