]> git.ipfire.org Git - thirdparty/u-boot.git/log
thirdparty/u-boot.git
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>
2 years agoarm: init: export prev_bl_fdt_addr
Caleb Connolly [Mon, 26 Feb 2024 17:26:05 +0000 (17:26 +0000)] 
arm: init: export prev_bl_fdt_addr

When booting U-Boot on board with a locked down first-stage bootloader,
we emulate the Linux boot header. By passing the U-Boot FDT through this
first-stage bootloader and retrieving it afterwards we can pre-populate
the memory nodes and other info like the KASLR address.

Add a function to export the FDT addr so that boards can use it over the
built-in FDT.

Don't check is_addr_accessible() here because we might not yet have a
valid mem_map if it's going to be populated from the FDT, let the board
do their own validation instead.

Reviewed-by: Tom Rini <trini@konsulko.com>
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 agoarm: mach-k3: Refactor QoS settings
Aradhya Bhatia [Mon, 12 Feb 2024 10:06:35 +0000 (15:36 +0530)] 
arm: mach-k3: Refactor QoS settings

Refactor common QoS code into a new common header file, and the soc
specific setup_qos functions into a common API.

Rename $(soc)_qos_count and $(soc)_qos_data variables to qos_count and
qos_data. When QoS settings of more SoCs are added, only one pair will
be defined at a time, based on the config SOC_K3_$(soc).

This refactoring has been done for 2 major purposes.

- The auto-generated $(soc)_qos_data.c and $(soc)_qos.h files cannot
  have any code that is specific to any bootloader. Those files have to
  remain agnostic of different bootloader implementations and their
  header files.

- The existing implementation was less than ideal and would have enabled
  multiple $(soc)_qos_count and $(soc)_qos_data variables for all SoC
  variants.

Signed-off-by: Aradhya Bhatia <a-bhatia1@ti.com>
2 years agoarm: dts: k3-am625-verdin-r5: Change CPU frequency to 1000MHz
Vitor Soares [Mon, 19 Feb 2024 12:34:08 +0000 (12:34 +0000)] 
arm: dts: k3-am625-verdin-r5: Change CPU frequency to 1000MHz

The same U-Boot binary is compatible with multiple Verdin AM62 board
variants. However, some of the SoC models can only operate at a maximum
speed of 1 GHz.

Previously, the boards with lower-speed grades were running at
overclocked speeds, leading to kernel complaints about unsupported
configurations.

To resolve this issue, the operating speed has been decreased to the
maximum allowable value across all Verdin AM62 board variants. As a
result, there is a regression in overall boot time, increasing by around
200 milliseconds for the faster SoC variant.

Signed-off-by: Vitor Soares <vitor.soares@toradex.com>
Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com>
2 years agoMerge patch series "toradex: fix reset and hardware detection regressions"
Tom Rini [Fri, 1 Mar 2024 14:14:36 +0000 (09:14 -0500)] 
Merge patch series "toradex: fix reset and hardware detection regressions"

Francesco Dolcini <francesco.dolcini@toradex.com> says:

This series fixes two regressions affecting multiple Toradex boards
(i.MX, TI and TEGRA based) and targets the current master, e.g. v2024.04
release.

U-Boot `reset` command is broken on all Tordex i.MX6* based SoMs since
v2023.07, this series fixes it enabling the `wdt-reboot` driver.

Since v2024.04-rc1 reading the Toradex configuration block is not working
properly anymore, the serial number and the hardware version are not read
correctly, preventing the board from functioning correctly (wrong mac address,
wrong DT, ...). This is fixed by reading the config block in `EVT_SETTINGS_R`
and adding a toradex sysinfo driver. In addition to that, we now use a random
mac address in case the config block is invalid.

Reported-by: Sahaj Sarup <sahaj.sarup@linaro.org>
Closes: https://lore.kernel.org/all/CAKZ1LvM45MB8N0CqgU+C7i9=Bjb6kqNTxWo2Tv407HKLWtCMkA@mail.gmail.com/
Reported-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Closes: https://lore.kernel.org/all/e40ed93bd8f371ec56b8fc451dcb458f3ce6dcba.camel@toradex.com/
Reported-by: Francesco Dolcini <francesco@dolcini.it>
Closes: https://lore.kernel.org/all/ZY2ZDWAQuTlRjV9H@francesco-nb/
2 years agotoradex: imx6*: fix reset using wdt-reboot driver
Parth Pancholi [Fri, 23 Feb 2024 09:11:43 +0000 (10:11 +0100)] 
toradex: imx6*: fix reset using wdt-reboot driver

commit 68dcbdd594d4 ("ARM: imx: Add weak default reset_cpu()")
introduced a regression that 'reset' command unable to reset
imx6 and imx6ull based Toradex's modules in the u-boot.

This change enables a watchdog-based sysreset driver for
Toradex's colibri-imx6, colibri-imx6ull (with nand and emmc)
and apalis-imx6 which solves the reset command regression on
these modules.

Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Fixes: 68dcbdd594d4 ("ARM: imx: Add weak default reset_cpu()")
Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
2 years agotoradex: common: Use random mac address if toradex config block is missing
Emanuele Ghidoli [Fri, 23 Feb 2024 09:11:42 +0000 (10:11 +0100)] 
toradex: common: Use random mac address if toradex config block is missing

Set CONFIG_NET_RANDOM_ETHADDR=y, which sets random eth address in
case there is no toradex config block programmed.
In case of missing toradex config block the generated mac address was
always the same, linked to serial number 0.
Use random generated mac address instead.

Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> # Verdin iMX8M Plus
Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
2 years agotoradex: common: Add sysinfo driver
Emanuele Ghidoli [Fri, 23 Feb 2024 09:11:41 +0000 (10:11 +0100)] 
toradex: common: Add sysinfo driver

