]> git.dujemihanovic.xyz Git - u-boot.git/log
u-boot.git
2 months agoexpo: Add forward declaration for udevice to cedit
Simon Glass [Mon, 14 Oct 2024 22:32:03 +0000 (16:32 -0600)]
expo: Add forward declaration for udevice to cedit

Some files may include this header file without first including dm.h
so add a forward declaration.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agoexpo: Drop scene_title_set()
Simon Glass [Mon, 14 Oct 2024 22:32:02 +0000 (16:32 -0600)]
expo: Drop scene_title_set()

This function is really just an assignment, so serves no useful
purpose. Drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agoexpo: Drop unneceesary calls to expo_str()
Simon Glass [Mon, 14 Oct 2024 22:32:01 +0000 (16:32 -0600)]
expo: Drop unneceesary calls to expo_str()

The scene_txt_str() function calls expo_str() so there is no need to
call it beforehand. Drop this unnecessary code.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agoexpo: Support menu-item values in cedit
Simon Glass [Mon, 14 Oct 2024 22:32:00 +0000 (16:32 -0600)]
expo: Support menu-item values in cedit

Update the cedit read/write functions to support menu items with
values.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agoexpo: Add a little more cedit CMOS logging
Simon Glass [Mon, 14 Oct 2024 22:31:59 +0000 (16:31 -0600)]
expo: Add a little more cedit CMOS logging

Add some more logging in the CMOS read/write code. Tidy up a few
comments while we are here.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agoexpo: Allow menu items to have values
Simon Glass [Mon, 14 Oct 2024 22:31:58 +0000 (16:31 -0600)]
expo: Allow menu items to have values

At present menu items are stored according to their sequence number in
the menu. In some cases we may want to have holes in that sequence, or
not use a sequence at all.

Add a new 'value' property for menu items. This will be used for
reading and writing, if present. If there is no 'value' property, then
the normal sequence number will be used instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agoexpo: Use standard numbering for save and discard
Simon Glass [Mon, 14 Oct 2024 22:31:57 +0000 (16:31 -0600)]
expo: Use standard numbering for save and discard

Set aside some expo IDs for 'save' and 'discard' buttons. This avoids
needing to store the IDs for these. Adjust the documentation and expo
tool for the new EXPOID_BASE_ID value.

Ignore these objects when saving and loading the cedit, since they do
not contain real data.

Adjust 'cedit run' to return failure when the user exits the expo
without saving. Update the test for this change as well.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agoexpo: Set the initial next_id to 1
Simon Glass [Mon, 14 Oct 2024 22:31:56 +0000 (16:31 -0600)]
expo: Set the initial next_id to 1

If expo_set_dynamic_start() is never called, the first scene created
will have an ID of 0, which is invalid. Correct this by setting a
default value.

Add a test to check this.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agoexpo: Place menu items to the right of all labels
Simon Glass [Mon, 14 Oct 2024 22:31:55 +0000 (16:31 -0600)]
expo: Place menu items to the right of all labels

At present a fixed position is used for menu items, 200 pixels to the
right of the left side of the labels. This means that a menu item with
a very long label may overlap the items.

It seems better to calculate the maximum label width and then place the
items to the right of all of them.

To implement this, add a new struct to containing arrangement
information. Calculate it before doing the actual arrangement. Add a
new style item which sets the amount of space from the right side of
the labels to left side of the items.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agovideo: Avoid starting a new line to close to the bottom
Simon Glass [Mon, 14 Oct 2024 22:31:54 +0000 (16:31 -0600)]
video: Avoid starting a new line to close to the bottom

When starting a new text line, an assumption is made that the current
vertical position is a multiple of the character height. When this is
not true, characters can be written after the end of the framebuffer.

This can causes crashes and strange errors from QEMU.

Adjust the scrolling check when processing a newline character, to
avoid any problems.

Add some comments to make things a little clearer.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agovideo: Add a dark-grey console colour
Simon Glass [Mon, 14 Oct 2024 22:31:53 +0000 (16:31 -0600)]
video: Add a dark-grey console colour

This is useful for highlighting something with a black background, as
is needed with cedit when using a white-on-black console. Add this as
a new colour.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agosandbox: dts: Add missing sandbox, emul phandle to sandbox-pmic
Marek Vasut [Sat, 5 Oct 2024 14:33:37 +0000 (16:33 +0200)]
sandbox: dts: Add missing sandbox, emul phandle to sandbox-pmic

This phandle was missing in the sandbox DT, add it, otherwise sandbox-i2c
driver cannot look up the emulator via i2c_emul_find(). This fixes the
following i2c_emul_find() error:

"
$ ./u-boot -Dc ""
...
       i2c_emul_find() No emulators for device 'sandbox_pmic'
  sandbox_pmic_write() write error to device: 0000000018c568d0 register: 0x0!
       out_set_value() PMIC write failed: -5
       i2c_emul_find() No emulators for device 'sandbox_pmic'
  sandbox_pmic_write() write error to device: 0000000018c568d0 register: 0x0!
       out_set_value() PMIC write failed: -5
...
"

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Heiko Schocher <hs@denx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agobinman: Add a tutorial on resolving test-coverage bugs
Simon Glass [Mon, 30 Sep 2024 18:51:38 +0000 (12:51 -0600)]
binman: Add a tutorial on resolving test-coverage bugs

Provide a short description of how tests work, why they are so critical
and how to resolve gaps in Binman's test coverage.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2 months agobinman: Support getting test-coverage on just one test
Simon Glass [Mon, 30 Sep 2024 18:51:37 +0000 (12:51 -0600)]
binman: Support getting test-coverage on just one test

Pass the arguments through to test_util so that a single test can be
used.

Update the docs and add some missing backquotes in the same section.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agou_boot_pylib: Support running coverage on selected functions
Simon Glass [Mon, 30 Sep 2024 18:51:36 +0000 (12:51 -0600)]
u_boot_pylib: Support running coverage on selected functions

At present run_test_coverage() assumes you want code coverage for the
entire code base. This is the normal situation, but sometimes it is
useful to see the coverage provided by just a single test. Add support
for this.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agosandbox_spl: Restrict use of UPL when not enabled
Simon Glass [Wed, 25 Sep 2024 10:44:53 +0000 (12:44 +0200)]
sandbox_spl: Restrict use of UPL when not enabled

With sandbox_spl we want to use the file-based boot in CI, so that this
flow is tested. The recent UPL change enabled booting via that method,
thus overriding the file-based boot.

Correct this by using UPL only when the --upl flag is given.

Signed-off-by: Simon Glass <sjg@chromium.org>
Fixes: 91fde8e1764 ("sandbox: Add an SPL loader for UPL")
2 months agobuildman: Correct some warnings about regex strings
Simon Glass [Sat, 21 Sep 2024 17:57:57 +0000 (19:57 +0200)]
buildman: Correct some warnings about regex strings

With Python 3.12 some warnings have cropped up. Fix them.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agobinman: implement signing FIT images during image build
Alexander Kochetkov [Mon, 16 Sep 2024 08:24:46 +0000 (11:24 +0300)]
binman: implement signing FIT images during image build

The patch implement new property 'fit,sign' that can be declared
at the top-level 'fit' node. If that option is declared, fit tryies
to detect private keys directory among binman include directories.
That directory than passed to mkimage using '-k' flag and that enable
signing of FIT.

Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Renumbered files, moved new tests to end:
Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agoimage-host: fix 'unknown error' error message
Alexander Kochetkov [Mon, 16 Sep 2024 08:24:45 +0000 (11:24 +0300)]
image-host: fix 'unknown error' error message

