platform/kernel/u-boot.git
19 months agoconfigs: imx8m: Prepare imx8m-beacon boards for HAB support
Adam Ford [Sat, 19 Nov 2022 15:11:03 +0000 (09:11 -0600)]
configs: imx8m: Prepare imx8m-beacon boards for HAB support

In order to enable HAB, FSL_CAAM, ARCH_MISC_INIT and
SPL_CRYPTO should be enabled in Kconfig like other i.MX8M
boards.

Signed-off-by: Adam Ford <aford173@gmail.com>
19 months agoboard: gateworks: venice: poll I2C lines to wait for GSC firmware
Tim Harvey [Fri, 11 Nov 2022 16:03:07 +0000 (08:03 -0800)]
board: gateworks: venice: poll I2C lines to wait for GSC firmware

In some situations the GSC firmware where the EEPROM containing the
model and DRAM configuration may not be ready by the time the SoC
is ready to talk to it over I2C.

Instead of a hard delay, poll the I2C lines to wait until they are
released to avoid the I2C drivers 'Arbitation lost' error message.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoarm: dts: imx8m*-venice-*: add I2C GPIO bus recovery support
Tim Harvey [Fri, 11 Nov 2022 16:03:06 +0000 (08:03 -0800)]
arm: dts: imx8m*-venice-*: add I2C GPIO bus recovery support

Add I2C GPIO bus recovery support by adding scl-gpios and sda-gpios for the
various I2C busses on Gateworks Venice boards.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoarm64: dts: imx8m{m, n}-venice-gw7902: add gpio pins for new board revision
Tim Harvey [Fri, 11 Nov 2022 15:55:46 +0000 (07:55 -0800)]
arm64: dts: imx8m{m, n}-venice-gw7902: add gpio pins for new board revision

Add gpio pins present on new board revision:
 * LTE modem support (imx8mm-gw7902 only)
  - lte_pwr#
  - lte_rst
  - lte_int
 * M2 power enable
  - m2_pwr_en
 * off-board 4.0V supply
  - vdd_4p0_en

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
19 months agoimx: mx6sabresd: convert to DM_I2C
Peng Fan [Mon, 7 Nov 2022 08:13:38 +0000 (16:13 +0800)]
imx: mx6sabresd: convert to DM_I2C

Convert to DM_I2C

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agoimx: mx6sabreauto: convert to DM_I2C
Peng Fan [Mon, 7 Nov 2022 08:13:37 +0000 (16:13 +0800)]
imx: mx6sabreauto: convert to DM_I2C

Convert to DM_I2C

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agoimx: Suggest the NXP ATF github repo
Fabio Estevam [Fri, 13 Jan 2023 00:52:23 +0000 (21:52 -0300)]
imx: Suggest the NXP ATF github repo

As explained in the text at the bottom of the page
https://source.codeaurora.org/external/imx/imx-atf:

"QUIC repositories on this site will not receive any updates after
March 31, 2022, and will be deleted on March 31, 2023."

Point to the NXP ATF github repo instead.

Signed-off-by: Fabio Estevam <festevam@denx.de>
Reviewed-by: Oliver Graute <oliver.graute@kococonnector.com>
Reviewed-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de>
19 months agoinclude/configs: mx6/mx7: drop dangling comments
Peter Robinson [Mon, 14 Nov 2022 22:07:54 +0000 (22:07 +0000)]
include/configs: mx6/mx7: drop dangling comments

Cleanup some dangling comments left by automated migration
processes that are no longer value.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
Acked-by: Peng Fan <peng.fan@nxp.com>
19 months agoARM: arm: colibri-imx6ull-emmc: fix emmc access
Max Krummenacher [Mon, 30 Jan 2023 12:39:06 +0000 (13:39 +0100)]
ARM: arm: colibri-imx6ull-emmc: fix emmc access

Synchronizing the device tree with linux introduced a regression.
The U-Boot specific dtsi mustn't override the alias settings for
the eMMC/SD interfaces.

Without this U-Boot cannot access the eMMC and boot the kernel.

Fixes: c21b61bff15 ("colibri-imx6ull/-emmc: synchronise device tree with linux")
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
19 months agoboard: apalis-imx8: add 2nd ethernet address
Andrejs Cainikovs [Tue, 17 Jan 2023 14:29:11 +0000 (15:29 +0100)]
board: apalis-imx8: add 2nd ethernet address

All Apalis iMX8 variants have 2nd RGMII on SoC, so add the address
for 2nd ethernet.

Signed-off-by: Andrejs Cainikovs <andrejs.cainikovs@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
19 months agoarm: imx: imx8m: Add basic PSCI provider implementation
Marek Vasut [Thu, 22 Dec 2022 00:46:43 +0000 (01:46 +0100)]
arm: imx: imx8m: Add basic PSCI provider implementation

Implement basic PSCI provider to let OS turn CPU cores off and on,
power off and restart the system and determine PSCI version. This
is sufficient to remove the need for the ATF BL31 blob altogether.

To make use of this functionality, active the following Kconfig options:
  # CONFIG_PSCI_RESET is not set
  CONFIG_ARMV8_MULTIENTRY=y
  CONFIG_ARMV8_SET_SMPEN=y
  CONFIG_ARMV8_SPL_EXCEPTION_VECTORS=y
  CONFIG_ARMV8_EA_EL3_FIRST=y
  CONFIG_ARMV8_PSCI=y
  CONFIG_ARMV8_PSCI_CPUS_PER_CLUSTER=4
  CONFIG_ARMV8_SECURE_BASE=0x970000
  CONFIG_ARM_SMCCC=y
  CONFIG_SYS_HAS_ARMV8_SECURE_BASE=y

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoarm: imx: imx8m: Program CSU and TZASC if PSCI provider
Marek Vasut [Thu, 22 Dec 2022 00:46:42 +0000 (01:46 +0100)]
arm: imx: imx8m: Program CSU and TZASC if PSCI provider

In case U-Boot is the PSCI provider, it is necessary to correctly
program CSU and TZASC registers. Those are poorly documented, so
push in the correct values.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoarm: imx: imx8m: Define trampoline location if PSCI provider
Marek Vasut [Thu, 22 Dec 2022 00:46:41 +0000 (01:46 +0100)]
arm: imx: imx8m: Define trampoline location if PSCI provider

