]> git.ipfire.org Git - thirdparty/u-boot.git/log
thirdparty/u-boot.git
2 years agoext4: detect directories in ext4fs_exists()
Heinrich Schuchardt [Tue, 20 Feb 2024 11:54:23 +0000 (12:54 +0100)] 
ext4: detect directories in ext4fs_exists()

While fat_exists() reports directories and files as existing
ext4fs_exists() only recognizes files. This lead to errors
when using systemd-boot with an ext4 file-system.

Change ext4fs_exists() to find any type of inode:
files, directories, symbolic links.

Fixes: a1596438a689 ("ext4fs ls load support")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agofs: drop reiserfs
Peter Robinson [Sun, 18 Feb 2024 23:59:35 +0000 (23:59 +0000)] 
fs: drop reiserfs

It was only included by a single board which doesn't appear to have
ever used it for any default use cases so drop the filesystem now
that isn't used by any in-tree configurations.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
2 years agoconfigs: ethernut5: Drop reiserfs
Peter Robinson [Sun, 18 Feb 2024 23:59:34 +0000 (23:59 +0000)] 
configs: ethernut5: Drop reiserfs

This is the only board that enables it, and looking generally I don't
believe it's used. All use cases I could fine for the board rub by
default off jffs on the nand and it doesn't enable USB storage.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
Cc: egnite GmbH <info@egnite.de>
2 years agoremove Broadcom Northstar 2 Target entry
Peter Robinson [Sun, 18 Feb 2024 11:16:20 +0000 (11:16 +0000)] 
remove Broadcom Northstar 2 Target entry

The Broadcom Northstar 2 support was removed when the
bcm958712k board was removed but the target entry was
missed so clean that up as well.

Fixes: d59bc09d829 ("arm: Remove bcm958712k board")
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
2 years agodm: core: Fix address translation in devfdt_get_addr_index()
Jonas Karlman [Sat, 17 Feb 2024 13:19:41 +0000 (13:19 +0000)] 
dm: core: Fix address translation in devfdt_get_addr_index()

During address translation #address/size-cells props are expected to
apply to child nodes. However, devfdt_get_addr_index() incorrectly use
the parent offset of the udevice parent instead of getting the offset of
the node parent. This will work in most cases when there is only one
udevice tied to a node.

On e.g. an Orange Pi R1 Plus TLS board the dwc3-generic (parent) and
dwc3-generic-host (child) udevice is tied to the same node.

In that case both the offset and parent values end up being the same.
As a result, the #address/size-cells props intended for child nodes
incorrectly gets applied to the node itself resulting in wrong addr
being returned, 0x0 instead of 0xff600000.

The following can be seen on console:

  dwc3-generic-host usb@ff600000: this is not a DesignWare USB3 DRD Core
  dwc3-generic-host usb@ff600000: failed to initialize core

Fix this by using the offset of the parent node and not the offset to
the node the parent udevice is tied to.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
2 years agopinctrl: Check pinconfig nodes pre-reloc status recursively
Jonas Karlman [Sat, 17 Feb 2024 12:08:40 +0000 (12:08 +0000)] 
pinctrl: Check pinconfig nodes pre-reloc status recursively

Pinconfig nodes normally bind recursively with PINCTRL_FULL and
PINCONF_RECURSIVE enabled. However, during U-Boot proper pre-relocation
any node marked with e.g. bootph-all will not bind unless its parent is
also marked for pre-reloc.

  group1 {
      pinconf1 {
          bootph-all;
      };
  };

This cause the following warning message to be shown during U-Boot
proper pre-reloc stage on Rockchip devices, e.g on RK3568:

  ns16550_serial serial@fe660000: pinctrl_select_state_full: uclass_get_device_by_phandle_id: err=-19

and on RK3328:

  ns16550_serial serial@ff130000: pinctrl_select_state_full: uclass_get_device_by_phandle_id: err=-19

Check pinconfig nodes pre-reloc status recursively to fix this and to
make pinconfig_post_bind work same at both U-Boot proper pre-reloc and
at TPL/SPL stage.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
2 years agoMakefile: remove hardcoded device tree source directory
Bryan Brattlof [Mon, 4 Mar 2024 12:12:57 +0000 (17:42 +0530)] 
Makefile: remove hardcoded device tree source directory