Fix error message like this:
Can't add verification data for node 'fdt-1' (<unknown error>)

We get unknown error because we decode error as fdt error
but actually it is system error.

Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agobinman: fix passing loadables to mkimage on first run
Alexander Kochetkov [Mon, 16 Sep 2024 08:24:44 +0000 (11:24 +0300)]
binman: fix passing loadables to mkimage on first run

FIT use mkimage from BuildSectionData() to build FIT entry contents.
BuildSectionData() get called several times during building FIT image.

Currently when fit inserts loadables, it use self._loadables property that
contain loadables computed during previuos BuildSectionData() invocation.
So for the first run it use empty list and pass no loadables to mkimage.

That makes problem for adding signature to FIT image because mkimage
fails to add signature and aborts building FIT if no loadables provided.

The patch fixes described behaviour in a way that BuildSectionData() uses
recently calculated loadables value, not previosly calculated.

Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agobootstd: Avoid calling unavailable block functions
Simon Glass [Sun, 1 Sep 2024 22:27:28 +0000 (16:27 -0600)]
bootstd: Avoid calling unavailable block functions

When BLK is not enabled but BOOTSTD is, some features of standard boot
become unavailable. Add a check for this in the only site that is
currently apparent.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agoblk: Make functions available unconditionally
Simon Glass [Sun, 1 Sep 2024 22:27:27 +0000 (16:27 -0600)]
blk: Make functions available unconditionally

Some boards still don't enable BLK but we want to be able to at least
compile the code which relies on this. For example, bootstd includes
calls to blk_...() functions, albeit with a check for BLK so that the
code is eliminated by the compiler.

Reduce the scope of the BLK #ifdef to help with this.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agox86: coreboot: Enable receiving timestamps from coreboot
Simon Glass [Wed, 28 Aug 2024 20:13:55 +0000 (14:13 -0600)]
x86: coreboot: Enable receiving timestamps from coreboot

Bring this information into bootstage.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agox86: coreboot: Add timestamps from coreboot to bootstage
Simon Glass [Wed, 28 Aug 2024 20:13:54 +0000 (14:13 -0600)]
x86: coreboot: Add timestamps from coreboot to bootstage

Receiving timestamps from coreboot was unceremoniously dropped some time
ago. Add it back.

Signed-off-by: Simon Glass <sjg@chromium.org>
Fixes: 8ad01ce36f7 ("x86: Remove x86 specific GD flags as they are...")
2 months agox86: coreboot: Update the timestamp code to use sysinfo
Simon Glass [Wed, 28 Aug 2024 20:13:53 +0000 (14:13 -0600)]
x86: coreboot: Update the timestamp code to use sysinfo

Rather than using a special variable, get the timestamp info from the
coreboot sysinfo struct. Return a proper error as well.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agox86: Add msr command
Simon Glass [Wed, 28 Aug 2024 01:44:29 +0000 (19:44 -0600)]
x86: Add msr command

It is useful to obtain the results of MSR queries as well as to update
MSR registers, so add a command these tasks.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agox86: Add a cpuid command
Simon Glass [Wed, 28 Aug 2024 01:44:28 +0000 (19:44 -0600)]
x86: Add a cpuid command

It is useful to obtain the results of cpuid queries, so add a command
for this.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agox86: Sync up tsc_timer with Linux
Simon Glass [Wed, 28 Aug 2024 01:44:27 +0000 (19:44 -0600)]
x86: Sync up tsc_timer with Linux

Since we are using the code from Linux, update it to the newer version
in v6.11

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agox86: Avoid timer-clock overflow
Simon Glass [Wed, 28 Aug 2024 01:44:26 +0000 (19:44 -0600)]
x86: Avoid timer-clock overflow

When the clock speed is above about 4GHz, e.g. on modern PC hardware,
the timer overflows, resulting in a much lower frequency than expected.
Deal with this by capping the clock speed.

It would be possible to move to a 64-bit value for the clock, but that
is a pain to deal with. A better approach might be to express the clock
in MHz but that is left for later consideration.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agox86: Ensure the CPU identity exists for timer init
Simon Glass [Wed, 28 Aug 2024 01:44:25 +0000 (19:44 -0600)]
x86: Ensure the CPU identity exists for timer init

When bootstage is used the timer can be inited before the CPU identity
is set up, resulting in the checks for the vendor not working.

Add a special call to work around this.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agox86: Show the CPU vendor in bdinfo
Simon Glass [Wed, 28 Aug 2024 01:44:24 +0000 (19:44 -0600)]
x86: Show the CPU vendor in bdinfo

Refactor the cpu code and use it to show the CPU vendor, e.g.
AuthenticAMD or GenuineIntel

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agovirtio: blk: introduce virtio-block erase support
Dmitrii Merkurev [Wed, 6 Mar 2024 18:59:18 +0000 (18:59 +0000)]
virtio: blk: introduce virtio-block erase support

Co-developed-by: Cody Schuffelen <schuffelen@google.com>
Signed-off-by: Cody Schuffelen <schuffelen@google.com>
Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
Cc: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
Cc: Simon Glass <sjg@chromium.org>
Cc: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Cc: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # sandbox
2 months agox86: Make default_print_cpuinfo be a weak alias for print_cpuinfo
Tom Rini [Mon, 22 Jan 2024 14:35:12 +0000 (09:35 -0500)]
x86: Make default_print_cpuinfo be a weak alias for print_cpuinfo

While a few SoCs have a unique print_cpuinfo function, a number of them
just use default_print_cpuinfo. Make default_print_cpuinfo have a weak
alias to provie print_cpuinfo.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 months agocoreboot: Switch to a monospaced font
Simon Glass [Mon, 8 Jan 2024 00:14:55 +0000 (17:14 -0700)]
coreboot: Switch to a monospaced font

The default font is proportional, with different character widths.
Select a monospace font for coreboot so that the 'dm tree' output lines
up correctly.

Update the coreboot tests to match.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agovideo: Allow querying the font size
Simon Glass [Mon, 8 Jan 2024 00:14:54 +0000 (17:14 -0700)]
video: Allow querying the font size

All the font size to be queried using the 'font size' command.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agoMerge tag 'u-boot-imx-master-20241018a' of https://gitlab.denx.de/u-boot/custodians...
Tom Rini [Fri, 18 Oct 2024 15:05:04 +0000 (09:05 -0600)]
Merge tag 'u-boot-imx-master-20241018a' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx

CI: https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/22796

- Switch to using upstream DT on DH i.MX8MP DHCOM PDK2/PDK3.
- Add ability to build fallback DTBOs from arch/$(ARCH)/dts.
- Remove fdt_high and initrd_high env variables from imx6-dhcom.
- Add dummy clk for imx8.
- Fix DT corruption in imx8_cpu.
- Improve DDR stability on pico-imx7d.

2 months agoMerge tag 'u-boot-at91-fixes-2025.01-a' of https://source.denx.de/u-boot/custodians...
Tom Rini [Fri, 18 Oct 2024 15:04:20 +0000 (09:04 -0600)]
Merge tag 'u-boot-at91-fixes-2025.01-a' of https://source.denx.de/u-boot/custodians/u-boot-at91

First set of u-boot-at91 fixes for the 2025.01 cycle:

This small set includes the maintainer e-mail update and a missing
header that was causing some build issues.

2 months agoAzure: Update to latest containers
Tom Rini [Tue, 15 Oct 2024 01:33:10 +0000 (19:33 -0600)]
Azure: Update to latest containers

