]> git.dujemihanovic.xyz Git - u-boot.git/log
u-boot.git
8 weeks agocommon: Tidy up how malloc() is inited
Simon Glass [Mon, 21 Oct 2024 08:19:26 +0000 (10:19 +0200)]
common: Tidy up how malloc() is inited

The call to malloc() is a bit strange. The naming of the arguments
suggests that an address is passed, but in fact it is a pointer, at
least in the board_init_r() function and SPL equivalent.

Update it to work as described. Add a function comment as well.

Note that this does adjustment does not extend into the malloc()
implementation itself, apart from changing mem_malloc_init(), since
there are lots of casts and pointers and integers are used
interchangeably.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
8 weeks agocommon: Fix up malloc() comment in reserve_noncached()
Simon Glass [Mon, 21 Oct 2024 08:19:25 +0000 (10:19 +0200)]
common: Fix up malloc() comment in reserve_noncached()

The function name has changed, so update it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agoMerge tag 'i2c-tag-v2025.01-rc1' of https://source.denx.de/u-boot/custodians/u-boot-i2c
Tom Rini [Mon, 21 Oct 2024 14:30:12 +0000 (08:30 -0600)]
Merge tag 'i2c-tag-v2025.01-rc1' of https://source.denx.de/u-boot/custodians/u-boot-i2c

i2c updates for v2025.01-rc1

- Add support for the following Maxim chips using the existing PCA954x
  driver from Maxim:
  - MAX7356
  - MAX7357
  - MAX7358
  - MAX7367
  - MAX7368
  - MAX7369

- introduce "i2c-gpio,sda-output-only" functionality
  from Alex

2 months agoi2c: i2c-gpio: add support for i2c-gpio,sda-output-only
Alex Shumsky [Tue, 15 Oct 2024 20:29:31 +0000 (23:29 +0300)]
i2c: i2c-gpio: add support for i2c-gpio,sda-output-only

Some I2C slave devices are read-only and don't even answer with NACK.
For example FD65x segment LED controllers.
Make them usable with i2c-gpio,sda-output-only that are already supported
by Linux 6.3+.

Signed-off-by: Alex Shumsky <alexthreed@gmail.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
2 months agoi2c: muxes: pca954x: Add MAX735x/MAX736x support
Maksim Kiselev [Thu, 19 Sep 2024 16:06:56 +0000 (19:06 +0300)]
i2c: muxes: pca954x: Add MAX735x/MAX736x support

Add support for the following Maxim chips using the existing PCA954x
driver:
- MAX7356
- MAX7357
- MAX7358
- MAX7367
- MAX7368
- MAX7369

All added Maxim chips behave like the PCA954x, where a single SMBUS byte
write selects up to 8 channels to be bridged to the primary bus.

Tested using the MAX7358.

Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
2 months agoMerge tag 'efi-2025-01-rc1-2' of https://source.denx.de/u-boot/custodians/u-boot-efi
Tom Rini [Sun, 20 Oct 2024 14:27:15 +0000 (08:27 -0600)]
Merge tag 'efi-2025-01-rc1-2' of https://source.denx.de/u-boot/custodians/u-boot-efi

Pull request efi-2025-01-rc1-2

CI: https://source.denx.de/u-boot/custodians/u-boot-efi/-/pipelines/22810

Documentation:

* Add document describing Ethernet boot on AM62x SoC
* Fix typo in blkmap command example

UEFI:

* Avoid #ifdef in efi_setup.c
* Reduce message noisiness if ESP is missing
* Remove ERROR:, WARNING: prefixes in messages
* Use blk_create_devicef() in block device driver

Others:

* Let CONFIG_CMD_WGET depend on CONFIG_CMD_NET

2 months agoMerge tag 'dm-pull-17oct24-take2' of https://gitlab.denx.de/u-boot/custodians/u-boot-dm
Tom Rini [Sat, 19 Oct 2024 04:32:45 +0000 (22:32 -0600)]
Merge tag 'dm-pull-17oct24-take2' of https://gitlab.denx.de/u-boot/custodians/u-boot-dm

A few new x86 commands and minor improvements
expo improvements
binman support for signing FIT images

2 months agomtd: spi-nor: Move SR3 WPS bit definition in the correct location
Marek Vasut [Tue, 15 Oct 2024 20:14:53 +0000 (22:14 +0200)]
mtd: spi-nor: Move SR3 WPS bit definition in the correct location

Move the SR3 bit definition in the right place. Fix
what is likely a rebase artifact. No functional change.