Some boards that choose to utilize the OF_UPSTREAM directory for their
device tree files will need to specify that directory instead of the
traditional arch/$(ARCH)/dts/* path.

Include the correct path to the board's dtbs depending on if OF_UPSTREAM
is selected or not.

Signed-off-by: Bryan Brattlof <bb@ti.com>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Fabio Estevam <festevam@gmail.com>
2 years agovideo: mxsfb: add back imx6ul/imx6ull support
Sébastien Szymanski [Tue, 27 Feb 2024 15:40:02 +0000 (16:40 +0100)] 
video: mxsfb: add back imx6ul/imx6ull support

Because of commit bf947d2a4b15 ("imx6ul: synchronise device tree with
linux"), the compatible property of lcdif in imx6ul.dtsi went from

compatible = "fsl,imx6ul-lcdif", "fsl,imx28-lcdif";

to

compatible = "fsl,imx6ul-lcdif", "fsl,imx6sx-lcdif";

without updating the mxsfb driver to match that change.

Add "fsl,imx6sx-lcdif" as a compatible id to fix that.

Fixes: bf947d2a4b15 ("imx6ul: synchronise device tree with linux")
Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
2 years agoopos6uldev: make the LCD work again
Sébastien Szymanski [Tue, 27 Feb 2024 15:40:01 +0000 (16:40 +0100)] 
opos6uldev: make the LCD work again

Commit 5d7a95f49999 ("imx6ul/imx6ull: synchronise device trees with
linux") removed the display timings from the board device tree whereas
they are still needed by the mxsfb driver.
Add the timings back (the correct ones) in the
imx6ul-opos6uldev-u-boot.dtsi file and remove them from the
opos6uldev.env file.

Update the opos6uldev_defconfig file so that the LCD turns on at boot.

Fixes: 5d7a95f49999 ("imx6ul/imx6ull: synchronise device trees with linux")
Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
2 years agoimx9: Update to mx93 A1 chip revision.
Mathieu Othacehe [Mon, 26 Feb 2024 17:48:34 +0000 (18:48 +0100)] 
imx9: Update to mx93 A1 chip revision.

Use the latest, mx93a1-ahab-container.img that is compatible with the
i.MX93 A1 revision.

Using mx93a1-ahab-container.img on an A0 chip and conversely causes a boot
failure without any traces on the UART.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2 years agotools: imx9_image: Reword warning message.
Mathieu Othacehe [Mon, 26 Feb 2024 17:37:19 +0000 (18:37 +0100)] 
tools: imx9_image: Reword warning message.

If the optional `tee.bin` OP-TEE binary is missing, the image will still be
functional. Adapt the warning message accordingly.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2 years agoimx9: Fix OP-TEE support
Mathieu Othacehe [Mon, 26 Feb 2024 17:37:18 +0000 (18:37 +0100)] 
imx9: Fix OP-TEE support

This fixes OP-TEE support by:

- Adding tee.bin to container.cfg
- Starting ELE RNG in SPL

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2 years agosunxi: H616: Add OrangePi Zero 2W board support
Andre Przywara [Tue, 30 Jan 2024 14:16:42 +0000 (14:16 +0000)] 
sunxi: H616: Add OrangePi Zero 2W board support

The OrangePi Zero 2W is a tiny development board featuring the Allwinner
H618 SoC, shipping with up to 4GB of LPDDR4 DRAM, a mini-HDMI connector,
two USB Type-C sockets and a 16MB SPI NOR flash.
There is an FPC connector to connect an expansion board, which sports
two more USB Type-A sockets and a 100MBit Ethernet port. Support for
the expansion board is not in the DT yet, probably a DT overlay would
cover this in the future.

Add a defconfig file selecting the right drivers and DRAM options.
Since the .dts file was synced from the Linux kernel repo already, we
just need to add one line to the Makefile to actually build the .dtb.

The DRAM parameters were derived from the values found in the BSP DRAM
drivers on the SPI NOR flash.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
2 years agosunxi: sun4i: add missing sdelay() to clock_init_safe()
Ludwig Kormann [Thu, 1 Feb 2024 08:45:50 +0000 (09:45 +0100)] 
sunxi: sun4i: add missing sdelay() to clock_init_safe()

This delay is required after switching the clock source.

See “A20 Reference manual v1.4” Page 50 / section
“1.5.4.16. CPU/AHB/APB0 CLOCK RATIO”: “If the clock
source is changed, at most to wait for 8 present running
clock cycles.”

This is already implemented in clock_set_pll1(), but was
still missing in clock_init_safe().

Signed-off-by: Ludwig Kormann <ludwig.kormann@ict42.de>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
2 years agoarm: sunxi: Reduce inrush current on Olimex A20-OLinuXino_MICRO configs
Philippe Coval [Sun, 11 Feb 2024 20:52:13 +0000 (21:52 +0100)] 
arm: sunxi: Reduce inrush current on Olimex A20-OLinuXino_MICRO configs

This change fix reboot, both configurations
were tested on my Olimex A20 Micro Rev E with debian-12.

This issue was also present and fixed on A20 Lime2 (in 8311e84b18),
quoting Olliver Schinagl:

    The lime2 features a too large capacitor on the LDO3 output, which
    causes the PMIC to shutdown when enabling power. To be able to still
    boot up however, we must gradually enable power on LDO3 for this board.
    We do this by enabling both the inrush quirk and the maximum slope the
    AXP209 supports.

Link: https://bugs.debian.org/1060752
Cc: Olliver Schinagl <oliver@schinagl.nl>
Cc: Priit Laes <plaes@plaes.org>
Cc: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Philippe Coval <rzr@users.sf.net>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
2 years agospi: sunxi: Add support for R329/D1/R528/T113 SPI controller
Maksim Kiselev [Sat, 11 Nov 2023 13:33:08 +0000 (16:33 +0300)] 
spi: sunxi: Add support for R329/D1/R528/T113 SPI controller

These SoCs have two SPI controllers that are quite similar to the SPI
on previous Allwinner SoCs. The main difference is that new SoCs
don't have a clock divider (SPI_CCR register) inside SPI IP.

Instead SPI sample mode should be configured depending on the input clock.

For now SPI input clock source selection is not supported by this driver,
and only HOSC@24MHz can be used as input clock. Therefore, according to
the, manual we could change the SPI sample mode from delay half
cycle(default) to normal.

This patch adds a quirk for this kind of SPI controllers

Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
Tested-by: Sam Edwards <CFSworks@gmail.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
2 years agoMerge patch series "ARM: renesas: Rename R-Mobile to Renesas"
Tom Rini [Sat, 2 Mar 2024 19:30:25 +0000 (14:30 -0500)] 
Merge patch series "ARM: renesas: Rename R-Mobile to Renesas"

Marek Vasut <marek.vasut+renesas@mailbox.org> says:

Rename R-Mobile to Renesas all over the place because the chips are
made by Renesas, while only a subset of them is from the R-Mobile line.

2 years agogit-mailrc: Add renesas entry and update rmobile entry
Marek Vasut [Tue, 27 Feb 2024 16:05:59 +0000 (17:05 +0100)] 
git-mailrc: Add renesas entry and update rmobile entry

Add new renesas entry and update rmobile entry to match.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agommc: renesas-sdhi: Rename rmobile_is_gen3_mmc0() to rcar_is_gen3_mmc0()
Marek Vasut [Tue, 27 Feb 2024 16:05:58 +0000 (17:05 +0100)] 
mmc: renesas-sdhi: Rename rmobile_is_gen3_mmc0() to rcar_is_gen3_mmc0()

Rename rmobile_is_gen3_mmc0() to rcar_is_gen3_mmc0() because
this particular function is specific to Renesas R-Car Gen3.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Post rename fix ups
Marek Vasut [Tue, 27 Feb 2024 16:05:57 +0000 (17:05 +0100)] 
ARM: renesas: Post rename fix ups

Fix up remains of rename from rmobile to renesas,
namely file paths and remaining RMOBILE strings.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Rename arch-/mach-rmobile to arch-/mach-renesas
Marek Vasut [Tue, 27 Feb 2024 16:05:56 +0000 (17:05 +0100)] 
ARM: renesas: Rename arch-/mach-rmobile to arch-/mach-renesas

Rename arch-rmobile to arch-renesas and mach-rmobile to mach-renesas
because all the chips are made by Renesas, while only a subset of
them is from the R-Mobile line.

Use the following command to perform the rename, with manual move of
the directories using git mv and manual fix up to arch/arm/Makefile:

"
$ git grep -l '\<\(arch\|mach\)-rmobile\>' | \
  xargs -I {} sed -i 's@\<\(arch\|mach\)-rmobile\>@\1-renesas@g' {}
$ sed -i 's@rmobile@renesas@' board/*/*/Kconfig
"

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Rename ARCH_RMOBILE to ARCH_RENESAS
Marek Vasut [Tue, 27 Feb 2024 16:05:55 +0000 (17:05 +0100)] 
ARM: renesas: Rename ARCH_RMOBILE to ARCH_RENESAS

