]> git.ipfire.org Git - thirdparty/u-boot.git/log
thirdparty/u-boot.git
2 years agospi: zynq_qspi: Add missing prototype for zynq_qspi_mem_exec_op
Algapally Santosh Sagar [Wed, 14 Jun 2023 09:03:56 +0000 (03:03 -0600)] 
spi: zynq_qspi: Add missing prototype for zynq_qspi_mem_exec_op

Add missing prototype to fix the sparse warning, warning: no
previous prototype for 'zynq_qspi_mem_exec_op' [-Wmissing-prototypes].

Signed-off-by: Algapally Santosh Sagar <santoshsagar.algapally@amd.com>
Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com>
Link: https://lore.kernel.org/r/20230614090359.10809-4-ashok.reddy.soma@amd.com
Signed-off-by: Michal Simek <michal.simek@amd.com>
2 years agoxilinx: zynq: Add missing prototype for zynqmp_mmio_write
Algapally Santosh Sagar [Wed, 14 Jun 2023 09:03:55 +0000 (03:03 -0600)] 
xilinx: zynq: Add missing prototype for zynqmp_mmio_write

Add missing prototype to fix the sparse warning, warning: no
previous prototype for 'zynqmp_mmio_write' [-Wmissing-prototypes].

Signed-off-by: Algapally Santosh Sagar <santoshsagar.algapally@amd.com>
Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com>
Link: https://lore.kernel.org/r/20230614090359.10809-3-ashok.reddy.soma@amd.com
Signed-off-by: Michal Simek <michal.simek@amd.com>
2 years agospi: xilinx_spi: Add missing prototype for xilinx_qspi_mem_exec_op
Algapally Santosh Sagar [Wed, 14 Jun 2023 09:03:54 +0000 (03:03 -0600)] 
spi: xilinx_spi: Add missing prototype for xilinx_qspi_mem_exec_op

Add missing prototype to fix the below sparse warning
warning: no previous prototype for 'xilinx_qspi_mem_exec_op'
[-Wmissing-prototypes]

Signed-off-by: Algapally Santosh Sagar <santoshsagar.algapally@amd.com>
Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com>
Link: https://lore.kernel.org/r/20230614090359.10809-2-ashok.reddy.soma@amd.com
Signed-off-by: Michal Simek <michal.simek@amd.com>
2 years agoarm64: zynqmp: Fix the memory node for k26/k24 kria som boards
Sharath Kumar Dasari [Mon, 5 Jun 2023 11:59:51 +0000 (13:59 +0200)] 
arm64: zynqmp: Fix the memory node for k26/k24 kria som boards

PMUFW requires top 1MB of the lower DDR memory reserved for its operation,
this is missing in k26/k24 sm static dts files because of which U-Boot
throws warning messages "efi_free_pool: illegal free" as EFI puts
some code to that space which shouldn't happen.

Signed-off-by: Sharath Kumar Dasari <sharath.kumar.dasari@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/57452d16df2d48593de206bebf877d2c2cfe7bf1.1685966389.git.michal.simek@amd.com
2 years agowatchdog: versal: Use new compatible xlnx,versal-wwdt
Michal Simek [Tue, 13 Jun 2023 11:22:26 +0000 (13:22 +0200)] 
watchdog: versal: Use new compatible xlnx,versal-wwdt

DT binding has been approved that's why use new compatible string.
The old one is mark as deprecated and should be removed after some
releases.

Link: https://lore.kernel.org/r/20230420104231.2243079-3-srinivas.neeli@amd.com/
Reviewed-by: Stefan Roese <sr@denx.de>
Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/6e78d0d2e21f2f9e7f8f448bb8e0d27ced4de7d3.1686655339.git.michal.simek@amd.com
2 years agoMerge tag 'dm-pull-20jul23' of https://source.denx.de/u-boot/custodians/u-boot-dm
Tom Rini [Fri, 21 Jul 2023 01:31:31 +0000 (21:31 -0400)] 
Merge tag 'dm-pull-20jul23' of https://source.denx.de/u-boot/custodians/u-boot-dm

binman mkimage and template enhancements
misc fixes

2 years agoMerge branch '2023-07-20-assorted-CI-updates'
Tom Rini [Fri, 21 Jul 2023 01:28:59 +0000 (21:28 -0400)] 
Merge branch '2023-07-20-assorted-CI-updates'

- Move to gcc-13.1 and QEMU 8.0.3 in CI.  This also lets us move to a
  kernel.org toolchain for arc as well.

2 years agousb: cdns3: gadget: Configure speed in udc_start
Ravi Gunasekaran [Wed, 19 Jul 2023 08:59:08 +0000 (14:29 +0530)] 
usb: cdns3: gadget: Configure speed in udc_start

When one of the functions does not support super speed, the composite
driver forces the gadget to high speed. But the speed is never
configured in the cdns3 gadget driver. So configure the speed
in cdns3_gadget_udc_start just like in the kernel.

Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com>
Reviewed-by: Marek Vasut <marex@denx.de>
2 years agousb: ehci-mx6: remove unnecessary regulator enable from probe
Tim Harvey [Fri, 19 May 2023 18:58:54 +0000 (11:58 -0700)] 
usb: ehci-mx6: remove unnecessary regulator enable from probe

Remove the regulator_set_enable() call from device probe which
resolves a regulator imbalance. This is unnecessary as
regulator_set_enable() will be called when ehci_register calls the
init_after_reset hook.

Suggested-by: Marek Vasut <marex@denx.de>
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
2 years agosunxi: H616: add LPDDR3 DRAM support
Mikhail Kalashnikov [Wed, 7 Jun 2023 00:07:45 +0000 (01:07 +0100)] 
sunxi: H616: add LPDDR3 DRAM support

The H616 SoC has support for several types of DRAM: DDR3, LPDDR3,
DDR4 and LPDDR4.
At the moment, the driver only supports DDR3 memory.
Let's extend the driver to support the LPDDR3 memory. All "magic"
values obtained from the boot0.

Signed-off-by: Mikhail Kalashnikov <iuncuim@gmail.com>
Acked-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
2 years agosunxi: H616: add DRAM type selection
Mikhail Kalashnikov [Wed, 7 Jun 2023 00:07:44 +0000 (01:07 +0100)] 
sunxi: H616: add DRAM type selection

Allwinner H616 SoC supports several types of DRAM memory. To further
integrate other types of memory, we need to add this delimitation.