The common code used to bring up secondary cores requires a final
jump location to be stored in some sort of memory location, define
this memory location to be the start of OCRAM, since it is available.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoarm: imx: imx8m: Map RAM as NS if PSCI provider
Marek Vasut [Thu, 22 Dec 2022 00:46:40 +0000 (01:46 +0100)]
arm: imx: imx8m: Map RAM as NS if PSCI provider

In case U-Boot is a PSCI provider, map RAM explicitly as NS,
otherwise secondary cores crash with SError when attempting
to access RAM mapped as secure in EL2.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoarm: imx: imx8m: Enable GICv3 support if PSCI provider
Marek Vasut [Thu, 22 Dec 2022 00:46:39 +0000 (01:46 +0100)]
arm: imx: imx8m: Enable GICv3 support if PSCI provider

In case U-Boot is a PSCI provider, enable GICv3 support as this
is necessary to bring up secondary cores.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoarm: imx: imx8m: Only use ROM pointers if not PSCI provider
Marek Vasut [Thu, 22 Dec 2022 00:46:38 +0000 (01:46 +0100)]
arm: imx: imx8m: Only use ROM pointers if not PSCI provider

The ROM pointers are in fact populated by the ATF BL31 blob, in case
U-Boot itself if the PSCI provider, there is no ATF BL31 blob, hence
ignore the ROM pointers.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoarm: dts: imx8m: Require ATF BL31 blob only if not PSCI provider
Marek Vasut [Thu, 22 Dec 2022 00:46:37 +0000 (01:46 +0100)]
arm: dts: imx8m: Require ATF BL31 blob only if not PSCI provider

In case U-Boot itself if the PSCI provider on i.MX8M, do not
require the ATF BL31 blob, as at that point the blob is useless
and would interfere with U-Boot operation.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoarm: imx: Drop custom lowlevel_init
Marek Vasut [Thu, 22 Dec 2022 00:46:36 +0000 (01:46 +0100)]
arm: imx: Drop custom lowlevel_init

The custom lowlevel_init implementation is no longer necessary, since
it is responsible for routing and trapping SErrors in U-Boot in EL2,
which is implemented in common code since commit:
6c7691edd55 ("armv8: Always unmask SErrors")

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoarm: psci: Fix RESET2 hook
Marek Vasut [Thu, 22 Dec 2022 00:46:35 +0000 (01:46 +0100)]
arm: psci: Fix RESET2 hook

The RESET2 hook is a PSCI v1.1 functionality, rename the macro accordinly.
Add missing handler for the RESET2 hook, so it can be implemented by U-Boot.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoarm: psci: Add PSCI v1.1 macro
Marek Vasut [Thu, 22 Dec 2022 00:46:34 +0000 (01:46 +0100)]
arm: psci: Add PSCI v1.1 macro

Add macro representing the PSCI v1.1 .

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoimx6q-sabrelite: Re-add mmc aliases
Detlev Casanova [Thu, 8 Dec 2022 18:15:52 +0000 (13:15 -0500)]
imx6q-sabrelite: Re-add mmc aliases

In commit d0399a46e7cda63c07e3eb8558bef84cfb068028, the device tree was
synchronized from linux and the aliases were dropped.

They need to be kept so that the mmc cards are in the right order.
Without the aliases, u-boot reports:
MMC:   FSL_SDHC: 2, FSL_SDHC: 3

With the aliases, u-boot reports:
MMC:   FSL_SDHC: 0, FSL_SDHC: 1

The upstream linux device tree does not contain the same aliases than
u-boot (It keeps the devices order with /dev/mmcblk2 and /dev/mmcblk3).
Because this board has been using different aliases in u-boot
and linux, a imx6q-sabrelite-u-boot.dtsi file is added to be
automatically included in imx6q-sabrelite.dts.

This way, linux and u-boot each keep their own aliases and there
is no breakage on current installations.

This should never be done for new boards as we want to keep linux and
u-boot with the same aliases as much as possible.
This patch is only necessary to avoid breaking existing setups.

Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoimx: imx6ul: kontron-sl-mx6ul: Disable CONFIG_FSL_QSPI_AHB_FULL_MAP to fix SPI NAND...
Frieder Schrempf [Mon, 14 Nov 2022 12:01:38 +0000 (13:01 +0100)]
imx: imx6ul: kontron-sl-mx6ul: Disable CONFIG_FSL_QSPI_AHB_FULL_MAP to fix SPI NAND read access

The introduction of CONFIG_FSL_QSPI_AHB_FULL_MAP as default in:

def88bce094e ("spi: fsl_qspi: Support to use full AHB space on i.MX")

broke the SPI NAND read access on the Kontron SL i.MX6UL/ULL boards.
Reading data from the flash returns garbage instead of the actual
content. Fix this for now by disabling the introduced option.

In the long run this should be fixed globally.

Fixes: def88bce094e ("spi: fsl_qspi: Support to use full AHB space on i.MX")
Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoimx: mx6sabreauto_defconfig: select DM_SERIAL
Peng Fan [Mon, 7 Nov 2022 08:00:15 +0000 (16:00 +0800)]
imx: mx6sabreauto_defconfig: select DM_SERIAL

Select DM_SERIAL

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agoimx: mx6sabresd: select DM_SERIAL
Peng Fan [Mon, 7 Nov 2022 08:00:16 +0000 (16:00 +0800)]
imx: mx6sabresd: select DM_SERIAL

Select DM_SERIAL

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agoimx: mx6sxsabreauto: select DM_SERIAL
Peng Fan [Mon, 7 Nov 2022 08:00:14 +0000 (16:00 +0800)]
imx: mx6sxsabreauto: select DM_SERIAL

Select DM_SERIAL

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agoimx: mx6ul_evk: select DM_SERIAL
Peng Fan [Mon, 7 Nov 2022 08:00:13 +0000 (16:00 +0800)]
imx: mx6ul_evk: select DM_SERIAL

Select DM_SERIAL

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agoimx: mx6slevk: select DM_SERIAL
Peng Fan [Mon, 7 Nov 2022 08:00:12 +0000 (16:00 +0800)]
imx: mx6slevk: select DM_SERIAL