This commit introduces support for the Toradex sysinfo driver in U-Boot,
which uses information from Toradex config block to print correct
board model.
In case the Toradex config block is not present sysinfo prints the model
of the board provided by device tree removing per board specific prints.

Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> # Verdin iMX8M Plus
Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
2 years agoarm: dts: Refactor device trees using "&{/aliases}" syntax
Emanuele Ghidoli [Fri, 23 Feb 2024 09:11:40 +0000 (10:11 +0100)] 
arm: dts: Refactor device trees using "&{/aliases}" syntax

Use the common syntax to define aliases.

Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> # Verdin iMX8M Plus
Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
2 years agotoradex: common: Use SETTINGS_R event to read toradex config block
Emanuele Ghidoli [Fri, 23 Feb 2024 09:11:39 +0000 (10:11 +0100)] 
toradex: common: Use SETTINGS_R event to read toradex config block

Use SETTINGS_R event to read toradex config block and checkboard()
to print board info.

Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> # Verdin iMX8M Plus
Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
2 years agotoradex: Remove not necessary model prints from checkboard()
Emanuele Ghidoli [Fri, 23 Feb 2024 09:11:38 +0000 (10:11 +0100)] 
toradex: Remove not necessary model prints from checkboard()

Sysinfo prints the model obtained from device tree, checkboard()
take info from hardware and tdx_checkboard() use the model retrieved by
toradex config block.

Remove the print from checkboard() function because the model obtained
from toradex config block is the most complete.
If toradex config block is missing the model info from device tree is
enough.

Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> # Verdin iMX8M Plus
Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
2 years agotoradex: Fix recursive call to checkboard
Emanuele Ghidoli [Fri, 23 Feb 2024 09:11:37 +0000 (10:11 +0100)] 
toradex: Fix recursive call to checkboard

Since checkboard() is used instead of show_board_info(), in case toradex
config block is missing or malformed, checkboard is recursively called.
It prints a long list of "MISSING TORADEX CONFIG BLOCK" till the stack
is full.

Fixes: edb0ecd18708 ("toradex: Use checkboard() instead of show_board_info()")
Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> # Verdin iMX8M Plus
Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
2 years agoconfigs: Resync with savedefconfig
Tom Rini [Fri, 1 Mar 2024 14:06:45 +0000 (09:06 -0500)] 
configs: Resync with savedefconfig

Rsync all defconfig files using moveconfig.py

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoriscv: mbv: Enable SPL and binman
Michal Simek [Wed, 14 Feb 2024 11:52:33 +0000 (12:52 +0100)] 
riscv: mbv: Enable SPL and binman

Enable SPL and binman to generate u-boot.img (machine mode) and u-boot.itb
(supervisor mode). DTB is placed at fixed address to ensure that it is 8
byte aligned which is not ensured when dtb is attached behind SPL binary
that's why SPL and U-Boot are taking DTB from the same address.
Also align addresses for both defconfigs.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/85506bce5580d448f095f267d029e3932c5e9990.1707911544.git.michal.simek@amd.com
2 years agoriscv: mbv: Moving little_endian variable to data section
Michal Simek [Wed, 14 Feb 2024 11:52:32 +0000 (12:52 +0100)] 
riscv: mbv: Moving little_endian variable to data section

SPL is cleaning bss after calling board_init_f. Setting up console is done
and little_endian global variable is cleared which caused that console
stops to work. That's why move it to data seciton now. The patch should be
reverted when bss is cleared before board_init_f is called.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/934dc8871c59265eb9d8012193aa97d9b8bd7f33.1707911544.git.michal.simek@amd.com
2 years agoriscv: mbv: Switch to OF_SEPARATE with fixed address
Michal Simek [Wed, 14 Feb 2024 11:52:31 +0000 (12:52 +0100)] 
riscv: mbv: Switch to OF_SEPARATE with fixed address

Hardcode DTB address to specific address.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/a5ad3c8d21be311254dd950e4e322d13cacdc176.1707911544.git.michal.simek@amd.com
2 years agoriscv: mbv: Enable REMAKE_ELF by default
Michal Simek [Wed, 14 Feb 2024 11:52:30 +0000 (12:52 +0100)] 
riscv: mbv: Enable REMAKE_ELF by default

Create also u-boot.elf out of u-boot ELF. It is better to align it with
other Xilinx SOC where u-boot.elf also exists and tools like bootgen works
only with files with .elf extension.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/50bc5a360c37accd0eee1eecfd291b145a29acd0.1707911544.git.michal.simek@amd.com
2 years agoriscv: mbv: Align addresses with default DT
Michal Simek [Wed, 14 Feb 2024 11:52:29 +0000 (12:52 +0100)] 
riscv: mbv: Align addresses with default DT

Better to align everything with memory map described in DT to avoid
mistakes. Execute both modes form the same address to make address map more
understandable.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/be54c668d5626ccd702507a86c2a95d1eaefc690.1707911544.git.michal.simek@amd.com
2 years agoarm64: zynqmp: Remove snps,enable_guctl1_ipd_quirk property
Michal Simek [Mon, 26 Feb 2024 15:54:13 +0000 (16:54 +0100)] 
arm64: zynqmp: Remove snps,enable_guctl1_ipd_quirk property