Rename ARCH_RMOBILE to ARCH_RENESAS because all the chips are made
by Renesas, while only a subset of them is from the R-Mobile
line.

Use the following command to perform the rename:

"
$ git grep -l 'ARCH_RMOBILE' | xargs -I {} sed -i 's@ARCH_RMOBILE@ARCH_RENESAS@g' {}
"

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Rename rmobile.h to renesas.h
Marek Vasut [Tue, 27 Feb 2024 16:05:54 +0000 (17:05 +0100)] 
ARM: renesas: Rename rmobile.h to renesas.h

Rename rmobile.h to renesas.h because all the chips are made
by Renesas, while only a subset of them is from the R-Mobile
line.

Use the following command to perform the rename:

"
$ git grep -l 'include.*rmobile.h' | \
  xargs -I {} sed -i '/include.*rmobile.h/ s@rmobile.h@renesas.h@g' {}
"

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Rename CONFIG_ARCH_RMOBILE_EXTRAM_BOOT to CONFIG_RENESAS_EXTRAM_BOOT
Marek Vasut [Tue, 27 Feb 2024 16:05:53 +0000 (17:05 +0100)] 
ARM: renesas: Rename CONFIG_ARCH_RMOBILE_EXTRAM_BOOT to CONFIG_RENESAS_EXTRAM_BOOT

Rename CONFIG_ARCH_RMOBILE_EXTRAM_BOOT to CONFIG_RMOBILE_EXTRAM_BOOT
because the former symbol does not exist and it is only incorrectly
converted CONFIG_RMOBILE_EXTRAM_BOOT which does exist. Replace the
RMOBILE with RENESAS because all the chips are made by Renesas, while
only a subset of them is from the R-Mobile line.

Use the following command to perform the rename with manual Kconfig.32 fix:

"
$ sed -i 's@CONFIG_ARCH_RMOBILE_EXTRAM_BOOT@CONFIG_RMOBILE_EXTRAM_BOOT@g' board/renesas/*/*
$ sed -i 's@CONFIG_RMOBILE_EXTRAM_BOOT@CONFIG_RENESAS_EXTRAM_BOOT@g' board/renesas/*/*
"

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Rename ARCH_RMOBILE_BOARD_STRING to ARCH_RENESAS_BOARD_STRING
Marek Vasut [Tue, 27 Feb 2024 16:05:52 +0000 (17:05 +0100)] 
ARM: renesas: Rename ARCH_RMOBILE_BOARD_STRING to ARCH_RENESAS_BOARD_STRING

Rename ARCH_RMOBILE_BOARD_STRING to ARCH_RENESAS_BOARD_STRING
because all the chips are made by Renesas, while only a subset
of them is from the R-Mobile line.

Use the following command to perform the rename:

"
$ git grep -l 'ARCH_RMOBILE_BOARD_STRING' | \
  xargs -I {} sed -i 's@ARCH_RMOBILE_BOARD_STRING@ARCH_RENESAS_BOARD_STRING@g' {}
"

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Rename rmobile_get_prr() to renesas_get_prr()
Marek Vasut [Tue, 27 Feb 2024 16:05:51 +0000 (17:05 +0100)] 
ARM: renesas: Rename rmobile_get_prr() to renesas_get_prr()

Rename rmobile_get_prr() to renesas_get_prr() because all the
chips are made by Renesas, while only a subset of them is from
the R-Mobile line.

Use the following command to perform the rename:

"
$ git grep -l '\<rmobile_get_prr\>' | \
  xargs -I {} sed -i 's@\<rmobile_get_prr\>@renesas_get_prr@g' {}
"

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Simplify weak symbols
Marek Vasut [Tue, 27 Feb 2024 16:05:50 +0000 (17:05 +0100)] 
ARM: renesas: Simplify weak symbols

Simplify the weak symbols use in cpu_info.c by using the __weak macro.
The result is identical, but the syntax is much simpler. Furthermore,
drop three more rmobile* symbols which are now unused.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Rename rmobile_cpuinfo[] to renesas_cpuinfo[]
Marek Vasut [Tue, 27 Feb 2024 16:05:49 +0000 (17:05 +0100)] 
ARM: renesas: Rename rmobile_cpuinfo[] to renesas_cpuinfo[]

Rename rmobile_cpuinfo[] to renesas_cpuinfo[] because all
the chips are made by Renesas, while only a subset of them
is from the R-Mobile line.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Rename rmobile_cpuinfo_idx() to renesas_cpuinfo_idx()
Marek Vasut [Tue, 27 Feb 2024 16:05:48 +0000 (17:05 +0100)] 
ARM: renesas: Rename rmobile_cpuinfo_idx() to renesas_cpuinfo_idx()

Rename rmobile_cpuinfo_idx() to renesas_cpuinfo_idx() because all
the chips are made by Renesas, while only a subset of them is from
the R-Mobile line.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Rename RMOBILE_CPU_TYPE_* to RENESAS_CPU_TYPE_*
Marek Vasut [Tue, 27 Feb 2024 16:05:47 +0000 (17:05 +0100)] 
ARM: renesas: Rename RMOBILE_CPU_TYPE_* to RENESAS_CPU_TYPE_*

Rename RMOBILE_CPU_TYPE_* to RENESAS_CPU_TYPE_* because all
the chips are made by Renesas, while only a subset of them is
from the R-Mobile line.

Use the following command to perform the rename:

"
$ git grep -l '\<RMOBILE_CPU_TYPE_[A-Z0-9]\+\>' | \
  xargs -I {} sed -i 's@\<RMOBILE\(_CPU_TYPE_[A-Z0-9]\+\)\>@RENESAS\1@g' {}
"

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Rename rmobile_get_cpu_rev_*() to renesas_get_cpu_rev_*()
Marek Vasut [Tue, 27 Feb 2024 16:05:46 +0000 (17:05 +0100)] 
ARM: renesas: Rename rmobile_get_cpu_rev_*() to renesas_get_cpu_rev_*()

Rename rmobile_get_cpu_rev_*() to renesas_get_cpu_rev_*() because
all the chips are made by Renesas, while only a subset of them is
from the R-Mobile line.

Use the following command to perform the rename:

"
$ git grep -l '\<rmobile_get_cpu_rev_\(integer\|fraction\)\>' | \
  xargs -I {} sed -i 's@\<rmobile_get_cpu_rev_\(integer\|fraction\)\>@renesas_get_cpu_rev_\1@g' {}