Signed-off-by: Mikhail Kalashnikov <iuncuim@gmail.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
2 years agosunxi: H616: dram: split struct dram_para
Andre Przywara [Wed, 7 Jun 2023 00:07:43 +0000 (01:07 +0100)] 
sunxi: H616: dram: split struct dram_para

Currently there is one DRAM parameter struct for the Allwinner H616 DRAM
"driver". It contains many fields that are compile time constants
(set by Kconfig variables), though there are also some fields that are
probed and changed over the runtime of the DRAM initialisation.

Because of this mixture, the compiler cannot properly optimise the code
for size, as it does not consider constant propagation in its full
potential.

Help the compiler out by splitting that structure into two: one that only
contains values known at compile time, and another one where the values
will actually change. The former can then be declared "const", which will
let the compiler fold its values directly into the code using it.

We also add "const" tags for some new "struct dram_config" pointers, to
further increase code optimisation.
To help the compiler optimise the code further, the definition of the
now "const struct dram_para" has to happen at a file-global level, so
move that part out of sunxi_dram_init().

That results in quite some code savings (almost 2KB), and helps to keep
the code small with the LPDDR3 support added later.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
2 years agosunxi: H616: dram: const-ify DRAM function parameters
Andre Przywara [Wed, 7 Jun 2023 00:07:42 +0000 (01:07 +0100)] 
sunxi: H616: dram: const-ify DRAM function parameters

There are quite some functions in the Allwinner H616 DRAM "driver", some
of them actually change the parameters in the structure passed to them,
but many are actually not.
To increase the optimisation potential for the code, mark those functions
that just read members of the passed dram_para struct as "const".
This in itself does not decrease the code size, but lays the groundwork
for future changes doing so.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
2 years agosunxi: dram: make MBUS configuration functions static
Andre Przywara [Wed, 7 Jun 2023 00:07:41 +0000 (01:07 +0100)] 
sunxi: dram: make MBUS configuration functions static

The usage of the C keyword "inline" seems to be a common
misunderstanding: it's a *hint* only, and modern compilers will inline
(or not) functions based on their own judgement and provided compiler
options.
So while marking functions as "inline" does not do much, missing the
"static" keyword will force to compiler to spell out a version of the
function for potential external callers, which actually increases the
code size (though hopefully the linker will drop the function).

Change the "inline" attribute for the mbus_configure_port() functions in
some Allwinner DRAM drivers to "static", so that the explicit version
can actually be dropped from the object file, reducing the code size.

"static inline" has a use case in header files, where it avoids a warning
if a .c file including this header does not use the particular function.
In a .c file itself "static inline" is not useful otherwise, so just use
static here as well.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
2 years agosunxi: H616: enable USB support for H616 boards
Andre Przywara [Sun, 11 Jun 2023 23:32:41 +0000 (00:32 +0100)] 
sunxi: H616: enable USB support for H616 boards

Now that the PHY driver supports the H616 USB PHY, we can enable USB
support for the two H616 boards.
As the OrangePi Zero2 has a USB-C port hard-wired to peripheral mode,
let's enable USB gadget mode for port 0, so people can use fastboot,
ethernet or mass storage functionality.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
2 years agophy: sun4i: Add H616 USB PHY support
Andre Przywara [Sun, 11 Jun 2023 23:32:40 +0000 (00:32 +0100)] 
phy: sun4i: Add H616 USB PHY support

Now that the Allwinner USB PHY driver supports the H616 quirk, let's
enable support for USB ports on that SoC.

We connect the compatible string to a new struct describing the SoCs USB
PHY properties, and unblock the PHY driver selection in Kconfig.

A later patch will enable USB support in the H616 boards' defconfigs.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
2 years agophy: sun4i-usb: Add H616 USB PHY quirk support
Andre Przywara [Sun, 11 Jun 2023 23:32:39 +0000 (00:32 +0100)] 
phy: sun4i-usb: Add H616 USB PHY quirk support

The H616 USB PHY is some kind of special snowflake: Only port2 works out
of the box, but all other ports need some help from this port2 to work
correctly: The CLK_BUS_PHY2 and RST_USB_PHY2 clock and reset need to be
enabled, and the SIDDQ bit in the PMU PHY control register needs to be
cleared. For this register to be accessible, CLK_BUS_ECHI2 needs to be
ungated. Don't ask ....

Follow the respective Linux patch (b45c6d80325b) and add a quirk bit,
triggering the special sequence as outlined above, for PHYs other than
PHY2: ungate this one special clock, and clear the SIDDQ bit. We also
pick the clock and reset from PHY2 and enable them as well.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
2 years agophy: sun4i-usb: Replace types with explicit quirk flags
Andre Przywara [Sun, 11 Jun 2023 23:32:38 +0000 (00:32 +0100)] 
phy: sun4i-usb: Replace types with explicit quirk flags

So far we were assigning some crude "type" (SoC name, really) to each
Allwinner USB PHY model, then guarding certain quirks based on this.
This does not only look weird, but gets more or more cumbersome to
maintain.

Remove the bogus type names altogether, instead introduce flags for each
quirk, and explicitly check for them.
This improves readability, and simplifies future extensions.

Port of Linux patch 8dd256bae653.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
2 years agosunxi: Kconfig: rework PHY_USB_SUN4I selection
Andre Przywara [Sun, 11 Jun 2023 23:32:37 +0000 (00:32 +0100)] 
sunxi: Kconfig: rework PHY_USB_SUN4I selection

At the moment we use "select" in each Allwinner SoC's Kconfig section to
include the USB PHY driver in the build. This means it cannot be disabled
via Kconfig, although USB is not really a strictly required core
functionality, and a particular board might not even include USB ports.

Rework the Kconfig part by removing the "select" lines for each SoC's
section, and instead letting it default to "y" in the PHY driver section
itself. We use "depends on !" to exclude the few SoCs we don't support
(yet). The Allwinner V3s does not enable USB (PHY) support at the moment,
even though it should work: let the PHY default to "n" to keep the
current behaviour.

Also the MUSB USB driver directly calls some functions from the PHY
driver, so let the former depend on the PHY driver.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Tested-by: Sam Edwards <CFSworks@gmail.com>
2 years agophy: sun4i-usb: add Allwinner F1C100s support
Andre Przywara [Sun, 11 Jun 2023 23:32:36 +0000 (00:32 +0100)] 
phy: sun4i-usb: add Allwinner F1C100s support