Remove undocumented DT property. Suggested solution was to apply quirk
via glue logic driver that's why make no sense to have it listed in DT.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/2067eefbad161dee64b1dc7d97c498f09a8307a2.1708962844.git.michal.simek@amd.com
2 years agoarm64: zynqmp: Support semihosting boot method
Sean Anderson [Thu, 22 Feb 2024 20:05:11 +0000 (15:05 -0500)] 
arm64: zynqmp: Support semihosting boot method

Currently, when we boot from JTAG we try to boot U-Boot from RAM.
However, this is a bit tricky to time, since the debugger has to wait
for SPL to initialize RAM before it can load U-Boot. This can result in
long waits, since occasionally initializing RAM (and other things in
psu_init) takes a long time to complete and the debugger must wait for
this worst case.

Support semihosting if it is enabled, as it lets U-Boot tell the
debugger when we are ready for the image. This means we don't have to
wait any more than necessary. We don't change the default config to
ensure we don't break compatibility with existing debuggers that don't
expect us to hit semihosting breakpoints.

Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
Link: https://lore.kernel.org/r/20240222200512.2679830-1-sean.anderson@linux.dev
Signed-off-by: Michal Simek <michal.simek@amd.com>
2 years agoMerge patch series "An effort to bring DT bindings compliance within U-Boot"
Tom Rini [Fri, 1 Mar 2024 03:24:23 +0000 (22:24 -0500)] 
Merge patch series "An effort to bring DT bindings compliance within U-Boot"

Sumit Garg <sumit.garg@linaro.org> says:

Prerequisite
------------

This patch series requires devicetree-rebasing git repo to be added as a
subtree to the main U-Boot repo via:

$ git subtree add --prefix dts/upstream \
      https://git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git \
      v6.7-dts --squash

Background
----------

This effort started while I was reviewing patch series corresponding to
Qcom platforms [1] which was about to import modified devicetree source
files from Linux kernel. I suppose keeping devicetree files sync with
Linux kernel without any DT bindings schema validation has been a pain
for U-Boot SoC/platform maintainers. There has been past discussions
about a single DT repo but that hasn't come up and Linux kernel remained
the place where DT source files as well as bindings are placed and
maintained.

However, Linux kernel DT maintainers proposed [2] for U-Boot to rather
use devicetree-rebasing repo [3] which is a forked copy from Linux
kernel for DT source files as well as bindings. It is tagged at every
Linux kernel major release or intermideate release candidates. So here I
have tried to reuse that to bring DT bingings compliance as well as a
standard way to maintain a regular sync of DT source files with Linux
kernel.

In order to maintain devicetree files sync, U-Boot will maintains a Git
subtree for devicetee-rebasing repo as `dts/upstream` sub-directory.
U-Boot will regularly sync `dts/upstream/` subtree whenever the next window
opens with the next available kernel major release.
`dts/update-dts-subtree.sh` script provides a wrapper around git subtree
pull command, usage from the top level U-Boot source tree, run:

$ ./dts/update-dts-subtree.sh pull <devicetree-rebasing-release-tag>

If required it is also possible to cherry-pick fixes from
devicetree-rebasing tree prior to next sync, usage:

$ ./dts/update-dts-subtree.sh pick <devicetree-rebasing-commit-id>

The RFC/prototype for this series has been discussed with Linux DT
maintainers as well as U-Boot maintainers here [4]. Now we would like to
reach out to wider U-Boot community to seek feedback.

[1] https://lore.kernel.org/all/CAFA6WYMLUD9cnkr=R0Uur+1UeTMkKjM2zDdMJtXb3nmrLk+pDg@mail.gmail.com/
[2] https://lore.kernel.org/all/CAL_JsqKEjv2tSGmT+0ZiO7_qbBfhTycbGnhJhYpKDFzfO9jzDg@mail.gmail.com/
[3] https://git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git/
[4] https://github.com/u-boot/u-boot/pull/451

Changes
-------

Traditionally, U-Boot placed copies of devicetree source files from Linux
kernel into `arch/<arch>/dts/<name>.dts` which can be selected via setting
"<name>" when prompted for `DEFAULT_DEVICE_TREE` by Kconfig.

SoC/board maintainers are encouraged to migrate to use synced copies from
`dts/upstream/src/<arch>/<vendor>`. To do that enable `OF_UPSTREAM` for the
SoC being used via Kconfig and set up "<vendor>/<name>" when prompted for
`DEFAULT_DEVICE_TREE` by Kconfig.

An example have been shown for Amlogic meson-gxbb SoC and corresponding
derived boards via patch #10 and #11.

Devicetree bindings schema checks
---------------------------------

With devicetee-rebasing Git subtree, the devicetree bindings are also
regularly synced with Linux kernel as `dts/upstream/Bindings/`
sub-directory. This allows U-Boot to run devicetree bindings schema checks
which will bring compliance to U-Boot core/drivers regarding usage of
devicetree.

Dependencies
------------

The DT schema project must be installed in order to validate the DT schema
binding documents and validate DTS files using the DT schema. The DT schema
project can be installed with pip:

$ pip3 install dtschema

Note that 'dtschema' installation requires 'swig' and Python development
files installed first. On Debian/Ubuntu systems:

$ apt install swig python3-dev

Several executables (dt-doc-validate, dt-mk-schema, dt-validate) will be
installed. Ensure they are in your PATH (~/.local/bin by default).

Recommended is also to install yamllint (used by dtschema when present).

$ apt install yamllint

Running checks
--------------

In order to perform validation of DTB files, use the ``dtbs_check`` target:

$ make dtbs_check

It is also possible to run checks with a subset of matching schema files by
setting the ``DT_SCHEMA_FILES`` variable to 1 or more specific schema files
or patterns (partial match of a fixed string). Each file or pattern should
be separated by ':'.