Soon Azure will be removing the macOS-12 container in following their
normal support schedule. Move us to macOS-14 so we won't have problems
there for a while. At the same time, our Windows container is the oldest
supported, so move to the newer option. Finally, Ubuntu 22.04 is the
middle option currently, but 24.04 should be fine.

Link: https://github.com/actions/runner-images/issues/10721
Signed-off-by: Tom Rini <trini@konsulko.com>
2 months agocpu: imx8_cpu: Avoid revision to corrupt device tree
Peng Fan [Fri, 18 Oct 2024 07:34:32 +0000 (15:34 +0800)]
cpu: imx8_cpu: Avoid revision to corrupt device tree

U-Boot device tree is padded just after U-Boot proper.
After the whole stuff loaded to DRAM space, the device tree
area is conflict with BSS region before U-Boot relocation.

So any write to BSS area before reloc_fdt will corrupt the
device tree. Without the fix, there is issue that “binman_init
failed:-2” on i.MX8MP-EVK board.

Drop 'revision' and use malloc area in cpu_imx_plat->rev.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
2 months agopico-imx7d: Increase ODT resistor value
Ray Chang [Wed, 16 Oct 2024 20:15:36 +0000 (22:15 +0200)]
pico-imx7d: Increase ODT resistor value

Increase ODT resistor value from 60 to 120 ohm to improve DRAM stability.

Based on the following commit from TechNexion U-Boot:
https://github.com/TechNexion/u-boot-tn-imx/commit/8a00e57b697c6f7d3d3abcfc552550ac7d8cc96d

Signed-off-by: Ray Chang <ray.chang@technexion.com>
Signed-off-by: Benjamin Szőke <egyszeregy@freemail.hu>
2 months agoclk: imx8: Add dummy clk
Peng Fan [Wed, 16 Oct 2024 07:50:29 +0000 (15:50 +0800)]
clk: imx8: Add dummy clk

There is a dummy clk entry for i.MX8QM/QXP, so add the dummy clk enable
and get rate. Otherwise "__imx8_clk_enable(Invalid clk ID #0)".

Fixes: 76332fae769 ("mmc: fsl_esdhc_imx: Enable AHB/IPG clk with clk bulk API")
Reviewed-by: Heiko Schocher <hs@denx.de>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Tested-by: Heiko Schocher <hs@denx.de>
2 months agoARM: dts: imx6-dhcom: Remove fdt_high and initrd_high env variables
Marek Vasut [Tue, 15 Oct 2024 23:44:32 +0000 (01:44 +0200)]
ARM: dts: imx6-dhcom: Remove fdt_high and initrd_high env variables

Remove both "fdt_high" and "initrd_high" environment variables
in favor of "bootm_size" to safely contain a kernel, device tree
and initrd for relocation inside of 256 MiB region of DRAM.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
2 months agoarm64: dts: imx: Switch to using upstream DT on DH i.MX8MP DHCOM PDK2/PDK3
Marek Vasut [Thu, 17 Oct 2024 01:19:17 +0000 (22:19 -0300)]
arm64: dts: imx: Switch to using upstream DT on DH i.MX8MP DHCOM PDK2/PDK3

Enable OF_UPSTREAM to use upstream DT and add freescale/ prefix to the
DEFAULT_DEVICE_TREE. And thereby directly build DTB from dts/upstream/src/
including *-u-boot.dtsi and DTBOs from arch/$(ARCH)/dts/ directory.

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Marek Vasut <marex@denx.de>
2 months agodts: Add ability to build fallback DTBOs from arch/$(ARCH)/dts
Marek Vasut [Thu, 17 Oct 2024 01:08:40 +0000 (03:08 +0200)]
dts: Add ability to build fallback DTBOs from arch/$(ARCH)/dts

Currently the enablement of OF_UPSTREAM results on the build system
searching for DTs only in dts/upstream/ . There are platforms which
use U-Boot specific DTBOs applied on top of U-Boot control DT during
SPL stage, and source DTs for these are located in arch/$(ARCH)/dtb.

Add dedicated 'dtbos' target which builds only .dtbos and not .dtbs and
in case CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS is enabled, build
this target for arch/$(ARCH)/dtb to generate local U-Boot specific DTBOs.

Adjust top level Makefile so binman would search for .dtb and .dtbo in
both OF_UPSTREAM specific paths and arch/$(ARCH)/dtb for the .dtbo case
in case CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS is enabled.

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Marek Vasut <marex@denx.de>
2 months agoARM: at91: clock: Add missing include of asm/io.h
Alexander Dahl [Tue, 1 Oct 2024 12:07:33 +0000 (14:07 +0200)]
ARM: at91: clock: Add missing include of asm/io.h

In one inline function in this header `readl()` is used, but the
declaration was not found, so buildman gave this warning:

    w+include/asm/arch/clk.h: In function 'get_h32mxdiv':
    w+include/asm/arch/clk.h:65:16: warning: implicit declaration of function 'readl' [-Wimplicit-function-declaration]

Fixes: 927b901b47a6 ("ARM: atmel: add sama5d4ek board support")
Signed-off-by: Alexander Dahl <ada@thorsis.com>
2 months agoMerge patch series "Cleanup dma device in spl and move dma channel[0]"
Tom Rini [Thu, 17 Oct 2024 21:13:27 +0000 (15:13 -0600)]
Merge patch series "Cleanup dma device in spl and move dma channel[0]"

Prasanth Babu Mantena <p-mantena@ti.com> says:

The channel allocation and deallocation for dma copy was happening on every
dma transfer. This is a overhead for transactions like NAND, which does
page reads recursively for complete data.

So, moving the dma allocation to probe and implement corresponding
remove function and cleanup dma device while exiting from spl.

Enable SPL_DM_DEVICE_REMOVE, for device removal capability in SPL.

Link: https://lore.kernel.org/r/20241009145703.1970034-1-p-mantena@ti.com
2 months agodma: ti: k3-udma: Move DMA channel[0] allocation to probe and add udma_remove()
Santhosh Kumar K [Wed, 9 Oct 2024 14:57:03 +0000 (20:27 +0530)]
dma: ti: k3-udma: Move DMA channel[0] allocation to probe and add udma_remove()

Currently, the allocation of DMA channel[0] for memcpy is happening
in udma_transfer() for every transfer, which leads to a huge overhead
for each transfer, especially in case of nand page reads. So, move this
allocation to udma_probe(), as a result, the allocation is done once
during probe.

Introduce udma_remove() for the cleanup of allocated channel during
probe.

Signed-off-by: Santhosh Kumar K <s-k6@ti.com>
Signed-off-by: Prasanth Babu Mantena <p-mantena@ti.com>
2 months agodma: ti: k3-udma: Move udma_probe() below all APIs
Santhosh Kumar K [Wed, 9 Oct 2024 14:57:02 +0000 (20:27 +0530)]
dma: ti: k3-udma: Move udma_probe() below all APIs

The udma_probe() function was placed above many important APIs
related to bcdma, pktdma, which restricts these APIs to be accessed
during probe. So, move udma_probe() below all of them.

Signed-off-by: Santhosh Kumar K <s-k6@ti.com>
Signed-off-by: Prasanth Babu Mantena <p-mantena@ti.com>
2 months agoconfigs: k3: Enable device removal in SPL
Prasanth Babu Mantena [Wed, 9 Oct 2024 14:57:01 +0000 (20:27 +0530)]
configs: k3: Enable device removal in SPL

Enable CONFIG_SPL_DM_DEVICE_REMOVE in a72 and r5.