"

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Rename rmobile_get_cpu_type() to renesas_get_cpu_type()
Marek Vasut [Tue, 27 Feb 2024 16:05:45 +0000 (17:05 +0100)] 
ARM: renesas: Rename rmobile_get_cpu_type() to renesas_get_cpu_type()

Rename rmobile_get_cpu_type() to renesas_get_cpu_type() because
all the chips are made by Renesas, while only a subset of them
is from the R-Mobile line.

Use the following command to perform the rename:

"
$ git grep -l '\<rmobile_get_cpu_type\>' | \
  xargs -I {} sed -i 's@\<rmobile_get_cpu_type\>@renesas_get_cpu_type@g' {}
"

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Drop unused pfc-r8a7790.h
Marek Vasut [Tue, 27 Feb 2024 16:05:44 +0000 (17:05 +0100)] 
ARM: renesas: Drop unused pfc-r8a7790.h

This file is no longer used, the PFC pin controller driver is
superseded by drivers/pinctrl/renesas/pfc-r8a7790.c which
includes all the details of the hardware. Remove this file.
No functional change.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Drop unused mmc.h
Marek Vasut [Tue, 27 Feb 2024 16:05:43 +0000 (17:05 +0100)] 
ARM: renesas: Drop unused mmc.h

This file is no longer used, the MMCIF controller driver is
superseded by drivers/mmc/sh_mmcif.c which includes all the
details of the hardware. Remove this file include from all
board files and remove the file itself. No functional change.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Drop unused sh_sdhi.h
Marek Vasut [Tue, 27 Feb 2024 16:05:42 +0000 (17:05 +0100)] 
ARM: renesas: Drop unused sh_sdhi.h

This file is no longer used, the SDHI controller driver is long
superseded by drivers/mmc/renesas-sdhi.c which includes all the
details of the hardware. Remove this file include from all board
files and remove the file itself. No functional change.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoARM: renesas: Drop remnants of R8A7740 support
Marek Vasut [Tue, 27 Feb 2024 16:05:41 +0000 (17:05 +0100)] 
ARM: renesas: Drop remnants of R8A7740 support

Last board with this SoC has been removed in commit
0fb054b3f7ea ("arm: Remove armadillo-800eva board")
in August 2022. Drop the rest of unused code.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Paul Barker <paul.barker.ct@bp.renesas.com>
2 years agoMerge branch 'master-riic' of https://source.denx.de/u-boot/custodians/u-boot-sh
Tom Rini [Sat, 2 Mar 2024 17:24:25 +0000 (12:24 -0500)] 
Merge branch 'master-riic' of https://source.denx.de/u-boot/custodians/u-boot-sh

- New renesas I2C controller driver and new PMIC driver along with
  enablement of them.

2 years agoboot: Only define checksum algos when the hashes are enabled
Sean Anderson [Thu, 15 Feb 2024 17:12:18 +0000 (12:12 -0500)] 
boot: Only define checksum algos when the hashes are enabled

Don't define checksum algos when the underlying hashes are not enabled.
This allows disabling these hashes in SPL (or U-Boot).

Fixes: d16b38f4270 ("Add support for SHA384 and SHA512")
Fixes: 646257d1f40 ("rsa: add sha256-rsa2048 algorithm")
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agopci-host-ecam-generic: Convert to ofnode functions
Maksim Kiselev [Wed, 14 Feb 2024 20:30:01 +0000 (23:30 +0300)] 
pci-host-ecam-generic: Convert to ofnode functions

FDT functions is not working when OF_LIVE is enabled.
Convert fdt parsing functions to ofnode parsing functions

Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com>
2 years agolog: fixup log_head after relocating global data
Thomas Weißschuh [Tue, 13 Feb 2024 17:13:28 +0000 (18:13 +0100)] 
log: fixup log_head after relocating global data

When `gd` is relocated during `spl_relocate_stack_gd()` the
doubly-linked circular list in the `log_head` member is broken.

The last element of the list should point back to the initial
`list_head`, but as the initial `list_head` is moved the pointer becomes
stale. As a result the loop in `log_dispatch` would never finish.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
2 years agorng: eliminate common.h include from RNG drivers
Heinrich Schuchardt [Mon, 12 Feb 2024 23:44:47 +0000 (00:44 +0100)] 
rng: eliminate common.h include from RNG drivers

Usage of common.h is deprecated.

* Remove common.h from RNG drivers.
* Sort includes.
* Add time.h to sandbox driver.
* Add linux/types.h to rng.h to provide size_t.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agocmd: remove common.h from exception command implementations
Heinrich Schuchardt [Mon, 12 Feb 2024 16:53:29 +0000 (17:53 +0100)] 
cmd: remove common.h from exception command implementations

The common.h should not be used anymore.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
2 years agobootdev: drop unnecessary assert on bootflow->bdev
Thomas Weißschuh [Mon, 12 Feb 2024 09:35:12 +0000 (10:35 +0100)] 
bootdev: drop unnecessary assert on bootflow->bdev

Not all flows have a device and the function already contains logic to
handle this case.

Fixes: eccb25cd5922 ("bootstd: Allow the bootdev to be optional in bootflows")
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
2 years agocmd: setexpr: fix no matching string in gsub return empty value
Massimiliano Minella [Thu, 8 Feb 2024 14:58:27 +0000 (15:58 +0100)] 
cmd: setexpr: fix no matching string in gsub return empty value

In gsub, when the destination string is empty, the string 't' is
provided and the regular expression doesn't match, then the final result
is an empty string.

Example:

=> echo ${foo}

=> setenv foo
=> setexpr foo gsub e a bar
=> echo ${foo}

=>

The variable ${foo} should contain "bar" and the lack of match shouldn't
be considered an error.

This patch fixes the erroneous behavior by removing the return
statement and breaking out of the loop in case of lack of match.

Also add a test for the no match case.

Signed-off-by: Massimiliano Minella <massimiliano.minella@se.com>
2 years agoFWU: developerbox: read boot index from NOR flash
Masahisa Kojima [Thu, 8 Feb 2024 02:33:44 +0000 (11:33 +0900)] 
FWU: developerbox: read boot index from NOR flash

The FWU Multi Bank Update feature allows the platform to boot the
firmware images from one of the partitions(banks).
On the Developerbox, SCP-firmware running on the SCB(Cortex-M3)
passes the value of the boot index on the NOR flash.
Add a function to read the boot index value from the NOR flash.

Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
2 years agonet: macb: Add support for fixed link
BELOUARGA Mohamed [Tue, 6 Feb 2024 19:04:02 +0000 (20:04 +0100)] 
net: macb: Add support for fixed link

The actual driver does not work when there is no linked PHY. These
changes add support for fixed-link feature in the device tree.