$ make dtbs_check DT_SCHEMA_FILES=trivial-devices.yaml:rtc.yaml
$ make dtbs_check DT_SCHEMA_FILES=/gpio/
$ make dtbs_check DT_SCHEMA_FILES=trivial-devices.yaml

2 years agodts: meson-gxbb: Drop redundant devicetree files
Sumit Garg [Thu, 22 Feb 2024 09:36:07 +0000 (15:06 +0530)] 
dts: meson-gxbb: Drop redundant devicetree files

Since meson-gxbb based boards switched to using upstream DT, so drop
redundant files from arch/arm/dts directory. Only *-u-boot.dtsi files
kept in arch/arm/dts directory for these boards.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2 years agodts: meson-gxbb: Switch to using upstream DT
Sumit Garg [Thu, 22 Feb 2024 09:36:06 +0000 (15:06 +0530)] 
dts: meson-gxbb: Switch to using upstream DT

Although there were still some variations in board DTS files based on
meson-gxbb SoC but I think those were minor differences from upstream
and shouldn't impact boot on these devices.

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

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2 years agoMAINTAINERS: Add myself as devicetree-rebasing maintainer
Sumit Garg [Thu, 22 Feb 2024 09:36:05 +0000 (15:06 +0530)] 
MAINTAINERS: Add myself as devicetree-rebasing maintainer

Add myself as devicetree-rebasing maintainer.

Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2 years agodoc: devicetree: Updates for devicetree-rebasing subtree
Sumit Garg [Thu, 22 Feb 2024 09:36:04 +0000 (15:06 +0530)] 
doc: devicetree: Updates for devicetree-rebasing subtree

Encourage SoC/board maintainers to migrate to using devicetree-rebasing
subtree and maintain a regular sync with Linux kernel devicetree files
and bindings.

Along with that add documentation regarding how to run DT bindings
schema checks.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2 years agodoc: devicetree: Align documentation to use Kconfig options
Sumit Garg [Thu, 22 Feb 2024 09:36:03 +0000 (15:06 +0530)] 
doc: devicetree: Align documentation to use Kconfig options

Since U-Boot switched away from manual CONFIG_* defines to Kconfig
options, align devicetree documentation accordingly.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2 years agodts: Add script to uprev dts/upstream subtree
Sumit Garg [Thu, 22 Feb 2024 09:36:02 +0000 (15:06 +0530)] 
dts: Add script to uprev dts/upstream subtree

dts/update-dts-subtree.sh is just a wrapper around git subtree commands.
Usage from the top level U-Boot source tree, run:

$ ./dts/update-dts-subtree.sh pull <release-tag>
$ ./dts/update-dts-subtree.sh pick <commit-id>

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2 years agodts: Add alternative location for upstream DTB builds
Sumit Garg [Thu, 22 Feb 2024 09:36:01 +0000 (15:06 +0530)] 
dts: Add alternative location for upstream DTB builds

Allow platform owners to mirror devicetree files from devitree-rebasing
directory into dts/upstream/src/$(ARCH) (special case for arm64). Then
build then along with any *-u-boot.dtsi file present in arch/$(ARCH)/dts
directory. Also add a new Makefile for arm64.

This will help easy migration for platforms which currently are compliant
with upstream Linux kernel devicetree files.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2 years agoMakefile: Allow upstream DT subtree to provide DT includes
Sumit Garg [Thu, 22 Feb 2024 09:36:00 +0000 (15:06 +0530)] 
Makefile: Allow upstream DT subtree to provide DT includes

Allow platforms to reuse DT headers and dtsi includes directly form
upstream DT subtree which will be frequently synced with Linux kernel.
This will further allow us to drop corresponding DT includes copy from
U-Boot tree.

Also, since the DT includes from upstream DT subtree are done after DT
includes from U-Boot tree, so it shouldn't cause any conflicts.

Tested-by: Bryan Brattlof <bb@ti.com>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2 years agoscripts/Makefile.lib: Statically define *-u-boot.dtsi files location
Sumit Garg [Thu, 22 Feb 2024 09:35:59 +0000 (15:05 +0530)] 
scripts/Makefile.lib: Statically define *-u-boot.dtsi files location

Allow u-boot to build DTB from a different directory tree such that
*-u-boot.dtsi files can be included from a common location. Currently
that location is arch/$(ARCH)/dts/, so statically define that common
location.

This is needed for platform owners to start building DTB files from
devicetree-rebasing directory but still being able to include
*-u-boot.dtsi files.

Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2 years agoMakefile: Add support for DT bindings schema checks
Sumit Garg [Thu, 22 Feb 2024 09:35:58 +0000 (15:05 +0530)] 
Makefile: Add support for DT bindings schema checks

This adds the build infrastructure for checking DT binding schema
documents and validating dtb files using the binding schema. Here we use
devicetree-rebasing subtree to provide the DT bindings. Along with that
adapt dts/upstream/Bindings/Makefile to align with old U-Boot Kbuild
infrastructure.

Dependency:
-----------

The DT schema project must be installed in order to validate the DT schema
binding documents and validate DTS files using the DT schema. The DT schema
project can be installed with pip::

    pip3 install dtschema

Note that 'dtschema' installation requires 'swig' and Python development
files installed first. On Debian/Ubuntu systems::

    apt install swig python3-dev

Testing:
--------

Build dts files and check using DT binding schema:
$ make dtbs_check

Optionally, DT_SCHEMA_FILES can be passed in with a schema file(s) to
use for validation. This makes it easier to find and fix errors
generated by a specific schema.