Select DM_SERIAL

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agoimx: mx6sllevk: select DM_SERIAL
Peng Fan [Mon, 7 Nov 2022 08:00:11 +0000 (16:00 +0800)]
imx: mx6sllevk: select DM_SERIAL

Select DM_SERIAL

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agoimx: mx6sllevk: correct pmic name
Peng Fan [Mon, 7 Nov 2022 08:00:10 +0000 (16:00 +0800)]
imx: mx6sllevk: correct pmic name

The prefix 0 has been dropped in dts, so correct in board file

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agoimx: mx6ull/z_14x14_evk: clean up UART iomux
Peng Fan [Mon, 7 Nov 2022 08:00:09 +0000 (16:00 +0800)]
imx: mx6ull/z_14x14_evk: clean up UART iomux

After DM_SERIAL, and set pinctrl_uart1 as pre-reloc, no need initialize
iomux at board file.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agoimx: mx6ulz: select DM_SERIAL
Peng Fan [Mon, 7 Nov 2022 08:00:08 +0000 (16:00 +0800)]
imx: mx6ulz: select DM_SERIAL

Select DM_SERIAL

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agoimx: mx6ull_14x14_evk: select DM_SERIAL
Peng Fan [Mon, 7 Nov 2022 08:00:07 +0000 (16:00 +0800)]
imx: mx6ull_14x14_evk: select DM_SERIAL

Select DM_SERIAL

Signed-off-by: Peng Fan <peng.fan@nxp.com>
19 months agopico-imx7d: Convert to DM_I2C and DM_PMIC
Fabio Estevam [Tue, 3 Jan 2023 13:19:40 +0000 (10:19 -0300)]
pico-imx7d: Convert to DM_I2C and DM_PMIC

The conversion to DM_I2C is mandatory, so convert to it
and also to DM_PMIC.

Signed-off-by: Fabio Estevam <festevam@denx.de>
19 months agopico-imx7d: Convert to CONFIG_DM_SERIAL
Fabio Estevam [Tue, 3 Jan 2023 13:19:38 +0000 (10:19 -0300)]
pico-imx7d: Convert to CONFIG_DM_SERIAL

The conversion to CONFIG_DM_SERIAL is mandatory, so select
this option.

Signed-off-by: Fabio Estevam <festevam@denx.de>
19 months agoarm64: imx8mp: Enable SMSC LAN87xx PHY driver on i.MX8MP DHCOM
Marek Vasut [Thu, 19 Jan 2023 21:46:11 +0000 (22:46 +0100)]
arm64: imx8mp: Enable SMSC LAN87xx PHY driver on i.MX8MP DHCOM

These SoMs may ship with SMSC LAN8740Ai PHYs, enable the SMSC PHY driver.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoarm64: imx8mp: Disable Atheros PHY driver on i.MX8MP DHCOM
Marek Vasut [Thu, 19 Jan 2023 21:46:10 +0000 (22:46 +0100)]
arm64: imx8mp: Disable Atheros PHY driver on i.MX8MP DHCOM

These SoMs never ship with Atheros PHYs, disable the Atheros PHY driver.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoARM: dts: imx8ulp-evk: Fix iomuxc issue
Ye Li [Wed, 18 Jan 2023 09:31:15 +0000 (17:31 +0800)]
ARM: dts: imx8ulp-evk: Fix iomuxc issue

The property fsl,mux_mask is deleted by commit ed7bda5 (imx8ulp:
synchronise device tree with linux). This causes the pinctrl
driver not work on 8ULP, so fail to print any log.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
19 months agodts: imx8mp-rsb3720: modify configrations to load fip into memory
Ying-Chun Liu (PaulLiu) [Tue, 17 Jan 2023 19:15:00 +0000 (03:15 +0800)]
dts: imx8mp-rsb3720: modify configrations to load fip into memory