Fixes: 215f1d5794c6 ("mtd: spi-nor: Clear Winbond SR3 WPS bit on boot")
Signed-off-by: Marek Vasut <marex@denx.de>
2 months agombedtls: fix defects in coverity scan
Raymond Mao [Wed, 16 Oct 2024 23:48:26 +0000 (16:48 -0700)]
mbedtls: fix defects in coverity scan

Fixes of unreleased buffer, deadcode and wrong variable type detected
by coverity scan.

Addresses-Coverity-ID: 510809:  Resource leaks  (RESOURCE_LEAK)
Addresses-Coverity-ID: 510806:  Control flow issues  (DEADCODE)
Addresses-Coverity-ID: 510794 Control flow issues  (NO_EFFECT)

Signed-off-by: Raymond Mao <raymond.mao@linaro.org>
2 months agocmd: upl: correct printf code
Heinrich Schuchardt [Fri, 18 Oct 2024 02:46:57 +0000 (04:46 +0200)]
cmd: upl: correct printf code

Building on 32-bit results in a build failure:

    cmd/upl.c:75:51: warning: format ‘%lx’ expects argument of type
    ‘long unsigned int’, but argument 3 has type ‘size_t’
    {aka ‘unsigned int’} [-Wformat=]
    75 | printf("UPL handoff written to %lx size %lx\n", addr, abuf_size(&buf));
       |                                         ~~^           ~~~~~~~~~~~~~~~
       |                                           |           |
       |                                           |           size_t {aka unsigned int}
       |                                           long unsigned int
       |                                         %x

Fixes: 264f4b0b34c0 ("upl: Add a command")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Neha Malcom Francis <n-francis@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agolmb: notify when adjacent regions are added
Caleb Connolly [Fri, 18 Oct 2024 13:51:07 +0000 (15:51 +0200)]
lmb: notify when adjacent regions are added

lmb_add_region() returns a positive integer if the added regions causes
existing regions to be coalesced. We still want to notify the EFI
subsystem about these added regions though, so adjust lmb_add() to only
bail on errors.

This fixes EFI memory allocation on boards with adjacent memory banks as is the
case on several Qualcomm boards like the RB3 Gen 2.

Fixes: 2f6191526a13 (lmb: notify of any changes to the LMB memory map)
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
Reviewed-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Tested-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agox86: cpu: Add missing header inclusion
Andy Shevchenko [Sat, 5 Oct 2024 19:12:00 +0000 (22:12 +0300)]
x86: cpu: Add missing header inclusion

Without asm/cpu_x86.h inclusion a compiler is not happy:

  arch/x86/cpu/cpu_x86.c:14:5: warning: no previous prototype for ‘cpu_x86_bind’ [-Wmissing-prototypes]
  arch/x86/cpu/cpu_x86.c:29:5: warning: no previous prototype for ‘cpu_x86_get_vendor’ [-Wmissing-prototypes]
  arch/x86/cpu/cpu_x86.c:41:5: warning: no previous prototype for ‘cpu_x86_get_desc’ [-Wmissing-prototypes]
  arch/x86/cpu/cpu_x86.c:55:5: warning: no previous prototype for ‘cpu_x86_get_count’ [-Wmissing-prototypes]

Add missing header inclusion.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agox86: cpu: Add a few prototypes to the header file
Andy Shevchenko [Sat, 5 Oct 2024 19:11:59 +0000 (22:11 +0300)]
x86: cpu: Add a few prototypes to the header file

The compiler is not happy to have no prototypes for the functions that
are not defined static. Add them. This helps avoiding the compiler warnings:

  arch/x86/cpu/cpu.c:197:13: warning: no previous prototype for ‘board_final_init’ [-Wmissing-prototypes]
  arch/x86/cpu/cpu.c:205:13: warning: no previous prototype for ‘board_final_cleanup’ [-Wmissing-prototypes]
  arch/x86/cpu/cpu.c:307:5: warning: no previous prototype for ‘reserve_arch’ [-Wmissing-prototypes]

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agox86: cpu: Mark a few functions static
Andy Shevchenko [Sat, 5 Oct 2024 19:11:58 +0000 (22:11 +0300)]
x86: cpu: Mark a few functions static