Note, at this point dtbs_check is an optional build target as there are
many warnings generated due to custom DT properties used by many
platforms in u-boot. It is expected with these checks that compliance
with DT bindings to take place. Once that's done it can be added to CI
builds to remain compliant with DT bindings.

Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2 years agoCI: Exclude devicetree-rebasing subtree for CONFIG checks
Sumit Garg [Thu, 22 Feb 2024 09:35:57 +0000 (15:05 +0530)] 
CI: Exclude devicetree-rebasing subtree for CONFIG checks

Since devicetree-rebasing is an external repo with its own coding style,
exclude it from Azure and gitlab CI CONFIG checks.

Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
2 years agoSquashed 'dts/upstream/' content from commit aaba2d45dc2a
Tom Rini [Thu, 29 Feb 2024 17:33:36 +0000 (12:33 -0500)] 
Squashed 'dts/upstream/' content from commit aaba2d45dc2a

git-subtree-dir: dts/upstream
git-subtree-split: aaba2d45dc2a1b3bbb710f2a3808ee1c9f340abe

2 years agoMerge commit '53633a893a06bd5a0c807287d9cc29337806eaf7' as 'dts/upstream'
Tom Rini [Thu, 29 Feb 2024 17:33:36 +0000 (12:33 -0500)] 
Merge commit '53633a893a06bd5a0c807287d9cc29337806eaf7' as 'dts/upstream'

2 years agoMerge patch series "Handoff bloblist from previous boot stage"
Tom Rini [Thu, 29 Feb 2024 14:24:49 +0000 (09:24 -0500)] 
Merge patch series "Handoff bloblist from previous boot stage"

Raymond Mao <raymond.mao@linaro.org> says:

This patch set adds/adapts a few bloblist APIs and implements Arm arch
custom function to retrieve the bloblist (aka. Transfer List) from
previous loader via boot arguments when BLOBLIST option is enabled and
all boot arguments are compliant to the register conventions defined
in the Firmware Handoff spec v0.9.

If an arch wishes to have different behaviors for loading bloblist
from the previous boot stage, it is required to implement the custom
function xferlist_from_boot_arg().

2 years agodts: OF_HAS_PRIOR_STAGE should depend on !BLOBLIST
Raymond Mao [Sat, 3 Feb 2024 16:36:27 +0000 (08:36 -0800)] 
dts: OF_HAS_PRIOR_STAGE should depend on !BLOBLIST

When BLOBLIST is enabled, FDT is expected to be from bloblist
carried from previous stage, instead of from OF_BOARD, therefore
only enable OF_HAS_PRIOR_STAGE when BLOBLIST is disabled.

Signed-off-by: Raymond Mao <raymond.mao@linaro.org>
2 years agobloblist: Load the bloblist from the previous loader
Raymond Mao [Sat, 3 Feb 2024 16:36:26 +0000 (08:36 -0800)] 
bloblist: Load the bloblist from the previous loader

During bloblist initialization, load the bloblist via boot arguments
from the previous loader.
If a valid bloblist exists in boot arguments, relocate it into the
fixed bloblist memory region.
If not, fallback to support BLOBLIST_ADDR or BLOBLIST_ALLOC.

Signed-off-by: Raymond Mao <raymond.mao@linaro.org>
2 years agoarm: Get bloblist from boot arguments
Raymond Mao [Sat, 3 Feb 2024 16:36:25 +0000 (08:36 -0800)] 
arm: Get bloblist from boot arguments

Add arch custom function to get bloblist from boot arguments.
Check whether boot arguments aligns with the register conventions
defined in FW Handoff spec v0.9.

Signed-off-by: Raymond Mao <raymond.mao@linaro.org>
2 years agoarm: armv8: save boot arguments
Raymond Mao [Sat, 3 Feb 2024 16:36:24 +0000 (08:36 -0800)] 
arm: armv8: save boot arguments

Save boot arguments x[0-3] into an array for handover of bloblist from
previous boot stage.

Signed-off-by: Raymond Mao <raymond.mao@linaro.org>
Suggested-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 years agoarm: armv7: save boot arguments
Raymond Mao [Sat, 3 Feb 2024 16:36:23 +0000 (08:36 -0800)] 
arm: armv7: save boot arguments

Save boot arguments r[0-3] into an array for handover of bloblist from
previous boot stage.

Signed-off-by: Raymond Mao <raymond.mao@linaro.org>
Suggested-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 years agobloblist: refactor of bloblist_reloc()
Raymond Mao [Sat, 3 Feb 2024 16:36:22 +0000 (08:36 -0800)] 
bloblist: refactor of bloblist_reloc()

The current bloblist pointer and size can be retrieved from global
data, so we don't need to pass them from the function arguments.
This change also help to remove all external access of gd->bloblist
outside of bloblist module.

Signed-off-by: Raymond Mao <raymond.mao@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 years agobloblist: check bloblist with specified buffer size
Raymond Mao [Sat, 3 Feb 2024 16:36:21 +0000 (08:36 -0800)] 
bloblist: check bloblist with specified buffer size

Instead of expecting the bloblist total size to be the same as the
pre-allocated buffer size, practically we are more interested in
whether the pre-allocated buffer size is bigger than the bloblist
total size.

Signed-off-by: Raymond Mao <raymond.mao@linaro.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 years agobloblist: add API to check the register conventions
Raymond Mao [Sat, 3 Feb 2024 16:36:20 +0000 (08:36 -0800)] 
bloblist: add API to check the register conventions

Add bloblist_check_reg_conv() to check whether the bloblist is compliant
to the register conventions defined in Firmware Handoff specification.
This API can be used for all Arm platforms.