The changes of commit 6a21c695213b ("arm: dts: imx8mp: add of-list
support to common imx8mp-u-boot.dtsi") breaks the loading of the fip.
This commit fixes the break by modify the configuration properly.

Signed-off-by: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: NXP i.MX U-Boot Team <uboot-imx@nxp.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agodts: imx8mp: assign binman_configuration label to config-SEQ
Ying-Chun Liu (PaulLiu) [Tue, 17 Jan 2023 19:14:59 +0000 (03:14 +0800)]
dts: imx8mp: assign binman_configuration label to config-SEQ

assign a label for config-SEQ so that the board dts can modify
the configuration more easily.

Signed-off-by: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: NXP i.MX U-Boot Team <uboot-imx@nxp.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agomx53loco: Select CONFIG_CMD_EXT4
Fabio Estevam [Mon, 16 Jan 2023 12:32:11 +0000 (09:32 -0300)]
mx53loco: Select CONFIG_CMD_EXT4

Select the CONFIG_CMD_EXT4 option so that files can be loaded
from an ext4 partition.

Signed-off-by: Fabio Estevam <festevam@denx.de>
19 months agoserial: mxc: Speed-up character transmission
Loic Poulain [Thu, 12 Jan 2023 17:19:51 +0000 (18:19 +0100)]
serial: mxc: Speed-up character transmission

Instead of waiting for empty FIFO condition before writing a
character, wait for non-full FIFO condition.

This helps in saving several tens of milliseconds during boot
(depending verbosity).

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Tested-by: Lothar Waßmann <LW@KARO-electronics.de>
Acked-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Fabio Estevam <festevam@denx.de>
Tested-by: Fabio Estevam <festevam@denx.de>
19 months agoserial: mxc: Wait for TX completion before reset
Loic Poulain [Thu, 12 Jan 2023 17:19:50 +0000 (18:19 +0100)]
serial: mxc: Wait for TX completion before reset

The u-boot console may show some corrupted characters when
printing in board_init() due to reset or baudrate change
of the UART (probe) before the TX FIFO has been completely
drained.

To fix this issue, and in case UART is still running, we now
try to flush the FIFO before proceeding to UART reinitialization.
For this we're waiting for Transmitter Complete bit, indicating
that the FIFO and the shift register are empty.

flushing has a 4ms timeout guard, which is normally more than
enough to consume the FIFO @ low baudrate (9600bps).

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Tested-by: Lothar Waßmann <LW@KARO-electronics.de>
Acked-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agopico-imx7d: Add support for the 2GB variant
Fabio Estevam [Wed, 11 Jan 2023 12:22:58 +0000 (09:22 -0300)]
pico-imx7d: Add support for the 2GB variant

Add the board detection mechanism to be able to support
the 2GB variant.

Based on the code from TechNexion U-Boot downstream tree.

Signed-off-by: Fabio Estevam <festevam@denx.de>
19 months agoimx8mm-phg: Add board support
Fabio Estevam [Tue, 10 Jan 2023 20:18:08 +0000 (17:18 -0300)]
imx8mm-phg: Add board support

Add the board support for the i.MX8MM Cloos PHG board.

This board uses a imx8mm-tqma8mqml SoM from TQ-Group.

imx8mm-phg.dts and imx8mm-tqma8mqml.dtsi are taken
directly from Linux 6.2-rc3.

Signed-off-by: Fabio Estevam <festevam@denx.de>
Reviewed-by: Tom Rini <trini@konsulko.com>
19 months agoarm64: dts: imx8mm-kontron: Add RTC aliases
Frieder Schrempf [Mon, 9 Jan 2023 11:42:18 +0000 (12:42 +0100)]
arm64: dts: imx8mm-kontron: Add RTC aliases

Add aliases for the RTCs on the board and on the SoC. This ensures that
the primary RTC is always the one on the board that has a buffered supply
and maximum accuracy.

This is a direct port of the pending commit from linux-next.

Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoconfigs: verdin-imx8mm: Add bootaux command
Philippe Schenker [Wed, 4 Jan 2023 19:02:16 +0000 (20:02 +0100)]
configs: verdin-imx8mm: Add bootaux command

The i.MX 8M Mini SoC does incorporate an additional M-Core. To be able
to load it with a firmware, enable bootaux command as other Toradex
modules also have it enabled to be consistent.

Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
19 months agomx7: clock: Use 60MHz for the I2C clocks
Fabio Estevam [Tue, 3 Jan 2023 13:19:39 +0000 (10:19 -0300)]
mx7: clock: Use 60MHz for the I2C clocks

When an I2C clock is enabled inside enable_i2c_clk() the clock rate is
configured as PLL_SYS_MAIN_120M_CLK / 2 = 60MHz.

Currently, the I2C clock is retrieved from I2C1_CLK_ROOT, which
may not be the one that was enabled.

As there is no clock driver for the imx7d, it is better to return 60MHz
for the I2C clock.

This provides a workaround for the imx7d-pico board, where I2C4 is
connected to the PMIC.

With this change, it is possible to convert the imx7d-pico board
to DM_I2C and DM_PMIC.

Signed-off-by: Fabio Estevam <festevam@denx.de>
19 months agoARM: imx: bootaux: Fix LTO -Wlto-type-mismatch
Marek Vasut [Tue, 13 Dec 2022 04:46:07 +0000 (05:46 +0100)]
ARM: imx: bootaux: Fix LTO -Wlto-type-mismatch

Commit 56c2dbdabab5 ("imx: bootaux: cleanup code") introduces the
following LTO related warning:

"
arch/arm/mach-imx/imx_bootaux.c:24:31: warning: type of ‘hostmap’ does not match original declaration [-Wlto-type-mismatch]
   24 | const __weak struct rproc_att hostmap[] = { };
      |                               ^
arch/arm/mach-imx/imx8m/soc.c:1590:24: note: array types have different bounds
 1590 | const struct rproc_att hostmap[] = {
      |                        ^
arch/arm/mach-imx/imx8m/soc.c:1590:24: note: ‘hostmap’ was previously declared here
../aarch64-linux-gnu/bin/ld: warning: u-boot has a LOAD segment with RWX permissions
"

This is because the weak empty array of structures "hostmap" is eventually
replaced by non-empty array of structures with different number of elements.
Fix this by avoiding weak variable size array, instead use a weak function
which returns single pointer to the array.

Fixes: 56c2dbdabab5 ("imx: bootaux: cleanup code")
Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
19 months agoARM: imx: bootaux: Fix macro misuse
Marek Vasut [Tue, 13 Dec 2022 04:46:06 +0000 (05:46 +0100)]
ARM: imx: bootaux: Fix macro misuse

There are no CONFIG_{TOOLS_,SPL_,TPL_,}IMX8M macros, nor is there one for
ARM64. Use plain IS_ENABLED(CONFIG_IMX8M) and IS_ENABLED(CONFIG_ARM64) to
avoid expanding the {TOOLS_,SPL_,TPL_,} part.

Fixes: 56c2dbdabab5 ("imx: bootaux: cleanup code")
Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
19 months agoARM: imx: Factor common code out of Data Modul i.MX8M Mini eDM SBC
Marek Vasut [Sun, 11 Dec 2022 20:17:14 +0000 (21:17 +0100)]
ARM: imx: Factor common code out of Data Modul i.MX8M Mini eDM SBC

Pull common.c into common subdirectory of the board file,
since this code can be reused by other Data Modul SBCs.
Drop the include of lpddr4_timing.h, which is unneeded.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoARM: imx: Drop board side icache enable on Data Modul i.MX8M Mini eDM SBC
Marek Vasut [Sun, 11 Dec 2022 20:16:36 +0000 (21:16 +0100)]
ARM: imx: Drop board side icache enable on Data Modul i.MX8M Mini eDM SBC

The icache is enabled in common architecture code since commit:
2fa763baa1c ("ARM: imx: Enable instruction cache early on on i.MX8M")
Drop the board side duplicate code.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoARM: imx: Enable LTO for Data Modul i.MX8M Mini eDM SBC
Marek Vasut [Sun, 11 Dec 2022 20:16:11 +0000 (21:16 +0100)]
ARM: imx: Enable LTO for Data Modul i.MX8M Mini eDM SBC

Enable LTO to reduce the size of SPL.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoimx6qdl-sabresd: Pass mmc alias
Fabio Estevam [Sat, 10 Dec 2022 21:31:19 +0000 (18:31 -0300)]
imx6qdl-sabresd: Pass mmc alias

Originally, the mmc aliases node was present in imx6qdl-sabresd.dtsi.

After the sync with Linux in commit d0399a46e7cd ("imx6dl/imx6qdl:
synchronise device trees with linux"), the aliases node is gone as
the upstream version does not have it.

This causes a regression in which the SD card cannot be found anymore.

Fix it by passing the alias node in the u-boot.dtsi file to
restore the original behaviour where the SD card (esdhc3) was
mapped to mmc1.

Fixes: d0399a46e7cd ("imx6dl/imx6qdl: synchronise device trees with linux")
Reported-by: Carlos Rafael Giani <dv@pseudoterminal.org>
Signed-off-by: Fabio Estevam <festevam@denx.de>
19 months agoARM: imx: Reinstate decode ECSPI env location from i.MX8M ROMAPI tables
Marek Vasut [Sat, 10 Dec 2022 01:29:52 +0000 (02:29 +0100)]
ARM: imx: Reinstate decode ECSPI env location from i.MX8M ROMAPI tables

Decode ECSPI boot device in env_get_location() from i.MX8M ROMAPI tables.
This is necessary to correctly identify env is in SPI NOR when the system
boots from SPI NOR attached to ECSPI.

This reinstates change from commit:
e26d0152d61 ("ARM: imx: Decode ECSPI env location from i.MX8M ROMAPI tables")
which has been dropped in commit:
b0a284a7c94 ("imx: move get_boot_device to common file")

Fixes: b0a284a7c94 ("imx: move get_boot_device to common file")
Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoARM: imx: Remove PMIC reset configuration from board files
Marek Vasut [Fri, 9 Dec 2022 19:35:47 +0000 (20:35 +0100)]
ARM: imx: Remove PMIC reset configuration from board files

The PCA9450 reset configuration can now be performed by the PCA9450 PMIC
driver itself, remove the hard-coded variant from board code and let the
PMIC driver perform this task using one-liner:

```
$ sed -i '/set WDOG_B_CFG to cold reset/,+2 d' $(git grep -l PCA9450_RESET_CTRL.*0xA1 board/)
```

Venice and i.MX93 EVK required slight manual fix up.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Fabio Estevam <festevam@denx.de>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
19 months agopmic: pca9450: Make warm reset on WDOG_B assertion
Marek Vasut [Fri, 9 Dec 2022 19:35:46 +0000 (20:35 +0100)]
pmic: pca9450: Make warm reset on WDOG_B assertion

The default configuration of the PMIC behavior makes the PMIC
power cycle most regulators on WDOG_B assertion. This power
cycling causes the memory contents of OCRAM to be lost.
Some systems neeeds some memory that survives reset and
reboot, therefore this patch is created.

The implementation is taken almost verbatim from Linux commit
2364a64d0673f ("regulator: pca9450: Make warm reset on WDOG_B assertion")

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Fabio Estevam <festevam@denx.de>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
19 months agotools: imx8image: Fix handle leak
Mikhail Ilin [Wed, 23 Nov 2022 10:59:49 +0000 (13:59 +0300)]
tools: imx8image: Fix handle leak

The handle "fd" was created in imx8image.c:249 by calling the "fopen"
 function and is lost in imx8image.c:282.
 Should close the 'fd' file descriptor before exiting the
 parse_cfg_file(image_t *param_stack, char *name) function.

Fixes: a2b96ece5be1 ("tools: add i.MX8/8X image support")
Signed-off-by: Mikhail Ilin <ilin.mikhail.ol@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
19 months agotools: imx8mimage: Fix handle leak
Mikhail Ilin [Wed, 23 Nov 2022 10:48:44 +0000 (13:48 +0300)]
tools: imx8mimage: Fix handle leak

The handle "fd" was created in imx8mimage.c:178 by calling
 the "fopen" function and is lost in imx8mimage.c:210.
 Should close the 'fd' file descriptor before exiting
 the parse_cfg_file(char *name) function.

Fixes: 6609c2663c9c ("tools: add i.MX8M image support")
Signed-off-by: Mikhail Ilin <ilin.mikhail.ol@gmail.com>
19 months agotools: imximage: Fix check array index
Mikhail Ilin [Tue, 22 Nov 2022 09:34:26 +0000 (12:34 +0300)]
tools: imximage: Fix check array index

The struct dcd_v1_t is initialized to MAX_HW_CFG_SIZE_V1 (60)
 structs 'dcd_type_addr_data_t', so the indexes to use on its elements
 are [0,59]. But on line 478, the variable 'length' can take on the value
 60, which applies to array overflow: cd_v1->addr_data[length].type Thus,
 it is necessary to tighten the check on the 'size' variable on line 463.

Fixes: 0b0c6af38738 ("Prepare v2020.01")
Signed-off-by: Mikhail Ilin <ilin.mikhail.ol@gmail.com>
19 months agoapalis-imx8: add M4 boot environment helpers
Andrejs Cainikovs [Mon, 16 Jan 2023 19:05:14 +0000 (20:05 +0100)]
apalis-imx8: add M4 boot environment helpers

Add M4 boot environment functions for reference.

Signed-off-by: Andrejs Cainikovs <andrejs.cainikovs@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: set bootaux memory base and size
Andrejs Cainikovs [Mon, 16 Jan 2023 19:05:13 +0000 (20:05 +0100)]
apalis-imx8: set bootaux memory base and size

Set i.MX auxiliary core memory base and size.

Signed-off-by: Andrejs Cainikovs <andrejs.cainikovs@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: update env memory layout
Marcel Ziswiler [Mon, 16 Jan 2023 19:05:09 +0000 (20:05 +0100)]
apalis-imx8: update env memory layout

Update the distro config env memory layout for the Apalis iMX8 aka
QuadMax:

- kernel_comp_addr_r=0xf0000000 temporary area for uncompressing (ie FIT
  images or Image.gz booted using booti)
- kernel_comp_size=0x08000000
- loadaddr=0x95400000 avoiding any reserved areas located before that
- fdt_addr_r = loadaddr + 128MB - allows for 128MB kernel
- scriptaddr = fdt_addr_r + 512KB - allows for 512KB fdt
- ramdisk_addr_r = scriptaddr + 512KB - allows for 512KB script

Basic idea of memory layout taken from commit fd5c7173ade4
("imx8m{m,n}_venice: update env memory layout"). However, moved past
any reserved areas to avoid any kind of conflicts.

Note that for our regular BSP Layers and Reference Images for Yocto
Project an updated distro boot script is required (see
meta-toradex-bsp-common/recipes-bsp/u-boot/u-boot-distro-boot).

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: update update_uboot confirmation message
Marcel Ziswiler [Mon, 16 Jan 2023 19:05:08 +0000 (20:05 +0100)]
apalis-imx8: update update_uboot confirmation message

Update update_uboot confirmation message.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: drop obsolete environment variables
Marcel Ziswiler [Mon, 16 Jan 2023 19:05:07 +0000 (20:05 +0100)]
apalis-imx8: drop obsolete environment variables

Drop obsolete environment variables fdt_addr, finduuid, boot_file,
mmcargs, mmcdev, mmcpart and panel.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Andrejs Cainikovs <andrejs.cainikovs@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: remove obsolete net usb start
Marcel Ziswiler [Mon, 16 Jan 2023 19:05:05 +0000 (20:05 +0100)]
apalis-imx8: remove obsolete net usb start

Remove obsolete net USB start.

While at it also add a comment about enabling distro-boot.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: remove obsolete sdhc related config defines
Marcel Ziswiler [Mon, 16 Jan 2023 19:05:04 +0000 (20:05 +0100)]
apalis-imx8: remove obsolete sdhc related config defines

Remove obsolete SDHC related config defines. Nowadays, all SDHC related
hardware configuration comes from the device tree.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoddr: imx: Handle both 3733 and 3732 MTps rates
Marek Vasut [Mon, 23 Jan 2023 16:53:19 +0000 (17:53 +0100)]
ddr: imx: Handle both 3733 and 3732 MTps rates

The DDR calibration tool for i.MX8M currently produces 3732 MTps rate in
lpddr4_timing.c , while the PHY code expects 3733 MTps rate. Support both
variants to avoid surprises where the system fails to boot.

Signed-off-by: Marek Vasut <marex@denx.de>
19 months agoapalis-imx8: add emmc/mmc card pinctrl's for different speeds
Andrejs Cainikovs [Mon, 16 Jan 2023 19:05:15 +0000 (20:05 +0100)]
apalis-imx8: add emmc/mmc card pinctrl's for different speeds

Add pinctrl's for high speed eMMC and MMC cards.

Signed-off-by: Andrejs Cainikovs <andrejs.cainikovs@toradex.com>
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoboard: apalis-imx8: initialize snvs
Andrejs Cainikovs [Mon, 16 Jan 2023 19:05:12 +0000 (20:05 +0100)]
board: apalis-imx8: initialize snvs

Initialize Secure Non-Volatile Storage, aka SNVS.

Signed-off-by: Andrejs Cainikovs <andrejs.cainikovs@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoboard: apalis-imx8: remove board_phy_config duplicate
Andrejs Cainikovs [Mon, 16 Jan 2023 19:05:11 +0000 (20:05 +0100)]
board: apalis-imx8: remove board_phy_config duplicate

Remove a duplicate of weak board_phy_config() implementation
in drivers/net/phy/phy.c.

Signed-off-by: Andrejs Cainikovs <andrejs.cainikovs@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoboard: apalis-imx8: get rid of sc_err_t type
Philippe Schenker [Mon, 16 Jan 2023 19:05:10 +0000 (20:05 +0100)]
board: apalis-imx8: get rid of sc_err_t type

sc_pm_setup_uart() returns int, not sc_err_t.

Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: introduce setup setting setupargs
Marcel Ziswiler [Mon, 16 Jan 2023 19:05:06 +0000 (20:05 +0100)]
apalis-imx8: introduce setup setting setupargs

Introduce setup setting setupargs and move earlycon there.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: enable environment bootcount limit
Marcel Ziswiler [Mon, 16 Jan 2023 19:05:03 +0000 (20:05 +0100)]
apalis-imx8: enable environment bootcount limit

Enable optional environment bootcount limit functionality.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis/colibri-imx8/8x: remove global variable script
Oleksandr Suvorov [Mon, 16 Jan 2023 19:05:02 +0000 (20:05 +0100)]
apalis/colibri-imx8/8x: remove global variable script

The distroboot script system scans boot_scripts variable and
try to find and use to boot each script name mentioned there.
Setting global variable "script" breaks this general mechanism
of searching and running a distro boot script.
Remove global variables "script" to fix working the general
distro boot script mechanism.

Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis/colibri-imx8/8x: add overlay support for i.mx 8/8x-based soms
Oleksandr Suvorov [Mon, 16 Jan 2023 19:05:01 +0000 (20:05 +0100)]
apalis/colibri-imx8/8x: add overlay support for i.mx 8/8x-based soms

There is no "apply" command enabled for "fdt".
Enable "apply" command to allow overlays to be applied.

Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: set bootdelay
Marcel Ziswiler [Mon, 16 Jan 2023 19:05:00 +0000 (20:05 +0100)]
apalis-imx8: set bootdelay

Set the boot delay to one second.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: provide proper config_sys_prompt
Igor Opaniuk [Mon, 16 Jan 2023 19:04:59 +0000 (20:04 +0100)]
apalis-imx8: provide proper config_sys_prompt

This provides correct system prompt for U-Boot console.

Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: display build info
Marcel Ziswiler [Mon, 16 Jan 2023 19:04:58 +0000 (20:04 +0100)]
apalis-imx8: display build info

Display build info with information about the version of SCFW, SECO and
TF-A (ATF).

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: turn off lcd backlight before os handover
Marcel Ziswiler [Mon, 16 Jan 2023 19:04:57 +0000 (20:04 +0100)]
apalis-imx8: turn off lcd backlight before os handover

U-Boot typically tears down the display controller before handing
control over to Linux. On LCD displays disabling pixel clock leads to a
fading out effect with vertical/horizontal lines. Make sure to disable
back light GPIO Apalis BKL1 before booting Linux.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoapalis-imx8: implement pcb version and soc variant handling
Marcel Ziswiler [Mon, 16 Jan 2023 19:04:56 +0000 (20:04 +0100)]
apalis-imx8: implement pcb version and soc variant handling

Implement PCB version and SoC variant handling which automatically loads
the correct device tree for the Linux kernel.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Andrejs Cainikovs <andrejs.cainikovs@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoarm: dts: imx8mn-u-boot: fix DDR3 only support
Dario Binacchi [Sat, 28 Jan 2023 16:04:04 +0000 (17:04 +0100)]
arm: dts: imx8mn-u-boot: fix DDR3 only support

In case the CONFIG_IMX8M_LPDDR4 and CONFIG_IMX8M_DDR4 options are both
disabled (i. e. BSH boards), binmain fails because DDR4 bin files are
missing.

Fixes: 93c4c0e4dd1e75 ("arm: dts: imx8mn-u-boot: Create common imx8mn-u-boot.dtsi")
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com>
Reviewed-by: Fabio Estevam <festevam@denx.de>
19 months agoMerge branch '2023-01-27-apple-soc-updates'
Tom Rini [Fri, 27 Jan 2023 19:48:22 +0000 (14:48 -0500)]
Merge branch '2023-01-27-apple-soc-updates'

First, to quote the author:
This series adds support for the PCIe controller found on Apple M1 and
M2 machines and enables support for PCIe XHCI controllers.  This makes
the type-A USB ports on the M1 Mac mini work.  Since the use of Apples
DART IOMMU is mandatory (these PCIe DARTs don't support bypass mode),
this adds DMA mapping operations to the IOMMU uclass and implements
them for the Apple DART.  It modifies the XHCI driver code to go map
DMA buffers through the IOMMU if there is one.  Since the M1 Mac mini
now has two types of XHCI controllers with different number of ports
(2 for the DWC3 controllers, 8 for the Fresco Logic PCIe controller)
this uncovered an issue in with the way the hub descriptor is
implemented in the XHCI driver.

Second, Mark also fixes some Apple-specific instances of
CONFIG_IS_ENABLED that should be IS_ENABLED.

19 months agoMerge tag 'efi-2023-04-rc1-3' of https://source.denx.de/u-boot/custodians/u-boot-efi
Tom Rini [Fri, 27 Jan 2023 19:48:14 +0000 (14:48 -0500)]
Merge tag 'efi-2023-04-rc1-3' of https://source.denx.de/u-boot/custodians/u-boot-efi

Pull request efi-2023-04-rc1-3

Documentation:

* Improve the sl-mx8mm documenation
* Clean up README, move some section to HTML
* Man-pages for the mtime and sleep command
* Description of reducible builds
* Document dynamic event handlers

UEFI:

* Support scrolling in eficonfig command

Other:

* fix mtest on 64 bit systems

19 months agousb: xhci: Fix root hub descriptor
Mark Kettenis [Sat, 21 Jan 2023 19:28:00 +0000 (20:28 +0100)]
usb: xhci: Fix root hub descriptor

When a system has multiple XHCI controllers, some of the
properties described in the descriptor of the root hub (such as
the number of ports) might differ between controllers.  Fix this
by switching from a single global hub descriptor to a hub
descriptor per controller.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
Reviewed-by: Marek Vasut <marex@denx.de>
19 months agoarm: apple: Enable PCIe USB controller
Mark Kettenis [Sat, 21 Jan 2023 19:27:59 +0000 (20:27 +0100)]
arm: apple: Enable PCIe USB controller

Some Apple Silicon machines have a PCIe XHCI controller in additon
to the DWC3 controllers integrated on the SoC.  On the Mac mini
the Type-A ports are handled by this PCIe controller.  Enabling
it allows the use of these ports in U-Boot.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
19 months agopci: Add Apple PCIe controller driver
Mark Kettenis [Sat, 21 Jan 2023 19:27:58 +0000 (20:27 +0100)]
pci: Add Apple PCIe controller driver

This driver supports the PCIe controller on the Apple M1 and
M2 SoCs.  The code is adapted from the Linux driver.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
19 months agotest: Add test for mapping IOMMUs for PCI devices
Mark Kettenis [Sat, 21 Jan 2023 19:27:57 +0000 (20:27 +0100)]
test: Add test for mapping IOMMUs for PCI devices

Test that we correctly probe an IOMMU that is mapped by an
"iommu-map" device tree property of a PCIe controller node.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
19 months agoiommu: Implement mapping IOMMUs for PCI devices
Mark Kettenis [Sat, 21 Jan 2023 19:27:56 +0000 (20:27 +0100)]
iommu: Implement mapping IOMMUs for PCI devices

Systems such as Apple's M1 and M2 SoCs may have separate IOMMUs
for each PCIe root port.  In this case the right IOMMU for a
PCI device behind a particular root port is described by an
"iommu-map" property in the device tree.  Parse this property
and use it to find the right IOMMU device for PCI devices.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
19 months agousb: xhci: Implement DMA mapping
Mark Kettenis [Sat, 21 Jan 2023 19:27:55 +0000 (20:27 +0100)]
usb: xhci: Implement DMA mapping

An XHCI controller that sits behind an IOMMU needs to map and unmap
its memory buffers to do DMA.  Implement this by inroducing new
xhci_dma_map() and xhci_dma_unmap() helper functions.  The
xhci_dma_map() function replaces the existing xhci_virt_to_bus()
function in the sense that it returns the bus address in the case
of simple address translation in the absence of an IOMMU.  The
xhci_bus_to_virt() function is eliminated by storing the CPU
address of the allocated scratchpad memory in struct xhci_ctrl.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
Reviewed-by: Marek Vasut <marex@denx.de>
19 months agoiommu: apple: Implement DMA mapping operations for Apple DART
Mark Kettenis [Sat, 21 Jan 2023 19:27:54 +0000 (20:27 +0100)]
iommu: apple: Implement DMA mapping operations for Apple DART

Implement translation table support for all the variations of
Apple's DART IOMMU that can be found on Apple's M1 and M2 SoCs.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
19 months agotest: Add test for IOMMU uclass map/unmap ops
Mark Kettenis [Sat, 21 Jan 2023 19:27:53 +0000 (20:27 +0100)]
test: Add test for IOMMU uclass map/unmap ops

Test that the map and unmap operations work for devices that
have DMA translated by an IOMMU and devices that don't have
DMA translated by an IOMMU.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
19 months agoiommu: Add DMA mapping operations
Mark Kettenis [Sat, 21 Jan 2023 19:27:52 +0000 (20:27 +0100)]
iommu: Add DMA mapping operations

In order to support IOMMUs in non-bypass mode we need device ops
to map and unmap DMA memory.  The map operation enters a mapping
for a region specified by CPU address and size into the translation
table of the IOMMU and returns a DMA address suitable for
programming the device to do DMA.  The unmap operation removes
this mapping from the translation table of the IOMMU.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
19 months agoserial: s5p: Use IS_ENABLED where appropriate
Mark Kettenis [Thu, 26 Jan 2023 13:44:09 +0000 (14:44 +0100)]
serial: s5p: Use IS_ENABLED where appropriate

There are no SPL/TPL variants of CONFIG_CLK_EXYNOS and
CONFIG_ARCH_APPLE, so switch from CONFIG_IS_ENABLED to
IS_ENABLED.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
19 months agoMerge branch '2023-01-27-assorted-updates'
Tom Rini [Fri, 27 Jan 2023 19:04:51 +0000 (14:04 -0500)]
Merge branch '2023-01-27-assorted-updates'

- TI j721s2 support, Nuvoton npcm8xx updates, bouncebuf fix, mkimage fix
  so you can adjust the magic image, pinctrl fixes, ifwitool bugfix

19 months agomkimage: fit: Support signed configurations in 'auto' FITs
Massimo Pegorer [Thu, 5 Jan 2023 09:31:09 +0000 (10:31 +0100)]
mkimage: fit: Support signed configurations in 'auto' FITs

Extend support for signing in auto-generated (-f auto) FIT. Previously,
it was possible to get signed 'images' subnodes in the FIT using
options -g and -o together with -f auto. This patch allows signing
'configurations' subnodes instead of 'images' ones (which are hashed),
using option -f auto-conf instead of -f auto. Adding also -K <dtb> and
-r options, will add public key to <dtb> file with required = "conf"
property.

Summary:
    -f auto => FIT with crc32 images
    -f auto -g ... -o ... => FIT with signed images
    -f auto-conf -g ... -o ... => FIT with sha1 images and signed confs

Example: FIT with kernel, two device tree files, and signed
configurations; public key (needed to verify signatures) is
added to u-boot.dtb with required = "conf" property.

mkimage -f auto-conf -A arm -O linux -T kernel -C none -a 43e00000 \
        -e 0 -d vmlinuz -b /path/to/first.dtb -b /path/to/second.dtb \
        -k /folder/with/key-files -g keyname -o sha256,rsa4096 \
        -K u-boot.dtb -r kernel.itb

Example: Add public key with required = "conf" property to u-boot.dtb
without needing to sign anything. This will also create a useless FIT
named unused.itb.

mkimage -f auto-conf -d /dev/null -k /folder/with/key-files \
        -g keyname -o sha256,rsa4096 -K u-boot.dtb -r unused.itb

Signed-off-by: Massimo Pegorer <massimo.pegorer@vimar.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
19 months agocommon: bouncebuf: Use dma-mapping for cache ops
Andrew Davis [Fri, 6 Jan 2023 18:02:50 +0000 (12:02 -0600)]
common: bouncebuf: Use dma-mapping for cache ops

This matches how this would be done in Linux and these functions
do the alignment for us which makes the code look cleaner.

Signed-off-by: Andrew Davis <afd@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
19 months agoinclude: configs: Update env for selecting right dtb
Sinthu Raja [Tue, 10 Jan 2023 15:47:58 +0000 (21:17 +0530)]
include: configs: Update env for selecting right dtb

Now that single defconfig shall be used for booting J721S2 EVM and
AM68 SK, the default device tree will not work for selecting dtb for
kernel. Update the findfdt env to select right dtb based on
board_name env variable.

Signed-off-by: Sinthu Raja <sinthu.raja@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
19 months agoarm: dts: k3-am68-sk: Add r5 specific dt support
Sinthu Raja [Tue, 10 Jan 2023 15:47:57 +0000 (21:17 +0530)]
arm: dts: k3-am68-sk: Add r5 specific dt support

Add initial support for AM68 SK device tree that runs on R5.

Signed-off-by: Sinthu Raja <sinthu.raja@ti.com>
19 months agoarm: dts: Add support for A72 specific AM68 Starter Kit Base Board
Sinthu Raja [Tue, 10 Jan 2023 15:47:56 +0000 (21:17 +0530)]
arm: dts: Add support for A72 specific AM68 Starter Kit Base Board

The SK architecture comprises of baseboard and a SOM board. The
AM68 Starter Kit's baseboard contains most of the actual connectors,
power supply etc. The System on Module (SoM) is plugged on to the base
board. Therefore, add support for peripherals brought out in the base
board.

Schematics: https://www.ti.com/lit/zip/SPRR463

Signed-off-by: Sinthu Raja <sinthu.raja@ti.com>
19 months agoarm: dts: Add initial support for AM68 Starter Kit System on Module
Sinthu Raja [Tue, 10 Jan 2023 15:47:55 +0000 (21:17 +0530)]
arm: dts: Add initial support for AM68 Starter Kit System on Module

AM68 Starter Kit (SK) is a low cost, small form factor board designed
for TI’s AM68 SoC. TI’s AM68 SoC comprises of dual core A72, high
performance vision accelerators, hardware accelerators, latest C71x
DSP, high bandwidth real-time IPs for capture and display. The SoC is
power optimized to provide best in class performance for industrial
applications.

        AM68 SK supports the following interfaces:
        * 16 GB LPDDR4 RAM
        * x1 Gigabit Ethernet interface
        * x1 USB 3.1 Type-C port
        * x2 USB 3.1 Type-A ports
        * x1 PCIe M.2 M Key
        * 512 Mbit OSPI flash
        * x2 CSI2 Camera interface (RPi and TI Camera connector)
        * 40-pin Raspberry Pi GPIO header

SK's System on Module (SoM) contains the SoC, PMIC, DDR and OSPI flash.
Therefore, add support for the components present on the SoM.

Schematics: https://www.ti.com/lit/zip/SPRR463
TRM: http://www.ti.com/lit/pdf/spruj28

Signed-off-by: Sinthu Raja <sinthu.raja@ti.com>