The Allwinner F1C100s implements a single USB PHY, connected to its MUSB
OTG controller. The USB PHY is of the simpler, older type (like the A10),
the only real difference is that it's indeed only one PHY.

Add a struct describing those F1C100s USB PHY properties, and connect it
to the new compatible string.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
2 years agophy: sun4i-usb: Fix of_xlate() argument check
Andre Przywara [Sun, 11 Jun 2023 23:32:35 +0000 (00:32 +0100)] 
phy: sun4i-usb: Fix of_xlate() argument check

In its of_xlate() function, the Allwinner USB PHY driver compares the
args_count variable against the number of implemented USB PHYs, although
this is the *number of arguments* to the DT phandle property. Per the DT
binding for this PHY device, this number is always one, so this check
will always fail if the particular SoC implements exactly one USB PHY.
So far this affected only the V3s (which has USB support disabled), but
the F1C100s also sports one PHY only.

Fix that check to compare args_count against exactly 1, and the args[0]
content (requested PHY number) against the number of implemented PHYs.

This fixes USB operation on the Allwinner V3s and allows to enable USB
on the Allwinner F1C100s SoC.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
2 years agobinman: Reduce state.SetInt and bintool cmd to debug level
Simon Glass [Tue, 18 Jul 2023 13:24:09 +0000 (07:24 -0600)] 
binman: Reduce state.SetInt and bintool cmd to debug level

These are not very important message. Change them to use the 'debug' level
instead of 'detail'.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Support writing symbols inside a mkimage image
Simon Glass [Tue, 18 Jul 2023 13:24:08 +0000 (07:24 -0600)] 
binman: Support writing symbols inside a mkimage image

Add support for writing symbols and determining the assumed position of
binaries inside a mkimage image. This is useful as an example for other
entry types which might want to do the same thing.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Support templates at any level
Simon Glass [Tue, 18 Jul 2023 13:24:07 +0000 (07:24 -0600)] 
binman: Support templates at any level

Allow templates to be used inside a section, not just in the top-level
/binman node.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Add a test for templating in a FIT
Simon Glass [Tue, 18 Jul 2023 13:24:06 +0000 (07:24 -0600)] 
binman: Add a test for templating in a FIT

Add this as a separate test case.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Support templating with multiple images
Simon Glass [Tue, 18 Jul 2023 13:24:05 +0000 (07:24 -0600)] 
binman: Support templating with multiple images

Allow a template to appear in the top level description when using
multiple images.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Support simple templates
Simon Glass [Tue, 18 Jul 2023 13:24:04 +0000 (07:24 -0600)] 
binman: Support simple templates

Collections can used to collect the contents of other entries into a
single entry, but they result in a single entry, with the original entries
'left behind' in their old place.

It is useful to be able to specific a set of entries ones and have it used
in multiple images, or parts of an image.

Implement this mechanism.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agodtoc: Allow inserting a list of nodes into another
Simon Glass [Tue, 18 Jul 2023 13:24:03 +0000 (07:24 -0600)] 
dtoc: Allow inserting a list of nodes into another

Provide a way to specify a phandle list of nodes which are to be inserted
into an existing node.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agodtoc: Support copying the contents of a node into another
Simon Glass [Tue, 18 Jul 2023 13:24:02 +0000 (07:24 -0600)] 
dtoc: Support copying the contents of a node into another

This permits implementation of a simple templating system, where a node
can be reused as a base for others.

For now this adds new subnodes after any existing ones.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Correct handling of zero bss size
Simon Glass [Tue, 18 Jul 2023 13:24:01 +0000 (07:24 -0600)] 
binman: Correct handling of zero bss size

Fix the check for the __bss_size symbol, since it may be 0. Unfortunately
there was no test coverage for this.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Drop __bss_size variable in bss_data.c
Simon Glass [Tue, 18 Jul 2023 13:24:00 +0000 (07:24 -0600)] 
binman: Drop __bss_size variable in bss_data.c

This is not needed since the linker script sets it up. Drop the variable
to avoid confusion.

Fix the prototype for main() while we are here.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Provide a way to specify the fdt-list directly
Simon Glass [Tue, 18 Jul 2023 13:23:59 +0000 (07:23 -0600)] 
binman: Provide a way to specify the fdt-list directly

Sometimes multiple boards are built with binman and it is useful to
specify a different FDT list for each. At present this is not possible
without providing multiple values of the of-list entryarg (which is not
supported in the U-Boot build system).

Allow a fit,fdt-list-val string-list property to be used instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Convert mkimage to Entry_section
Marek Vasut [Tue, 18 Jul 2023 13:23:58 +0000 (07:23 -0600)] 
binman: Convert mkimage to Entry_section

This is needed to handle mkimage with inner section located itself in a
section.

Signed-off-by: Marek Vasut <marex@denx.de>
Use BuildSectionData() instead of ObtainContents(), add tests and a few
other minor fixes:
Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Add more detail on how ObtainContents() works
Simon Glass [Tue, 18 Jul 2023 13:23:57 +0000 (07:23 -0600)] 
binman: Add more detail on how ObtainContents() works

This area of binman can be a bit confusing. Add some more comments to
help.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Update elf to return number of written symbols
Simon Glass [Tue, 18 Jul 2023 13:23:56 +0000 (07:23 -0600)] 
binman: Update elf to return number of written symbols

Update the LookupAndWriteSymbols() function to return the number of
symbols written. Also add some logging for when debugging is not
enabled.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agostm32mp15: Avoid writing symbols in SPL
Simon Glass [Tue, 18 Jul 2023 13:23:55 +0000 (07:23 -0600)] 
stm32mp15: Avoid writing symbols in SPL

These boards use SPL in a mkimage entry and apparently access the symbol
containing the image position of U-Boot, but put U-Boot in another
image. This means that binman is unable to fill in the symbol correctly
in the SPL binary.

This doesn't matter at present since mkimage doesn't support symbol
writing. But with the upcoming conversion to a section, it will. So add
a property to disable symbol writing.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Allow disabling symbol writing
Simon Glass [Tue, 18 Jul 2023 13:23:54 +0000 (07:23 -0600)] 
binman: Allow disabling symbol writing

Some boards don't use symbol writing but do access the symbols in SPL.
Provide an option to work around this.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Read _multiple_data_files in the correct place
Simon Glass [Tue, 18 Jul 2023 13:23:53 +0000 (07:23 -0600)] 
binman: Read _multiple_data_files in the correct place

