]> git.dujemihanovic.xyz Git - u-boot.git/log
u-boot.git
3 months agoboard: phytec: phycore_imx8mp: Add mtd spi partitions
Benjamin Hahn [Mon, 26 Aug 2024 16:49:06 +0000 (18:49 +0200)]
board: phytec: phycore_imx8mp: Add mtd spi partitions

Depending on if a SPI-NOR flash is populated add the mtd partition
table to the device tree. For this we have to also probe the
flash before booting.

Signed-off-by: Benjamin Hahn <B.Hahn@phytec.de>
3 months agoconfigs: phycore-imx8mp_defconfig: Enable SPI NOR flash support
Benjamin Hahn [Mon, 26 Aug 2024 16:49:05 +0000 (18:49 +0200)]
configs: phycore-imx8mp_defconfig: Enable SPI NOR flash support

Enable SPI NOR flash support in U-Boot.

Signed-off-by: Benjamin Hahn <B.Hahn@phytec.de>
3 months agoimx: ele_ahab: Add HUK derivation support
Mathieu Othacehe [Mon, 26 Aug 2024 10:07:07 +0000 (12:07 +0200)]
imx: ele_ahab: Add HUK derivation support

Add a new ahab_derive command that derives the hardware unique key (HUK)
into a 16 or 32 bytes key and stores it at the given address.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
Reviewed-by: Ye Li <ye.li@nxp.com>
3 months agobootstage: Fix unstash of records from SPL
Jonas Karlman [Sat, 3 Aug 2024 12:41:44 +0000 (12:41 +0000)]
bootstage: Fix unstash of records from SPL

