- Revert "Use max-frequency from device tree with default handling"
- Select CRC16 MMC_SPI_CRC_ON
- Add 1ms delay with 1ms margin after mmc power on to follow spec
The change to use dev_read_u32_default() with a default value of 0
causes regression for host controller drivers that hardcode f_max
before calling mmc_of_parse().
When the "max-frequency" property is not specified in the device tree,
dev_read_u32_default() returns 0, which overwrites the previously
configured f_max value set by the driver. This effectively resets
the maximum frequency to 0, breaking MMC functionality for those
controllers.
Revert to the original dev_read_u32() behavior which only updates
cfg->f_max when the "max-frequency" property is explicitly present
in the device tree, preserving driver-configured values otherwise.
Signed-off-by: Tanmay Kathpalia <tanmay.kathpalia@altera.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
usb: dwc3-generic: allow fallback of dr_mode property to "otg"
Documentation [1] states that the default value of the dr_mode property
is "otg". It also isn't marked a mandatory node, so it may or may not be
set. So, accordingly if dr_mode is not mentioned in the devicetree node,
OTG mode must be assumed.
In this driver however, this case is not handled. If dr_mode is not
mentioned, USB_DR_MODE_UNKNOWN is set. The logic implemented raises an
error, instead of falling back to USB_DR_MODE_OTG. Correct this to
conform to the specification.
Daniel Palmer [Sat, 27 Dec 2025 10:59:46 +0000 (19:59 +0900)]
mmc: mmc_spi: Select CRC16 if CRC checking is enabled
Currently CRC16 is not selected when CRC checking is enabled and
if it wasn't enabled in the config otherwise the build will fail
because of references to crc16_ccitt() that doesn't exist.
Signed-off-by: Daniel Palmer <daniel@thingy.jp> Signed-off-by: Peng Fan <peng.fan@nxp.com>
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 <c.stoidner@phytec.de> Cc: Peng Fan <peng.fan@nxp.com> Cc: Jaehoon Chung <jh80.chung@samsung.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
Tom Rini [Wed, 7 Jan 2026 16:20:32 +0000 (10:20 -0600)]
Merge patch series "test: env: Add test for environment storage in SPI NOR"
This patch series from Marek Vasut <marek.vasut+renesas@mailbox.org>
adds support for having a platform be able to convert from a
non-redundant envrionment to a redundant one at run-time.
Marek Vasut [Tue, 23 Dec 2025 14:31:12 +0000 (15:31 +0100)]
configs: sandbox: Enable environment in SPI NOR support
Make environment support in SPI NOR available in sandbox,
so the environment storage in SPI NOR can be tested in CI.
Enable redundant environment support as well to cover this
in CI tests too.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
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.
Marek Vasut [Tue, 23 Dec 2025 14:31:11 +0000 (15:31 +0100)]
env: Add single to redundant environment upgrade path
Add support for converting single-copy environment to redundant environment.
In case CRC checks on both redundant environment copies fail, try one more
CRC check on the primary environment copy and treat it as single environment.
If that check does pass, rewrite the single-copy environment into redundant
environment format, indicate the environment is valid, and import that as
usual primary copy of redundant environment. Follow up 'env save' will then
store two environment copies and the system will continue to operate as
regular redundant environment system.
Add test which validates this upgrade path. The test starts with spi.bin
which is pre-populated as single-copy environment and then upgrades that
environment to dual-copy environment.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Marek Vasut [Tue, 23 Dec 2025 14:31:10 +0000 (15:31 +0100)]
test: env: Add test for environment storage in SPI NOR
Add test for environment stored in SPI NOR. The test works in a very
similar way to the current test for environment stored in ext4 FS,
except it generates spi.bin file backing the SPI NOR.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Tom Rini [Tue, 6 Jan 2026 20:44:27 +0000 (14:44 -0600)]
Merge patch series "lzma: Add Kconfig options to optimize for size"
Tom Rini <trini@konsulko.com> says:
A long while ago, Darek reported that our copy of the LZMA SDK library
is quite old and so vulnerable to at least one possible security issue
he found that was fixed upstream.
This does a few things. First, we introduce a Kconfig option
to enable LZMA's size reduction option, and enable it on
gardena-smart-gateway-mt7688. This is not critical at the start, but is
as we move forward. Next, we move all the way from version 9.20 of the
LZMA SDK to version 25.01. The few deviations from upstream are the
changes we've already made to the files and are documented in our
history. Finally, we add SPDX tags to the code we've imported from the
LZMA SDK (and upstream has been asked if they're interested in this).
Tom Rini [Thu, 18 Dec 2025 23:30:57 +0000 (17:30 -0600)]
lzma: Update LZMA SDK code from 9.20 to 25.01
Currently, we have a copy of the LZMA SDK code, version 9.20, with small
updates. The original import of the LZMA SDK included a script to update the
library. This is no longer possible, due to important local changes, so
remove it. We also remove a number of extra text files that should be
unchanged from upstream, but provide no direct value to the project.
Instead, have the help text for LZMA note that this comes from the LZMA
SDK.
Next, we move our code up to the current release, 25.01. There are a
number of new header files, and some performance improvements made to
the code, at the cost of between 2 to 3 kilobytes in binary size. As
there is now a Kconfig option to disable this and retain similar speed
to what we have currently, the default option is to make this trade-off.
Our changes to the code around calling schedule() to avoid the watchdog
being triggered are kept. We add __UBOOT__ guards in two places to
prevent conflict with our own usage of these words on MIPS.
Tom Rini [Thu, 18 Dec 2025 23:30:56 +0000 (17:30 -0600)]
lzma: Add Kconfig options to optimize for size
Currently, our LZMA library has an option for optimizing for size,
rather than speed. It is a minimal savings today, and has not been worth
enabling. As this will change in the near future, add options now to
allow disabling it in full U-Boot or in SPL, and enable these on
gardena-smart-gateway-mt7688 which is very close to the size limit
today.
Reviewed-by: Stefan Roese <stefan.roese@mailbox.org> Signed-off-by: Tom Rini <trini@konsulko.com>
To fix, we need to use the absolute path to the source tree since we
don't know where the build tree is located relative to the source tree.
Fixes: bd3f9ee679b4 ("kbuild: Bump the build system to 6.1") Signed-off-by: David Lechner <dlechner@baylibre.com> Tested-by: Sean Anderson <sean.anderson@linux.dev>
Kuan-Wei Chiu [Mon, 22 Dec 2025 17:42:55 +0000 (17:42 +0000)]
checkpatch: Add check for space indentation in Kconfig
U-Boot requires Kconfig options to be indented with tabs, whereas Linux
allows spaces. Add a U-Boot specific check to warn when spaces are used
for indentation in Kconfig files.
To ensure this check is executed, move the u_boot_line() invocation in
process() to occur before the valid source file check. Previously,
Kconfig files were skipped by the file extension filter before the
U-Boot specific checks could run.
Example warning:
WARNING: Kconfig indentation should use tabs
+ bool
Tom Rini [Tue, 6 Jan 2026 18:50:35 +0000 (12:50 -0600)]
Merge patch series "Add support for MT8188"
Julien Stephan <jstephan@baylibre.com> 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.
Tom Rini [Wed, 31 Dec 2025 17:13:41 +0000 (11:13 -0600)]
CI: Add "allyesconfig" to one of the build jobs
Now that we can have "make allyesconfig" build and link, add this type
of build to the job which builds host tools as well. In GitLab, make
this job rather than binman testsuite be the job which unblocks the next
stage of the pipeline. This is because we had been using that job for
"sandbox builds", and now that we have an explicit test for that, we
should use it.
Marek Vasut [Fri, 19 Dec 2025 02:40:44 +0000 (03:40 +0100)]
kbuild: Produce diff between base DT and U-Boot augmented DT if DEVICE_TREE_DEBUG=1
In case DEVICE_TREE_DEBUG is set, produce a diff between the base DT and
DT with U-Boot extras, to show how much does the U-Boot DT differ from
the base DT. This is particularly useful together with OF_UPSTREAM, to
minimize the diff between upstream DTs and U-Boot DTs.
This requires DTC 1.7.2 which does not resolve phandles when used in
the 'dtc -I dts -O dts ...' mode. With older DTC, the diff is full of
churn due to the resolved phandles.
Example usage:
$ make r8a779g3_sparrowhawk_defconfig && make DEVICE_TREE_DEBUG=1
$ cat ./dts/upstream/src/arm64/renesas/r8a779g3-sparrow-hawk.dtb.diff
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Synchronize local copy of DTC with Linux 6.17 . This includes the
following picked and squashed commits from Linux kernel. The squash
was necessary, since the DTC here contains changes which were also
part of DTC in Linux alraedy, and the squash helped resolve those
without going back and forth with the changes.
Patrice Chotard [Thu, 18 Dec 2025 17:27:02 +0000 (18:27 +0100)]
clk: scmi: Fix priv initialization in scmi_clk_gate()
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 <peng.fan@nxp.com> Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
Marek Vasut [Wed, 17 Dec 2025 20:02:50 +0000 (21:02 +0100)]
configs: sandbox: Select environment in FAT FS support
Commit 2a38e712652f ("sandbox: add FAT to the list of usable env drivers")
made environment storage in FAT available on sandbox, but did not enable
the matching ENV_IS_IN_FAT in sandbox configs. This leads to environment
driver lookup failure when env in non-EXT4 is selected using 'env select':
"
env_driver_lookup: No environment driver for location 3
priority not found
"
Enable the missing ENV_IS_IN_FAT to fix this.
Fixes: 2a38e712652f ("sandbox: add FAT to the list of usable env drivers") Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Quentin Schulz [Thu, 18 Dec 2025 10:59:58 +0000 (11:59 +0100)]
cmd: bdinfo: fix incorrect Kconfig options check for print_eth()
CMD_NET_LWIP has never existed so it cannot be right. I'm guessing the
intent was to allow print_eth() to be called when NET_LWIP is defined
(NET means "legacy networking stack" as opposed to NET_LWIP which is the
newest (and incompatible) stack). There probably was some mix-up
between CMD_NET and NET options.
The dependency on CMD_NET seems unnecessary as it seems perfectly fine
to run bdinfo without CMD_NET (build and run tested). So let's instead
make the dependency on NET || NET_LWIP.
David Lechner [Wed, 17 Dec 2025 00:56:35 +0000 (18:56 -0600)]
pwm: aspeed: replace %pe in dev_err()
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 <dlechner@baylibre.com> Reviewed-by: Chia-Wei Wang <chiawei_wang@aspeedtech.com>
Emanuele Ghidoli [Tue, 16 Dec 2025 08:45:28 +0000 (09:45 +0100)]
toradex: tdx-cfg-block: add pid4 support for new modules
Add new PID4 to ConfigBlock handling:
- 0217 Lino iMX93 Dual 2GB IT
- 0218 Lino iMX91 Solo 2GB IT
- 0219 OSM iMX93 Dual 2GB IT
- 0220 OSM iMX91 Solo 2GB IT
- 0221 Verdin AM62 Dual 1GB ET
Lino and OSM are two new SoM families.
The Verdin variant differs from the existing 0073 Verdin AM62 Dual 1GB ET
by the presence of the GPU (AM625 instead of AM623), the absence of
DSI interface (bridge not mounted) and eMMC size increased to 16GB instead
of 4GB.
The original _bin2bcd() function used / 10 and % 10 operations for
conversion. Although GCC optimizes these operations and does not generate
division or modulus instructions, the new implementation reduces the
number of mov instructions in the generated code for both x86-64 and ARM
architectures.
This optimization calculates the tens digit using (val * 103) >> 10, which
is accurate for values of 'val' in the range [0, 178]. Given that the
valid input range is [0, 99], this method ensures correctness while
simplifying the generated code.
Link: https://lkml.kernel.org/r/20240812170229.229380-1-visitorckw@gmail.com Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> Cc: Ching-Chun Huang (Jim) <jserv@ccns.ncku.edu.tw> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
[visitorckw@gmail.com: Adapt to bin2bcd() in include/bcd.h] Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
Marek Vasut [Sun, 28 Dec 2025 03:17:27 +0000 (04:17 +0100)]
m68k: Assure end of U-Boot is at 8-byte aligned offset
Make sure the end of U-Boot is at 8-byte aligned offset, not 4-byte
aligned offset. This allows safely appending DT at the end of U-Boot
with the guarantee that the DT will be at 8-byte aligned offset. This
8-byte alignment is now checked by newer libfdt 1.7.2 .
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Sughosh Ganu [Tue, 16 Dec 2025 09:16:24 +0000 (11:16 +0200)]
kbuild: Bump the build system to 6.1
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.
Makefile: repair CONFIG_CC_OPTIMIZE_FOR_DEBUG support
Since commit 5f520875bdf0 ("kbuild: Bump the build system to 5.1")
CONFIG_CC_OPTIMIZE_FOR_DEBUG has no effect on the non-host code.
This patch reestablishes the prior logic to add
-Og -Wno-maybe-uninitialized
to KBUILD_CFLAGS.
Fixes: 5f520875bdf0 ("kbuild: Bump the build system to 5.1") Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Tom Rini [Wed, 31 Dec 2025 16:13:54 +0000 (10:13 -0600)]
Merge patch series "configs: Remove default malloc length for K3 R5 SPL"
This series from Andrew Davis <afd@ti.com> makes a number of the TI K3
CONFIG symbols have consistent values in SPL, as they are things
determined by the SoC and not the board design.
David Lechner [Wed, 10 Dec 2025 23:40:14 +0000 (17:40 -0600)]
arm: dts: mediatek: switch mt8365 to OF_UPSTREAM
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 <macpaul.lin@mediatek.com> Signed-off-by: David Lechner <dlechner@baylibre.com>
Andrew Davis [Mon, 8 Dec 2025 19:06:33 +0000 (13:06 -0600)]
spl: Kconfig: k3: Increase malloc size after relocation for R5
Seems the "generous 2MB space" is no longer enough for SPL on some K3 R5
platforms so let's increase this to 4MB. That matches what we give to
ARM64 SPL, so combine these.
Signed-off-by: Andrew Davis <afd@ti.com> Reviewed-by: Bryan Brattlof <bb@ti.com>
Tom Rini [Tue, 30 Dec 2025 16:22:06 +0000 (10:22 -0600)]
Merge patch series "video: Remove unused drivers, clean up dependencies"
Tom Rini <trini@konsulko.com> 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).
Swamil Jain [Thu, 6 Nov 2025 08:58:41 +0000 (14:28 +0530)]
drivers: video: tidss: Refactor tidss_drv
- 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
Igor Belwon [Tue, 4 Nov 2025 14:50:36 +0000 (15:50 +0100)]
video: simplefb: Add stride handling
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 <igor.belwon@mentallysanemainliners.org>
Tom Rini [Wed, 2 Jul 2025 01:05:18 +0000 (19:05 -0600)]
common/splash_source.c: Change bmp_load_addr to ulong from u32
The variable bmp_load_addr is used to hold the address in memory of
where to put the splash image (as a bmp). For 32/64bit correctness, this
needs to be a ulong and not u32 today.
Tom Rini [Tue, 30 Dec 2025 16:18:39 +0000 (10:18 -0600)]
Merge patch series "video: display: refactor display_read_timing to avoid code duplication"
Julien Stephan <jstephan@baylibre.com> 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.
Tom Rini [Wed, 12 Nov 2025 20:00:05 +0000 (14:00 -0600)]
video: anx9804: Only build when needed
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.
Tom Rini [Wed, 12 Nov 2025 20:00:03 +0000 (14:00 -0600)]
video: tegra: Rework some of the driver dependencies
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 <clamor95@gmail.com> Signed-off-by: Tom Rini <trini@konsulko.com>
Niklas Söderlund [Sun, 28 Dec 2025 22:07:17 +0000 (23:07 +0100)]
clk: renesas: Do not disable realtime modules on R8A77995 D3
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 <marek.vasut+renesas@mailbox.org> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Niklas Söderlund [Sun, 28 Dec 2025 22:07:16 +0000 (23:07 +0100)]
clk: renesas: Do not enable MSTP4 extra modules on R8A77995 D3
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 <marek.vasut+renesas@mailbox.org> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
- 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.
Marek Vasut [Sun, 28 Dec 2025 19:43:21 +0000 (20:43 +0100)]
Makefile: Make flash.bin target available on i.MX9
The current implementation of flash.bin generation with
CONFIG_SPL_LOAD_IMX_CONTAINER=y requires build of u-boot.cnt
which is i.MX8 specific. Reinstate the i.MX8 check to avoid
this dependency for i.MX9 .
Fill in flash.bin target for i.MX9 into imx specific Makefile.
Fixes: c3587197c0c9 ("Makefile: Make flash.bin target available for all platforms") Signed-off-by: Marek Vasut <marex@nabladev.com>
Brian Ruley [Mon, 29 Dec 2025 10:48:07 +0000 (12:48 +0200)]
video: imx: ipuv3: refactor to use dm-managed state
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 <brian.ruley@gehealthcare.com>
Brian Ruley [Mon, 29 Dec 2025 10:48:02 +0000 (12:48 +0200)]
video: imx: ipuv3: apply clang-format
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 <brian.ruley@gehealthcare.com>
Joseph Guo [Fri, 12 Dec 2025 06:20:20 +0000 (15:20 +0900)]
arm64: dts: add NXP FRDM-IMX91 device tree
Add the device tree files for the FRDM-IMX91 board.
Provide the initial DT support for FRDM-IMX91.
The board devicetree already attempted to upstream, but not been
accepted yet:
https://lore.kernel.org/all/20251114-imx91_frdm-v1-0-e5763bdf9336@nxp.com/
Alice Guo [Tue, 9 Dec 2025 02:19:19 +0000 (10:19 +0800)]
imx8ulp_evk: Switch to use devicetree imported from Linux kernel release
Enable OF_UPSTREAM for i.MX8ULP EVK so that devicetree imported from
Linux kernel release can be used.
If mailbox@29220000 is enabled, gd->arch.ele_dev will be set to this
device for communication with ELE firmware. This is incorrect because
mu@27020000 is the MU used for communication with the ELE firmware. To
prevent misconfiguration, disable mailbox@29220000.
The driver model for watchdog timer is not enabled yet, so disable wdog3
temporarily.
Alice Guo [Tue, 9 Dec 2025 02:19:18 +0000 (10:19 +0800)]
imx8ulp_evk: Move environment variables to .env file
Add board-specific environment variables to imx8ulp_evk.env for better
maintainability. Define bsp_bootcmd in the environment to resolve the
runtime error: "bsp_bootcmd" not defined.
Alice Guo [Tue, 9 Dec 2025 02:19:17 +0000 (10:19 +0800)]
imx8ulp_evk: Convert to standard boot
Replace CONFIG_DISTRO_DEFAULTS with CONFIG_BOOTSTD_FULL to enable the
standard boot framework and use standard boot on i.MX8ULP.
Update CONFIG_BOOTCOMMAND to run bootflow scan before falling back to
board-specific bootcmd, and remove legacy distro boot environment from
imx8ulp_evk.h since bootstd now handles boot targets.
Without the patch a splash screen displays with aliasing-like jagged edges.
Signed-off-by: Sam Meredith <sam@aandtinstruments.com>
[fabio: Put more information into the commit log] Signed-off-by: Fabio Estevam <festevam@gmail.com>
Marek Vasut [Wed, 19 Nov 2025 17:43:53 +0000 (18:43 +0100)]
boot: Warn users about fdt_high=~0 usage
In case the 'fdt_high' environment variable is set to ~0, warn users
about the dangers of the fdt_high usage. This will hopefully lead to
removal of most of the fdt_high ~0 usage over time.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Marek Vasut [Mon, 24 Nov 2025 14:51:01 +0000 (15:51 +0100)]
i2c: Avoid calling dev_read_*() if CONFIG_OF_PLATDATA=y
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 <marek.vasut+renesas@mailbox.org>
Marek Vasut [Mon, 24 Nov 2025 14:51:00 +0000 (15:51 +0100)]
i2c: Inline i2c_chip_of_to_plat() into i2c_child_post_bind()
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 <marek.vasut+renesas@mailbox.org>
Marek Vasut [Fri, 21 Nov 2025 16:17:55 +0000 (17:17 +0100)]
gpio: sandbox: Avoid calling dev_read_*() if CONFIG_OF_PLATDATA=y
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 <marek.vasut+renesas@mailbox.org>
Marek Vasut [Fri, 21 Nov 2025 16:17:37 +0000 (17:17 +0100)]
clk: fixed_rate: Avoid calling dev_read_*() if CONFIG_OF_PLATDATA=y
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 <marek.vasut+renesas@mailbox.org>