Move this to the ReadEntries() function where it belongs.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Use GetEntries() to obtain section contents
Simon Glass [Tue, 18 Jul 2023 13:23:52 +0000 (07:23 -0600)] 
binman: Use GetEntries() to obtain section contents

Some section types don't have a simple _entries list. Use the GetEntries()
method in GetEntryContents() and other places to handle this.

This makes the behaviour more consistent.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Init align_default in entry_Section
Simon Glass [Tue, 18 Jul 2023 13:23:51 +0000 (07:23 -0600)] 
binman: Init align_default in entry_Section

This should be set up in the init function, to avoid a warning about a
property not set up there. Fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agotools: Fix package discovery in pyproject.toml of u_boot_pylib.
Maxim Cournoyer [Fri, 7 Jul 2023 21:15:32 +0000 (17:15 -0400)] 
tools: Fix package discovery in pyproject.toml of u_boot_pylib.

When building from source, setuptools would complain about not finding
package via its auto-discovery mechanism.  Manually specify how to
locate the files, relative to the package's directory.

* tools/u_boot_pylib/pyproject.toml: New tool.setuptools.packages.find
section.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agotools: Fix README file in pyproject.toml of u_boot_pylib.
Maxim Cournoyer [Fri, 7 Jul 2023 21:15:31 +0000 (17:15 -0400)] 
tools: Fix README file in pyproject.toml of u_boot_pylib.

* tools/u_boot_pylib/pyproject.toml (readme): Replace README.md with
README.rst.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agobootstd: USB devtype detection for script boot
John Clark [Fri, 30 Jun 2023 17:12:14 +0000 (13:12 -0400)] 
bootstd: USB devtype detection for script boot

Change the device type from "usb_mass_storage" to "usb" when
booting a script.

Before this change:
   => printenv devtype
   devtype=usb_mass_storage

After this change:
   => printenv devtype
   devtype=usb

Signed-off-by: John Clark <inindev@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agocmd: fix loads, saves on sandbox
Heinrich Schuchardt [Sun, 25 Jun 2023 09:54:23 +0000 (11:54 +0200)] 
cmd: fix loads, saves on sandbox

The loads and saves commands crash on the sandbox due to illegal memory
access.

For command line arguments the sandbox uses a virtual address space which
does not equal the addresses of the memory allocated with memmap(). Add the
missing address translations for the loads and saves commands.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agosandbox: fix a compilation error
Sergei Antonov [Mon, 12 Jun 2023 21:19:04 +0000 (00:19 +0300)] 
sandbox: fix a compilation error

With sandbox and sandbox64 configurations:

In file included from .../u-boot/include/test/test.h:156,
                 from .../u-boot/include/test/lib.h:9,
                 from .../u-boot/test/lib/test_crc8.c:8:
.../u-boot/arch/sandbox/include/asm/test.h: In function ‘sandbox_sdl_set_bpp’:
.../u-boot/arch/sandbox/include/asm/test.h:323:17: error: ‘ENOSYS’ undeclared (first use in this function)
  323 |         return -ENOSYS;
      |                 ^~~~~~

Per Tom Rini's suggestion:
move that function prototype over to arch/sandbox/include/asm/sdl.h
and make test/dm/video.c include <asm/sdl.h>

Cc: Simon Glass <sjg@chromium.org>
Suggested-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Sergei Antonov <saproj@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agocore: read: fix dev_read_addr_size()
John Keeping [Thu, 1 Jun 2023 14:11:19 +0000 (15:11 +0100)] 
core: read: fix dev_read_addr_size()

The behaviour of dev_read_addr_size() is surprising as it does not
handle #address-cells and #size-cells but instead hardcodes the values
based on sizeof(fdt_addr_t).

This is different from dev_read_addr_size_index() and
dev_read_addr_size_name() both of which do read the cell sizes from the
device tree.

Since dev_read_addr_size() is only used by a single driver and this
driver is broken when CONFIG_FDT_64BIT does not match the address size
in the device tree, fix the function to behave like all of the other
similarly named functions.  Drop the property name argument as the only
caller passes "reg" and this is the expected property name matching the
other similarly named functions.

Signed-off-by: John Keeping <john@metanate.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org> # chromebook_jerry
Tested-by: Simon Glass <sjg@chromium.org> # chromebook_bob
2 years agodm: core: of_access: fix return value in of_property_match_string
Eugen Hristev [Thu, 4 May 2023 12:22:21 +0000 (15:22 +0300)] 
dm: core: of_access: fix return value in of_property_match_string

of_property_match_string calls of_find_property to search for the
string property.
If the device node does not exist, of_find_property returns NULL, and
of_property_match_string returns -EINVAL, which is correct.
However, if the device node exists, but the property is not found,
of_find_property still returns NULL, but it will place -FDT_ERR_NOTFOUND
in the *lenp variable.
of_property_match_string does not use the lenp parameter, thus this error
case is being lost, and treated as if the node is NULL, and returns
-EINVAL, which is incorrect.

The callers of of_property_match_string treat the error differently if
the return value is -EINVAL or -ENOENT, e.g. in dwc3 driver:

ret = generic_phy_get_by_name(dev, "usb3-phy", &phy);
if (!ret) {
ret = generic_phy_init(&phy);
if (ret)
return ret;
} else if (ret != -ENOENT && ret != -ENODATA) {
debug("could not get phy (err %d)\n", ret);
return ret;
} else {
phy.dev = NULL;
}

So the caller drivers will just consider the property missing if -ENOENT
is returned, versus the case of -EINVAL, which means something else.

To fix this situation, changed the code to call the of_find_property
with the right third argument to catch this error code and treat it
accordingly.

Signed-off-by: Eugen Hristev <eugen.hristev@collabora.com>
2 years agoCI: Add automatic retry for test.py jobs
Tom Rini [Wed, 12 Jul 2023 02:33:03 +0000 (22:33 -0400)] 
CI: Add automatic retry for test.py jobs

It is not uncommon for some of the QEMU-based jobs to fail not because
of a code issue but rather because of a timing issue or similar problem
that is out of our control. Make use of the keywords that Azure and
GitLab provide so that we will automatically re-run these when they fail
2 times. If they fail that often it is likely we have found a real issue
to investigate.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agoAzure: Add excludes to the imx8_imx9 job
Tom Rini [Wed, 12 Jul 2023 20:22:22 +0000 (16:22 -0400)] 
Azure: Add excludes to the imx8_imx9 job