Signed-off-by: BELOUARGA Mohamed <m.belouarga@technologyandstrategy.com>
2 years agoscripts: dtc-version: Don't show error messages
Dragan Simic [Tue, 6 Feb 2024 11:00:04 +0000 (12:00 +0100)] 
scripts: dtc-version: Don't show error messages

Prevent the error messages produced by which(1), such as the one quoted
below, from being visible in the build outputs.

    which: no dtc in (./scripts/dtc)

This makes the build outputs look a tiny bit cleaner.

Signed-off-by: Dragan Simic <dsimic@manjaro.org>
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
2 years agotest: cmd: mbr: Fix Smatch static checker warning
Alexander Gendin [Sat, 3 Feb 2024 02:56:19 +0000 (02:56 +0000)] 
test: cmd: mbr: Fix Smatch static checker warning

This patch fixes Smatch static checker warning:
        test/cmd/mbr.c:243 mbr_test_run()
        warn: sizeof(NUMBER)?

Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Alexander Gendin <agendin@matrox.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
2 years agoqemu-arm: round down memory to multiple of 2MB for LPAE
Igor Opaniuk [Thu, 1 Feb 2024 12:40:54 +0000 (13:40 +0100)] 
qemu-arm: round down memory to multiple of 2MB for LPAE

QEMU's -m option can take fractional megabyte values,
and lowest granularity seems to be 0x2000.
For example, run qemu with amount of memory set to 100005k (0x61A9400):

$ qemu-system-arm -machine virt -cpu cortex-a15 -m 100005k \
-bios denx/u-boot.bin -nographic

=> fdt addr $fdt_addr
=> fdt print /memory@40000000
memory@40000000 {
        reg = <0x00000000 0x40000000 0x00000000 0x061aa000>;
        device_type = "memory";
};

When LPAE is enabled, 1:1 mapping is created using 2 MB blocks.
In case amount of memory provided to QEMU is not multiple
of 2 MB, hang occurs during MMU initialization.

How to reproduce:
qemu-system-arm -machine virt -m 1058 -nographic -bios u-boot.bin - boots
qemu-system-arm -machine virt -m 1057 -nographic -bios u-boot.bin - hangs

DRAM:  1 GiB
initcall: 60011df8
initcall: 60011904
New Stack Pointer is: 80fffe90
initcall: 60011a20
initcall: 60011bcc
initcall: 60011bd4
initcall: 600119b4
Relocation Offset is: 22042000
Relocating to 82042000, new gd at 81001ed0, sp at 80fffe90
initcall: 60011b8c
initcall: 82053ea0
initcall: 82053ea8
initcall: 60012040 (relocated to 82054040)
dram_bank_mmu_setup: bank: 0
- hang here during mmu init -

This patches rounds down to the nearest multiple of 2MB when
CONFIG_ARMV7_LPAE=y.

Fixes: 3fa914af82("arm: qemu: implement enable_caches()")
Signed-off-by: Igor Opaniuk <igor.opaniuk@foundries.io>
Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@foundries.io>
2 years agotest/py: net: Add dhcp abort test
Love Kumar [Tue, 30 Jan 2024 08:07:01 +0000 (13:37 +0530)] 
test/py: net: Add dhcp abort test

Abort the dhcp request in the middle by pressing ctrl + c on u-boot
prompt and validate the abort status.

Signed-off-by: Love Kumar <love.kumar@amd.com>
2 years agoarm: s5p4418: fix relocation of vectors
Stefan Bosch [Fri, 26 Jan 2024 12:50:56 +0000 (12:50 +0000)] 
arm: s5p4418: fix relocation of vectors

The header (NSIH) used for the s5p4418-SoC is not loaded into RAM by the
2nd-bootloader, see boot0.h. Therefore, use an adapted version of
relocate_vectors which relocates the vectors after the header (at _start)
instead of the 'dummy'-vectors at the start of the header (at
__image_copy_start).

Signed-off-by: Stefan Bosch <stefan_b@posteo.net>
Reviewed-by: Minkyu Kang <mk7.kang@samsung.com>
2 years agocommon: board_f: change calculation of gd->mon_len to fix s5p4418 reloc
Stefan Bosch [Fri, 26 Jan 2024 12:50:55 +0000 (12:50 +0000)] 
common: board_f: change calculation of gd->mon_len to fix s5p4418 reloc

ARCH_NEXELL: Change calculation of monitor length (gd->mon_len) to fix
relocation at boards with s5p4418-SoC (ARCH_NEXELL). At s5p4418, _start
is after the header (NSIH). Therefore the monitor length has to be
calculated using __image_copy_start instead of _start in order the
whole monitor code is relocated.

Signed-off-by: Stefan Bosch <stefan_b@posteo.net>
2 years agoxen: xenguest_arm64: map all VIRTIO MMIO region
Peng Fan [Fri, 26 Jan 2024 10:29:38 +0000 (18:29 +0800)] 
xen: xenguest_arm64: map all VIRTIO MMIO region

When run `virtio scan` on i.MX95, there is abort when accessing virtio
mmio region. The issue is the mmio region is not mapped. So let's map
all virtio mmio regions.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
2 years agoboot: pxe_utils: skip fdt setup in case legacy kernel is booted
Svyatoslav Ryhel [Thu, 25 Jan 2024 20:16:54 +0000 (22:16 +0200)] 
boot: pxe_utils: skip fdt setup in case legacy kernel is booted

Currently, if boot with extlinux.conf and do not set the fdt
U-Boot will provide its own device tree. This behavior is
beneficial if the U-Boot device tree is in sync with Linux,
but it totally halts the booting of pre-dtb kernels (3.4 for
example) since it uses ATAGs. To fix this, pass `-` in the
fdt extlinux field as a signal that no tree should be used.

Suggested-by: Jonas Schwöbel <jonasschwoebel@yahoo.de>
Tested-by: Jethro Bull <jethrob@hotmail.com>
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
2 years agonet: mediatek: add support for XGMII interface
Weijie Gao [Mon, 22 Jan 2024 02:08:16 +0000 (10:08 +0800)] 
net: mediatek: add support for XGMII interface

This patch add XGMII support for connecting 2.5G PHY.

Signed-off-by: Bo-Cun Chen <bc-bocun.chen@mediatek.com>
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
2 years agonet: mediatek: add support for adjusting MDIO clock
Weijie Gao [Mon, 22 Jan 2024 02:08:11 +0000 (10:08 +0800)] 
net: mediatek: add support for adjusting MDIO clock

User can assign a specific MDC speed to the eth node as follow:

