]> git.ipfire.org Git - thirdparty/u-boot.git/log
thirdparty/u-boot.git
4 months agocmd: efidebug: check pointer after memory allocation
Heinrich Schuchardt [Thu, 11 Jan 2024 08:25:35 +0000 (09:25 +0100)] 
cmd: efidebug: check pointer after memory allocation

After calling efi_alloc() we must check that the return value is not NULL.

Fixes: f01c961ee34c ("cmd: efidebug: add uri device path")
Addresses-Coverity-ID: 477185 Dereference null return value
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agoefi_loader: support fmp versioning for multi bank update
Masahisa Kojima [Thu, 11 Jan 2024 05:35:40 +0000 (14:35 +0900)] 
efi_loader: support fmp versioning for multi bank update

This commit stores the firmware version into the array
of fmp_state structure to support the fmp versioning
for multi bank update. The index of the array is identified
by the bank index.

This modification keeps the backward compatibility with
the existing versioning feature.

Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agofwu: fix fwu_get_image_index interface
Masahisa Kojima [Thu, 11 Jan 2024 05:35:39 +0000 (14:35 +0900)] 
fwu: fix fwu_get_image_index interface

The capsule update uses the DFU framework for updating
storage. fwu_get_image_index() currently returns the
image_index calculated by (dfu_alt_num + 1), but this is
different from the image_index in UEFI terminology.

Since capsule update implementation calls dfu_write_by_alt
function, it is better that FWU returns the dfu_alt_num.

Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agoefi_loader: Clean up efi_dp_append and efi_dp_concat
Ilias Apalodimas [Mon, 8 Jan 2024 08:55:33 +0000 (10:55 +0200)] 
efi_loader: Clean up efi_dp_append and efi_dp_concat

Looking back at the initrd storing functionality, we introduced three
functions, efi_dp_append_or_concatenate(), efi_dp_append/concat(). In
hindsight we could have simplified that by a lot. First of all none of
the functions append anything. They all allocate a new device path and
concatenate the contents of two device paths in one. A boolean parameter
controls the final device path -- if that's true an end node is injected
between the two device paths.

So let's rewrite this and make it a bit easier to read. Get rid of
efi_dp_append(), efi_dp_concat() and rename
efi_dp_append_or_concatenate() to efi_dp_concat(). This is far more
intuitive and the only adjustment that is needed is an extra boolean
argument on all callsites.

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agodoc: fix three-dash references in reStructuredText
Grzegorz Szymaszek [Sat, 6 Jan 2024 10:36:54 +0000 (11:36 +0100)] 
doc: fix three-dash references in reStructuredText

The "Sending patches" and "Patman patch manager" documents refer to the
three-dash, "---", that separates patch parts. The symbol is written in
the documentation in the same form as it is in actual patches: as three
U+002D HYPHEN-MINUS characters. When building the documentation, Sphinx
converts this symbol to a U+2014 EM DASH, that is invalid in this case.