The job to build all imx8 and imx9 platforms is currently close to, or
sometimes exceeding the allowed build time. Exclude some platforms that
are already being built under their vendor-specific job as well to
reduce the time.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agoAzure: Rework our Rockchip jobs slightly
Tom Rini [Wed, 19 Jul 2023 19:09:12 +0000 (15:09 -0400)] 
Azure: Rework our Rockchip jobs slightly

Currently the 64bit "rk" job is close to and sometimes goes over the job
time limit.  Let us rework this in to one job for "rk" and "rv" (which
are the SoC prefixes) jobs which include or exclude "rockchip" the board
vendor.  This gives us two jobs of similar numbers of platforms to build
now instead.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agoCI: Update to the latest "Jammy" tag
Tom Rini [Fri, 14 Jul 2023 00:37:36 +0000 (20:37 -0400)] 
CI: Update to the latest "Jammy" tag

Move to the latest "Jammy" tag from Ubuntu.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agoCI: Update to gcc-13.1.0
Tom Rini [Fri, 14 Jul 2023 00:37:35 +0000 (20:37 -0400)] 
CI: Update to gcc-13.1.0

As this is the current version of the public cross toolchains we use,
upgrade to this now.

Suggested-by: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
Signed-off-by: Tom Rini <trini@konsulko.com>
Acked-by: Alexey Brodkin <abrodkin@synopsys.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agobuildman: Switch ARC toolchain to the upstream version
Alexey Brodkin [Fri, 7 Jul 2023 21:04:53 +0000 (22:04 +0100)] 
buildman: Switch ARC toolchain to the upstream version

Back in the day we relied a lot on Synopsys own build of the GNU tools
for ARC processors, but since then we worked hard on getting all our changes
upstream and for a couple of years now we have ARCompact (AKA ARCv1)
and ARCv2 processors supported very well in upstream GCC, Binutils, GDB etc.

And so there's no need to use Synopsys forks any longer, thus we remove
all the references to that form and use upstream components as majority
of other architectures in U-Boot.

Thanks to Tom for pointing to that left-over!

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agoCI: Update to QEMU 8.0.3
Tom Rini [Thu, 13 Jul 2023 14:16:28 +0000 (10:16 -0400)] 
CI: Update to QEMU 8.0.3

Move up to the latest tagged release of QEMU

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agotools/docker: Dockerfile: Don't specify dtc submodule
Tom Rini [Fri, 7 Jul 2023 22:04:30 +0000 (18:04 -0400)] 
tools/docker: Dockerfile: Don't specify dtc submodule

When building qemu, all required submodules (of which we need more than
just dtc) are handled automatically. Currently trying to init the
submodule the way we do results in a git failure.

Reported-by: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agospl: Correct spl_board_boot_device function prototype
Tom Rini [Fri, 14 Jul 2023 00:37:34 +0000 (20:37 -0400)] 
spl: Correct spl_board_boot_device function prototype

With gcc-13.1 we get a warning about enum vs int here, so correct the
declaration to match the implementation.

Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agoarm: mx5: Correct mxc_set_clock function prototype
Tom Rini [Fri, 14 Jul 2023 00:37:33 +0000 (20:37 -0400)] 
arm: mx5: Correct mxc_set_clock function prototype

With gcc-13.1 we get a warning about enum vs int here, so correct the
declaration to match the implementation.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agomips: octeon: Correct types in cvmx-pko3-queue
Tom Rini [Fri, 14 Jul 2023 00:37:32 +0000 (20:37 -0400)] 
mips: octeon: Correct types in cvmx-pko3-queue

When building with gcc-13.1 we see that the prototype for
cvmx_pko3_sq_config_children does not match the declaration. Make these
match and correct a typo in the function's version of the docs that the
prototype did not have, as part of keeping those in-sync.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoMerge tag 'efi-2023-10-rc1-2' of https://source.denx.de/u-boot/custodians/u-boot-efi
Tom Rini [Thu, 20 Jul 2023 14:19:04 +0000 (10:19 -0400)] 
Merge tag 'efi-2023-10-rc1-2' of https://source.denx.de/u-boot/custodians/u-boot-efi

Pull request efi-2023-10-rc1-2

UEFI:

* test: avoid function name 'setup' in capsule tests to not treat it as
  a fixture
* ensure that device paths for USB block devices are unique
* enable having multiple EFI_LOADER block devices
* use InstallMultipleProtocolInterfaces() in TCG protocol implementation to
  increase UEFI compliance

2 years agoefi_loader: support all uclasses in device path
Heinrich Schuchardt [Wed, 19 Jul 2023 04:43:08 +0000 (06:43 +0200)] 
efi_loader: support all uclasses in device path

On devices with multiple USB mass storage devices errors like

    Path /../USB(0x0,0x0)/USB(0x1,0x0)/Ctrl(0x0)
    already installed.

are seen. This is due to creating non-unique device paths. To uniquely
identify devices we must provide path nodes for all devices on the path
from the root device.

Add support for generating device path nodes for all uclasses.

Reported-by: Suniel Mahesh <sunil@amarulasolutions.com>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi_loader: fix dp_fill() for BLKMAP, HOST, VIRTIO
Heinrich Schuchardt [Wed, 19 Jul 2023 14:49:46 +0000 (16:49 +0200)] 
efi_loader: fix dp_fill() for BLKMAP, HOST, VIRTIO

Do not assume that the preceding device path contains a single VenHW node.
Instead use the return value of dp_fill() which provides the address of the
next node.

Fixes: 23ad52fff4da ("efi_loader: device_path: support Sandbox's "host" devices")
Fixes: 19ecced71cfb ("efi_loader: device path for virtio block devices")
Fixes: 272ec6b45304 ("efi_loader: device_path: support blkmap devices")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agotest: avoid function name 'setup'
Heinrich Schuchardt [Sat, 15 Jul 2023 08:48:39 +0000 (10:48 +0200)] 
test: avoid function name 'setup'

pytest 7.3.2 treats the function name 'setup' as a fixture [1].

This leads to errors like:

    TypeError: setup() missing 2 required positional arguments:
    'disk_img' and 'osindications'

Rename setup() to capsule_setup().

[1] How to run tests written for nose
    https://docs.pytest.org/en/7.3.x/how-to/nose.html