The commit b81e31a1e6c5 ("bootstash: Do not provide a default address
for all") changed a bootstage unstash call to bootstage stash, this
has resulted in bootstage records stashed in SPL no longer get unstaged
in U-Boot proper. Fix this by changing back to a unstage call.

Fixes: b81e31a1e6c5 ("bootstash: Do not provide a default address for all")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
3 months agommc: fix signed vs unsigned compare in read check in _spl_load()
Franco Venturi [Wed, 31 Jul 2024 13:09:00 +0000 (09:09 -0400)]
mmc: fix signed vs unsigned compare in read check in _spl_load()

Fix signed vs unsigned compare in read check in _spl_load()

Issue: when info->read() returns a negative value because of an error,
       the comparison of 'read' (signed) with 'sizeof(*header)'
       (unsigned silently converts the negative value into a very
       large unsigned value and the check on the error condition
       always return false, i.e. the error is not detected
Symptoms: if spl_load_image_fat() is unable to find the file 'uImage',
          the SPL phase of the boot process just hangs after displaying
          the following line:
          Trying to boot from MMC1
Fix: cast 'sizeof(*header)' to int so the compare is now between
     signed types
Reference: https://stackoverflow.com/questions/17293749/sizeof-operator-in-if-statement

Signed-off-by: Franco Venturi <fventuri@comcast.net>
Reviewed-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
3 months agogpio: Add G7 Aspeed gpio controller driver
Billy Tsai [Tue, 20 Aug 2024 07:27:36 +0000 (15:27 +0800)]
gpio: Add G7 Aspeed gpio controller driver

In the 7th generation of the SoC from Aspeed, the control logic of the
GPIO controller has been updated to support per-pin control. Each pin now
has its own 32-bit register, allowing for individual control of the pin’s
value, direction, interrupt type, and other settings.

Signed-off-by: Billy Tsai <billy_tsai@aspeedtech.com>
3 months agotools/scripts/Kconfig: Update references from kconfig-language.txt to rst
Hiago De Franco [Mon, 19 Aug 2024 16:24:49 +0000 (13:24 -0300)]
tools/scripts/Kconfig: Update references from kconfig-language.txt to rst

The Linux kernel documentation has transitioned from using
kconfig-language.txt to kconfig-language.rst. Therefore update all
occurrences of kconfig-language.txt.

Signed-off-by: Hiago De Franco <hiago.franco@toradex.com>
3 months agodm: core: Make SPL_DM_SEQ_ALIAS select SPL_STRTO
Gaskell, Oliver [Mon, 19 Aug 2024 09:43:52 +0000 (09:43 +0000)]
dm: core: Make SPL_DM_SEQ_ALIAS select SPL_STRTO

Enabling CONFIG_DM_SEQ_ALIAS enables code which relies on
`trailing_strtol()` - which is only linked in SPL when CONFIG_SPL_STRTO
is enabled.

CONFIG_SPL_STRTO is not enabled by default - to ensure this function is
available in SPL, CONFIG_SPL_DM_SEQ_ALIAS should select
CONFIG_SPL_STRTO.

Signed-off-by: Oliver Gaskell <Oliver.Gaskell@analog.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 months agoarm: dts: nuvoton: add dts support for npcm845 yosemite4
Jim Liu [Mon, 19 Aug 2024 07:24:28 +0000 (15:24 +0800)]
arm: dts: nuvoton: add dts support for npcm845 yosemite4

Signed-off-by: Jim Liu <JJLIU0@nuvoton.com>
3 months agolib: move phdr increment to for loop heading
Maxim Moskalets [Sat, 17 Aug 2024 11:02:22 +0000 (14:02 +0300)]
lib: move phdr increment to for loop heading

Shifting this pointer in the loop will be more logical when working
with the code later, because you can see at a glance what exactly
changes at each iteration. Moreover, the code remains equivalent
because this variable is not used after the loop.

Signed-off-by: Maxim Moskalets <maximmosk4@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 months agoMerge patch series "dm: core: Avoid multiple calls to fdt_parent_offset()"
Tom Rini [Tue, 27 Aug 2024 20:32:54 +0000 (14:32 -0600)]
Merge patch series "dm: core: Avoid multiple calls to fdt_parent_offset()"

Jonas Karlman <jonas@kwiboo.se> says:

Use of fdt_parent_offset() is very expensive as detailed by the function
documentation:

  NOTE: This function is expensive, as it must scan the device tree
  structure from the start to nodeoffset, *twice*.

This series remove multiple calls to fdt_parent_offset() or
ofnode_get_parent() when instead a single call can be made and the
returned value can be reused.

This series help reduce boot time by around:
- ~137ms on a Radxa ROCK Pi 4 (RK3399)
- ~33ms on a Radxa ZERO 3W (RK3566)

3 months agotimer: npcm: Change counter source
Jim Liu [Mon, 29 Jul 2024 09:04:06 +0000 (17:04 +0800)]
timer: npcm: Change counter source

The counter value read from TDR register may not be correct.
Read SECCNT and CNTR25M instead to get the correct timestamp.

Signed-off-by: Jim Liu <JJLIU0@nuvoton.com>
3 months agodm: core: regmap: Avoid multiple calls to ofnode_get_parent()
Jonas Karlman [Sun, 4 Aug 2024 15:05:51 +0000 (15:05 +0000)]
dm: core: regmap: Avoid multiple calls to ofnode_get_parent()

Until a live tree is used in U-Boot proper after relocation, use of
ofnode_get_parent() will trigger a call to the very expensive
fdt_parent_offset(), as detailed by the function documentation:

  NOTE: This function is expensive, as it must scan the device tree
  structure from the start to nodeoffset, *twice*.

Re-use the returned value from a single call instead of having to make
multiple calls for same node.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 months agodm: core: ofnode: Avoid multiple calls to ofnode_get_parent()
Jonas Karlman [Sun, 4 Aug 2024 15:05:50 +0000 (15:05 +0000)]
dm: core: ofnode: Avoid multiple calls to ofnode_get_parent()

Until a live tree is used in U-Boot proper after relocation, use of
ofnode_get_parent() will trigger a call to the very expensive
fdt_parent_offset() as detailed by the function documentation:

  NOTE: This function is expensive, as it must scan the device tree
  structure from the start to nodeoffset, *twice*.

Re-use the returned value from a single call instead of having to make
multiple calls for same node.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 months agodm: core: fdtaddr: Avoid multiple calls to fdt_parent_offset()
Jonas Karlman [Sun, 4 Aug 2024 15:05:49 +0000 (15:05 +0000)]
dm: core: fdtaddr: Avoid multiple calls to fdt_parent_offset()

Use of fdt_parent_offset() is very expensive as detailed by the function
documentation:

  NOTE: This function is expensive, as it must scan the device tree
  structure from the start to nodeoffset, *twice*.

Re-use the returned value from a single call instead of having to make
multiple calls for same nodeoffset.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 months agogpio: npcm: Add SGPIO support for Nuvoton NPCM SoCs
Jim Liu [Mon, 29 Jul 2024 08:51:03 +0000 (16:51 +0800)]
gpio: npcm: Add SGPIO support for Nuvoton NPCM SoCs

Add Nuvoton BMC NPCM7xx/NPCM8xx sgpio driver.
BMC can use this driver to increase 64 GPI pins and 64 GPO pins to use.

Signed-off-by: Jim Liu <JJLIU0@nuvoton.com>
3 months agotest/py: spi: Add tests for SPI flash device
Love Kumar [Wed, 31 Jul 2024 09:24:12 +0000 (14:54 +0530)]
test/py: spi: Add tests for SPI flash device

Add test cases for sf commands to verify various SPI flash operations
such as erase, write and read. It also adds qspi lock unlock cases.
This test relies on boardenv_* configurations to run it for different
SPI flash family such as single SPI, QSPI, and OSPI.

Signed-off-by: Love Kumar <love.kumar@amd.com>
3 months agocmd: bind: Use device sequence instead for driver bind/unbind
Zixun LI [Fri, 2 Aug 2024 09:28:13 +0000 (11:28 +0200)]
cmd: bind: Use device sequence instead for driver bind/unbind

Currently uclass index is used for bind/unbind which ignores alias
sequence numbering. Use device sequence number instead as it's
the number explicitly set in the DT.

Also update documentation to use sequence number.

Signed-off-by: Zixun LI <admin@hifiphile.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 months agodm: core: Show device sequence instead in dm_dump_tree()
Zixun LI [Fri, 2 Aug 2024 09:28:12 +0000 (11:28 +0200)]
dm: core: Show device sequence instead in dm_dump_tree()

Currently uclass index is shown in DM tree dump which ignores alias
sequence numbering. The result could be confusing since these 2 numbers
could be different. Show device sequence number instead as it's more
meaningful.

Also update documentation to use sequence number.

Signed-off-by: Zixun LI <admin@hifiphile.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 months agomtd: nand: raw: omap_gpmc: Check return value of gpmc_nand_init
Vignesh Raghavendra [Wed, 31 Jul 2024 14:58:55 +0000 (20:28 +0530)]
mtd: nand: raw: omap_gpmc: Check return value of gpmc_nand_init

If the function is called with no NAND device attached, then this
function can return error value, proceeding further ignoring the same
can cause system crash. This is seen when "mtd list" is run with no NAND
addon cards connected.

Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Acked-by: Roger Quadros <rogerq@kernel.org>
3 months agoomap3: omap3evm: Migrate to OF_UPSTREAM
Derald D. Woods [Sat, 24 Aug 2024 21:48:22 +0000 (17:48 -0400)]
omap3: omap3evm: Migrate to OF_UPSTREAM

This commit brings the omap3evm inline with the remaining OMAP3XXX variants.

Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
3 months agosandbox: Fix pinmux warnings with non-test devicetrees
Sean Anderson [Fri, 16 Aug 2024 02:38:22 +0000 (22:38 -0400)]
sandbox: Fix pinmux warnings with non-test devicetrees

The sandbox pinmux driver is used in the non-test devicetree as well as
the test one. I didn't realize this when I modified the driver for
tests, and so broke the regular use case (which only resulted in
warnings). First, making the pinmux and the UART group available
pre-relocation to avoid ENODEV errors. Then, convert the pin groups and
functions to the new style, adding onewire group as well.

Fixes: 7f0f1806e3a ("test: pinmux: Add test for pin muxing")
Closes: https://source.denx.de/u-boot/u-boot/-/issues/2
Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 months agoata: sata_rescan must scan for block devices
Heinrich Schuchardt [Wed, 14 Aug 2024 07:10:37 +0000 (09:10 +0200)]
ata: sata_rescan must scan for block devices

A system may have multiple SATA controller. Removing the controller with
the lowest sequence number before probing all SATA controllers makes no
sense.

In sata_rescan we remove all block devices which are children of SATA
controllers. We also have to remove the bootdev devices as they will be
created when scanning for block devices.

After probing all SATA controllers we must scan for block devices otherwise
we end up without any SATA block device.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Tony Dinh <mibodhi@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 months agopci: mediatek: add support for upstream split PCIe node
Christian Marangi [Mon, 12 Aug 2024 12:31:48 +0000 (14:31 +0200)]
pci: mediatek: add support for upstream split PCIe node

Add support for upstream linux split PCIe node.

Upstream linux have an alternative way to declare PCIe nodes that splits
them in dedicated nodes for each line instead of putting them all in one
node.

Detect this by checking if the mediatek,generic-pciecfg node is passed
as it's used to reference the common address for all the PCIe lines.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
3 months agoremoteproc: uclass: Modify uc_pdata->name to use combination of device name and devic...
MD Danish Anwar [Wed, 7 Aug 2024 09:08:29 +0000 (14:38 +0530)]
remoteproc: uclass: Modify uc_pdata->name to use combination of device name and device's parent name

uc_pdata->name is populated from device tree property "remoteproc-name".
For those devcices that don't set "remoteproc-name", uc_pdata->name
falls back to dev->name.

If two devices have same name, this will result into uc_pdata->name not
being unique and rproc_init() will fail.

Fix this by using combination of dev->name and dev->parent->name instead
of using just the dev->name to populate uc_pdata->name.

Signed-off-by: MD Danish Anwar <danishanwar@ti.com>
Reviewed-by: Roger Quadros <rogerq@kernel.org>
Reviewed-by: Andrew Davis <afd@ti.com>
3 months agoata: dwc_ahsata: create boot device
Heinrich Schuchardt [Thu, 8 Aug 2024 07:08:03 +0000 (09:08 +0200)]
ata: dwc_ahsata: create boot device

For each block device we must create a sibling boot device.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
3 months agoMerge patch series "bootstd: Try again to resolve infinite-loop bug"
Tom Rini [Tue, 27 Aug 2024 16:09:11 +0000 (10:09 -0600)]
Merge patch series "bootstd: Try again to resolve infinite-loop bug"

Simon Glass <sjg@chromium.org> says:

This little series tries to resolve a problem found with an earlier
fix.

3 months agoMerge patch series "arch: arm: dts: ti: Add missing fss range"
Tom Rini [Tue, 27 Aug 2024 16:04:34 +0000 (10:04 -0600)]
Merge patch series "arch: arm: dts: ti: Add missing fss range"

Jonathan Humphreys <j-humphreys@ti.com> says:

Upstream DTS added explicit ranges to the fss node. It did not include
the 32 bit memory space needed by the R5 to access OSPI. With the
upstream DTS sync, OSPI boot no longer works.

Adding the missing range here. It is also being added in the upstream DTS,
so after the next upstream DTS sync, these patches can be removed.

Fixes: 5024a96db8e ("Subtree merge tag 'v6.10-dts' of devicetree-rebasing repo [1] into dts/upstream")
3 months agobootstd: Make bootdev_next_prio() continue after failure
Simon Glass [Thu, 15 Aug 2024 20:30:22 +0000 (14:30 -0600)]
bootstd: Make bootdev_next_prio() continue after failure

When a device fails to probe, the next device should be tried, until
either we find a suitable device or run out of devices. A device
should never be tried twice.

When we run out of devices of a particular priority, the hunter should
be used to generate devices of the next priority. Only if all attempts
fail should this function return an error.

Update the function to use the latent 'found' boolean to determine
whether another loop iteration is warranted, rather than setting 'dev'
to NULL, which creates confusion, suggesting that no devices have been
scanned and the whole process is starting from the beginning.

Note that the upcoming bootflow_efi() test is used to test this
behaviour.

Signed-off-by: Simon Glass <sjg@chromium.org>
Fixes: https://source.denx.de/u-boot/custodians/u-boot-dm/-/issues/17
3 months agoRevert "bootdev: avoid infinite probe loop"
Simon Glass [Thu, 15 Aug 2024 20:30:21 +0000 (14:30 -0600)]
Revert "bootdev: avoid infinite probe loop"

This turns out to be insufficient to fix the problem, since when
bootdev_next_prio() exits, the caller has no idea that this really
is the end. Nor is it, since there may be other devices which should
be checked.

The caller iterates which calls iter_incr() which calls
bootdev_next_prio() again, which finds the same device and the loop
continues.

We never did create a test for this[1], which makes it hard to be
sure which problem was fixed.

The original code had the virtue of staying in the loop looking for a
bootdev, so let's go back to that and try to fix this another way.

A future patch will make bootdev_next_prio() continue after failure
which should provide same effect.

This reverts commit 9d92c418acfb7576e12e2bd53fed294bb9543724.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoarch: arm: dts: k3-j721e-r5-sk: Add missing fss range
Jonathan Humphreys [Fri, 9 Aug 2024 23:01:57 +0000 (18:01 -0500)]
arch: arm: dts: k3-j721e-r5-sk: Add missing fss range

Upstream DTS added explicit ranges to the fss node.  It did not include the
32 bit memory space needed by the R5 to access OSPI.  With the upstream DTS
sync, OSPI boot no longer works.

Adding the missing range here. It is also being added in the upstream DTS,
so after the next upstream DTS sync, this patch can be removed.  See
0c0e03ec22 (arm64: dts: ti: k3-j721e: Use exact ranges for FSS node)

Fixes: 5024a96db8e ("Subtree merge tag 'v6.10-dts' of devicetree-rebasing repo [1] into dts/upstream")
Signed-off-by: Jonathan Humphreys <j-humphreys@ti.com>
3 months agoarch: arm: dts: k3-j721e-r5-evm: Add missing fss range
Jonathan Humphreys [Fri, 9 Aug 2024 23:01:56 +0000 (18:01 -0500)]
arch: arm: dts: k3-j721e-r5-evm: Add missing fss range

Upstream DTS added explicit ranges to the fss node.  It did not include the
32 bit memory space needed by the R5 to access OSPI.  With the upstream DTS
sync, OSPI boot no longer works.

Adding the missing range here. It is also being added in the upstream DTS,
so after the next upstream DTS sync, this patch can be removed.  See
0c0e03ec22 (arm64: dts: ti: k3-j721e: Use exact ranges for FSS node)

Fixes: 5024a96db8e ("Subtree merge tag 'v6.10-dts' of devicetree-rebasing repo [1] into dts/upstream")
Signed-off-by: Jonathan Humphreys <j-humphreys@ti.com>
3 months agoarch: arm: dts: k3-j7200-r5-evm: Add missing fss range
Jonathan Humphreys [Fri, 9 Aug 2024 23:01:55 +0000 (18:01 -0500)]
arch: arm: dts: k3-j7200-r5-evm: Add missing fss range

Upstream DTS added explicit ranges to the fss node.  It did not include the
32 bit memory space needed by the R5 to access OSPI.  With the upstream DTS
sync, OSPI boot no longer works.

Adding the missing range here. It is also being added in the upstream DTS,
so after the next upstream DTS sync, this patch can be removed. See
f00e626085 (arm64: dts: ti: k3-j7200: Use exact ranges for FSS node)

Fixes: 5024a96db8e ("Subtree merge tag 'v6.10-dts' of devicetree-rebasing repo [1] into dts/upstream")
Signed-off-by: Jonathan Humphreys <j-humphreys@ti.com>
Reviewed-by: Aniket Limaye <a-limaye@ti.com>
3 months agoarch: arm: dts: k3-am69-r5-sk: Add missing fss range
Jonathan Humphreys [Fri, 9 Aug 2024 23:01:54 +0000 (18:01 -0500)]
arch: arm: dts: k3-am69-r5-sk: Add missing fss range

Upstream DTS added explicit ranges to the fss node.  It did not include the
32 bit memory space needed by the R5 to access OSPI.  With the upstream DTS
sync, OSPI boot no longer works.

Adding the missing range here. It is also being added in the upstream DTS,
so after the next upstream DTS sync, this patch can be removed. See
f062a015f4 (arm64: dts: ti: k3-j784s4: Use exact ranges for FSS node)

Fixes: 5024a96db8e ("Subtree merge tag 'v6.10-dts' of devicetree-rebasing repo [1] into dts/upstream")
Signed-off-by: Jonathan Humphreys <j-humphreys@ti.com>
3 months agoarch: arm: dts: k3-j784s4-r5-evm: Add missing fss range
Jonathan Humphreys [Fri, 9 Aug 2024 23:01:53 +0000 (18:01 -0500)]
arch: arm: dts: k3-j784s4-r5-evm: Add missing fss range

Upstream DTS added explicit ranges to the fss node.  It did not include the
32 bit memory space needed by the R5 to access OSPI.  With the upstream DTS
sync, OSPI boot no longer works.

Adding the missing range here. It is also being added in the upstream DTS,
so after the next upstream DTS sync, this patch can be removed. See
f062a015f4 (arm64: dts: ti: k3-j784s4: Use exact ranges for FSS node)

Fixes: 5024a96db8e ("Subtree merge tag 'v6.10-dts' of devicetree-rebasing repo [1] into dts/upstream")
Signed-off-by: Jonathan Humphreys <j-humphreys@ti.com>
Reviewed-by: Andrew Davis <afd@ti.com>
3 months agoMerge patch series "Tidy up console recording in tests"
Tom Rini [Tue, 27 Aug 2024 00:52:18 +0000 (18:52 -0600)]
Merge patch series "Tidy up console recording in tests"

Simon Glass <sjg@chromium.org> says:

This series started as a small fix for checking for an empty line,
but in the process several other problems were found and fixed:

- fix tests which use console recording but don't set the flag
- drop unnecessary resetting of the console in tests
- drop unnecessary blank line before MMC output
- update the docs a little
- fix buildman test failure on newer Pythons
- a few other minor things

This series also renames the confusing flag names, so that they are
easier to remember - just a UTF_ (unit-test flags) prefix.

3 months agodoc: Add a few notes about how to use console checking
Simon Glass [Thu, 22 Aug 2024 13:58:04 +0000 (07:58 -0600)]
doc: Add a few notes about how to use console checking

Tidy up the existing docs in line with current conventions.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: Tidy up checking for console end
Simon Glass [Thu, 22 Aug 2024 13:58:03 +0000 (07:58 -0600)]
test: Tidy up checking for console end

Use the ut_assert_console_end() function provided, rather than doing it
separately.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: Use UTF_CONSOLE in remaining tests
Simon Glass [Thu, 22 Aug 2024 13:58:02 +0000 (07:58 -0600)]
test: Use UTF_CONSOLE in remaining tests

Set this flag rather than doing things manually in the test.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: log: Use UTF_CONSOLE in tests
Simon Glass [Thu, 22 Aug 2024 13:58:01 +0000 (07:58 -0600)]
test: log: Use UTF_CONSOLE in tests

Set this flag rather than doing things manually in the test.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: hush: Use UTF_CONSOLE in tests
Simon Glass [Thu, 22 Aug 2024 13:58:00 +0000 (07:58 -0600)]
test: hush: Use UTF_CONSOLE in tests

Set this flag rather than doing things manually in the test.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
3 months agotest: dm: Use UTF_CONSOLE in tests
Simon Glass [Thu, 22 Aug 2024 13:57:59 +0000 (07:57 -0600)]
test: dm: Use UTF_CONSOLE in tests

Set this flag rather than doing things manually in the test.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: cmd: Drop unnecessary console_record_reset_enable()
Simon Glass [Thu, 22 Aug 2024 13:57:58 +0000 (07:57 -0600)]
test: cmd: Drop unnecessary console_record_reset_enable()

It is seldom necessary to call this function. Drop its use in the
command tests.

Add a few extra checks to the wget test so that resetting is not
needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: cmd: Use UTF_CONSOLE in tests
Simon Glass [Thu, 22 Aug 2024 13:57:57 +0000 (07:57 -0600)]
test: cmd: Use UTF_CONSOLE in tests

Set this flag rather than doing things manually in the test.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: fdt: Move common code into the setup functions
Simon Glass [Thu, 22 Aug 2024 13:57:56 +0000 (07:57 -0600)]
test: fdt: Move common code into the setup functions

Quite a lot of tests have the same two lines of code at the start. Move
this into the two setup functions to reduce redundancy.

Add a line to check the output from set_working_fdt_addr() since this is
always emitted.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: fdt: Check internal-function return values
Simon Glass [Thu, 22 Aug 2024 13:57:55 +0000 (07:57 -0600)]
test: fdt: Check internal-function return values

Some functions are using asserts but the result of the functions
themselves is not checked. This means that if a test fails, the result
is not noticed until later, which can be confusing to debug.

Add the missing asserts.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: boot: Use UTF_CONSOLE in tests
Simon Glass [Thu, 22 Aug 2024 13:57:54 +0000 (07:57 -0600)]
test: boot: Use UTF_CONSOLE in tests

Set this flag rather than doing things manually in the test.

Drop unnecessary calls to console_record_reset_enable()

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
3 months agotest: bloblist: Use UTF_CONSOLE in tests
Simon Glass [Thu, 22 Aug 2024 13:57:53 +0000 (07:57 -0600)]
test: bloblist: Use UTF_CONSOLE in tests

Set this flag rather than doing things manually in the test.

Drop the code which is now unnecessary.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: Update NAND test to avoid extra macros
Simon Glass [Thu, 22 Aug 2024 13:57:52 +0000 (07:57 -0600)]
test: Update NAND test to avoid extra macros

Write out the tests in full to allow the test to be found more easily
when there is a failure. We could use a single test function with a
for() loop but this would stop at the first failure, and some variations
might while other pass.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agommc: Drop the blank line before accesses
Simon Glass [Thu, 22 Aug 2024 13:57:51 +0000 (07:57 -0600)]
mmc: Drop the blank line before accesses

Several mmc subcommand print a blank line before starting and after
finishing. It isn't necessary to do both, so drop the first one.

It is questionable whether these command should produce any output at
all, but leave it for now.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: Rename UTF_CONSOLE_REC to UTF_CONSOLE
Simon Glass [Thu, 22 Aug 2024 13:57:50 +0000 (07:57 -0600)]
test: Rename UTF_CONSOLE_REC to UTF_CONSOLE

The _REC suffix doesn't add much. Really what we want to know is whether
the test uses the console, so rename this flag.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
3 months agotest: Drop the blank line before test macros
Simon Glass [Thu, 22 Aug 2024 13:57:49 +0000 (07:57 -0600)]
test: Drop the blank line before test macros

Most tests don't have this. It helps to keep the test declaration
clearly associated with the function it relates to, rather than the next
one in the file. Remove the extra blank line and mention this in the
docs.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: Rename unit-test flags
Simon Glass [Thu, 22 Aug 2024 13:57:48 +0000 (07:57 -0600)]
test: Rename unit-test flags

The UT_TESTF_ macros read as 'unit test test flags' which is not right.
Rename to UTF ('unit test flags').

This has the benefit of being shorter, which helps keep UNIT_TEST()
declarations on a single line.

Give the enum a name and reference it from the UNIT_TEST() macros while
we are here.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agotest: Fail when an empty line is expected but not present
Simon Glass [Thu, 22 Aug 2024 13:57:47 +0000 (07:57 -0600)]
test: Fail when an empty line is expected but not present

The existing implementation of ut_assert_nextline_empty() cannot
distinguish between an empty line and no line at all. It can in fact be
called at the end of the recorded output and will happily return
success.

Adjust the logic so that this condition is detected. Show a failure
message in this case.

Fix the one test which falls foul of this fix.

Signed-off-by: Simon Glass <sjg@chromium.org>
Fixes: 400175b0a7d ("test: Add a way to check each line of console...")
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
3 months agobuildman: Make test_process_limit handle time.monotonic()
Simon Glass [Thu, 22 Aug 2024 13:57:46 +0000 (07:57 -0600)]
buildman: Make test_process_limit handle time.monotonic()

Newer versions of filelock use time.monotonic() instead of time.time().
Update the test the handle this.

It would be better if filelock had support for writing unit tests which
use locking.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoMerge patch series "global_data: Reduce size of struct global_data"
Tom Rini [Mon, 26 Aug 2024 20:06:16 +0000 (14:06 -0600)]
Merge patch series "global_data: Reduce size of struct global_data"

Simon Glass <sjg@chromium.org> says:

The global data structure has grown quite a lot over the years, being
the best place to put an important pointer or something that must be
accessed before and after relocation.

This series attempts to reduce the size a little, by moving some things
out and shrinking and aligning some fields.

Some fields are needed during init but not afterwards. To deal with this
a new 'boardf' structure is created, which sits on the stack and is only
present during board_init_f(). It is possible that more fields could
move to this struct, but for now only 4 are moved.

An assumption is made that an int is 32-bits wide on all architectures,
which seems to be true, but maintainers should be able to confirm.

Mostly the code-size impact is neutral, but the patch
'Use less space for environment fields' does increase U-Boot's size by
about 30 bytes on aarch64.

For firefly-rk3399 (64-bit) the size of global reduces from 456 to 368
bytes. For SPL it reduces from 416 to 272 bytes.

There are other things which could be attempted, for example:
- Using hlist instead of list for some lists
- Checking that only necessary fields are present in SPL

3 months agodoc: Add some guidelines about global data
Simon Glass [Wed, 21 Aug 2024 16:19:27 +0000 (10:19 -0600)]
doc: Add some guidelines about global data

Update the documentation to provide a bit more information about how to
use global data.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agodoc: Move generic-board documentation into rst
Simon Glass [Wed, 21 Aug 2024 16:19:26 +0000 (10:19 -0600)]
doc: Move generic-board documentation into rst

This information is useful for people looking at how U-Boot has changed
over the years and the design decisions which led to it. Move it into
doc/ in an 'historical' section.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Remove environment members if not used
Simon Glass [Wed, 21 Aug 2024 16:19:25 +0000 (10:19 -0600)]
global_data: Remove environment members if not used

If the environment is not enabled we don't need these fields in
global_data. Make them conditional.

Make these fields conditional. Move env_buf up one so it can share
an #ifdef.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Remove jump table in SPL
Simon Glass [Wed, 21 Aug 2024 16:19:24 +0000 (10:19 -0600)]
global_data: Remove jump table in SPL

SPL builds don't use the jump table since they cannot run apps. Drop
it, moving it together with boardf.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Move pointer members together
Simon Glass [Wed, 21 Aug 2024 16:19:23 +0000 (10:19 -0600)]
global_data: Move pointer members together

Collect the pointer members near the top of global_data to help with
alignment.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Move ulong fields together
Simon Glass [Wed, 21 Aug 2024 16:19:22 +0000 (10:19 -0600)]
global_data: Move ulong fields together

Move all the always-present ulong fields next to the others at the top
of global_data

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Put phys_addr fields near the top
Simon Glass [Wed, 21 Aug 2024 16:19:21 +0000 (10:19 -0600)]
global_data: Put phys_addr fields near the top

Put these fields near the top and together, since they have the same
alignment.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Move env_addr field higher
Simon Glass [Wed, 21 Aug 2024 16:19:20 +0000 (10:19 -0600)]
global_data: Move env_addr field higher

Move this field to be with others of the same alignment.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Move baud_rate field lower
Simon Glass [Wed, 21 Aug 2024 16:19:19 +0000 (10:19 -0600)]
global_data: Move baud_rate field lower

Move this field to be with others of the same alignment.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Reduce size of early-malloc vars
Simon Glass [Fri, 23 Aug 2024 20:27:04 +0000 (14:27 -0600)]
global_data: Reduce size of early-malloc vars

The early malloc region is normally quite small and is certainly less
than 4GB, so use a 32-bit value for the limit and pointer. Update the
comments for clarity while we are here.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: log: Reorder and shrink fields
Simon Glass [Wed, 21 Aug 2024 16:19:17 +0000 (10:19 -0600)]
global_data: log: Reorder and shrink fields

Some of the logging fields are larger than they need to be. Shrink them
and adjust the ordering to improve alignment.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Reduce the size of mon_len
Simon Glass [Wed, 21 Aug 2024 16:19:16 +0000 (10:19 -0600)]
global_data: Reduce the size of mon_len

This is the length of the U-Boot binary, which is typically 200-800KB
and certainly not larger than 4GB. Use a 32-bit value to save space in
global_data and move it up to be with fields of the same alignment.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Reduce the size of bus_clk and mem_clk
Simon Glass [Wed, 21 Aug 2024 16:19:15 +0000 (10:19 -0600)]
global_data: Reduce the size of bus_clk and mem_clk

The bus clock and memory clock are unlikely to go above 4GHz for now, so
reduce the field size to 32 bits.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Collect common fields at the top
Simon Glass [Wed, 21 Aug 2024 16:19:14 +0000 (10:19 -0600)]
global_data: Collect common fields at the top

Move all the fields which are always present to the top of the struct,
so we can potentially save some space by taking note of alignment.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Drop spl_handoff
Simon Glass [Wed, 21 Aug 2024 16:19:13 +0000 (10:19 -0600)]
global_data: Drop spl_handoff

Provide a function to locate this information, rather than doing it
automatically on startup, to save space in global_data.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoboard_f: Move new_bloblist to boardf
Simon Glass [Wed, 21 Aug 2024 16:19:12 +0000 (10:19 -0600)]
board_f: Move new_bloblist to boardf

This value is only used before relocation. Move it to the new boardf
struct.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoboard_f: Move new_bootstage to boardf
Simon Glass [Wed, 21 Aug 2024 16:19:11 +0000 (10:19 -0600)]
board_f: Move new_bootstage to boardf

This value is only used before relocation. Move it to the new boardf
struct.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoboard_f: Move fdt_size to board
Simon Glass [Wed, 21 Aug 2024 16:19:10 +0000 (10:19 -0600)]
board_f: Move fdt_size to board

This value is only really used before relocation. There is not much use
to showing its value in bdinfo, so drop it. Move it to the new boardf
struct.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoboard_f: Add a new struct to hold pre-relocation info
Simon Glass [Wed, 21 Aug 2024 16:19:09 +0000 (10:19 -0600)]
board_f: Add a new struct to hold pre-relocation info

Quite a few of the members of struct global_data are only used before
reloction, or have little meaning afterwards, yet they hang around in
struct global_data for the lifetime of U-Boot. This uses up precious
pre-relocation SRAM on many boards.

To help with this, start a new struct which exists only before
relocation. Move new_fdt into this new struct. Drop the display of it
in the 'bdinfo' command as it is probably not very useful.

Note that the field does not exist in SPL builds.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Use less space for environment fields
Simon Glass [Wed, 21 Aug 2024 16:19:08 +0000 (10:19 -0600)]
global_data: Use less space for environment fields

Use shorter types for some of these fields to save space. Reorder to put
fields with like alignment together.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Drop pci_bootdelay
Simon Glass [Wed, 21 Aug 2024 16:19:07 +0000 (10:19 -0600)]
global_data: Drop pci_bootdelay

This is not used. Drop the field and the environment code which uses it.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Drop global_data hose
Simon Glass [Wed, 21 Aug 2024 16:19:06 +0000 (10:19 -0600)]
global_data: Drop global_data hose

This is set on one x86 boards, but is not used anymore. Drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Remove pci_ram_top
Simon Glass [Wed, 21 Aug 2024 16:19:05 +0000 (10:19 -0600)]
global_data: Remove pci_ram_top

This field is set but not used. Drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Convert have_console into a flag
Simon Glass [Wed, 21 Aug 2024 16:19:04 +0000 (10:19 -0600)]
global_data: Convert have_console into a flag

We don't need a full word for this boolean value. Convert it into a flag
to save space in global_data.

Reviewed-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Drop fb_base
Simon Glass [Wed, 21 Aug 2024 16:19:03 +0000 (10:19 -0600)]
global_data: Drop fb_base

This value mirrors information recorded by driver model video drivers,
so can be removed to save space. Drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agovideo: Avoid setting global_data fb_base in video setup
Simon Glass [Wed, 21 Aug 2024 16:19:02 +0000 (10:19 -0600)]
video: Avoid setting global_data fb_base in video setup

This field is not used, so don't set it.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agovideo: Avoid setting global_data fb_base from SPL handoff
Simon Glass [Wed, 21 Aug 2024 16:19:01 +0000 (10:19 -0600)]
video: Avoid setting global_data fb_base from SPL handoff

This field is not used, so don't set it.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agozynqmp: Avoid setting the framebuffer address
Simon Glass [Wed, 21 Aug 2024 16:19:00 +0000 (10:19 -0600)]
zynqmp: Avoid setting the framebuffer address

This is handled by driver model so this driver should not be setting the
framebuffer address. Drop the assignment.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoarm: ronetix: Avoid accessing global_data fb_base
Simon Glass [Wed, 21 Aug 2024 16:18:59 +0000 (10:18 -0600)]
arm: ronetix: Avoid accessing global_data fb_base

Use the new video function to get the framebuffer base.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoarm: friendlyarm: Avoid accessing global_data fb_base
Simon Glass [Wed, 21 Aug 2024 16:18:58 +0000 (10:18 -0600)]
arm: friendlyarm: Avoid accessing global_data fb_base

Use the new video function to get the framebuffer base.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agovideo: mxs: Avoid setting global_data fb_base
Simon Glass [Wed, 21 Aug 2024 16:18:57 +0000 (10:18 -0600)]
video: mxs: Avoid setting global_data fb_base

This is not used, so don't set it.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agovideo: mxc: Avoid setting global_data fb_base
Simon Glass [Wed, 21 Aug 2024 16:18:56 +0000 (10:18 -0600)]
video: mxc: Avoid setting global_data fb_base

This is not used, so don't set it.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agovideo: Add a function to obtain the framebuffer address
Simon Glass [Wed, 21 Aug 2024 16:18:55 +0000 (10:18 -0600)]
video: Add a function to obtain the framebuffer address

Add a new function which returns the framebuffer address of the first
video device. This will allow the global_data field top be dropped.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agox86: Drop use of global_data fb_base
Simon Glass [Wed, 21 Aug 2024 16:18:54 +0000 (10:18 -0600)]
x86: Drop use of global_data fb_base

This value is set by not used on x86 so there is no point in setting it.
Drop the assignment.

Signed-off-by: Simon Glass <sjg@chromium.org>
3 months agoglobal_data: Move pci_clk to m68k and powerpc
Simon Glass [Wed, 21 Aug 2024 16:18:53 +0000 (10:18 -0600)]
global_data: Move pci_clk to m68k and powerpc

Only m68k and powerpc use this field, so move it to the arch-specific
info, to reduce the size for other archs.

Signed-off-by: Simon Glass <sjg@chromium.org>
4 months agoMerge patch series "test/overlay: Make this depend on SANDBOX"
Tom Rini [Fri, 23 Aug 2024 21:59:44 +0000 (15:59 -0600)]
Merge patch series "test/overlay: Make this depend on SANDBOX"

Tom Rini <trini@konsulko.com> says:

Update a few things so that CONFIG_UNIT_TEST will compile for more
hardware platforms.

4 months agotest/cmd: Move wget test to under a sandbox guard
Tom Rini [Fri, 16 Aug 2024 03:49:05 +0000 (21:49 -0600)]
test/cmd: Move wget test to under a sandbox guard

This test is sandbox-centric, so guard it so.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
4 months agotest/boot: Make BOOTSTD tests depend on UT_BOOTSTD
Tom Rini [Fri, 16 Aug 2024 03:49:04 +0000 (21:49 -0600)]
test/boot: Make BOOTSTD tests depend on UT_BOOTSTD

While we have a symbol for controlling if we will be testing BOOTSTD or
not, and it depends on SANDBOX, we do not control the building of
test/boot/ content correctly. Guard the current bootstd tests with
a check for UT_BOOTSTD and leave the measurement test available.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
4 months agotest/overlay: Make this depend on SANDBOX
Tom Rini [Fri, 16 Aug 2024 03:49:03 +0000 (21:49 -0600)]
test/overlay: Make this depend on SANDBOX

As the overlays are sandbox specific, mark the whole test as depending
on sandbox.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
4 months agoMerge patch series "spl: mmc: Some tweaks for SPL, particularly with MMC"
Tom Rini [Fri, 23 Aug 2024 21:59:03 +0000 (15:59 -0600)]
Merge patch series "spl: mmc: Some tweaks for SPL, particularly with MMC"

Simon Glass <sjg@chromium.org> says:

This series includes various minor fixes and tweaks found when trying
to reduce the size of MMC code in SPL.

4 months agoblk: Correct comment for blk_get_devnum_by_uclass_idname()
Simon Glass [Thu, 22 Aug 2024 13:55:03 +0000 (07:55 -0600)]
blk: Correct comment for blk_get_devnum_by_uclass_idname()

Update the comment to match the function. Fix the indentation while we
are here.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
4 months agospl: Create a function to init spl_load_info
Simon Glass [Thu, 22 Aug 2024 13:55:02 +0000 (07:55 -0600)]
spl: Create a function to init spl_load_info

Rather than having every caller set this up individually, create a
common init function. This allows new fields to be added without the
risk of them being left uninited.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com>
4 months agospl: Use unified inline functions for spl_load_info
Simon Glass [Thu, 22 Aug 2024 13:55:01 +0000 (07:55 -0600)]
spl: Use unified inline functions for spl_load_info

Rather than declaring completely separate functions, put the code for
each case into the same function. This makes it easier to read.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
4 months agospl: mmc: Try to clean up raw-mode options
Simon Glass [Thu, 22 Aug 2024 13:55:00 +0000 (07:55 -0600)]
spl: mmc: Try to clean up raw-mode options

Make the raw-mode options depend on SPL_SYS_MMCSD_RAW_MODE in a more
direct way. This makes it easier to understand the options with
'make menuconfig'.

There are three different ways of specifying the offset:

- sector offset
- partition number
- partition type

So make these a choice, so it is more obvious what is going on.

Update existing boards to enable SPL_SYS_MMCSD_RAW_MODE where needed.

Reviewed-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Simon Glass <sjg@chromium.org>