Make the three-dash symbol a reStructuredText inline literal to prevent
its conversion; that is, enclose it in a pair of double backquotes (`).

Signed-off-by: Grzegorz Szymaszek <gszymaszek@short.pl>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
4 months agodoc: coreboot: Update stale graphics enabling instructions
Bin Meng [Thu, 4 Jan 2024 23:25:42 +0000 (07:25 +0800)] 
doc: coreboot: Update stale graphics enabling instructions

With latest coreboot (e.g.: v4.22.01), the instructions to enable
graphics support has changed. Refresh the doc.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
4 months agoefi_loader: remove unused members from struct efi_disk_obj
Masahisa Kojima [Mon, 25 Dec 2023 04:43:54 +0000 (13:43 +0900)] 
efi_loader: remove unused members from struct efi_disk_obj

part and dev_index in struct efi_disk_obj are not used,
let's remove it.

This commit also removes the invalid structure comment
for @dev, it does not exist.

Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
4 months agoefi: Avoid using dm_scan_other()
Simon Glass [Tue, 19 Dec 2023 14:27:19 +0000 (07:27 -0700)] 
efi: Avoid using dm_scan_other()

This function is defined by bootstd so using it precludes using that
feature. Use the board_early_init_r() feature instead.

Nove the affected code into a new file, so that it is clear that
this relates to board init.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
4 months agoefi_loader: fix iteration of FMP protocols
Masahisa Kojima [Mon, 18 Dec 2023 09:57:41 +0000 (18:57 +0900)] 
efi_loader: fix iteration of FMP protocols

If one of the FMP protocols fails when calling GetImageInfo(),
populating the ESRT ends up with failure and other FMP protocols
are not added to the ESRT. We should still add all other FMP
protocols to the ESRT.

With this commit, iteration of all FMP protocols continues
even though one of the FMP protocols fails.

Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Tested-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agoMerge branch '2024-01-12-assorted-fixes'
Tom Rini [Fri, 12 Jan 2024 13:34:50 +0000 (08:34 -0500)] 
Merge branch '2024-01-12-assorted-fixes'

- Allow defconfigs to #include files (so we can construct a defconfig
  from fragments), update phy-mtk-tphy binding, assorted test fixes,
  allow building host tools without cryptographic libraries again,
  android_ab bugfix, and make some SPL debugging cases easier.

4 months agoMakefile: Run defconfig files through the C preprocessor
Andrew Davis [Wed, 1 Nov 2023 17:05:18 +0000 (12:05 -0500)] 
Makefile: Run defconfig files through the C preprocessor

This allows us to use some of the normal preprocessor directives inside
defconfig files. Such as #define and #include.

Signed-off-by: Andrew Davis <afd@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Nishanth Menon <nm@ti.com>
4 months agoandroid_ab: don't ignore ab_control_store return code
Alexey Romanov [Mon, 25 Dec 2023 10:22:45 +0000 (13:22 +0300)] 
android_ab: don't ignore ab_control_store return code

ab_control_store() can return an error if writing to disk fails.
In this case, we have to pass the error code to the caller.

Signed-off-by: Alexey Romanov <avromanov@salutedevices.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
4 months agotools: fix build without LIBCRYPTO support
Paul-Erwan Rio [Thu, 21 Dec 2023 07:26:11 +0000 (08:26 +0100)] 
tools: fix build without LIBCRYPTO support

Commit cb9faa6f98ae ("tools: Use a single target-independent config to
enable OpenSSL") introduced a target-independent configuration to build
crypto features in host tools.

But since commit 2c21256b27d7 ("hash: Use Kconfig to enable hashing in
host tools and SPL") the build without OpenSSL is broken, due to FIT
signature/encryption features. Add missing conditional compilation
tokens to fix this.

Signed-off-by: Paul-Erwan Rio <paulerwan.rio@gmail.com>
Tested-by: Alexander Dahl <ada@thorsis.com>
Cc: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agotools: kwbimage: Allow disabling build on non-mvebu platforms
Alexander Dahl [Thu, 21 Dec 2023 07:26:10 +0000 (08:26 +0100)] 
tools: kwbimage: Allow disabling build on non-mvebu platforms

Some users want to build with CONFIG_TOOLS_LIBCRYPTO disabled, which in
general is possible for at least some boards.  32-bit mvebu however
requires kwbimage for building SPL, and kwbimage has a hard dependency
to host OpenSSL.

The new symbol CONFIG_TOOLS_KWBIMAGE allows disabling kwbimage build on
non-mvebu platforms, and thus building without host libcrypto from
OpenSSL.

Based on previous work and discussions, see links below.

Link: https://lore.kernel.org/u-boot/20211021093304.25399-1-pali@kernel.org/
Link: https://lore.kernel.org/u-boot/20220111153120.1276641-1-marex@denx.de/
Link: https://lore.kernel.org/u-boot/20230121154743.667253-2-paulerwan.rio@gmail.com/
Cc: Marek Vasut <marex@denx.de>
Cc: Paul-Erwan Rio <paulerwan.rio@gmail.com>
Signed-off-by: Alexander Dahl <ada@thorsis.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agotest: fs: fs-test: Move the tests to use sha256sum
Peter Robinson [Tue, 19 Dec 2023 22:01:50 +0000 (22:01 +0000)] 
test: fs: fs-test: Move the tests to use sha256sum

Move the use of md5s for recording filesystem file integrity
checks to sha256 hashes as they're preferred due to being
less likely to produce clashing hashes. In the process
generalise some of the wording to use the more generic
hash term.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
4 months agoti: am335x: Remove unused linker script
Tom Rini [Tue, 19 Dec 2023 14:03:30 +0000 (09:03 -0500)] 
ti: am335x: Remove unused linker script

The board specific linker script has not been used in a long time here,
remove it.

Signed-off-by: Tom Rini <trini@konsulko.com>
4 months agoarm: spl: Use separate fault handlers instead of a single common one
Csókás Bence [Tue, 19 Dec 2023 13:33:18 +0000 (14:33 +0100)] 
arm: spl: Use separate fault handlers instead of a single common one

It may be necessary to set breakpoints etc. on a specific fault handler in SPL.
Add a Kconfig option to separate the different handlers into their own individual infinite loops.

Signed-off-by: Csókás Bence <csokas.bence@prolan.hu>
4 months agotest: CONFIG_UT_BOOTSTD must depend on CONFIG_BOOTSTD
Heinrich Schuchardt [Sat, 16 Dec 2023 15:46:31 +0000 (16:46 +0100)] 
test: CONFIG_UT_BOOTSTD must depend on CONFIG_BOOTSTD

Building sandbox_defconfig with

    CONFIG_BOOTSTD=n
    CONFIG_UT_BOOTSTD=y

leads to an error

    /usr/bin/ld: test/cmd_ut.o:(.data.rel.cmd_ut_sub+0xc0):
    undefined reference to `do_ut_bootstd'

Add the missing dependency.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agoboot: CONFIG_CEDIT must depend on CONFIG_EXPO
Heinrich Schuchardt [Sat, 16 Dec 2023 15:38:36 +0000 (16:38 +0100)] 
boot: CONFIG_CEDIT must depend on CONFIG_EXPO

Building sandbox_defconfig with

    CONFIG_CMD_CEDIT=y
    CONFIG_EXPO=n

fails with

    cmd/cedit.c:258:(.text.do_cedit_run+0x4c):
    undefined reference to `expo_apply_theme

Fix the dependencies.

Fixes: a0874dc4ac71 ("expo: Add a configuration editor")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agotest: build test/boot for CONFIG_UT_BOOTSTD=n
Heinrich Schuchardt [Sat, 16 Dec 2023 15:19:54 +0000 (16:19 +0100)] 
test: build test/boot for CONFIG_UT_BOOTSTD=n

Building sandbox_defconfig with

    CONFIG_UT_BOOTSTD=n
    CONFIG_MEASURMENT=y

results in an error:

    /usr/bin/ld: test/cmd_ut.o:(.data.rel.cmd_ut_sub+0x408):
    undefined reference to `do_ut_measurement'

Fixes: 5999ea20fa42 ("test: Add sandbox TPM boot measurement")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agoboot: Support decompressing non-kernel OS images
Simon Glass [Fri, 15 Dec 2023 23:54:16 +0000 (16:54 -0700)] 
boot: Support decompressing non-kernel OS images

Sometimes the kernel is built as an EFI application rather than a
binary. We still want to support compression for this case.

For arm64 the entry point is set later in the bootm_load_os() function,
since these images are typically relocated due to the 2MB-alignment
requirement of arm64 images. But since the EFI image is not in the same
format, we need to update the entry point earlier.

Set the entry point always, for kernel_noload to resolve this problem.
It should be harmless to do this always.

Signed-off-by: Simon Glass <sjg@chromium.org>
4 months agophy: phy-mtk-tphy: add properties for phy tuning
Chunfeng Yun [Wed, 13 Dec 2023 06:41:34 +0000 (14:41 +0800)] 
phy: phy-mtk-tphy: add properties for phy tuning

Add properties to improve eye diagram which sometimes need adjust
some parameters of u2phy;
Add a property to tune disconnect threshold;

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
4 months agodt-bindings: phy-mtk-tphy: add properties for phy tuning
Chunfeng Yun [Wed, 13 Dec 2023 06:41:33 +0000 (14:41 +0800)] 
dt-bindings: phy-mtk-tphy: add properties for phy tuning

Add properties to improve eye diagram which sometimes need adjust
some parameters of u2phy;
Add a property to tune disconnect threshold;

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
4 months agoMerge patch series "net fixes prior lwip"
Tom Rini [Thu, 11 Jan 2024 16:25:07 +0000 (11:25 -0500)] 
Merge patch series "net fixes prior lwip"

Maxim Uvarov <maxim.uvarov@linaro.org> says:

Add small net fixes prior lwip patches.

4 months agoMakefile: add dtbs to clean
Maxim Uvarov [Tue, 26 Dec 2023 15:46:19 +0000 (21:46 +0600)] 
Makefile: add dtbs to clean

CI test checks that generated dtb has to be cleaned up.
Use the same clean procedure as Linux top level Makefile has.

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
4 months agoomap3: use device specific naming for mem_init
Maxim Uvarov [Tue, 26 Dec 2023 15:46:18 +0000 (21:46 +0600)] 
omap3: use device specific naming for mem_init

Use device specific naming for functions so as to not overlap
with common function names.

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
4 months agobcm_ns3: use device specific naming for variables
Maxim Uvarov [Tue, 26 Dec 2023 15:46:17 +0000 (21:46 +0600)] 
bcm_ns3: use device specific naming for variables

Use device specific naming for variables so as to not overlap
with common function names.

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
4 months agomach-socfpga: do not overlap defines with lwip
Maxim Uvarov [Tue, 26 Dec 2023 15:46:16 +0000 (21:46 +0600)] 
mach-socfpga: do not overlap defines with lwip

Fix compilation issue with overlapping lwip and march defines.

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agodriver/net/rtl8139: remove debug print
Maxim Uvarov [Tue, 26 Dec 2023 15:46:15 +0000 (21:46 +0600)] 
driver/net/rtl8139: remove debug print

debug print delays reset of the driver. Finally I see
bunch of "rx error FFFF" errors in the screen. CI can
not handle many prints. While network works fine there

Reproduced with:
make CROSS_COMPILE=sh2-linux- r2dplus_defconfig all
qemu-system-sh4 -M r2d -nographic -serial null \
-serial mon:stdio -net user,tftp=`pwd` \
-net nic,model=rtl8139 -kernel ./u-boot.bin

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agosandbox: eth-raw-os: successful return code is 0
Maxim Uvarov [Tue, 26 Dec 2023 15:46:14 +0000 (21:46 +0600)] 
sandbox: eth-raw-os: successful return code is 0

all network drivers return 0 on the successful
transmission.

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agonet/smc911x: fix return from smc911x_send
Maxim Uvarov [Tue, 26 Dec 2023 15:46:13 +0000 (21:46 +0600)] 
net/smc911x: fix return from smc911x_send

return value of smc911x_send is ignored, but on sucesseful
send we need return 0 and or error -ETIMEOUT, not opposite.

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agotest_net: print out net list
Maxim Uvarov [Tue, 26 Dec 2023 15:46:12 +0000 (21:46 +0600)] 
test_net: print out net list

Printing net list is useful in CI log files.

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agoMerge tag 'u-boot-dfu-20240111' of https://source.denx.de/u-boot/custodians/u-boot-dfu
Tom Rini [Thu, 11 Jan 2024 15:03:51 +0000 (10:03 -0500)] 
Merge tag 'u-boot-dfu-20240111' of https://source.denx.de/u-boot/custodians/u-boot-dfu

u-boot-dfu-20240111

- Implement fastboot multi-response. This allows multi-line response and
  most importantly, finally adds support for fastboot getvar all command.

- New 'fastboot oem console' command. Useful for debugging to send data
  the u-boot shell via fastboot

- Console recording fixes

4 months agoconfigs: Resync with savedefconfig
Tom Rini [Wed, 10 Jan 2024 15:45:49 +0000 (10:45 -0500)] 
configs: Resync with savedefconfig

Rsync all defconfig files using moveconfig.py

Signed-off-by: Tom Rini <trini@konsulko.com>
4 months agoMerge https://source.denx.de/u-boot/custodians/u-boot-marvell
Tom Rini [Wed, 10 Jan 2024 14:53:29 +0000 (09:53 -0500)] 
Merge https://source.denx.de/u-boot/custodians/u-boot-marvell

- AC5: Use finer grained memory map (Chris)
- Espressobin: Misc improvements (Robert)
- eDPU: Support new board revision (Robert)

4 months agoarm: mvebu: eDPU: support new board revision
Robert Marko [Wed, 29 Nov 2023 10:11:08 +0000 (11:11 +0100)] 
arm: mvebu: eDPU: support new board revision

There is a new eDPU revision that uses Marvell 88E6361 switch onboard.
We can rely on detecting the switch to enable and fixup the Linux DTS
so a single DTS can be used.

There is currently no support for the 88E6361 switch and thus no working
networking in U-Boot, so we disable both ports.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Reviewed-by: Stefan Roese <sr@denx.de>
4 months agoarm: mvebu: Espressobin: move network setup into a separate function
Robert Marko [Wed, 29 Nov 2023 10:11:07 +0000 (11:11 +0100)] 
arm: mvebu: Espressobin: move network setup into a separate function

Currently, Esspresobin switch is being setup directly in last_stage_init()
which makes it hard to add support for any other board to be setup.

So, lets just move the switch setup code to a separate function and call it
if compatible matches, there should be no functional change.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Reviewed-by: Stefan Roese <sr@denx.de>
4 months agoarm: mvebu: Espressobin: move FDT fixup into a separate function
Robert Marko [Wed, 29 Nov 2023 10:11:06 +0000 (11:11 +0100)] 
arm: mvebu: Espressobin: move FDT fixup into a separate function

Currently, Esspresobin FDT is being fixed up directly in ft_board_setup()
which makes it hard to add support for any other board to be fixed up.

So, lets just move the FDT fixup code to a separate function and call it
if compatible matches, there should be no functional change.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Reviewed-by: Stefan Roese <sr@denx.de>
4 months agoarm: mvebu: AC5: Use finer grained memory map
Chris Packham [Fri, 27 Oct 2023 00:44:11 +0000 (13:44 +1300)] 
arm: mvebu: AC5: Use finer grained memory map

The ATF implementation for AC5/AC5X ends up with bl31 living in some
internal SRAM. This is in the middle of the large MMIO region that we
were using. Adjust this to be finer grained blocks based on the address
map from the AC5X Family Control and Management Subsystem Functional
Datasheet.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
4 months agoMerge tag 'smbios-2024-04-rc1' of https://source.denx.de/u-boot/custodians/u-boot-efi
Tom Rini [Tue, 9 Jan 2024 17:50:04 +0000 (12:50 -0500)] 
Merge tag 'smbios-2024-04-rc1' of https://source.denx.de/u-boot/custodians/u-boot-efi

Pull request smbios-2024-04-rc1

* make table_compute_checksum() arguments const
* remove duplicate function verify_checksum()
* enable setting processor family > 0xff
* set correct SMBIOS processor family value for RISC-V
* avoid importing ofnode.h in smbios.h
* provide a UEFI tool to dump SMBIOS table

4 months agoMerge branch 'master' of https://gitlab.denx.de/u-boot/custodians/u-boot-samsung
Tom Rini [Tue, 9 Jan 2024 14:00:59 +0000 (09:00 -0500)] 
Merge branch 'master' of https://gitlab.denx.de/u-boot/custodians/u-boot-samsung

4 months agopinctrl: exynos: Convert to use livetree API for fdt access
Sam Protsenko [Thu, 30 Nov 2023 20:13:52 +0000 (14:13 -0600)] 
pinctrl: exynos: Convert to use livetree API for fdt access

Use counterpart dev_read_* functions instead of fdt* ones. It fixes
checkpatch warnings like this:

    WARNING: Use the livetree API (dev_read_...)
    #54: FILE: drivers/pinctrl/exynos/pinctrl-exynos.c:137:
        pinvals[idx] = fdtdec_get_int(fdt, node,

and also makes it possible to avoid using the global data pointer in the
driver.

No functional change.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
4 months agopinctrl: exynos: Reduce variables scope
Sam Protsenko [Thu, 30 Nov 2023 20:13:51 +0000 (14:13 -0600)] 
pinctrl: exynos: Reduce variables scope

Pull some variables declared in exynos_pinctrl_set_state() into its
loop, to reduce their scope. Style commit, no functional change.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
4 months agopinctrl: exynos: Refactor handling the pin related dt properties
Sam Protsenko [Thu, 30 Nov 2023 20:13:50 +0000 (14:13 -0600)] 
pinctrl: exynos: Refactor handling the pin related dt properties

All pin related dt properties (pin-function, pin-pud and pin-drv) are
handled in a very similar way. Get rid of that code duplication by
extracting the corresponding data knowledge into an actual data
structure (array), and then just iterating over it.

No functional change, it's a refactoring commit.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
4 months agopinctrl: exynos: Support different register types in pin banks
Sam Protsenko [Thu, 30 Nov 2023 20:13:49 +0000 (14:13 -0600)] 
pinctrl: exynos: Support different register types in pin banks

Get rid of hard-coded register offsets and widths. Instead provide a way
for pinctrl drivers to specify different pin bank register offsets and
widths. This in turn makes it possible to add support for new SoCs that
have registers with offset/width values different than generic ones
already available in pinctrl-exynos driver.

Offset constants (now unused in pinctrl-exynos.c) are moved to
pinctrl-exynos7420 driver, which is the single user of those constants.

The design of this patch follows Linux kernel pinctrl-exynos driver
design, in terms of added data structures and types. This patch doesn't
add support for any new SoCs and shouldn't introduce any functional
changes.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
4 months agopinctrl: exynos: Rework pin_to_bank_base() to obtain data by name
Sam Protsenko [Thu, 30 Nov 2023 20:13:48 +0000 (14:13 -0600)] 
pinctrl: exynos: Rework pin_to_bank_base() to obtain data by name

Rework pin_to_bank_base() function to obtain bank data structure by bank
name instead of getting bank base address by pin name, and rename it to
get_bank() to reflect this change. This in turn leads to the extraction
of parse_pin(), so the caller has to use it before calling get_bank().

No functional change. This is a refactoring commit which prepares
pinctrl driver code for handling different sizes of register fields,
which will be added next.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
4 months agopinctrl: exynos: Extract pin parsing code into a separate function
Sam Protsenko [Thu, 30 Nov 2023 20:13:47 +0000 (14:13 -0600)] 
pinctrl: exynos: Extract pin parsing code into a separate function

Next commits are going to re-design the pin_to_bank_base() function and
its usage in a way that the pin parsing code will be called separately.
Extract it into a separate function first, as a refactoring commit.

No functional change.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
4 months agopinctrl: exynos: Improve coding style
Sam Protsenko [Thu, 30 Nov 2023 20:13:46 +0000 (14:13 -0600)] 
pinctrl: exynos: Improve coding style

Style commit, no functional change.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
4 months agotest: hush: dollar: fix bugous behavior
Ion Agorria [Fri, 5 Jan 2024 07:22:12 +0000 (09:22 +0200)] 
test: hush: dollar: fix bugous behavior

The dollar test was merged with bugous console behavior, and
instead of fixing it, this behavior was just workarounded.

It seems like without the fix the ut_assert_skipline(); didn't clear
console and running ut_assert_skipline(); many times would give always
OK. With

lib: membuff: fix readline not returning line in case of overflow

the line is cleared correctly and next assert fails because now there
is nothing to clean which is correct if we look the this a bit above
the failing assert:

    if (gd->flags & GD_FLG_HUSH_MODERN_PARSER) {
         /*
          * For some strange reasons, the console is not empty after
          * running above command.
          * So, we reset it to not have side effects for other tests.
          */
         console_record_reset_enable();
    } else if (gd->flags & GD_FLG_HUSH_OLD_PARSER) {
         ut_assert_console_end();
    }

Which further confirms that tests workaround the old problem and now
that problem is fixed we can remove the whole if blocks and simply
place ut_assert_console_end() right after ut_assert_skipline() without
any conditional and will pass green.

So this part of code goes from:
    ut_assert_skipline();
    ut_assert_skipline();

    if (gd->flags & GD_FLG_HUSH_MODERN_PARSER) {
        /* See above comments. */
        console_record_reset_enable();
    } else if (gd->flags & GD_FLG_HUSH_OLD_PARSER) {
        ut_assert_console_end();
    }

to become:
    ut_assert_skipline();
    ut_assert_console_end();

Same thing should be done with the if block mentioned above that calls
console_record_reset_enable().

Signed-off-by: Ion Agorria <ion@agorria.com>
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Link: https://lore.kernel.org/r/20240105072212.6615-8-clamor95@gmail.com
[mkorpershoek: reworded commit title]
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
4 months agoMerge tag 'rng-2024-04-rc1' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
Tom Rini [Tue, 9 Jan 2024 14:00:39 +0000 (09:00 -0500)] 
Merge tag 'rng-2024-04-rc1' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi

Pull request rng-2024-04-rc1

QEMU does not provide information in the device-tree if the ARMv8.5 RNDR
or the RISC-V Zkr RNG have been enabled on the command line.

In different parts of our code we assume that the first RNG device is the
one to be used. Therefore it is preferable to detect the availability of
said devices already in the bind method.

There has been a related discussion if the U_BOOT_DRVINFO() macro should be
used for architectural devices
(https://lore.kernel.org/u-boot/20231031125552.26698-1-heinrich.schuchardt@canonical.com/).
This aspect is not touched by this series.

4 months agofastboot: add oem console command support
Ion Agorria [Fri, 5 Jan 2024 07:22:11 +0000 (09:22 +0200)] 
fastboot: add oem console command support

"oem console" serves to read console record buffer.

Signed-off-by: Ion Agorria <ion@agorria.com>
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Link: https://lore.kernel.org/r/20240105072212.6615-7-clamor95@gmail.com
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
4 months agolib: membuff: fix readline not returning line in case of overflow
Ion Agorria [Fri, 5 Jan 2024 07:22:10 +0000 (09:22 +0200)] 
lib: membuff: fix readline not returning line in case of overflow

If line overflows readline it will not be returned, fix this behavior,
make it optional and documented properly.

Signed-off-by: Ion Agorria <ion@agorria.com>
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Link: https://lore.kernel.org/r/20240105072212.6615-6-clamor95@gmail.com
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
4 months agocommon: console: record console from the beginning
Ion Agorria [Fri, 5 Jan 2024 07:22:09 +0000 (09:22 +0200)] 
common: console: record console from the beginning

Set flag to enable console record on console_record_init
and not only on console_record_reset_enable. This fixes
missing start of U-Boot log for fastboot oem console
command.

Signed-off-by: Ion Agorria <ion@agorria.com>
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Link: https://lore.kernel.org/r/20240105072212.6615-5-clamor95@gmail.com
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
4 months agocommon: console: introduce console_record_isempty helper
Ion Agorria [Fri, 5 Jan 2024 07:22:08 +0000 (09:22 +0200)] 
common: console: introduce console_record_isempty helper

Add console_record_isempty to check if console record buffer
contains any data.

Signed-off-by: Ion Agorria <ion@agorria.com>
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Link: https://lore.kernel.org/r/20240105072212.6615-4-clamor95@gmail.com
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
4 months agofastboot: implement "getvar all"
Ion Agorria [Fri, 5 Jan 2024 07:22:07 +0000 (09:22 +0200)] 
fastboot: implement "getvar all"

This commit implements "fastboot getvar all" listing
by iterating the existing dispatchers that don't require
parameters (as we pass NULL), uses fastboot multiresponse.

Signed-off-by: Ion Agorria <ion@agorria.com>
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Link: https://lore.kernel.org/r/20240105072212.6615-3-clamor95@gmail.com
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
4 months agofastboot: multiresponse support
Ion Agorria [Fri, 5 Jan 2024 07:22:06 +0000 (09:22 +0200)] 
fastboot: multiresponse support

Currently u-boot fastboot can only send one message back to host,
so if there is a need to print more than one line messages must be
kept sending until all the required data is obtained. This behavior
can be adjusted using multiresponce ability (getting multiple lines
of response) proposed in this patch.

Signed-off-by: Ion Agorria <ion@agorria.com>
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Link: https://lore.kernel.org/r/20240105072212.6615-2-clamor95@gmail.com
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
4 months agoefi_loader: provide tool to dump SMBIOS table
Heinrich Schuchardt [Wed, 3 Jan 2024 08:07:21 +0000 (09:07 +0100)] 
efi_loader: provide tool to dump SMBIOS table

An EFI binary smbiosdump.efi is provided that can be used to check the
SMBIOS table for consistency and to dump it as a file.

The tool provides the following commands:

check
    Check the SMBIOS table for consistency.

exit
    Leave the tool.

help
    Show available commands.

save
    Save the SMBIOS table to a file on the EFI system partition. The file
    can be further analyzed with the dmidecode command line tool::

        dmidecode --from-dump <filename>

Specifying 'nocolor' as load option data suppresses colored output and
clearing of the screen.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agosmbios: smbios.h should not import ofnode.h
Heinrich Schuchardt [Wed, 3 Jan 2024 08:07:20 +0000 (09:07 +0100)] 
smbios: smbios.h should not import ofnode.h

The smbios.h include does not use any definitions from ofnode.h.
So don't include it.

As DECLARE_GLOBAL_DATA_PTR is no longer defined via dm/of.h we need to
add it to efi_smbios.c.

Add now missing includes to smbios-parser.c.

Remove a superfluous check comparing the sizes of the SMBIOS 2.1 and SMBIOS
3.0 anchors.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agocpu: riscv: set correct SMBIOS processor family value
Heinrich Schuchardt [Thu, 28 Dec 2023 07:30:24 +0000 (08:30 +0100)] 
cpu: riscv: set correct SMBIOS processor family value

The SMBIOS specification requires to set the processor family in the type 4
(Processor Information) table to specific values depending only on the
bitness of the system (0x200 for RV32 and 0x201 for RV64).

With this patch dmidecode shows

    Handle 0x0004, DMI type 4, 48 bytes
    Processor Information
Socket Designation: Not Specified
Type: Central Processor
Family: RV64

for qemu-riscv64_smode_defconfig.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
4 months agosmbios: enable setting processor family > 0xff
Heinrich Schuchardt [Thu, 28 Dec 2023 07:30:23 +0000 (08:30 +0100)] 
smbios: enable setting processor family > 0xff

Many value of processor type exceed 0xff and have to be stored as u16
value. In the type 4 table set processor_family = 0xfe signaling that
field processor_family2 is used and write the actual value into the
processor_family2 field.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agolib: smbios: verify_checksum() is duplicate
Heinrich Schuchardt [Tue, 26 Dec 2023 10:22:28 +0000 (11:22 +0100)] 
lib: smbios: verify_checksum() is duplicate

The function verify_checksum() duplicates what table_compute_checksum()
does. Replace it. table_compute_checksum() is always compiled.

Fixes: 415eab0655a8 ("smbios: add parsing API")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agolib: make table_compute_checksum() arguments const
Heinrich Schuchardt [Tue, 9 Jan 2024 08:36:44 +0000 (09:36 +0100)] 
lib: make table_compute_checksum() arguments const

table_compute_checksum() does neither changes the content of the
checksummed buffer nor the buffer length. Adding const to the
definition makes the function wider usable.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agorng: detect RISC-V Zkr RNG device in bind method
Heinrich Schuchardt [Sat, 4 Nov 2023 06:51:07 +0000 (08:51 +0200)] 
rng: detect RISC-V Zkr RNG device in bind method

The existence of devices should be checked in the bind method and not in
the probe method. Adjust the RISC-V Zkr RNG driver accordingly.

Use ENOENT (and not ENODEV) to signal that the device is not available.

Fixes: ceec977ba1a9 ("rng: Provide a RNG based on the RISC-V Zkr ISA extension")
Reported-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
4 months agorng: fix ARMv8.5 RNDR driver
Heinrich Schuchardt [Sat, 4 Nov 2023 07:00:07 +0000 (09:00 +0200)] 
rng: fix ARMv8.5 RNDR driver

In different parts of our code we assume that the first RNG device is the
one to be used. Therefore it is preferable to detect the availability of
the RNDR register already in the bind method.

For signaling the non-existence of a device the driver model requires using
ENOENT (and not ENODEV).

Fixes: 31565bb0aa2d ("driver: rng: Add DM_RNG interface for ARMv8.5 RNDR registers")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Andre Przywara <andre.przywara@arm.com>
4 months agoMerge tag 'u-boot-imx-master-20240108' of https://gitlab.denx.de/u-boot/custodians... 434/head
Tom Rini [Mon, 8 Jan 2024 18:39:00 +0000 (13:39 -0500)] 
Merge tag 'u-boot-imx-master-20240108' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx

- Removed fdt_addr from verdin-imx8mm to fix booting via bootefi.
- Support Ethernet PHY autodection on Data Modul i.MX8M Mini/Plus eDM
  SBC
- Add i.MX93 binman support
- Add support for imx93-var-som

4 months agoAdd imx93-var-som support
Mathieu Othacehe [Fri, 29 Dec 2023 10:55:23 +0000 (11:55 +0100)] 
Add imx93-var-som support

Add support for the Variscite VAR-SOM-IMX93 evaluation kit. The SoM
consists of an NXP iMX93 dual A55 CPU. The SoM is mounted on a Variscite
Symphony SBC.

Signed-off-by: Mathieu Othacehe <m.othacehe@gmail.com>
4 months agoimx9: imx93_evk: Add binman support.
Mathieu Othacehe [Thu, 4 Jan 2024 15:30:09 +0000 (16:30 +0100)] 
imx9: imx93_evk: Add binman support.

Signed-off-by: Mathieu Othacehe <m.othacehe@gmail.com>
4 months agomach-imx: Add i.MX93 binman support.
Mathieu Othacehe [Fri, 29 Dec 2023 11:02:18 +0000 (12:02 +0100)] 
mach-imx: Add i.MX93 binman support.

Add dedicated Makefile targets for the i.MX93 and a new imx93-u-boot.dtsi
device-tree to create binman images.

Signed-off-by: Mathieu Othacehe <m.othacehe@gmail.com>
4 months agospl: binman: Disable u_boot_any symbols for i.MX93 boards
Mathieu Othacehe [Fri, 29 Dec 2023 10:59:29 +0000 (11:59 +0100)] 
spl: binman: Disable u_boot_any symbols for i.MX93 boards

This is extending commit 6516c9b349b3 ("spl: binman: Disable u_boot_any
symbols for i.MX8M boards") to i.MX93 boards.

Signed-off-by: Mathieu Othacehe <m.othacehe@gmail.com>
4 months agoverdin-imx8mm: Remove stale fdt_addr env variable
Francesco Dolcini [Tue, 2 Jan 2024 12:12:07 +0000 (13:12 +0100)] 
verdin-imx8mm: Remove stale fdt_addr env variable

fdt_addr variable is the location in flash of the device tree blob [1], it
does not exist for verdin-imx8mm.

Because of this the bootefi command fails unless the optional
`[fdt address]` parameter is passed on the command line,
bootefi.c:efi_install_fdt() assumes that `fdt_addr` is valid when
present.

Fix this removing fdt_addr from the U-Boot environment.

[1] doc/usage/environment.rst

Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
4 months agoARM: imx: Auto-detect PHY on Data Modul i.MX8M Mini/Plus eDM SBC
Marek Vasut [Mon, 1 Jan 2024 21:05:54 +0000 (22:05 +0100)] 
ARM: imx: Auto-detect PHY on Data Modul i.MX8M Mini/Plus eDM SBC

Implement fdtdec_board_setup() auto-detection of ethernet PHY.
This uses properties of the hardware and pull resistor placement.

If GPIO1_16 RGMII_MDC is HIGH, then R530 (MX8MM eDM SBC) or
R390 (MX8MP eDM SBC) is populated. R530 or R390 is populated
only on boards with AR8031 PHY.

If GPIO1_16 RGMII_MDC is LOW, then the in-SoM pull down is the
dominant pull resistor. This is the case on boards with BCM54213PE
PHY.

In case AR8031 PHY is populated, the PHY MDIO address is 0, in
case BCM54213PE PHY is populated, the PHY MDIO address is 1, the
fdtdec_board_setup() is used to patch the correct address into
the U-Boot control DT.

Enable broadcom PHY support to support both PHYs.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
4 months agoMerge branch 'next'
Tom Rini [Mon, 8 Jan 2024 17:00:18 +0000 (12:00 -0500)] 
Merge branch 'next'

4 months agoPrepare v2024.01 v2024.01
Tom Rini [Mon, 8 Jan 2024 15:37:48 +0000 (10:37 -0500)] 
Prepare v2024.01

Signed-off-by: Tom Rini <trini@konsulko.com>
4 months agoMerge tag 'dm-next-7jan23' of https://source.denx.de/u-boot/custodians/u-boot-dm...
Tom Rini [Mon, 8 Jan 2024 14:11:53 +0000 (09:11 -0500)] 
Merge tag 'dm-next-7jan23' of https://source.denx.de/u-boot/custodians/u-boot-dm into next

switch to SMBIOS3 tables
allow devicetree from bloblist
ACPI support for ARM and RISC-V

4 months agoarm: enable support for QEMU firmware tables
Heinrich Schuchardt [Tue, 19 Dec 2023 15:04:08 +0000 (16:04 +0100)] 
arm: enable support for QEMU firmware tables

Enable the QEMU firmware interface if ACPI tables are to be supported on
the QEMU platform.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agoconfigs: qemu: add config fragment for ACPI
Heinrich Schuchardt [Tue, 19 Dec 2023 15:04:07 +0000 (16:04 +0100)] 
configs: qemu: add config fragment for ACPI

Provide a configuration fragment to enable ACPI on QEMU.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agoriscv: allow usage of ACPI
Heinrich Schuchardt [Tue, 19 Dec 2023 15:04:06 +0000 (16:04 +0100)] 
riscv: allow usage of ACPI

Select CONFIG_SUPPORT_ACPI to allow usage of ACPI tables with RISC-V.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agoriscv: add support for QEMU firmware tables
Heinrich Schuchardt [Tue, 19 Dec 2023 15:04:05 +0000 (16:04 +0100)] 
riscv: add support for QEMU firmware tables

Enable the QEMU firmware interface if ACPI tables are to be supported on
the QEMU platform.

Enable the QFW MMIO interface if the QEMU firmware interface is enabled.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agoacpi: enable writing ACPI tables on QEMU
Heinrich Schuchardt [Tue, 19 Dec 2023 15:04:04 +0000 (16:04 +0100)] 
acpi: enable writing ACPI tables on QEMU

Invoke write_acpi_tables() via EVT_LAST_STAGE_INIT on QEMU except on X86.
X86 calls write_acpi_tables() in write_tables().

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agoriscv: add ACPI fields to global data
Heinrich Schuchardt [Tue, 19 Dec 2023 15:04:03 +0000 (16:04 +0100)] 
riscv: add ACPI fields to global data

Add fields for the location of ACPI tables to the global data.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
4 months agoarm: add ACPI fields to global data
Heinrich Schuchardt [Tue, 19 Dec 2023 15:04:02 +0000 (16:04 +0100)] 
arm: add ACPI fields to global data

Add fields for the location of ACPI tables to the global data.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agoacpi: carve out qfw_acpi.c
Heinrich Schuchardt [Tue, 19 Dec 2023 15:04:01 +0000 (16:04 +0100)] 
acpi: carve out qfw_acpi.c

Move the code related to copying tables from QEMU to a separate code
module.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agoacpi: Kconfig symbol CONFIG_QFW_ACPI
Heinrich Schuchardt [Tue, 19 Dec 2023 15:04:00 +0000 (16:04 +0100)] 
acpi: Kconfig symbol CONFIG_QFW_ACPI

We have two implementations of write_acpi_tables(). One for writing ACPI
tables based on ACPI_WRITER() entries another based on copying tables from
QEMU.

Create a symbol CONFIG_QFW_ACPI that signifies copying ACPI tables from
QEMU and use it consistently.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agoacpi: support 64bit in acpi_find_table for DSDT and FACS
Heinrich Schuchardt [Sat, 16 Dec 2023 08:12:00 +0000 (09:12 +0100)] 
acpi: support 64bit in acpi_find_table for DSDT and FACS

Use X_DSDT and X_FIRMWARE_CTRL if available.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Rebased on -next to use nomap:
Signed-off-by: Simon Glass <sjg@chromium.org>
4 months agocmd: acpi: check HW reduced flag in acpi list
Heinrich Schuchardt [Sat, 16 Dec 2023 08:11:59 +0000 (09:11 +0100)] 
cmd: acpi: check HW reduced flag in acpi list

On non x86 platforms the hardware reduce flag must be set in the FADT
table. Write an error message if the flag is missing.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Rebased on -next to use nomap, add hyphens:
Signed-off-by: Simon Glass <sjg@chromium.org>
4 months agocmd: acpi: fix listing DSDT and FACS
Heinrich Schuchardt [Sat, 16 Dec 2023 08:11:58 +0000 (09:11 +0100)] 
cmd: acpi: fix listing DSDT and FACS

If field X_FIRMWARE_CTRL is filled, field FIRMWARE must be ignored. If
field X_DSDT is filled, field DSDT must be ignored.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Rebased on -next to use nomap:
Signed-off-by: Simon Glass <sjg@chromium.org>
4 months agoacpi: use 64-bit addresses in FADT table
Heinrich Schuchardt [Sat, 16 Dec 2023 08:11:57 +0000 (09:11 +0100)] 
acpi: use 64-bit addresses in FADT table

Fields X_FIRMWAE_CTRL and X_DSDT must be 64bit wide. Convert pointers to
to uintptr_t to fill these.

If field X_FIRMWARE_CTRL is filled, field FIRMWARE must be ignored. If
field X_DSDT is filled, field DSDT must be ignored. We should not fill
unused fields.

See the field definitions in chapter "5.2.9 Fixed ACPI Description Table
(FADT)" of the ACPI Specification 6.5.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
4 months agofdt: Allow the devicetree to come from a bloblist
Simon Glass [Thu, 4 Jan 2024 01:49:19 +0000 (18:49 -0700)] 
fdt: Allow the devicetree to come from a bloblist

Standard passage provides for a bloblist to be passed from one firmware
phase to the next. That can be used to pass the devicetree along as well.
Add an option to support this.

Tests for this will be added as part of the Universal Payload work.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agoefi: Correct smbios-table installation
Simon Glass [Sun, 31 Dec 2023 15:25:55 +0000 (08:25 -0700)] 
efi: Correct smbios-table installation

At present this code allocates memory when writing the tables and
then unnecessarily adds another memory map when installing it.

Adjust the code to allocate the tables using the normal U-Boot
mechanism. This avoids doing an EFI memory allocation early in
U-Boot, which may use memory that would be overwritten by a
'load' command, for example.

Signed-off-by: Simon Glass <sjg@chromium.org>
4 months agoacpi: Write pointers to tables instead of addresses
Simon Glass [Sun, 31 Dec 2023 15:25:54 +0000 (08:25 -0700)] 
acpi: Write pointers to tables instead of addresses

Sandbox uses an API to map between addresses and pointers. This allows
it to have (emulated) memory at zero and avoid arch-specific addressing
details. It also allows memory-mapped peripherals to work.

As an example, on many machines sandbox maps address 100 to pointer
value 10000000.

However this is not correct for ACPI, if sandbox starts another program
(e.g EFI app) and passes it the tables. That app has no knowledge of
sandbox's address mapping. So to make this work we want to store
10000000 as the value in the table.

Add two new 'nomap' functions which clearly make this exeption to how
sandbox works.

This should allow EFI apps to access ACPI tables with sandbox, e.g. for
testing purposes.

Signed-off-by: Simon Glass <sjg@chromium.org>
Suggested-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
4 months agoacpi: Rename test dm_test_setup_ctx_and_base_tables()
Simon Glass [Sun, 31 Dec 2023 15:25:53 +0000 (08:25 -0700)] 
acpi: Rename test dm_test_setup_ctx_and_base_tables()

Use the word 'acpi' in this test so that it runs along with all the
other ACPI tests.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
4 months agoefi: smbios: Drop support for SMBIOS2 tables
Simon Glass [Sun, 31 Dec 2023 15:25:52 +0000 (08:25 -0700)] 
efi: smbios: Drop support for SMBIOS2 tables

Only the v3 table is supported now, so always use this when installing
the EFI table.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
4 months agosmbios: Drop support for SMBIOS2 tables
Simon Glass [Sun, 31 Dec 2023 15:25:51 +0000 (08:25 -0700)] 
smbios: Drop support for SMBIOS2 tables

These tables are a pain since there is no way to handle memory above
4GB. Use SMBIOS3 always.

This should hopefully not create problems on x86 devices, since SMBIOS3
was released seven years ago (2015).

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
4 months agosmbios: Require the caller to align the SMBIOS table
Simon Glass [Sun, 31 Dec 2023 15:25:50 +0000 (08:25 -0700)] 
smbios: Require the caller to align the SMBIOS table

All callers handle this alignment, so drop the unnecessary code. This
simplifies things a little.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agoefi: Use the correct GUID for the SMBIOS table
Simon Glass [Sun, 31 Dec 2023 15:25:49 +0000 (08:25 -0700)] 
efi: Use the correct GUID for the SMBIOS table

EFI does not use the 'anchor string' to determine the SMBIOS table
version, instead preferring to have two separate GUIDs. Use the correct
one, depending on the table version.

Call unmap_system() to balance to the use of map_sysmem()

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agosmbios: Correct gd_smbios_start()
Simon Glass [Sun, 31 Dec 2023 15:25:48 +0000 (08:25 -0700)] 
smbios: Correct gd_smbios_start()

This should access arch-specific properties. Fix it and update the
existing usage.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agosmbios: Use SMBIOS 3.0 to support an address above 4GB
Simon Glass [Sun, 31 Dec 2023 15:25:47 +0000 (08:25 -0700)] 
smbios: Use SMBIOS 3.0 to support an address above 4GB

When the SMBIOS table is written to an address above 4GB a 32-bit table
address is not large enough.

Use an SMBIOS3 table in that case.

Note that we cannot use efi_allocate_pages() since this function has
nothing to do with EFI. There is no equivalent function to allocate
memory below 4GB in U-Boot. One solution would be to create a separate
malloc() pool, or just always put the malloc() pool below 4GB.

- Use log_debug() for warning
- Rebase on Heinrich's smbios.h patch
- Set the checksum for SMBIOS3

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
4 months agosmbios: SMBIOS 3.0 (64-bit) Entry Point structure
Heinrich Schuchardt [Sun, 31 Dec 2023 15:25:46 +0000 (08:25 -0700)] 
smbios: SMBIOS 3.0 (64-bit) Entry Point structure

Add definition of the SMBIOS 3.0 (64-bit) Entry Point structure.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
4 months agosmbios: Move the rest of the SMBIOS2 code
Simon Glass [Sun, 31 Dec 2023 15:25:45 +0000 (08:25 -0700)] 
smbios: Move the rest of the SMBIOS2 code

Move all of this logic into the else clause, since it will not be used
for SMBIOS3

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
4 months agosmbios: Refactor 32-bit code into an else statement
Simon Glass [Sun, 31 Dec 2023 15:25:44 +0000 (08:25 -0700)] 
smbios: Refactor 32-bit code into an else statement

In preparation for adding support for SMBIOS3 move this code into an
else statement. There is no functional change.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>