Signed-off-by: Raymond Mao <raymond.mao@linaro.org>
2 years agoMerge patch series "mux: Drop usage of "u-boot,mux-autoprobe""
Tom Rini [Thu, 29 Feb 2024 00:20:00 +0000 (19:20 -0500)] 
Merge patch series "mux: Drop usage of "u-boot,mux-autoprobe""

Roger Quadros <rogerq@kernel.org> says:

MUX driver should autoprobe if the device tree has "idle-states"
property. Drop using the custom "u-boot,mux-autoprobe" property
in TI device trees.

2 years agoarm: dts: k3-u-boot: Add missing "bootph-all" property to MUX nodes.
Roger Quadros [Wed, 31 Jan 2024 13:33:48 +0000 (15:33 +0200)] 
arm: dts: k3-u-boot: Add missing "bootph-all" property to MUX nodes.

As it is present for USB and USB won't work without the MUX
initialized correctly, add "bootph-all" property to MUX nodes.

Signed-off-by: Roger Quadros <rogerq@kernel.org>
2 years agoarm: dts: k3-u-boot: Drop usage of "u-boot, mux-autoprobe"
Roger Quadros [Wed, 31 Jan 2024 13:33:47 +0000 (15:33 +0200)] 
arm: dts: k3-u-boot: Drop usage of "u-boot, mux-autoprobe"

MUX driver should autoprobe if the device tree has "idle-states"
property. Drop using the custom "u-boot,mux-autoprobe" property.

Signed-off-by: Roger Quadros <rogerq@kernel.org>
2 years agomux: autoprobe if "idle-states" present in device tree
Roger Quadros [Wed, 31 Jan 2024 13:33:46 +0000 (15:33 +0200)] 
mux: autoprobe if "idle-states" present in device tree

Some platforms need the MUX state to be auto initialized at
boot time even if there are no explicit users for the MUX.
In these cases, the MUX device tree has "idle-states" property
which specifies what state the MUX should be initialized to.

So far we were relying on custom u-boot property "u-boot,mux-autoprobe"
to autoprobe such MUXes. This patch causes the MUX to autoprobe
if it has "idle-states" property in device tree.

This should allow us to stop using the custom "u-boot,mux-autoprobe"
property.

Signed-off-by: Roger Quadros <rogerq@kernel.org>
2 years agoMerge tag 'efi-next-2024-02-28' of https://source.denx.de/u-boot/custodians/u-boot...
Tom Rini [Wed, 28 Feb 2024 20:09:30 +0000 (15:09 -0500)] 
Merge tag 'efi-next-2024-02-28' of https://source.denx.de/u-boot/custodians/u-boot-efi into next

Pull request efi-next-2024-02-28

* set IMAGE_DLLCHARACTERISTICS_NX_COMPAT in EFI binaries
* provide SBI based runtime system reset
* page align EFI binary section on ARMv7
* separate .data and .text sections of EFI binaries on ARMv7

2 years agoboard: rzg2l: Support reset via Renesas RAA215300 PMIC
Paul Barker [Tue, 27 Feb 2024 20:40:35 +0000 (20:40 +0000)] 
board: rzg2l: Support reset via Renesas RAA215300 PMIC

With the SYSRESET subsystem enabled we do not need to implement
reset_cpu() in the board directory.

Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
2 years agopmic: raa215300: Bind sysreset driver
Paul Barker [Tue, 27 Feb 2024 20:40:34 +0000 (20:40 +0000)] 
pmic: raa215300: Bind sysreset driver

If SYSRESET support is enabled for the RAA215300 PMIC, we need to bind
the raa215300_sysreset driver as a child device of the PMIC.

Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
2 years agosysreset: Support reset via Renesas RAA215300 PMIC
Paul Barker [Tue, 27 Feb 2024 20:40:33 +0000 (20:40 +0000)] 
sysreset: Support reset via Renesas RAA215300 PMIC

This patch adds support for resetting a board via the RAA215300 PMIC.

Note that the RAA215300 documentation names the available reset types
differently to u-boot:

  * A "warm" reset via the RAA215300 PMIC will fully reset the SoC
    (CPU & GPIOs), so this corresponds to SYSRESET_COLD.

  * A "cold" reset via the RAA215300 PMIC will cycle all power supply
    rails, so this corresponds to SYSRESET_POWER.

Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
2 years agoboard: rzg2l: Enable access to Renesas RAA215300 PMIC
Paul Barker [Tue, 27 Feb 2024 20:40:32 +0000 (20:40 +0000)] 
board: rzg2l: Enable access to Renesas RAA215300 PMIC

Enable the appropriate PMIC driver as well as the `pmic` command.

Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
2 years agopmic: Add Renesas RAA215300 PMIC driver
Paul Barker [Tue, 27 Feb 2024 20:40:31 +0000 (20:40 +0000)] 
pmic: Add Renesas RAA215300 PMIC driver

The RZ/G2L SMARC module is powered via a Renesas RAA215300 PMIC which
provides several voltage converters, a real time clock (RTC) and reset
control. A basic driver is implemented for this device so that we can
read, write and dump the PMIC registers.

The raa215300_bind() function is added as a stub, binding of the
sysreset driver will be added in a later patch.

Additional features of this PMIC (such as reset control) may be
supported by future patches.

Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
2 years agoi2c: rzg2l: Add I2C driver for RZ/G2L family
Paul Barker [Tue, 27 Feb 2024 20:40:30 +0000 (20:40 +0000)] 
i2c: rzg2l: Add I2C driver for RZ/G2L family