Signed-off-by: Prasanth Babu Mantena <p-mantena@ti.com>
2 months agomach-k3: common.c: Remove dma device in spl exit
Prasanth Babu Mantena [Wed, 9 Oct 2024 14:57:00 +0000 (20:27 +0530)]
mach-k3: common.c: Remove dma device in spl exit

While exiting from spl, remove any dma device active through
spl_board_prepare_for_boot(). This is required for cleaning up
any dma channels being used in spl and avoid issues with overlapping
channel allocation in the next stage bootloaders.

Signed-off-by: Prasanth Babu Mantena <p-mantena@ti.com>
2 months agoarm: dts: k3-j722s-binman: Add support for HS-SE
Udit Kumar [Wed, 9 Oct 2024 11:04:47 +0000 (16:34 +0530)]
arm: dts: k3-j722s-binman: Add support for HS-SE

J722S SOC have two variants as HS-FS and HS-SE.
Add binman support for HS-SE variant.

Signed-off-by: Udit Kumar <u-kumar1@ti.com>
[j-choudhary@ti.com: Fix load-dm-data entry and indentation]
Signed-off-by: Jayesh Choudhary <j-choudhary@ti.com>
Reviewed-by: Bryan Brattlof <bb@ti.com>
2 months agoarm: mach-k3: j784s4: Add clk and power support for wkup_uart
Bhavya Kapoor [Mon, 7 Oct 2024 11:07:09 +0000 (16:37 +0530)]
arm: mach-k3: j784s4: Add clk and power support for wkup_uart

Add clk and device data which can be used by wkup_uart driver
to configure clocks and PSC.

Signed-off-by: Bhavya Kapoor <b-kapoor@ti.com>
Reviewed-by: Bryan Brattlof <bb@ti.com>
2 months agocmd: irq: Move do_irqinfo() prototype to a header file
Andy Shevchenko [Sat, 5 Oct 2024 19:14:29 +0000 (22:14 +0300)]
cmd: irq: Move do_irqinfo() prototype to a header file

Move do_irqinfo() prototype to a header file, otherwise compiler is not
happy:

  arch/x86/lib/interrupts.c:130:5: warning: no previous prototype for ‘do_irqinfo’ [-Wmissing-prototypes]

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
[trini: Add 'struct cmd_tbl;' to irq_func.h]
Signed-off-by: Tom Rini <trini@konsulko.com>
2 months agoarm: mach-k3: am62: fixup thermal cooling device cpus
Parth Pancholi [Wed, 2 Oct 2024 07:41:33 +0000 (09:41 +0200)]
arm: mach-k3: am62: fixup thermal cooling device cpus