&eth {
...
phy-mode = "usxgmii";
phy-handle = <&phy8>;

mdio {
clock-frequency = <10500000>;
};

phy8: eth-phy@8 {
      compatible = "ethernet-phy-id31c3.1c12";
...
};

Signed-off-by: Bo-Cun Chen <bc-bocun.chen@mediatek.com>
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
2 years agoarm: dts: mt7988-sd-rfb: add SD pin driving settings
Weijie Gao [Mon, 22 Jan 2024 02:07:54 +0000 (10:07 +0800)] 
arm: dts: mt7988-sd-rfb: add SD pin driving settings

Set SD pin driving to 4mA

Signed-off-by: Dong Huang <dong.huang@mediatek.com>
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
2 years agopinctrl: aspeed: add pass-through pins and siopbi/siopbo
Ivan Mikhaylov [Sat, 20 Jan 2024 23:28:13 +0000 (02:28 +0300)] 
pinctrl: aspeed: add pass-through pins and siopbi/siopbo

Add THRU0-3 and SIOPBI/SIOPBO pin groups/functions.

Signed-off-by: Ivan Mikhaylov <fr0st61te@gmail.com>
2 years agoMerge https://source.denx.de/u-boot/custodians/u-boot-snapdragon into next
Tom Rini [Fri, 1 Mar 2024 18:54:49 +0000 (13:54 -0500)] 
Merge https://source.denx.de/u-boot/custodians/u-boot-snapdragon into next

- Reworks Qualcomm support to be more generic, dropping board specific
  build targets and relying on DT as the only source of truth
- Switches all Qualcomm devices to use upstream devicetree

2 years agoclk/qcom: apq8016: allow apq8016_clk_init_uart() to be called externally
Caleb Connolly [Fri, 1 Mar 2024 15:00:24 +0000 (15:00 +0000)] 
clk/qcom: apq8016: allow apq8016_clk_init_uart() to be called externally

When U-Boot as running as the first stage bootloader on MSM8916 devices,
early debug UART requires turning on the clocks (for some reason the
pre-loader turns them off?!).

To simplify developing for this platform, allow the
apq8016_clk_init_uart() function to be called externally. Developers can
call this from the serial_msm debug uart driver to configure the clocks
before the driver model is available.

As it is only possible to enable early debug UART in custom builds of
U-Boot, this solution at least gives developers the option.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodtoc: avoid invalid escape sequence '\s'
Heinrich Schuchardt [Tue, 27 Feb 2024 21:51:38 +0000 (22:51 +0100)] 
dtoc: avoid invalid escape sequence '\s'

\s is not a valid escape sequence in strings.
Mark regular expressions with r''.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agopylibfdt: Fix "invalid escape sequence '\w'" in setup.py
Florian Schmaus [Tue, 20 Feb 2024 13:52:48 +0000 (08:52 -0500)] 
pylibfdt: Fix "invalid escape sequence '\w'" in setup.py

Once u-boot's build system invokes

python3 scripts/dtc/pylibfdt/setup.py --quiet build_ext --inplace

it may fail with

scripts/dtc/pylibfdt/setup.py:40: SyntaxWarning: invalid escape sequence '\w'
  RE_KEY_VALUE = re.compile('(?P<key>\w+) *(?P<plus>[+])?= *(?P<value>.*)$')

depending on the used Python version.

Explicitly mark the regex string as raw string to avoid the warning.

Signed-off-by: Florian Schmaus <flo@geekplace.eu>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoMAINTAINERS: Qualcomm: add some missing paths
Caleb Connolly [Mon, 26 Feb 2024 17:26:43 +0000 (17:26 +0000)] 
MAINTAINERS: Qualcomm: add some missing paths

Add drivers and DTS files, as well as regex matches for
qcom/qualcomm/snapdragon.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodts: qcs404-evb: replace with upstream DT
Caleb Connolly [Mon, 26 Feb 2024 17:26:42 +0000 (17:26 +0000)] 
dts: qcs404-evb: replace with upstream DT

Drop the U-Boot specific DTS in favour of upstream. We'll only include
the -4000 variant as that is what U-Boot already supported.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodt-bindings: import headers for qcs404
Caleb Connolly [Mon, 26 Feb 2024 17:26:41 +0000 (17:26 +0000)] 
dt-bindings: import headers for qcs404

Import the headers needed for QCS404-evb.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodts: msm8996: replace with upstream DTS
Caleb Connolly [Mon, 26 Feb 2024 17:26:40 +0000 (17:26 +0000)] 
dts: msm8996: replace with upstream DTS

Drop the U-Boot specific dragonboard820c.dts file in favour of the
upstream apq8096-db820c.dts and an additional -u-boot.dtsi with the
U-Boot specific additions.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodts: dragonboard820c: use correct bindings for clocks
Caleb Connolly [Mon, 26 Feb 2024 17:26:39 +0000 (17:26 +0000)] 
dts: dragonboard820c: use correct bindings for clocks

Don't use hardcoded clock IDs, use the IDs from the dt-bindings to be
compatible with upstream.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodts: msm8996: import PMIC dtsi files
Caleb Connolly [Mon, 26 Feb 2024 17:26:38 +0000 (17:26 +0000)] 
dts: msm8996: import PMIC dtsi files

Import PM8994 and PMI8994 DTSI files in preparation for switching
MSM8996 boards to upstream DTS.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodt-bindings: import headers for MSM8996
Caleb Connolly [Mon, 26 Feb 2024 17:26:37 +0000 (17:26 +0000)] 
dt-bindings: import headers for MSM8996

Import dt-binding headers for MSM8996/APQ8096 from Linux.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodts: msm8916: replace with upstream DTS
Caleb Connolly [Mon, 26 Feb 2024 17:26:36 +0000 (17:26 +0000)] 
dts: msm8916: replace with upstream DTS

Drop the U-Boot specific dragonboard410c.dts in favour of the upstream
msm8916-sbc.dts. No additional changes are needed to this DTS for U-Boot
support.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodts: msm8916: import PMIC dtsi files
Caleb Connolly [Mon, 26 Feb 2024 17:26:35 +0000 (17:26 +0000)] 
dts: msm8916: import PMIC dtsi files

Import the supporting pm8916.dtsi and msm8916-pm8916.dtsi files from
upstream in preparation for switching boards over.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodt-bindings: import headers for MSM8916
Caleb Connolly [Mon, 26 Feb 2024 17:26:34 +0000 (17:26 +0000)] 
dt-bindings: import headers for MSM8916

Import the dt-bindings headers in preparation for switching to upstream
DTS for MSM8916.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodts: sdm845: replace with upstream DTS
Caleb Connolly [Mon, 26 Feb 2024 17:26:33 +0000 (17:26 +0000)] 
dts: sdm845: replace with upstream DTS

Import sdm845.dtsi from upstream, as well as the upstream DTS files for
the db845c and Samsung starqltechn. Delete the old board files.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodts: sdm845: import supporting dtsi files
Caleb Connolly [Mon, 26 Feb 2024 17:26:32 +0000 (17:26 +0000)] 
dts: sdm845: import supporting dtsi files

Import the PM8998 and PMI8998 PMIC DTSI files from Linux as well
as the common audio codec in preperation for replacing board DTS files
with upstream.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodt-bindings: import headers for SDM845
Caleb Connolly [Mon, 26 Feb 2024 17:26:31 +0000 (17:26 +0000)] 
dt-bindings: import headers for SDM845

Import the DT bindings headers that are used by SDM845 from Linux.

Taken from kernel tag v6.7

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodoc: board/qualcomm: link to APQ8016 TRM
Caleb Connolly [Mon, 26 Feb 2024 17:26:30 +0000 (17:26 +0000)] 
doc: board/qualcomm: link to APQ8016 TRM

The MSM8916/APQ8016 Technical Reference Manual is publicly available and
contains a lot of useful register maps for many core parts of the SoC.
Include an archive.org link to it in the dragonboard410c documentation.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodoc: board/qualcomm: document generic targets
Caleb Connolly [Mon, 26 Feb 2024 17:26:29 +0000 (17:26 +0000)] 
doc: board/qualcomm: document generic targets

Replace the board specific docs with a generic board.rst file which
documents the build/boot process for the sdm845 and qcs404 boards now
that the only differences are the DTB in use.

At the same time, create a debugging page to document some useful
snippets and tips for working with Qualcomm platforms.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agoboard: qcs404-evb: drop board code
Caleb Connolly [Mon, 26 Feb 2024 17:26:28 +0000 (17:26 +0000)] 
board: qcs404-evb: drop board code

This board is entirely supported by the generic arch code and DTS. The
board code used to handle turning on the vbus regulator, however this is
now handled via DT.

With this, the board specific defconfig is also no longer needed, so
drop it as well.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agomach-snapdragon: carve out no-map regions
Caleb Connolly [Mon, 26 Feb 2024 17:26:27 +0000 (17:26 +0000)] 
mach-snapdragon: carve out no-map regions

On Qualcomm platforms, the TZ may already have certain memory regions
under protection by the time U-Boot starts. There is a rare case on some
platforms where the prefetcher might speculatively access one of these
regions resulting in a board crash (TZ traps and then resets the board).

We shouldn't be accessing these regions from within U-Boot anyway, so
let's mark them all with PTE_TYPE_FAULT to prevent any speculative
access and correctly trap in EL1 rather than EL3.

Some lower level FDT functions are used here relying on some assumptions
about how Qualcomm devicetrees are laid out (#address/size-cells being 2
for reserved-memory), as this is the only way to make this acceptably
fast enough with dcache off. The full fat implementation takes 1800ms on
SDM845, the implementation in this patch takes <1.

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agomach-snapdragon: generate fdtfile automatically
Caleb Connolly [Mon, 26 Feb 2024 17:26:26 +0000 (17:26 +0000)] 
mach-snapdragon: generate fdtfile automatically

With just a few basic rules, we can generate the $fdtfile environment
variable to match the format used in Linux. This uses the root
compatible property inside u-boot, with specific handling for the
Dragonboard845c which is a special case, and for the qrb robotics
boards.

This is known to work on supported platforms, and lets us avoid having a
big lookup table.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agomach-snapdragon: dynamic load addresses
Caleb Connolly [Mon, 26 Feb 2024 17:26:25 +0000 (17:26 +0000)] 
mach-snapdragon: dynamic load addresses

Heavily inspired by Apple board code. Use the LMB allocator to configure
load addresses at runtime, and implement a lookup table for selecting a
devicetree.

As some Qualcomm RBx boards have different RAM capacities and base
addresses, it isn't possible to hardcode these regions.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agomach-snapdragon: generalise board support
Caleb Connolly [Mon, 26 Feb 2024 17:26:24 +0000 (17:26 +0000)] 
mach-snapdragon: generalise board support

Historically, Qualcomm boards have relied on heavy hardcoding in U-Boot,
in many cases to the specific SoC but also to the board itself (e.g.
memory map). This has been largely resolved by modernising the Qualcomm
drivers in U-Boot, however the board code still largely follows this
model.

This patch removes the board specific memory maps and duplicated board
init code, replacing it with generic init code.

The memory map is now built at runtime based on data read from DT, this
allows for the memory map to be provided without having to recompile
U-Boot. Support is also added for booting with appended DTBs, so that
the first-stage bootloader can populate the memory map for us.

The sdm845 specific init code is dropped entirely, it set an environment
variable depending on if a button was pressed, but this variable wasn't
used in U-Boot, and could be written to use the button command instead.

The KASLR detection is also dropped as with appended dtb, the kaslr seed
can be read directly from the DTB passed to U-Boot.

A new qcom_defconfig is added, with the aim of providing a generic
U-Boot configuration that will work on as many Qualcomm boards as
possible. It replaces the defconfig files for the Dragonboard 845c,
Galaxy S9, and QCS404 EVB. For now the db410c and 820c are excluded as
they still have some board code left.

Similarly, the config headers for db845c, starqltechn, and qcs404-evb
are replaced by a single qcom header.

The previously db410c-specific board_usb_init() function is made to be
generic and is added to mach-snapdragon. While we lack proper modelling
for USB configuration, using a well-known named pinctrl state is a
reasonably generic middleground, and works using upstream DT. This
function will do nothing unless the USB node has a pinctrl state named
"device", in which case it will be set when entering USB peripheral
mode.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agoboard: dragonboard820c: use LINUX_KERNEL_IMAGE_HEADER
Caleb Connolly [Mon, 26 Feb 2024 17:26:23 +0000 (17:26 +0000)] 
board: dragonboard820c: use LINUX_KERNEL_IMAGE_HEADER

db820c predated support for prepending the kernel image header
automatically, drop it's custom linker script and head.S in favour of
this generic support.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agoboard: dragonboard410c: import board code from mach-snapdragon
Caleb Connolly [Mon, 26 Feb 2024 17:26:22 +0000 (17:26 +0000)] 
board: dragonboard410c: import board code from mach-snapdragon

Some of the db410c board support code was written to be generic and
placed in mach-snapdragon. However, as the db410c is the only board
using this, move the code out of mach-snapdragon. This makes is more
obvious what code is relevant for which targets and helps tidy things up
a little more.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agoboard: dragonboard410c: upstream DT compat
Caleb Connolly [Mon, 26 Feb 2024 17:26:21 +0000 (17:26 +0000)] 
board: dragonboard410c: upstream DT compat

Use the root compatible strings from upstream Linux, add missing
'#clock-cells' property to the gcc node.

Adjust some of the msm8916/apq8016 drivers to use the correct upstream
compatible properties and DT bindings.

This prepares us to switch to upstream DT in a future patch.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agoboard: dragonboard410c: add chainloaded config fragment
Caleb Connolly [Mon, 26 Feb 2024 17:26:20 +0000 (17:26 +0000)] 
board: dragonboard410c: add chainloaded config fragment

Add a config fragment for building U-Boot such that it can be
chainloaded by aboot/LK rather than being flashed directly to the aboot
partition.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agopinctrl: qcom: apq8016: init pre-reloaction
Caleb Connolly [Mon, 26 Feb 2024 17:26:19 +0000 (17:26 +0000)] 
pinctrl: qcom: apq8016: init pre-reloaction

On the DB410c we support running as a first stage bootloader. This
requires initialising the GPIOs which are muxed to UART before they can
be used. Add DM_FLAG_PRE_RELOC to the apq8016 pinctrl driver to ensure
that we do this early enough.

This is required to prevent the first few lines of UART log from being
dropped.

Reported-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agopinctrl: qcom: fix DT compatibility
Caleb Connolly [Mon, 26 Feb 2024 17:26:18 +0000 (17:26 +0000)] 
pinctrl: qcom: fix DT compatibility

Upstream devicetrees label GPIOs with "gpioX", not "GPIO_X", fix this
for SoCs where we're now using upstream DT.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agopinctrl: qcom: stub support for special GPIOs
Caleb Connolly [Mon, 26 Feb 2024 17:26:17 +0000 (17:26 +0000)] 
pinctrl: qcom: stub support for special GPIOs

Most platforms have a handful of "special" GPIOs, like the MMC
clock/data lanes, UFS reset, etc. These don't follow the usual naming
scheme of "gpioX" and also have unique capabilities and registers. We
can get away without supporting them all for now, but DT compatibility
is still an issue.

Add support for allowing these to be specified after the other pins, and
make all pinmux/pinconf calls for them nop.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agosandbox: dts: fix qcom pmic gpio
Caleb Connolly [Mon, 26 Feb 2024 17:26:16 +0000 (17:26 +0000)] 
sandbox: dts: fix qcom pmic gpio

Adjust the DT to match upstream bindings.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agogpio: qcom_pmic: add pinctrl driver
Caleb Connolly [Mon, 26 Feb 2024 17:26:15 +0000 (17:26 +0000)] 
gpio: qcom_pmic: add pinctrl driver

Introduce a basic pinctrl driver for the SPMI PMIC GPIOs. This is
necessary to make proper use of upstream DT bindings specifically on the
dragonboard410c where they're used to switch between USB host and device
modes.

Only support for driving the pins as output low or high is enabled for
now.

To minimise duplicated code and allow for sharing common DT data, the
pinctrl driver is initialised as a child of the existing GPIO driver.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agogpio: qcom_pmic: add a quirk to skip GPIO configuration
Caleb Connolly [Mon, 26 Feb 2024 17:26:14 +0000 (17:26 +0000)] 
gpio: qcom_pmic: add a quirk to skip GPIO configuration

Some platforms hard reset when attempting to configure PMIC GPIOs. Add
support for quirks specified in match data with a single quirk to skip
this configuration. We rely on the GPIO already be configured correctly,
which is always the case for volume up (the only current user of these
GPIOs).

This is not expected behaviour but appears to be due to a U-Boot
specific bug. This quirk at least allows for the volume buttons to be
used on platforms where this bug is apparent.

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agogpio: qcom_pmic: 1-based GPIOs
Caleb Connolly [Mon, 26 Feb 2024 17:26:13 +0000 (17:26 +0000)] 
gpio: qcom_pmic: 1-based GPIOs

Qualcomm PMICs number their GPIOs starting from 1, implement a custom
.xlate method to handle this.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agoserial: msm: fix clock handling and pinctrl
Caleb Connolly [Mon, 26 Feb 2024 17:26:12 +0000 (17:26 +0000)] 
serial: msm: fix clock handling and pinctrl

Use the modern helpers to fetch the clock and use the correct property
("clocks" instead of "clock"). Drop the call to pinctrl_select_state()
as no boards have a "uart" pinctrl state and this prints confusing
errors.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agoserial: msm: add debug UART
Caleb Connolly [Mon, 26 Feb 2024 17:26:11 +0000 (17:26 +0000)] 
serial: msm: add debug UART

Introduce support for early debugging. This relies on the previous stage
bootloader to initialise the UART clocks, when running with U-Boot as
the primary bootloader this feature doesn't work. It will require a way
to configure the clocks before the driver model is available.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agoclock/qcom: qcs404: fix clk_set_rate
Caleb Connolly [Mon, 26 Feb 2024 17:26:10 +0000 (17:26 +0000)] 
clock/qcom: qcs404: fix clk_set_rate

We should be returning the rate that we set the clock to, drivers like
MMC rely on this. So fix it.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agoclk/qcom: use upstream compatible properties
Caleb Connolly [Mon, 26 Feb 2024 17:26:09 +0000 (17:26 +0000)] 
clk/qcom: use upstream compatible properties

Adjust the apq8016 and apq8096 drivers to use the upstream compatible
properties, and adjust the associated dts files in U-Boot.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agodt-bindings: drop msm_sdhci binding
Caleb Connolly [Mon, 26 Feb 2024 17:26:08 +0000 (17:26 +0000)] 
dt-bindings: drop msm_sdhci binding

The upstream DT is supported here, so drop the U-Boot specific binding
docs.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agommc: msm_sdhci: use modern clock handling
Caleb Connolly [Mon, 26 Feb 2024 17:26:07 +0000 (17:26 +0000)] 
mmc: msm_sdhci: use modern clock handling

Use the clk_* helper functions and the correct property name for clocks.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Tested-by: Sumit Garg <sumit.garg@linaro.org> #qcs404
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2 years agousb: dwc3-generic: support external vbus regulator
Caleb Connolly [Mon, 26 Feb 2024 17:26:06 +0000 (17:26 +0000)] 
usb: dwc3-generic: support external vbus regulator

Add support for a vbus-supply regulator specified in devicetree. This
provides generic support to avoid hardcoded GPIO configuration in board
init code.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>