This driver supports the I2C module on the Renesas RZ/G2L (R9A07G044)
SoC, also known as the RIIC module.

This patch is based on both the u-boot driver in the Renesas RZ BSP
3.0.5 release [1] (commit 7fcc1fdc2534), and the Linux v6.7 driver
(commit 0dd3ee311255).

Support for deblocking the I2C bus is included as this may be needed
after triggering a reset via the Power Management IC (PMIC) over I2C
(the PMIC asserts the reset line before the SoC completes the I2C write
transaction with obvious bus locking effects). If the SDA line is
observed to be low during initialisation, we automatically attempt to
deblock.

[1]: https://github.com/renesas-rz/renesas-u-boot-cip

Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
2 years agoarm: dts: rzg2l: Sync with Linux v6.7
Paul Barker [Tue, 27 Feb 2024 20:40:29 +0000 (20:40 +0000)] 
arm: dts: rzg2l: Sync with Linux v6.7

Pull in the recent changes to the RZ/G2L device tree and related dtsi
files so that we're aligned with Linux v6.7 (commit 0dd3ee311255).

Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
2 years agoclk: renesas: Confirm all clock & reset changes on RZ/G2L
Paul Barker [Tue, 27 Feb 2024 20:40:28 +0000 (20:40 +0000)] 
clk: renesas: Confirm all clock & reset changes on RZ/G2L

When enabling/disabling a clock or reset signal, confirm that the change
has completed before returning from the function. A somewhat arbitrary
100ms timeout is defined to ensure that the system doesn't lock up in
the case of an error.

Since we need to dynamically determine if we're waiting for a 0 bit or a
1 bit, it's easier to use wait_for_bit_32() than readl_poll_timeout().

This change is needed for reliable initialization of the I2C driver
which is added in a following patch.

Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
2 years agoarm: separate .data and .text sections of EFI binaries
Heinrich Schuchardt [Mon, 26 Feb 2024 21:24:08 +0000 (22:24 +0100)] 
arm: separate .data and .text sections of EFI binaries

EFI binaries should not contain sections that are both writable and
executable. Separate the RX .text section from the RW .data section.

We currently don't created relocation sections (.rel.*) for our EFI
binaries. Anyway these would have to be converted to PE/COFF relocations.
Enumerate them under DISCARD and add a comment.

Correct the characteristics of the sections.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 years agoarm: page align EFI binary section
Heinrich Schuchardt [Mon, 26 Feb 2024 21:24:07 +0000 (22:24 +0100)] 
arm: page align EFI binary section

Change the alignment of the relocation code in EFI binaries to match page
boundaries.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2 years agoefi_driver: provide SBI based runtime system reset
Heinrich Schuchardt [Mon, 12 Feb 2024 16:18:37 +0000 (17:18 +0100)] 
efi_driver: provide SBI based runtime system reset

On RISC-V systems system the Supervisory Binary Interface provides system
reset and poweroff. Use it at EFI runtime.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi_loader: set IMAGE_DLLCHARACTERISTICS_NX_COMPAT
Heinrich Schuchardt [Wed, 14 Feb 2024 20:43:21 +0000 (21:43 +0100)] 
efi_loader: set IMAGE_DLLCHARACTERISTICS_NX_COMPAT

The IMAGE_DLLCHARACTERISTICS_NX_COMPAT flag marks an EFI binary where
the following conditions are met [1]:

* Executable and writable sections are separated.
* The application does not run self-modifying code.
* The application uses the EFI_MEMORY_ATTRIBUTE_PROTOCOL when loading
  executable code.
* The application does not assume that all memory ranges are usable.
* The stack is not expected to be executable.

The only EFI binaries U-Boot provides that do not fulfill these
requirements are the EFI app and the EFI payload.

Once we have implemented separation of writable and executable memory in
U-Boot we can use the IMAGE_DLLCHARACTERISTICS_NX_COMPAT flag to decide
if we will load an EFI binary.

[1] New UEFI CA memory mitigation requirements for signing
    https://techcommunity.microsoft.com/t5/hardware-dev-center/new-uefi-ca-memory-mitigation-requirements-for-signing/ba-p/3608714

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoMerge patch series "Dockerfile: Build coreboot from source"
Tom Rini [Tue, 27 Feb 2024 21:28:57 +0000 (16:28 -0500)] 
Merge patch series "Dockerfile: Build coreboot from source"

To make our CI loops more robust, switch to building and providing the
coreboot binary we test with rather than download from a Google Drive
link.

2 years agoCI: Move to latest container image
Tom Rini [Tue, 13 Feb 2024 14:39:28 +0000 (09:39 -0500)] 
CI: Move to latest container image

This moves us to our latest container image, which is now based on the
current "Jammy" tag.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoCI: Switch to using coreboot from our image
Tom Rini [Tue, 13 Feb 2024 14:39:27 +0000 (09:39 -0500)] 
CI: Switch to using coreboot from our image

Instead of downloading coreboot binaries from a Google drive location,
use the ones we have built ourselves.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoDockerfile: Build coreboot from source
Tom Rini [Tue, 13 Feb 2024 14:39:26 +0000 (09:39 -0500)] 
Dockerfile: Build coreboot from source

To make CI runs rely less on external servers, build a coreboot release
from source and populate /opt/coreboot with the output.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoMerge patch series "kbuild: Allow for CONFIG_SYS_CONFIG_NAME to be unset"
Tom Rini [Tue, 27 Feb 2024 19:14:15 +0000 (14:14 -0500)] 
Merge patch series "kbuild: Allow for CONFIG_SYS_CONFIG_NAME to be unset"