AM62x devices now support CPU throttling based on thermal alerts
with a Linux commit 10e7bfd8114c ("arm64: dts: ti: k3-am62: Enable
CPU freq throttling on thermal alert"). However, this functionality
does not work correctly across all variants of the AM62x SoCs
which have different numbers of Cortex-A CPU cores: AM62x1 (1 core),
AM62x2 (2 cores), and AM62x4 (4 cores). On single-core and dual-core
AM62x devices, the following error is observed in the Linux kernel:

OF: /thermal-zones/main0-thermal/cooling-maps/map0: could not find
    phandle 94
OF: /thermal-zones/main1-thermal/cooling-maps/map0: could not find
    phandle 94

This commit adds a fixup to dynamically adjust the cooling-device
nodes in the thermal zones based on the actual number of CPU cores
available. This resolves the issue of CPU throttling not working
correctly on single-core and dual-core AM62x devices, while
maintaining the functionality for AM62x quad-core devices.

A similar approach is implemented for example on i.MX8MM SoC.

Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com>
2 months agolib: fdtdec: Parse the gzip/lzo headers only when dependencies have met
Lad Prabhakar [Tue, 1 Oct 2024 09:56:47 +0000 (10:56 +0100)]
lib: fdtdec: Parse the gzip/lzo headers only when dependencies have met

It might happen that CONFIG_GZIP and CONFIG_LZO are enabled but we might
have CONFIG_MULTI_DTB_FIT_LZO enabled in this case in the code path of
uncompress_blob() we parse the gzip headers first which results in
`Error: Bad gzipped data` being printed. To avoid this parse the gzip/lzo
headers only when dependencies have met.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
2 months agoExtend usage for OF_OVERLAY_LIST beyond SPL
Jan Kiszka [Mon, 30 Sep 2024 10:20:36 +0000 (12:20 +0200)]
Extend usage for OF_OVERLAY_LIST beyond SPL

Allow to use OF_OVERLAY_LIST also for the case that the overlays just
need be built, e.g. when they will be picked up by binman as artifacts
of the final U-Boot image. The IOT2050 boards have such a need when
switching to OF_UPSTREAM.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agoMakefile: Drop SPL_FIT_SOURCE support
Marek Vasut [Fri, 4 Oct 2024 23:07:13 +0000 (01:07 +0200)]
Makefile: Drop SPL_FIT_SOURCE support

The SPL_FIT_SOURCE is long superseded by SPL_FIT_GENERATOR which
is long superseded by binman, drop SPL_FIT_SOURCE support as there
are no more users.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
2 months agoMerge tag 'u-boot-stm32-20241017' of https://source.denx.de/u-boot/custodians/u-boot-stm
Tom Rini [Thu, 17 Oct 2024 14:35:11 +0000 (08:35 -0600)]
Merge tag 'u-boot-stm32-20241017' of https://source.denx.de/u-boot/custodians/u-boot-stm

CI: https://source.denx.de/u-boot/custodians/u-boot-stm/-/pipelines/22732

- stm32mp: fix boot issue with OP-TEE
- stm32mp: Add script to install U-Boot from SD/eMMC to SPI NOR on DH STM32MP15xx
- stm32mp: Switch to using upstream DT on DH STM32 DHSOM
- stm32mp: Generate u-boot.itb using binman on DH STM32 DHSOM

2 months agoMerge tag 'u-boot-dfu-20241017' of https://source.denx.de/u-boot/custodians/u-boot-dfu
Tom Rini [Thu, 17 Oct 2024 14:34:01 +0000 (08:34 -0600)]
Merge tag 'u-boot-dfu-20241017' of https://source.denx.de/u-boot/custodians/u-boot-dfu

u-boot-dfu-20241017

CI: https://source.denx.de/u-boot/custodians/u-boot-dfu/-/pipelines/22742

Usb Gadget:
- Fix cdns3 endpoint configuration by setting maxpacket
- Fix dwc3 cache handling when using DMA

Fastboot:
- Make AVB_VERIFY depends on FASTBOOT

2 months agoMerge https://source.denx.de/u-boot/custodians/u-boot-usb
Tom Rini [Thu, 17 Oct 2024 03:45:21 +0000 (21:45 -0600)]
Merge https://source.denx.de/u-boot/custodians/u-boot-usb

2 months agoMAINTAINERS: add TCPM section
Sebastian Reichel [Tue, 15 Oct 2024 15:26:48 +0000 (17:26 +0200)]
MAINTAINERS: add TCPM section

Add new section for USB TypeC Port Manager (TCPM) support, which
is needed to figure out cable orientation of USB-C plus and to do
USB PD communication.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Acked-by: Marek Vasut <marex@denx.de>
2 months agorockchip: rock5b-rk3588: Enable USB-C PD support
Sebastian Reichel [Tue, 15 Oct 2024 15:26:47 +0000 (17:26 +0200)]
rockchip: rock5b-rk3588: Enable USB-C PD support

Now that all code has been prepared update the default configuration to
make use of it.

Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Tested-by: Soeren Moch <smoch@web.de>
Tested-by: Anand Moon <linux.amoon@gmail.com>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2 months agorockchip: rk3588-rock-5b: Add USB-C controller to u-boot.dtsi
Sebastian Reichel [Tue, 15 Oct 2024 15:26:46 +0000 (17:26 +0200)]
rockchip: rk3588-rock-5b: Add USB-C controller to u-boot.dtsi

Add USB-C controller (fusb302), which will be used by U-Boot to
initialize USB-PD. This is needed, because USB-PD communication
must happen within 5 seconds after the USB-C connector got plugged.
On my Rock 5B it often takes 5 seconds to jump to the Linux binary,
so it must happen before Linux is initialized.

This adds the DT node to the U-Boot specific file, since the Linux
kernel DT currently does not describe it to avoid a system reset.
The plan is to add it to the Linux DT with status = 'fail' and then
let U-Boot mark it as status = 'okay' if it properly dealt with
early USB-PD initialization. Until the Kernel DT has the node, let's
add it in U-Boot to get things going.

Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Tested-by: Soeren Moch <smoch@web.de>
Tested-by: Anand Moon <linux.amoon@gmail.com>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2 months agoboard: rock5b-rk3588: enable USB-C in operating system
Sebastian Reichel [Tue, 15 Oct 2024 15:26:45 +0000 (17:26 +0200)]
board: rock5b-rk3588: enable USB-C in operating system

Since older U-Boot releases do not negotiate USB PD, the kernel
DT may not enable the USB-C controller by default to avoid a
regression. The plan is to upstream it with 'status = "fail";'
instead. U-Boot should then mark it as 'status = "okay";' if
it negotiated USB PD. Currently existing upstream kernel DTs do
not yet have the USB-C controller at all, so we ignore any
failures.

Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Tested-by: Soeren Moch <smoch@web.de>
Tested-by: Anand Moon <linux.amoon@gmail.com>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2 months agousb: tcpm: fusb302: add driver
Sebastian Reichel [Tue, 15 Oct 2024 15:26:44 +0000 (17:26 +0200)]
usb: tcpm: fusb302: add driver

Now that the TCPM framework exists we can introduce fusb302
driver using it. This chip is a very common USB-C controller
chip with PD support, which can be found in the Radxa Rock 5B
among many other boards. Apart from Power Delivery, it also
handles detection of the cable orientation. That can be used
to control a mux for connecting the right USB3 lane pair to
the USB3 controller.

The driver is originally from the Linux kernel, but has been
adapted to the requirements of U-Boot and its TCPM framework.

Co-developed-by: Wang Jie <dave.wang@rock-chips.com>
Signed-off-by: Wang Jie <dave.wang@rock-chips.com>
Tested-by: Soeren Moch <smoch@web.de>
Tested-by: Anand Moon <linux.amoon@gmail.com>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2 months agousb: tcpm: add core framework
Sebastian Reichel [Tue, 15 Oct 2024 15:26:43 +0000 (17:26 +0200)]
usb: tcpm: add core framework

This adds TCPM framework in preparation for fusb302 support, which can
handle USB power delivery messages. This is needed to solve issues with
devices, that are running from a USB-C port supporting USB-PD, but not
having a battery.

Such a device currently boots to the kernel without interacting with
the power-supply at all. If there are no USB-PD message replies within
5 seconds, the power-supply assumes the peripheral is not capable of
USB-PD. It usually takes more than 5 seconds for the system to reach
the kernel and probe the I2C based fusb302 chip driver. Thus the
system always runs into this state. The power-supply's solution to
fix this error state is a hard reset, which involves removing the
power from VBUS. Boards without a battery (or huge capacitors) will
reset at this point resulting in a boot loop.

This imports the TCPM framework from the kernel. The porting has
originally been done by Rockchip using hardware timers and the Linux
kernel's TCPM code from some years ago.

I had a look at upgrading to the latest TCPM kernel code, but that
beast became a lot more complex due to adding more USB-C features.
I believe these features are not needed in U-Boot and with multiple
kthreads and hrtimers being involved it is non-trivial to port them.
Instead I worked on stripping down features from the Rockchip port
to an even more basic level. Also the TCPM code has been reworked
to avoid complete use of any timers (Rockchip used SoC specific
hardware timers + IRQ to implement delayed work mechanism). Instead
the delayed state changes are handled directly from the poll loop.

Note, that (in contrast to the original Rockchip port) the state
machine has the same hard reset quirk, that the kernel has - i.e.
it avoids disabling the CC pin resistors for devices that are not
self-powered. Without that quirk, the Radxa Rock 5B will not just
end up doing a machine reset when a hard reset is triggered, but will
not even recover, because the CPU will loose power and the FUSB302
will keep this state because of leak voltage arriving through the RX
serial pin (assuming a serial adapter is connected).

This also includes a 'tcpm' command, which can be used to get
information about the current state and the negotiated voltage
and current.

Co-developed-by: Wang Jie <dave.wang@rock-chips.com>
Signed-off-by: Wang Jie <dave.wang@rock-chips.com>
Tested-by: Soeren Moch <smoch@web.de>
Tested-by: Anand Moon <linux.amoon@gmail.com>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2 months agoMerge patch series "some serial rx buffer patches"
Tom Rini [Wed, 16 Oct 2024 21:54:38 +0000 (15:54 -0600)]
Merge patch series "some serial rx buffer patches"

Rasmus Villemoes <ravi@prevas.dk> says:

Some small improvements to the serial rx buffer feature.

CI seems happy: https://github.com/u-boot/u-boot/pull/674

Link: https://lore.kernel.org/r/20241003141029.920035-1-ravi@prevas.dk
2 months agoserial: embed the rx buffer in struct serial_dev_priv
Rasmus Villemoes [Thu, 3 Oct 2024 14:10:29 +0000 (16:10 +0200)]
serial: embed the rx buffer in struct serial_dev_priv

The initialization of upriv->buf doesn't check for a NULL return. But
there's actually no point in doing a separate, unconditional malloc()
in post_probe; we can just make serial_dev_priv contain the rx buffer
itself, and let the (larger) allocation be handled by the driver core
when it allocates the ->per_device_auto. The total run-time memory
used is mostly the same, we reduce the code size a little, and as a
bonus, struct serial_dev_priv does not contain the unused members when
!SERIAL_RX_BUFFER.

Signed-off-by: Rasmus Villemoes <ravi@prevas.dk>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agoserial: add build-time sanity check of CONFIG_SERIAL_RX_BUFFER_SIZE
Rasmus Villemoes [Thu, 3 Oct 2024 14:10:28 +0000 (16:10 +0200)]
serial: add build-time sanity check of CONFIG_SERIAL_RX_BUFFER_SIZE

The help text says it must be a power of 2, and the implementation
does rely on that. Enforce it.

A violation gives a wall of text, but the last few lines should be
reasonably obvious:

drivers/serial/serial-uclass.c:334:9: note: in expansion of macro ‘BUILD_BUG_ON_NOT_POWER_OF_2’
  334 |         BUILD_BUG_ON_NOT_POWER_OF_2(CONFIG_SERIAL_RX_BUFFER_SIZE);

Signed-off-by: Rasmus Villemoes <ravi@prevas.dk>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agoserial: do not overwrite not-consumed characters in rx buffer
Rasmus Villemoes [Thu, 3 Oct 2024 14:10:27 +0000 (16:10 +0200)]
serial: do not overwrite not-consumed characters in rx buffer

Before the previous patch, pasting a string of length x >
CONFIG_SERIAL_RX_BUFFER_SIZE results in getting the
last (x%CONFIG_SERIAL_RX_BUFFER_SIZE) characters from that string.

With the previous patch, one instead gets the last
CONFIG_SERIAL_RX_BUFFER_SIZE characters repeatedly until the ->rd_ptr
catches up.

Both behaviours are counter-intuitive, and happen because the code
that checks for a character available from the hardware does not
account for whether there is actually room in the software buffer to
receive it. Fix that by adding such accounting. This also brings the
software buffering more in line with how most hardware FIFOs
behave (first received characters are kept, overflowing characters are
dropped).

Signed-off-by: Rasmus Villemoes <ravi@prevas.dk>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agoserial: fix circular rx buffer edge case
Rasmus Villemoes [Thu, 3 Oct 2024 14:10:26 +0000 (16:10 +0200)]
serial: fix circular rx buffer edge case

The current implementation of the circular rx buffer falls into a
common trap with circular buffers: It keeps the head/tail indices
reduced modulo the buffer size. The problem with that is that it makes
it impossible to distinguish "buffer full" from "buffer empty",
because in both situations one has head==tail.

This can easily be demonstrated: Build sandbox with RX_BUFFER enabled,
set the RX_BUFFER_SIZE to 32, and try pasting the string

  01234567890123456789012345678901

Nothing seems to happen, but in reality, all characters have been read
and put into the buffer, but then tstc ends up believing nothing is in
the buffer anyway because upriv->rd_ptr == upriv->wr_ptr.

A better approach is to let the indices be free-running, and only
reduce them modulo the buffer size when accessing the array. Then
"empty" is head-tail==0 and "full" is head-tail==size. This does rely
on the buffer size being a power-of-two and the free-running
indices simply wrapping around to 0 when incremented beyond the
maximal positive value.

Incidentally, that change from signed to unsigned int also improves
code generation quite a bit: In C, (signed int)%(signed int) is
defined to have the sign of the dividend (so (-35) % 32 is -3, not
29), and hence despite the modulus being a power-of-two, x % 32 does
not actually compile to the same as a simple x & 31 - on x86 with -Os,
it seems that gcc ends up emitting an idiv instruction, which is quite
expensive.

Signed-off-by: Rasmus Villemoes <ravi@prevas.dk>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agostm32mp: cosmetic: remove empty comment block in configs file
Patrick Delaunay [Wed, 16 Oct 2024 17:54:08 +0000 (19:54 +0200)]
stm32mp: cosmetic: remove empty comment block in configs file

This is cosmetic change.

Remove the empty comment blocks remaining after conversion to Kconfig
of CONFIG_SYS_MAX_NAND_DEVICE and CONFIG_SERVERIP.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2 months agoARM: stm32: Add script to install U-Boot from SD/eMMC to SPI NOR on DH STM32MP15xx...
Marek Vasut [Sat, 12 Oct 2024 02:54:17 +0000 (04:54 +0200)]
ARM: stm32: Add script to install U-Boot from SD/eMMC to SPI NOR on DH STM32MP15xx DHSOM

Make the dh_update_sd_to_sf script generic, rename it to dh_update_block_to_sf
and implement two specific dh_update_sd_to_sf and dh_update_emmc_to_sf scripts
which load U-Boot from either SD or eMMC and install it into SPI NOR.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2 months agostm32mp: fix name of optee reserved memory node
Patrick Delaunay [Fri, 11 Oct 2024 15:31:51 +0000 (17:31 +0200)]
stm32mp: fix name of optee reserved memory node

In OP-TEE, the "optee_core@" node is reserved, appended in non secure
device tree (see mark_tzdram_as_reserved() function under CFG_DT) so
this name must be checked in optee_get_reserved_memory().
We keep the check on /reserved-memory/optee@ node to have backward
compatibility with STMT32Image booting, when the reserved node is
already present in U-Boot or SPL device tree with name "optee@".

This patch solves a boot issue on board with OP-TEE for U-Boot
compiled with stm32mp15_defconfig and without secure configuration
device tree (stm32mp157c-dk2.dts for example).

Fixes: 5fe9e0deabb1 ("stm32mp: allow calling optee_get_reserved_memory()
from U-Boot")
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2 months agodoc: clarify scmi device tree for stm32mp15 boards
Patrick Delaunay [Fri, 11 Oct 2024 15:31:50 +0000 (17:31 +0200)]
doc: clarify scmi device tree for stm32mp15 boards

Clarify the usage of SCMI specific device tree to use with
stm32mp15_defconfig and with OP-TEE.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2 months agoARM: stm32mp: enable data cache after LMB configuration for STM32MP1
Patrick Delaunay [Fri, 11 Oct 2024 15:31:49 +0000 (17:31 +0200)]
ARM: stm32mp: enable data cache after LMB configuration for STM32MP1

Move the stm32mp1 data cache reconfiguration after the lmb init call
board_r::initr_lmb to allow parsing of the reserved region with
no-map tag.

After this patch the DDR is not fully mapped up to arch_early_init_r()
call, only the relocation region is mapped, but it is enough for
the first board_r initialization phases; later, when arch_early_init_r()
is called, the LMB is already initialized and the function
lmb_is_reserved_flags() function is functional, this LMB function
is called in the weak function dram_bank_mmu_setup() when
dcache_enable() is executed.

Without this change, as LMB is not initialized when it is used in
dram_bank_mmu_setup, the OP-TEE region is mapped cache-able by U-Boot
and we have some firewall violation since "LMB memory map global and
persistent" series.

Fixes: ed17a33fed29 ("lmb: make LMB memory map persistent and global")
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2 months agostm32mp: compute ram_top based on the optee base address only for STM32MP1
Patrick Delaunay [Fri, 11 Oct 2024 15:31:48 +0000 (17:31 +0200)]
stm32mp: compute ram_top based on the optee base address only for STM32MP1

Reserved memory for OP-TEE is located at end of DDR for STM32MP1 SoC only
(STM32MP13 and STM32MP15) and the OP-TEE reserved memory is located at the
beginning of DDR for STM32MP25 SoC, before CONFIG_TEXT_BASE and
with reserved memory for companion coprocessor. So the ram_top is limited
by OP-TEE reserved memory only for STM32MP1 SoC.

This patch solves an issue for ram_top value on STM32MP25 SoC because the
generic reserved memory management, based on LMB, is no more used before
relocation.

Fixes: 8242f14a3e6f ("stm32mp: compute ram_top based on the optee base address")
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2 months agoARM: dts: stm32: Generate u-boot.itb using binman on DH STM32 DHSOM
Marek Vasut [Sat, 5 Oct 2024 01:15:50 +0000 (03:15 +0200)]
ARM: dts: stm32: Generate u-boot.itb using binman on DH STM32 DHSOM

Describe the u-boot.its generation in stm32mp15xx-dhsom-u-boot.dtsi
binman {} DT node as a replacement for current CONFIG_SPL_FIT_SOURCE
use, dispose of both u-boot-dhcom.its and u-boot-dhcor.its.

Use fdt-SEQ/config-SEQ to generate a list of fdt-N fitImage images {} and
matching configuration {} node entries. The configuration node entry names
no longer encode _somrevN_boardrevN suffix, which was never really used, so
drop this functionality by default. Rework board_fit_config_name_match() to
match on the new configuration node entry names.

Users who do need the match on _somrevN_boardrevN can either replace the
fdt-SEQ/config-SEQ with fixed fdt-N/config-N nodes which each encode the
matching 'description = "NAME_somrevN_boardrevN"' to restore the old
behavior verbatim, or better use SPL DT overlays for U-Boot control DT
the same way e.g. i.MX8MP DHCOM does to support multiple SoM and board
variants.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2 months agoARM: dts: stm32: Switch to using upstream DT on DH STM32 DHSOM
Marek Vasut [Sat, 5 Oct 2024 01:15:49 +0000 (03:15 +0200)]
ARM: dts: stm32: Switch to using upstream DT on DH STM32 DHSOM

Enable OF_UPSTREAM to use upstream DT and add st/ prefix to the
DEFAULT_DEVICE_TREE. And thereby directly build DTB from dts/upstream/src/
including *-u-boot.dtsi from arch/$(ARCH)/dts/ directory.

The previous setup used generic SoC prefix like stm32mp15xx-dhco* for
generic DTs which could be used on any STM32MP15xx DHSOM variant. The
new setup uses specific SoC prefix stm32mp157c-dhco* to match Linux DT
names. Since the hardware present on STM32MP153 and STM32MP157 is not
enabled in the board configuration and not supported by U-Boot except
for the DSI host, using the existing Linux DTs poses no issue even on
plain STM32MP151A based SoMs.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2 months agoARM: dts: stm32: Duplicate cpu0-opp-table node into stm32mp15-u-boot.dtsi
Marek Vasut [Sat, 5 Oct 2024 01:15:48 +0000 (03:15 +0200)]
ARM: dts: stm32: Duplicate cpu0-opp-table node into stm32mp15-u-boot.dtsi

The cpu0-opp-table {} node does not exist in upstream Linux stm32mp151.dtsi
file, in order to enable conversion to OF_UPSTREAM, duplicate the node from
current U-Boot stm32mp151.dtsi into stm32mp15-u-boot.dtsi. This makes STM32
DTs buildable even with OF_UPSTREAM enabled. No functional change, since the
current U-Boot stm32mp151.dtsi already contains the cpu0-opp-table {} node,
stm32mp15-u-boot.dtsi is applied at the end, and does not bring in any new
content.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2 months agoARM: stm32: Update MAINTAINERS file globs for STM32MP DHSOM
Marek Vasut [Fri, 4 Oct 2024 23:56:21 +0000 (01:56 +0200)]
ARM: stm32: Update MAINTAINERS file globs for STM32MP DHSOM

Update the MAINTAINERS file glob to cover all of STM32MP DHSOM related files.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2 months agoMerge patch series "Introduce the lwIP network stack"
Tom Rini [Wed, 16 Oct 2024 14:12:28 +0000 (08:12 -0600)]
Merge patch series "Introduce the lwIP network stack"

Jerome Forissier <jerome.forissier@linaro.org> says:

This is a rework of a patch series by Maxim Uvarov: "net/lwip: add lwip
library for the network stack" [1]. The goal is to introduce the lwIP TCP/IP
stack [2] [3] as an alternative to the current implementation in net/,
selectable with Kconfig, and ultimately keep only lwIP if possible. Some
reasons for doing so are:
- Make the support of HTTPS in the wget command easier. Javier T. and
Raymond M. (CC'd) have some additional lwIP and Mbed TLS patches to do
so. With that it becomes possible to fetch and launch a distro installer
such as Debian etc. using a secure, authenticated connection directly
from the U-Boot shell. Several use cases:
  * Authentication: prevent MITM attack (third party replacing the
binary with a different one)
  * Confidentiality: prevent third parties from grabbing a copy of the
image as it is being downloaded
  * Allow connection to servers that do not support plain HTTP anymore
(this is becoming more and more common on the Internet these days)
- Possibly benefit from additional features implemented in lwIP
- Less code to maintain in U-Boot

Prior to applying this series, the lwIP stack needs to be added as a
Git subtree with the following command:

 $ git subtree add --squash --prefix lib/lwip/lwip \
   https://github.com/lwip-tcpip/lwip.git  STABLE-2_2_0_RELEASE

Notes

1. A number of features are currently incompatible with NET_LWIP:
DFU_TFTP, FASTBOOT, SPL_NET, ETH_SANDBOX, ETH_SANDBOX_RAW, DM_ETH. They
all make assumptions on how the network stack is implemented and/or
pull sybols that are not trivially exported from lwIP. Some interface
rework may be needed.

2. Due to the above, and in order to provide some level of testing of the
lwIP code in CI even when the legacy NET is the default, a new QEMU
configuration is introduced (qemu_arm64_lwip_defconfig) which is
based on qemu_arm64_defconfig with NET_LWIP and CMD_*_LWIP enabled.
In addition to that, this series has some [TESTING] patches
which make NET_LWIP the default.

[1] https://lore.kernel.org/all/20231127125726.3735-1-maxim.uvarov@linaro.org/
[2] https://www.nongnu.org/lwip/
[3] https://en.wikipedia.org/wiki/LwIP

Link: https://lore.kernel.org/r/cover.1729070678.git.jerome.forissier@linaro.org
2 months agoMAINTAINERS: net: lwip: add myself as a maintainer
Jerome Forissier [Wed, 16 Oct 2024 10:04:15 +0000 (12:04 +0200)]
MAINTAINERS: net: lwip: add myself as a maintainer

Add myself as a maintainer for the lwIP network stack integration code
and network commands as well as the sandbox ethernet driver for lwIP.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agoCI: add qemu_arm64_lwip to the test matrix
Jerome Forissier [Wed, 16 Oct 2024 10:04:14 +0000 (12:04 +0200)]
CI: add qemu_arm64_lwip to the test matrix

Build and run qemu_arm64_lwip_defconfig in CI. This tests the lightweight
IP (lwIP) implementation of the dhcp, tftpboot and ping commands.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
2 months agonet: lwip: add TFTP_BLOCKSIZE
Jerome Forissier [Wed, 16 Oct 2024 10:04:13 +0000 (12:04 +0200)]
net: lwip: add TFTP_BLOCKSIZE

Add support for setting the TFTP block size. The default value (1468)
is fine for Ethernet and allows a better throughput than the TFTP
default (512), if the server supports the blksize option of course.

I tested this change with qemu_arm64_lwip_defconfig. The throughput is
now 875 KiB/s vs. 313 KiB/s before. That is still a low number, but I
think we can't expect more without implementing the windowsize option.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agonet: lwip: tftp: add support of blksize option to client
Jerome Forissier [Wed, 16 Oct 2024 10:04:12 +0000 (12:04 +0200)]
net: lwip: tftp: add support of blksize option to client

The TFTP protocol uses a default block size of 512 bytes. This value is
sub-optimal for ethernet devices, which have a MTU (Maximum Transmission
Unit) of 1500 bytes. When taking into acount the overhead of the IP and
UDP layers, this leaves 1468 bytes for the TFTP payload.

This patch introduces a new function: tftp_client_set_blksize() which
may be used to change the block size from the default. It has to be
called after tftp_client_init() and before tftp_get(). If the server
does not support the option, the client will still accept to receive
512-byte blocks.

Submitted upstream: https://savannah.nongnu.org/patch/index.php?10462

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agoconfigs: add qemu_arm64_lwip_defconfig
Jerome Forissier [Wed, 16 Oct 2024 10:04:11 +0000 (12:04 +0200)]
configs: add qemu_arm64_lwip_defconfig

Add qemu_arm64_lwip_defconfig which #include's qemu_arm64_defconfig and
selects NET_LWIP instead of NET. This config has all the supported net
commands enabled.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agocmd: bdinfo: enable -e when CONFIG_CMD_NET_LWIP=y
Jerome Forissier [Wed, 16 Oct 2024 10:04:10 +0000 (12:04 +0200)]
cmd: bdinfo: enable -e when CONFIG_CMD_NET_LWIP=y

Support "bdinfo -e" when lwIP is selected.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
2 months agonet: lwip: add wget command
Jerome Forissier [Wed, 16 Oct 2024 10:04:09 +0000 (12:04 +0200)]
net: lwip: add wget command

Add support for the wget command with NET_LWIP. The command normally
expects a URL: wget [loadaddr] url, but it also accepts the legacy
syntax: wget [loadaddr] [server:]file.
The server IP may alternatively be supplied via ${httpserverip} which
has higher priority than ${serverip}.

Based on code initially developed by Maxim U.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Co-developed-by: Maxim Uvarov <muvarov@gmail.com>
Cc: Maxim Uvarov <muvarov@gmail.com>
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agonet: split cmd/net.c into cmd/net.c and cmd/net-common.c
Jerome Forissier [Wed, 16 Oct 2024 10:04:08 +0000 (12:04 +0200)]
net: split cmd/net.c into cmd/net.c and cmd/net-common.c

Extract some code from cmd/net.c that will be useful in a subsequent
commit to implement wget with NET_LWIP.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agonet: lwip: add dns command
Jerome Forissier [Wed, 16 Oct 2024 10:04:07 +0000 (12:04 +0200)]
net: lwip: add dns command

Add CMD_DNS when NET_LWIP is enabled to provide the dns command using
lwIP.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agonet: lwip: add ping command
Jerome Forissier [Wed, 16 Oct 2024 10:04:06 +0000 (12:04 +0200)]
net: lwip: add ping command

Add support for the the ping command with NET_LWIP. The implementation
is derived from lwIP's contrib/apps/ping/ping.c.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agonet: lwip: add TFTP support and tftpboot command
Jerome Forissier [Wed, 16 Oct 2024 10:04:05 +0000 (12:04 +0200)]
net: lwip: add TFTP support and tftpboot command

Implement do_tftpb(). This implementation of the tftp command
supports an optional port number. For example:

 tftp 192.168.0.30:9069:file.bin

It also supports taking the server IP from ${tftpserverip} if
defined, before falling back to ${serverip}.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Tested-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agonet: lwip: tftp: bind to TFTP port only when in server mode
Jerome Forissier [Wed, 16 Oct 2024 10:04:04 +0000 (12:04 +0200)]
net: lwip: tftp: bind to TFTP port only when in server mode

The TFTP app should not bind to the TFTP server port when configured as
a client. Instead, the local port should be chosen from the dynamic
range (49152 ~ 65535) so that if the application is stopped and started
again, the remote server will not consider the new packets as part of
the same context (which would cause an error since a new RRQ would be
unexpected).

Submitted upstream: https://savannah.nongnu.org/patch/?10480

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agonet: lwip: add DHCP support and dhcp commmand
Jerome Forissier [Wed, 16 Oct 2024 10:04:03 +0000 (12:04 +0200)]
net: lwip: add DHCP support and dhcp commmand

Add what it takes to enable NETDEVICES with NET_LWIP and enable DHCP as
well as the dhcp command. CMD_TFTPBOOT is selected by BOOTMETH_EFI due
to this code having an implicit dependency on do_tftpb().

Note that PXE is likely non-fonctional with NET_LWIP (or at least not
100% functional) because DHCP option 209 is not supported by the lwIP
library. Therefore, BOOTP_PXE_DHCP_OPTION cannot be enabled.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Tested-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agonet: lwip: build lwIP
Jerome Forissier [Wed, 16 Oct 2024 10:04:02 +0000 (12:04 +0200)]
net: lwip: build lwIP

Build the lwIP library when NET_LWIP is enabled. The following files
are adaptation layers written specially for U-Boot:

 lib/lwip/u-boot/arch/cc.h
 lib/lwip/u-boot/arch/sys_arch.h (empty)
 lib/lwip/u-boot/limits.h (empty)
 lib/lwip/u-boot/lwipopts.h

They were initially contributed by Maxim in a previous RFC patch series.

The lwIP stack needs to be added as a Git subtree with the following
command:

 $ git subtree add --squash --prefix lib/lwip/lwip \
   https://github.com/lwip-tcpip/lwip.git  STABLE-2_2_0_RELEASE

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Co-developed-by: Maxim Uvarov <muvarov@gmail.com>
Cc: Maxim Uvarov <muvarov@gmail.com>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agonet: eth-uclass: add function eth_start_udev()
Jerome Forissier [Wed, 16 Oct 2024 10:04:01 +0000 (12:04 +0200)]
net: eth-uclass: add function eth_start_udev()

Add a function to start a given network device, and update eth_init()
to use it.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agonet: split net into net{,-common,-legacy,-lwip}
Jerome Forissier [Wed, 16 Oct 2024 10:04:00 +0000 (12:04 +0200)]
net: split net into net{,-common,-legacy,-lwip}

Make net.h a wrapper which includes net-common.h and either
net-legacy.h or net-lwip.h based on NET_LWIP. The function
copy_filename() can be useful when NET_LWIP is enabled, therefore
move it out of net/net.c which is built only when networking choice
is NET and create a new file net/net-common.c.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agonet: introduce alternative implementation as net/lwip/
Jerome Forissier [Wed, 16 Oct 2024 10:03:59 +0000 (12:03 +0200)]
net: introduce alternative implementation as net/lwip/

Prepare the introduction of the lwIP (lightweight IP) TCP/IP stack by
adding a new net/lwip/ directory and the NET_LWIP symbol. Network
support is either NO_NET, NET (legacy stack) or NET_LWIP. Subsequent
commits will introduce the lwIP code, re-work the NETDEVICE integration
and port some of the NET commands and features to lwIP.

SPL_NET cannot be enabled when NET_LWIP=y. SPL_NET pulls some symbols
that are part of NET (such as arp_init(), arp_timeout_check(),
arp_receive(), net_arp_wait_packet_ip()). lwIP support in SPL may be
added later.

Similarly, DFU_TFTP and FASTBOOT are not compatible with NET_LWIP
because of dependencies on net_loop(), tftp_timeout_ms,
tftp_timeout_count_max and other NET things. Let's add a dependency on
!NET_LWIP for now.

SANDBOX can select NET_LWIP but doing so will currently disable the eth
dm tests as well as the wget tests which have strong dependencies on the
NET code.

Other adjustments to Kconfig files are made to fix "unmet direct
dependencies detected" for USB_FUNCTION_SDP and CMD_FASTBOOT when
the default networking stack is set to NET_LWIP ("default NET_LWIP"
instead of "default NET" in Kconfig).

The networking stack is now a choice between NO_NET,
NET and NET_LWIP. Therefore '# CONFIG_NET is not set' should be
'CONFIG_NO_NET=y'. Adjust the defconfigs accordingly.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agotest: boot: fix bootflow_cmd_label for when DSA_SANDBOX is disabled
Jerome Forissier [Wed, 16 Oct 2024 09:56:26 +0000 (11:56 +0200)]
test: boot: fix bootflow_cmd_label for when DSA_SANDBOX is disabled

When DSA_SANDBOX is not set, the sandbox tests fail as follows:

 $ ./test/py/test.py --build-dir=$(pwd) -k bootdev_test_any
 [...]
 Scanning for bootflows with label '9'
 [...]
 Cannot find '9' (err=-19)

This is due to the device list containing two less entries than
expected. Therefore, look for label '7' when DSA_SANDBOX is disabled.

The actual use case is NET_LWIP=y (to be introduced in later patches)
which implies DSA_SANDBOX=n for the time being.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>