Fixes: 482ef90aeb4c ("test: efi_capsule: refactor efi_capsule test")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agoefi_driver: fix duplicate efiblk#0 issue
Masahisa Kojima [Mon, 3 Jul 2023 06:08:45 +0000 (15:08 +0900)] 
efi_driver: fix duplicate efiblk#0 issue

The devnum value of the blk_desc structure starts from 0,
current efi_bl_create_block_device() function creates
two "efiblk#0" devices for the cases that blk_find_max_devnum()
returns -ENODEV and blk_find_max_devnum() returns 0(one device
found in this case).

This commit uses blk_next_free_devnum() instead of blk_find_max_devnum().

Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
2 years agoefi_loader: make efi_remove_protocol() static
Ilias Apalodimas [Mon, 19 Jun 2023 11:14:03 +0000 (14:14 +0300)] 
efi_loader: make efi_remove_protocol() static

A previous patch is removing the last consumer of efi_remove_protocol().
Switch that to static and treat it as an internal API in order to force
users install and remove protocols with the appropriate EFI functions.

It's worth noting that we still have files using efi_add_protocol().  We
should convert all these to efi_install_multiple_protocol_interfaces()
and treat efi_add_protocol() in a similar manner

Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 years agoefi_loader: use efi_install_multiple_protocol_interfaces()
Ilias Apalodimas [Mon, 19 Jun 2023 11:14:02 +0000 (14:14 +0300)] 
efi_loader: use efi_install_multiple_protocol_interfaces()

The TCG2 protocol currently adds and removes protocols with
efi_(add/remove)_protocol().

Removing protocols with efi_remove_protocol() might prove
problematic since it doesn't call DisconnectController() when
uninstalling the protocol and does not comply with the UEFI specification.

It's also beneficial for readability to have protocol installations and
removals in pairs -- IOW when efi_install_multiple_protocol_interfaces()
is called,  efi_uninstall_multiple_protocol_interfaces() should be used to
remove it.  So let's swap the efi_add_protocol() as well.

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 years agoefi_loader: simplify efi_uninstall_protocol()
Heinrich Schuchardt [Sun, 18 Jun 2023 07:00:45 +0000 (09:00 +0200)] 
efi_loader: simplify efi_uninstall_protocol()

The call to efi_search_obj() is redundant as the function is called in
efi_search_protocol() too.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 years agoMerge tag 'fsl-qoriq-2023-7-13' of https://source.denx.de/u-boot/custodians/u-boot...
Tom Rini [Wed, 19 Jul 2023 11:59:34 +0000 (07:59 -0400)] 
Merge tag 'fsl-qoriq-2023-7-13' of https://source.denx.de/u-boot/custodians/u-boot-fsl-qoriq

Enable DM_SERIAL for T2080RDB, T4240RDB, T1042D4RDB, T1024RDB

2 years agoMerge https://source.denx.de/u-boot/custodians/u-boot-mmc
Tom Rini [Wed, 19 Jul 2023 00:42:16 +0000 (20:42 -0400)] 
Merge https://source.denx.de/u-boot/custodians/u-boot-mmc

2 years agoMerge branch '2023-07-17-assorted-updates'
Tom Rini [Tue, 18 Jul 2023 13:55:32 +0000 (09:55 -0400)] 
Merge branch '2023-07-17-assorted-updates'

- Merge in some Kconfig dependencies fixes, typo fixes, erofs update,
  shell portability fix, an env save fix, better mbr+gpt support, and
  some android A/B enhancements.

2 years agommc: Set clock when reverting to safe bus mode
Valentine Barshak [Sat, 10 Jun 2023 11:22:33 +0000 (13:22 +0200)] 
mmc: Set clock when reverting to safe bus mode

Set MMC clock when reverting to safe bus mode and speed
in case current MMC mode fails. Otherwise, trying out
the other modes may fail as well.

Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Signed-off-by: Valentine Barshak <valentine.barshak@cogentembedded.com>
[hp: fallback to legacy_speed]
Signed-off-by: Hai Pham <hai.pham.ud@renesas.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
2 years agommc: renesas-sdhi: Send stop when MMC tuning command fails
Hai Pham [Mon, 19 Jun 2023 22:38:25 +0000 (00:38 +0200)] 
mmc: renesas-sdhi: Send stop when MMC tuning command fails

When tuning command (CMD21) fails with command error, call
mmc_send_stop_transmission() to send stop command (CMD12).

Reviewed-by: Takeshi Kihara <takeshi.kihara.df@renesas.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Signed-off-by: Hai Pham <hai.pham.ud@renesas.com>
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
[Marek: Add dev_dbg() message in case tuning abort fails
        Move tuning opcode check from mmc_abort_tuning()]
Reviewed-by: Peng Fan <peng.fan@nxp.com>
2 years agommc: Introduce mmc_send_stop_transmission()
Hai Pham [Mon, 19 Jun 2023 22:38:24 +0000 (00:38 +0200)] 
mmc: Introduce mmc_send_stop_transmission()

If a tuning command times out, the card could still be processing it,
which will cause problems for recovery. The eMMC specification section
6.6 Data transfer mode (cont’d) claims that CMD12 can be used to stop
CMD21:
"
The relationship between the various data transfer modes is summarized (see Figure 27):
- All data read commands can be aborted any time by the stop command (CMD12).
  The data transfer will terminate and the Device will return to the Transfer State.
  The read commands are: ... send tuning block (CMD21) ....
"
Add a function that does that.

Based on Linux commit [1] and [2].