Some functions are not used anywhere except the same file
where they are defined. Mark them static. This helps avoiding
the compiler warnings:

  arch/x86/cpu/cpu.c:343:6: warning: no previous prototype for ‘detect_coreboot_table_at’ [-Wmissing-prototypes]
  arch/x86/cpu/mtrr.c:90:6: warning: no previous prototype for ‘mtrr_write_all’ [-Wmissing-prototypes]
  arch/x86/cpu/i386/interrupt.c:240:6: warning: no previous prototype for ‘__do_irq’ [-Wmissing-prototypes]

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agox86: cpu: Use default print_cpuinfo() for all
Andy Shevchenko [Sat, 5 Oct 2024 19:11:57 +0000 (22:11 +0300)]
x86: cpu: Use default print_cpuinfo() for all

Most of the copies of the print_cpuinfo() call the default method.
Remove all of those in order to have only the default one when
no `cpu` command is compiled.

This also helps avoiding compiler warning, e.g.:

  arch/x86/cpu/tangier/tangier.c:23:5: warning: no previous prototype for ‘print_cpuinfo’ [-Wmissing-prototypes]

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agox86: Enable RTC command by default
Simon Glass [Mon, 14 Oct 2024 22:32:12 +0000 (16:32 -0600)]
x86: Enable RTC command by default

The real-time clock is needed for most X86 systems and it is useful to
be able to read from it. Enable the rtc command by default.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agodoc: Update coreboot's CI information
Simon Glass [Mon, 14 Oct 2024 22:32:06 +0000 (16:32 -0600)]
doc: Update coreboot's CI information

This is in the Dockerfile now, so update this section of the docs.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 months agodocker: Update coreboot
Simon Glass [Mon, 14 Oct 2024 22:32:05 +0000 (16:32 -0600)]
docker: Update coreboot

Update to a newer version which supports settings in CMOS RAM and
linear framebuffer.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
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 agoefi_driver: use blk_create_devicef()
Heinrich Schuchardt [Fri, 18 Oct 2024 01:30:14 +0000 (03:30 +0200)]
efi_driver: use blk_create_devicef()

The EFI block device driver is the only user of blk_create_device() outside
the block device uclass. Use blk_create_devicef() instead like other block
device drivers.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 months agoefi_loader: remove ERROR:, WARNING: prefixes in messages
Heinrich Schuchardt [Thu, 17 Oct 2024 18:13:05 +0000 (20:13 +0200)]
efi_loader: remove ERROR:, WARNING: prefixes in messages

We should not write "ERROR:" or "WARNING:" when using log_err() or
log_warning(). These prefixed don't provide additional information.

Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 months agoefi_loader: add missing lf in error message
Heinrich Schuchardt [Thu, 17 Oct 2024 18:05:07 +0000 (20:05 +0200)]
efi_loader: add missing lf in error message

Messages written with log_err() should terminate with a linefeed.

Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
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 agoefi_loader: reduce noisiness if ESP is missing
Heinrich Schuchardt [Fri, 18 Oct 2024 01:18:36 +0000 (03:18 +0200)]
efi_loader: reduce noisiness if ESP is missing

EFI variables can be stored in a file on the EFI system partition. If that
partition is missing we are writing two error messages per variable. This
is too noisy.

Just warn once about the missing ESP.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agoefi_loader: avoid #ifdef in efi_setup.c
Heinrich Schuchardt [Wed, 16 Oct 2024 10:17:39 +0000 (12:17 +0200)]
efi_loader: avoid #ifdef in efi_setup.c

We prefer `if` over `#ifdef` in our code.

Eliminate #ifdef statements in efi_setup.c.

Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 months agocmd: wget: CONFIG_CMD_WGET must depend on CONFIG_CMD_NET
Heinrich Schuchardt [Wed, 16 Oct 2024 09:50:39 +0000 (11:50 +0200)]
cmd: wget: CONFIG_CMD_WGET must depend on CONFIG_CMD_NET

do_wget is defined in cmd/net.c.
cmd/net.c is not compiled if CONFIG_CMD_NET=n.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 months agodoc: blkmap: Fix typo in command example
Ken Kurematsu [Thu, 26 Sep 2024 09:26:05 +0000 (09:26 +0000)]
doc: blkmap: Fix typo in command example

Fixed a variable that was incorrect during the calculation of fileblks.

Signed-off-by: Ken Kurematsu <k.kurematsu@nskint.co.jp>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
2 months agodoc: board: ti: am62x_sk: Add document for Ethernet boot on AM62x SoC.
Chintan Vankar [Thu, 26 Sep 2024 05:01:38 +0000 (10:31 +0530)]
doc: board: ti: am62x_sk: Add document for Ethernet boot on AM62x SoC.

Document the procedure to enable Ethernet Boot on AM62x SoC.

Signed-off-by: Chintan Vankar <c-vankar@ti.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>