Perform a little re-organization of Kconfig so that we can have
CONFIG_SYS_CONFIG_NAME be unset and so not require a "board.h" file.
Then go and remove a number of now not required header files.

2 years agoKconfig: Centralize prompting for SYS_CONFIG_NAME
Tom Rini [Mon, 22 Jan 2024 22:39:20 +0000 (17:39 -0500)] 
Kconfig: Centralize prompting for SYS_CONFIG_NAME

Generally speaking, we do not prompt for this value and define it in the
board specific Kconfig file. There are some valid use cases however
today where we do prompt for this value, so instead of having this be
done in a number of locations, do this at the top-level location only.

This removes the question from a number of other locations and makes it
consistent that when we do set the value directly, we always do it the
same way. We don't need to specify the type, it's always string.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agohc2910-2aghd05: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:19 +0000 (17:39 -0500)] 
hc2910-2aghd05: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the hc2910-2aghd05 platform and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoslimbootloader: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:18 +0000 (17:39 -0500)] 
slimbootloader: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the slimbootloader platform and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoqemu-x86*: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:17 +0000 (17:39 -0500)] 
qemu-x86*: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the qemu-x86* platforms and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agominnowmax: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:16 +0000 (17:39 -0500)] 
minnowmax: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the minnowmax platform and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agogalileo: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:15 +0000 (17:39 -0500)] 
galileo: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the galileo platform and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoefi-x86_payload: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:14 +0000 (17:39 -0500)] 
efi-x86_payload: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the efi-x86_payload* platforms and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoefi-x86_app: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:13 +0000 (17:39 -0500)] 
efi-x86_app: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the efi-x86_app* platforms and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoedison: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:12 +0000 (17:39 -0500)] 
edison: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the edison platform and remove
the otherwise empty file.

Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agocrownbay: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:11 +0000 (17:39 -0500)] 
crownbay: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the crownbay platform and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agocougarcanyon2: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:10 +0000 (17:39 -0500)] 
cougarcanyon2: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the cougarcanyon2 platform and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agocherryhill: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:09 +0000 (17:39 -0500)] 
cherryhill: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the cherryhill platform and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agobayleybay: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:08 +0000 (17:39 -0500)] 
bayleybay: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the bayleybay platform and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agocoreboot: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:07 +0000 (17:39 -0500)] 
coreboot: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the coreboot platform and remove
the otherwise empty file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoxilinx_mbv: Remove empty config header
Tom Rini [Mon, 22 Jan 2024 22:39:06 +0000 (17:39 -0500)] 
xilinx_mbv: Remove empty config header

Now that we support having CONFIG_SYS_CONFIG_NAME be unset to indicate a
lack of board.h file, unset this on the xilinx_mbv platforms and remove
the otherwise empty file.

Acked-by: Michal Simek <michal.simek@amd.com>
Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agokbuild: Allow for CONFIG_SYS_CONFIG_NAME to be unset
Tom Rini [Mon, 22 Jan 2024 22:39:05 +0000 (17:39 -0500)] 
kbuild: Allow for CONFIG_SYS_CONFIG_NAME to be unset

It is possible to have a platform which does not require a board.h file
to build, but today we need an empty one for our generated config.h file
to be valid. Allow for omitting this file if CONFIG_SYS_CONFIG_NAME is
not set.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoPrepare v2024.04-rc3 v2024.04-rc3
Tom Rini [Tue, 27 Feb 2024 02:23:36 +0000 (21:23 -0500)] 
Prepare v2024.04-rc3

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoMerge tag 'u-boot-imx-master-20240224' of https://source.denx.de/u-boot/custodians...
Tom Rini [Sat, 24 Feb 2024 22:51:50 +0000 (17:51 -0500)] 
Merge tag 'u-boot-imx-master-20240224' of https://source.denx.de/u-boot/custodians/u-boot-imx

- Enable the thermal driver for the imx8m phycore boards.
- Convert imx53-qsb to watchdog driver to fix the 'reset' command.
- Remove multiline string from imx6dl-sielaff.
- Add SPI boot support for imxrt1050-evk.
- Convert opos6uldev to watchdog driver to fix the 'reset' command.

2 years agoopos6uldev: Convert to watchdog driver model
Sébastien Szymanski [Fri, 23 Feb 2024 11:28:04 +0000 (12:28 +0100)] 
opos6uldev: Convert to watchdog driver model

Commit 68dcbdd594d4 ("ARM: imx: Add weak default reset_cpu()") caused
the 'reset' command in U-Boot to not cause a board reset.

Fix it by switching to the watchdog driver model via sysreset, which
is the preferred method for implementing the watchdog reset.

Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
2 years agoimx53-qsb: Convert to watchdog driver model
Fabio Estevam [Wed, 21 Feb 2024 17:39:30 +0000 (14:39 -0300)] 
imx53-qsb: Convert to watchdog driver model

Commit 68dcbdd594d4 ("ARM: imx: Add weak default reset_cpu()") caused
the 'reset' command in U-Boot to not cause a board reset.

Fix it by switching to the watchdog driver model via sysreset, which
is the preferred method for implementing the watchdog reset.

Signed-off-by: Fabio Estevam <festevam@gmail.com>
2 years agoimx8mm-phygate-tauri-l_defconfig: Enable CONFIG_IMX_TMU
Benjamin Hahn [Tue, 20 Feb 2024 10:41:45 +0000 (11:41 +0100)] 
imx8mm-phygate-tauri-l_defconfig: Enable CONFIG_IMX_TMU

Enable the imx thermal driver to prevent booting when the system is too
hot.

Signed-off-by: Benjamin Hahn <B.Hahn@phytec.de>