[1] e711f0309109 ("mmc: mmc: Introduce mmc_abort_tuning()")
[2] 21adc2e45f4e ("mmc: Improve function name when aborting a tuning
cmd")

Reviewed-by: Takeshi Kihara <takeshi.kihara.df@renesas.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Signed-off-by: Hai Pham <hai.pham.ud@renesas.com>
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
[Marek: Update commit message, quote relevant part of the specification.
        Rename to mmc_send_stop_transmission().
Remove tuning opcode check, this is controller driver specific.
Deduplicate part of mmc_read_blocks() using this function.]
Reviewed-by: Peng Fan <peng.fan@nxp.com>
2 years agommc: Fix MMC_CMD_STOP_TRANSMISSION response type and add comment
Marek Vasut [Mon, 19 Jun 2023 22:38:23 +0000 (00:38 +0200)] 
mmc: Fix MMC_CMD_STOP_TRANSMISSION response type and add comment

For MMC/eMMC, the MMC_CMD_STOP_TRANSMISSION response is R1 for read
transfers and R1b for write transfers per JEDEC Standard No. 84-B51
Page 126 . The response is R1b unconditionally per Physical Layer
Simplified Specification Version 9.00.

Correct the response type and add a comment about it.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
2 years agoenv: Fix default environment saving issue
Ashok Reddy Soma [Tue, 4 Jul 2023 06:16:07 +0000 (00:16 -0600)] 
env: Fix default environment saving issue

When CONFIG_SYS_REDUNDAND_ENVIRONMENT is enabled, by default env is
getting saved to redundant environment irrespective of primary env is
present or not.

It means even if primary and redundant environment are not present, by
default, env is getting stored to redundant environment. Even if primary
env is present, it is choosing to store in redudndant env.

Ideally it should look for primary env and choose to store in primary env
if it is present. If both primary and redundant env are not present then
it should save in to primary env area.

Fix the issue by making env_valid = ENV_INVALID when both the
environments are not present.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agoandroid_ab: Try backup booloader_message
Joshua Watt [Mon, 3 Jul 2023 15:07:13 +0000 (10:07 -0500)] 
android_ab: Try backup booloader_message

Some devices keep 2 copies of the bootloader_message in the misc
partition and write each in sequence when updating. This ensures that
there is always one valid copy of the bootloader_message. Teach u-boot
to optionally try a backup bootloader_message from a specified offset if
the primary one fails its CRC check.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
2 years agocmd: mbr: Force DOS driver to be used for verify
Joshua Watt [Mon, 3 Jul 2023 13:39:56 +0000 (08:39 -0500)] 
cmd: mbr: Force DOS driver to be used for verify

Forces the DOS partition type driver to be used when verifying the MBR.
This is particularly useful when using a hybrid MBR & GPT layout as
otherwise MBR verification would mostly likely fail since the GPT
partitions will be returned, even if the MBR is actually valid.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agodm: test: Add test for part_get_info_by_type
Joshua Watt [Mon, 3 Jul 2023 13:39:55 +0000 (08:39 -0500)] 
dm: test: Add test for part_get_info_by_type

Adds a test suite to ensure that part_get_info_by_type works correctly
by creating a hybrid GPT/MBR partition table and reading both.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
[trini: Add this on the other sandbox configs]
Signedd-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agodisk: part: Add API to get partitions with specific driver
Joshua Watt [Mon, 3 Jul 2023 13:39:54 +0000 (08:39 -0500)] 
disk: part: Add API to get partitions with specific driver

Adds part_driver_get_type() API which can be used to force a specific
driver to be used when getting partition information instead of relying
on auto detection.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agodm: test: Improve partition test error output
Joshua Watt [Mon, 3 Jul 2023 13:39:53 +0000 (08:39 -0500)] 
dm: test: Improve partition test error output

Improve the logging when the partition test fails so that it is clear
what went wrong, shown with actual values.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agodm: test: Fix partition test to use mmc2
Joshua Watt [Mon, 3 Jul 2023 13:39:52 +0000 (08:39 -0500)] 
dm: test: Fix partition test to use mmc2

d94d9844bc ("dm: part: Update test to use mmc2") attempted to make the
test use mmc2, but the change was incomplete in that it didn't also
change the strings that reference a specific partition. Fix these so
that the test passes again

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2 years agotests: Fix exception when cleaning up skipped test
Joshua Watt [Mon, 3 Jul 2023 13:35:09 +0000 (08:35 -0500)] 
tests: Fix exception when cleaning up skipped test

If test_cat and test_xxd cannot create the required file, the test will
be skipped, but this would result in an exception being raised in the
finally block because the file didn't exist to be cleaned up. This
caused the test to be marked as failed instead of skipped.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agoandroid_ab: Add option to skip decrementing tries
Joshua Watt [Fri, 23 Jun 2023 22:05:48 +0000 (17:05 -0500)] 
android_ab: Add option to skip decrementing tries

It is is sometimes desired to be able to skip decrementing the number of
tries remaining in an Android A/B boot, and instead just check which
slot will be tried later. This can commonly be be the case for platforms
that want to A/B u-boot itself, but are required to boot from a FAT MBR
partition. In these cases, u-boot must do an early check that the MBR
points to the correct A/B boot partition, and if not rewrite the MBR to
point to the correct one and reboot. Decrementing the try count in this
case is not desired because it means that each u-boot might constantly
ping-pong overwriting the MBR and rebooting until all the retries are
used up.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
2 years agodisk: Use BOOT_DEFAULTS instead of DISTRO_DEFAULTS
Jonas Karlman [Tue, 11 Jul 2023 22:37:30 +0000 (22:37 +0000)] 
disk: Use BOOT_DEFAULTS instead of DISTRO_DEFAULTS

Set default y based on common BOOT_DEFAULTS instead of DISTRO_DEFAULTS.

No change is intended, affected options is already implied for DISTRO
and BOOTSTD due to BOOT_DEFAULTS imply DOS_PARTITION (USB_STORAGE),
EFI_PARTITION and ISO_PARTITION.

Fixes: a0c739c184ca ("boot: Create a common BOOT_DEFAULTS for distro and bootstd")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agodfu: Add proper dependency for CONFIG_DFU_MMC
Ashok Reddy Soma [Fri, 7 Jul 2023 08:51:36 +0000 (02:51 -0600)] 
dfu: Add proper dependency for CONFIG_DFU_MMC

When CONFIG_CMD_MMC and CONFIG_MMC are disabled, still some compilation
errors are seen as below due to unresolved symbols.

drivers/dfu/dfu_mmc.o: in function `mmc_block_op':
drivers/dfu/dfu_mmc.c:32: undefined reference to `find_mmc_device'
drivers/dfu/dfu_mmc.c:54: undefined reference to `mmc_get_blk_desc'
drivers/dfu/dfu_mmc.c:67: undefined reference to `mmc_get_blk_desc'
drivers/dfu/dfu_mmc.c:70: undefined reference to `mmc_get_blk_desc'
drivers/dfu/dfu_mmc.o: in function `dfu_fill_entity_mmc':
drivers/dfu/dfu_mmc.c:369: undefined reference to `find_mmc_device'
drivers/dfu/dfu_mmc.c:376: undefined reference to `mmc_init'
drivers/dfu/dfu_mmc.c:403: undefined reference to `mmc_get_blk_desc'
gnu/aarch64/lin/aarch64-linux/bin/aarch64-linux-gnu-ld.bfd: line 4:
31661 Segmentation fault      (core dumped) $CC --sysroot=$LIBC
--no-warn-rwx-segment "$@"
Makefile:1760: recipe for target 'u-boot' failed
make: *** [u-boot] Error 139
make: *** Deleting file 'u-boot'

Add dependency of CONFIG_MMC for CONFIG_DFU_MMC config to fix the errors.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com>
2 years agofs/erofs: Introduce new features including ztailpacking, fragments and dedupe
Yifan Zhao [Fri, 7 Jul 2023 15:52:12 +0000 (23:52 +0800)] 
fs/erofs: Introduce new features including ztailpacking, fragments and dedupe

This patch updates erofs driver code to catch up with the latest code of
erofs_utils (commit e4939f9eaa177e05d697ace85d8dc283e25dc2ed).

LZMA will be supported in the separate patch later.

Signed-off-by: Yifan Zhao <zhaoyifan@sjtu.edu.cn>
Reviewed-by: Huang Jianan <jnhuang95@gmail.com>
2 years agoMakefile: Add missing quotes around sort --field-separator
Marek Vasut [Tue, 11 Jul 2023 12:15:53 +0000 (14:15 +0200)] 
Makefile: Add missing quotes around sort --field-separator

Busybox sort does not handle --field-separator== , replace this
with --field-separator='=' for maximum compatibility.

Fixes: cc5a490cf465 ("Makefile: Sort u-boot-initial-env output")
Reported-by: Milan P. Stanić <mps@arvanta.net>
Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agobootstd: Correct 'bpot' typo
Julien Delbergue [Thu, 13 Jul 2023 09:53:09 +0000 (11:53 +0200)] 
bootstd: Correct 'bpot' typo

Fix it to 'boot' in the header, as it is in the source file.

Signed-off-by: Julien Delbergue <j.delbergue.foss@gmail.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agoMerge https://source.denx.de/u-boot/custodians/u-boot-x86
Tom Rini [Mon, 17 Jul 2023 14:38:28 +0000 (10:38 -0400)] 
Merge https://source.denx.de/u-boot/custodians/u-boot-x86

- bootstd: Add a bootmeth for ChromiumOS on x86
- x86: Use qemu-x86_64 to boot EFI installers

2 years agox86: Switch QEMU over to use the bochs driver
Simon Glass [Sun, 16 Jul 2023 03:39:19 +0000 (21:39 -0600)] 
x86: Switch QEMU over to use the bochs driver

This is more convenient since it does not require a video BIOS. Enable
it for QEMU.

Also drop use of video in SPL for the 64-bit QEMU, since it not needed
now.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agox86: video: Add a driver for QEMU bochs emulation
Simon Glass [Sun, 16 Jul 2023 03:39:18 +0000 (21:39 -0600)] 
x86: video: Add a driver for QEMU bochs emulation

Bochs is convenient with QEMU on x86 since it does not require a video
BIOS. Add a driver for it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agoefi: Use the installed ACPI tables
Simon Glass [Sun, 16 Jul 2023 03:39:17 +0000 (21:39 -0600)] 
efi: Use the installed ACPI tables

U-Boot sets up the ACPI tables during startup. Rather than creating a
new set, install the existing ones. Create a memory-map record to cover
the tables.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agosandbox: Install ACPI tables on startup
Simon Glass [Sun, 16 Jul 2023 03:39:16 +0000 (21:39 -0600)] 
sandbox: Install ACPI tables on startup

With x86 we set up the ACPI tables on startup so they can be examined. Do
the same with sandbox, so it is consistent.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agosandbox: Correct header order in board file
Simon Glass [Sun, 16 Jul 2023 03:39:15 +0000 (21:39 -0600)] 
sandbox: Correct header order in board file

Fix the header order in this file.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agolog: Support outputing function names in SPL
Simon Glass [Sun, 16 Jul 2023 03:39:14 +0000 (21:39 -0600)] 
log: Support outputing function names in SPL

The output is garbled when tiny printf() is used. Correct this by adding
a special case.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agox86: Make sure that the LPC is active before SDRAM init
Simon Glass [Sun, 16 Jul 2023 03:39:13 +0000 (21:39 -0600)] 
x86: Make sure that the LPC is active before SDRAM init

Some boards need to access GPIOs to determine which SDRAM is fitted to the
board, for example chromebook_link. Probe this device (if it exists) to
make sure that this works as expected.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agox86: link: Support Micron memory
Simon Glass [Sun, 16 Jul 2023 03:39:12 +0000 (21:39 -0600)] 
x86: link: Support Micron memory

Add the required tag so that micron memory can be set up correctly.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agox86: Convert some debug statements to use logging
Simon Glass [Sun, 16 Jul 2023 03:39:11 +0000 (21:39 -0600)] 
x86: Convert some debug statements to use logging

Move from using debug() to log_debug() so that we don't have to use the
__func__ parameter and can access other logging features.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agox86: Record the start and end of the tables
Simon Glass [Sun, 16 Jul 2023 03:39:10 +0000 (21:39 -0600)] 
x86: Record the start and end of the tables

The ACPI tables are special in that they are passed to EFI as a separate
piece, independent of other tables.

Also they can be spread over two areas of memory, e.g. with QEMU we end
up with tables kept in high memory as well.

Add new global_data fields to hold this information and update the bdinfo
command to show the table areas.

Move the rom_table_end variable into the loop that uses it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agox86: Refactor table-writing code a little
Simon Glass [Sun, 16 Jul 2023 03:39:09 +0000 (21:39 -0600)] 
x86: Refactor table-writing code a little

The implementation of write_tables() is confusing because it uses the
rom_table_start variable as the address pointer as it progresses.

Rename it to rom_addr to make the code clearer. Move the rom_table_end
variable into the block where it is used.

Also update logging to use the ACPI category, now that it is available.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agox86: Enable useful options for qemu-86_64
Simon Glass [Sun, 16 Jul 2023 03:39:08 +0000 (21:39 -0600)] 
x86: Enable useful options for qemu-86_64

This build can be used to boot standard distro builds, since these are
mostly 64-bit these days. Enable some more options, so that all possible
EFI UUIDs are decoded, we get a proper printf() in SPL, can search
memory for tables, support the full set of standard-boot features, have
full logging and can boot from CDROM media.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>