platform/kernel/u-boot.git
3 years agoconfigs: am64x_evm_*_defconfig: Enable config to support gpt and FDT library overlay
Aswath Govindraju [Mon, 26 Jul 2021 15:28:07 +0000 (20:58 +0530)]
configs: am64x_evm_*_defconfig: Enable config to support gpt and FDT library overlay

Enable config to support gpt command on AM642 evm/sk and enable config for
FDT library overlay support

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210726152807.22991-7-a-govindraju@ti.com
3 years agoconfigs: am64x_evm_*_defconfig: Enable configs to support eMMC boot
Kishon Vijay Abraham I [Mon, 26 Jul 2021 15:28:06 +0000 (20:58 +0530)]
configs: am64x_evm_*_defconfig: Enable configs to support eMMC boot

Enable configs to support eMMC boot.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210726152807.22991-6-a-govindraju@ti.com
3 years agoconfigs: am64x_evm: Move CONFIG_SYS_MMC_ENV_DEV and CONFIG_SYS_MMC_ENV_PART to defcon...
Aswath Govindraju [Mon, 26 Jul 2021 15:28:05 +0000 (20:58 +0530)]
configs: am64x_evm: Move CONFIG_SYS_MMC_ENV_DEV and CONFIG_SYS_MMC_ENV_PART to defconfig files and enable configs to save env in eMMC and FAT write.

Kconfig symbols for SYS_MMC_ENV_DEV and SYS_MMC_ENV_PART have been added by
commit 7d080773347c1f6e0e896d9284134a2a411155d6. Therefore, move the
definitions of configs to corresponding board defconfig files and enable
configs to save env in eMMC.

Also enable config for FAT write in U-Boot.

Fixes: 33b7258947f4 ("board: ti: am64x: Add board support for am64x evm")
Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210726152807.22991-5-a-govindraju@ti.com
3 years agoconfigs: am64x_evm_a53_defconfig: Enable configs to support HS200/HS400
Kishon Vijay Abraham I [Mon, 26 Jul 2021 15:28:04 +0000 (20:58 +0530)]
configs: am64x_evm_a53_defconfig: Enable configs to support HS200/HS400

Enable configs to support HS200/HS400.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210726152807.22991-4-a-govindraju@ti.com
3 years agoarch: dts: am642-sk-u-boot: Disable main_sdhci0 DT node and define alias index 1...
Aswath Govindraju [Mon, 26 Jul 2021 15:28:03 +0000 (20:58 +0530)]
arch: dts: am642-sk-u-boot: Disable main_sdhci0 DT node and define alias index 1 for main_sdhci1 node

A Wilink wireless device is connected to MMCSD0 subsystem and is not
supported in U-Boot. Therefore, disable main_sdhci0 device tree node in
U-Boot.

If main_sdhci0 device tree node is disabled then the the index of
main_sdhci1 node becomes 0 which leads to break in boot flow. Therefore,
add an alias to fix the index to 1.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210726152807.22991-3-a-govindraju@ti.com
3 years agoarch: arm: mach-k3: am642_init: Correct the function name spl_boot_mode() to spl_mmc_...
Aswath Govindraju [Mon, 26 Jul 2021 15:28:02 +0000 (20:58 +0530)]
arch: arm: mach-k3: am642_init: Correct the function name spl_boot_mode() to spl_mmc_boot_mode()

Function spl_boot_mode() is called in common/spl/spl_mmc.c, to find the
boot mode for a given boot device. This function was renamed to
spl_mmc_boot_mode() by commit e97590654aea4c964f49bd915543a417d0c76996.

Therefore, rename spl_boot_mode to spl_mmc_boot_mode.

Fixes: 57dba04afbb7 ("arm: mach-k3: am642: Add support for boot device detection")
Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210726152807.22991-2-a-govindraju@ti.com
3 years agoconfigs: am64x_evm_r5_defconfig: Fix CONFIG_SPL_TEXT_BASE to 0x70000000
Aswath Govindraju [Mon, 26 Jul 2021 14:58:39 +0000 (20:28 +0530)]
configs: am64x_evm_r5_defconfig: Fix CONFIG_SPL_TEXT_BASE to 0x70000000

CONFIG_SPL_TEXT_BASE was set to 0x70000000 in the commit,
"26f32c32b250 configs: am64x_evm_*_defconfig: Rearrange the components in
SRAM to satisfy the limitations for USB DFU boot mode". This change seems
to have been dropped during a merge commit.

Therefore, fix this by setting CONFIG_SPL_TEXT_BASE to 0x70000000.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210726145840.18977-1-a-govindraju@ti.com
3 years agodoc: board: j721e_evm: Add documentation for firmware loading
Kishon Vijay Abraham I [Wed, 21 Jul 2021 15:58:49 +0000 (21:28 +0530)]
doc: board: j721e_evm: Add documentation for firmware loading

Add documentation for loading firmwares to be used by remote cores in
the system including the environment variables that has to be set to
load the firmwares.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-21-kishon@ti.com
3 years agodoc: board: Move j721e document to doc/board/ti/ directory
Kishon Vijay Abraham I [Wed, 21 Jul 2021 15:58:48 +0000 (21:28 +0530)]
doc: board: Move j721e document to doc/board/ti/ directory

Move j721e document from board/ti/j721e/README to
doc/board/ti/j721e_evm.rst after converting it to RST format.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-20-kishon@ti.com
3 years agoconfigs: j7200_evm_a72: Add CONFIG_PREBOOT to configure ethernet PHY
Kishon Vijay Abraham I [Wed, 21 Jul 2021 15:58:47 +0000 (21:28 +0530)]
configs: j7200_evm_a72: Add CONFIG_PREBOOT to configure ethernet PHY

Add CONFIG_PREBOOT to provide an automatic and easier way
to configure ethernet PHY before loading the firmware.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-19-kishon@ti.com
3 years agoenv: ti: j721e-evm: Add env variable to power on & reset QSGMII PHY in J7200 EVM
Kishon Vijay Abraham I [Wed, 21 Jul 2021 15:58:46 +0000 (21:28 +0530)]
env: ti: j721e-evm: Add env variable to power on & reset QSGMII PHY in J7200 EVM

MAIN CPSW0 requires the PHY to be powered on and reset for QSGMII
operation. Add a env variable to configure driving "0" on ENET_EXP_PWRDN
controlled by GPIO EXPANDER2 (I2C Addr: 0x22), PIN: 17 and driving "1"
on ENET_EXP_RESETZ controlled by GPIO EXPANDER2 (I2C Addr: 0x22),
PIN: 18.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Suman Anna <s-anna@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-18-kishon@ti.com
3 years agoconfigs: j7200_evm_a72_defconfig: Add config for torrent serdes and common clock...
Aswath Govindraju [Wed, 21 Jul 2021 15:58:45 +0000 (21:28 +0530)]
configs: j7200_evm_a72_defconfig: Add config for torrent serdes and common clock framework

Add config for torrent serdes and common clock framework.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-17-kishon@ti.com
3 years agoconfigs: j721e_evm_a72_defconfig: Enable the drivers required for the USB3 support
Jean-Jacques Hiblot [Wed, 21 Jul 2021 15:58:44 +0000 (21:28 +0530)]
configs: j721e_evm_a72_defconfig: Enable the drivers required for the USB3 support

Enable the mmio mux driver, the J721E-wiz PHy driver and the cadence sierra
phy driver. All of them are required for USB3 support

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-16-kishon@ti.com
3 years agoarm: dts: k3-j7200-common-proc-board-u-boot: Add u-boot tags for torrent serdes
Aswath Govindraju [Wed, 21 Jul 2021 15:58:43 +0000 (21:28 +0530)]
arm: dts: k3-j7200-common-proc-board-u-boot: Add u-boot tags for torrent serdes

Add u-boot tags for torrent serdes. This has properties specific to
u-boot on top of DT in v5.13 Linux Kernel.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-15-kishon@ti.com
3 years agoarm: dts: k3-j7200-common-proc-board: Enable SERDES DT
Aswath Govindraju [Wed, 21 Jul 2021 15:58:42 +0000 (21:28 +0530)]
arm: dts: k3-j7200-common-proc-board: Enable SERDES DT

Add default lane function for torrent serdes. This is in sync
with v5.13 Linux Kernel.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-14-kishon@ti.com
3 years agoarm: dts: k3-j7200-main: Add DT node for torrent serdes
Aswath Govindraju [Wed, 21 Jul 2021 15:58:41 +0000 (21:28 +0530)]
arm: dts: k3-j7200-main: Add DT node for torrent serdes

Add DT node for torrent serdes. This is in sync with v5.13 Linux Kernel.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-13-kishon@ti.com
3 years agoARM: dts: k3-j721e: Add support for USB3 in USB0 instance
Kishon Vijay Abraham I [Wed, 21 Jul 2021 15:58:40 +0000 (21:28 +0530)]
ARM: dts: k3-j721e: Add support for USB3 in USB0 instance

Configure the parent clock of wiz3_pll0_refclk to the internal clock
required for USB3 to be functional and also remove "ti,usb2-only"
property as it now supports USB3 mode. This has properties specific to
u-boot on top of DT present in v5.13 of Linux Kernel.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-12-kishon@ti.com
3 years agoboard: ti: j721e: Add support for probing and configuring Torrent serdes on J7200
Aswath Govindraju [Wed, 21 Jul 2021 15:58:39 +0000 (21:28 +0530)]
board: ti: j721e: Add support for probing and configuring Torrent serdes on J7200

Add support for probing and configuring Torrent serdes on J7200.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-11-kishon@ti.com
3 years agophy: ti: j721e-wiz: Add support for WIZ module present in TI J721E SoC
Jean-Jacques Hiblot [Wed, 21 Jul 2021 15:58:38 +0000 (21:28 +0530)]
phy: ti: j721e-wiz: Add support for WIZ module present in TI J721E SoC

Add support for WIZ module present in TI's J721E SoC. WIZ is a SERDES
wrapper used to configure some of the input signals to the SERDES. It is
used with both Sierra(16G) and Torrent(10G) SERDES. This driver configures
three clock selects (pll0, pll1, dig) and supports resets for each of the
lanes.

This is an adaptation of the linux driver.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-10-kishon@ti.com
3 years agophy: cadence: Add driver for Torrent SERDES
Aswath Govindraju [Wed, 21 Jul 2021 15:58:37 +0000 (21:28 +0530)]
phy: cadence: Add driver for Torrent SERDES

Add driver for Torrent SERDES.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-9-kishon@ti.com
3 years agophy: cadence: Add driver for Sierra PHY
Alan Douglas [Wed, 21 Jul 2021 15:58:36 +0000 (21:28 +0530)]
phy: cadence: Add driver for Sierra PHY

Add a Sierra PHY driver with PCIe and USB support.
This driver is a port from the mainline linux driver.

The PHY has multiple lanes, which can be configured into
groups, and a generic PHY device is created for each group.

There are two resets controlling the overall PHY block, one
to enable the APB interface for programming registers, and
another to enable the PHY itself.  Additionally there are
resets for each PHY lane.

The PHY can be configured in hardware to read register
settings from ROM, or they can be written by the driver.

The sequence of operation on startup is to enable the APB
bus, write the PHY registers (if required)  for each lane
group, and then enable the PHY.  Each group of lanes
can then be individually controlled using the power_on()/
power_off() function for that generic PHY

One difference with the linux driver is that the PHY is
always reset after it is powered-on. This is because role
switching is not supported in u-boot and the cable
orientation is handled by the PHY reset.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Alan Douglas <adouglas@cadence.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-8-kishon@ti.com
3 years agodt-bindings: ti-serdes-mux: Add defines for AM64 SoC
Kishon Vijay Abraham I [Wed, 21 Jul 2021 15:58:35 +0000 (21:28 +0530)]
dt-bindings: ti-serdes-mux: Add defines for AM64 SoC

AM64 has a single lane SERDES which can be configured to be used
with either PCIe or USB. Define the possilbe values for the SERDES
function in AM64 SoC here.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-7-kishon@ti.com
3 years agodt-bindings: phy: cadence-torrent: Add defines for refclk driver
Kishon Vijay Abraham I [Wed, 21 Jul 2021 15:58:34 +0000 (21:28 +0530)]
dt-bindings: phy: cadence-torrent: Add defines for refclk driver

Add defines for refclk driver used to route the refclk out of torrent
SERDES.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-6-kishon@ti.com
3 years agodt-bindings: phy: Add defines for AM64 SERDES Wrapper
Kishon Vijay Abraham I [Wed, 21 Jul 2021 15:58:33 +0000 (21:28 +0530)]
dt-bindings: phy: Add defines for AM64 SERDES Wrapper

Add defines for AM64 SERDES Wrapper.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-5-kishon@ti.com
3 years agodt-bindings: phy: Add definitions for additional phy types
Aswath Govindraju [Wed, 21 Jul 2021 15:58:32 +0000 (21:28 +0530)]
dt-bindings: phy: Add definitions for additional phy types

Add definitions for additional phy types that's used specifically for
Torrent SERDES.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210721155849.20994-4-kishon@ti.com
3 years agodm: test: Add test case to check node name ignoring unit address
Kishon Vijay Abraham I [Wed, 21 Jul 2021 15:58:31 +0000 (21:28 +0530)]
dm: test: Add test case to check node name ignoring unit address

Add test to check node name ignoring unit address.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Link: https://lore.kernel.org/r/20210721155849.20994-3-kishon@ti.com
3 years agodm: core: Add helper to compare node names
Kishon Vijay Abraham I [Wed, 21 Jul 2021 15:58:30 +0000 (21:28 +0530)]
dm: core: Add helper to compare node names

Add helper to compare node names.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Link: https://lore.kernel.org/r/20210721155849.20994-2-kishon@ti.com
3 years agoconfigs: am335x_evm: Support GbE PHYs
Paul Barker [Mon, 12 Jul 2021 20:14:11 +0000 (21:14 +0100)]
configs: am335x_evm: Support GbE PHYs

The SanCloud BeagleBone Enhanced (BBE) includes a Gigabit Ethernet PHY.

Signed-off-by: Paul Barker <paul.barker@sancloud.com>
3 years agoarm: dts: Import am335x-sancloud-bbe devicetree
Paul Barker [Mon, 12 Jul 2021 20:14:10 +0000 (21:14 +0100)]
arm: dts: Import am335x-sancloud-bbe devicetree

This device tree is imported from Linux 5.13.1 and enabled via the
am335x board file and the am335x evm defconfig.

Signed-off-by: Paul Barker <paul.barker@sancloud.com>
3 years agoarm: dts: Resync BeagleBone device trees
Paul Barker [Mon, 12 Jul 2021 20:14:09 +0000 (21:14 +0100)]
arm: dts: Resync BeagleBone device trees

These device trees are updated to match the versions in Linux 5.13.1.
The tick-timer entry in am335x-bone-common.dtsi is preserved.

Signed-off-by: Paul Barker <paul.barker@sancloud.com>
3 years agodt-bindings: Resync omap & am33xx pinctrl bindings
Paul Barker [Mon, 12 Jul 2021 20:14:08 +0000 (21:14 +0100)]
dt-bindings: Resync omap & am33xx pinctrl bindings

These headers are updated to match the versions in Linux 5.13.1.

Signed-off-by: Paul Barker <paul.barker@sancloud.com>
3 years agoconfigs: j7200_evm_*_defconfig: Enable configs for HS400 support
Aswath Govindraju [Tue, 25 May 2021 09:38:25 +0000 (15:08 +0530)]
configs: j7200_evm_*_defconfig: Enable configs for HS400 support

Enable configs to add support for HS400 speed mode.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210525093826.10390-4-a-govindraju@ti.com
3 years agoarm: dts: k3-j7200-main: Add support for HS400 and update delay select values for...
Aswath Govindraju [Tue, 25 May 2021 09:38:24 +0000 (15:08 +0530)]
arm: dts: k3-j7200-main: Add support for HS400 and update delay select values for MMCSD subsystems

HS400 speed mode is now supported in J7200 SoC[1]. Therefore add
mmc-hs400-1_8v tag in sdhci0 device tree node.

Also update the delay values for various speed modes supported, based on
the revised january 2021 J7200 datasheet[2].

[1] - section 12.3.6.1.1 MMCSD Features, in
      https://www.ti.com/lit/ug/spruiu1a/spruiu1a.pdf,
      (SPRUIU1A – JULY 2020 – REVISED JANUARY 2021)

[2] - https://www.ti.com/lit/ds/symlink/dra821u.pdf,
      (SPRSP57B – APRIL 2020 – REVISED JANUARY 2021)

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Link: https://lore.kernel.org/r/20210525093826.10390-3-a-govindraju@ti.com
3 years agommc: sdhci_am654: Read ti, strobe-sel property from device tree
Aswath Govindraju [Tue, 25 May 2021 09:38:23 +0000 (15:08 +0530)]
mmc: sdhci_am654: Read ti, strobe-sel property from device tree

Read the strobe select value from the device tree property ti,strobe-sel,
required for HS400 speed mode

Fixes: a20008eabd95 ("mmc: am654_sdhci: Add Support for configuring PHY in J721e")
Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Link: https://lore.kernel.org/r/20210525093826.10390-2-a-govindraju@ti.com
3 years agommc: sdhci: Write to HOST_CONTROL2 register for HS400 speed mode
Faiz Abbas [Mon, 5 Apr 2021 14:44:28 +0000 (20:14 +0530)]
mmc: sdhci: Write to HOST_CONTROL2 register for HS400 speed mode

Enable HS400 speed mode by writing to HOST_CONTROL2 register.

Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
Link: https://lore.kernel.org/r/20210405144428.12159-1-a-govindraju@ti.com
3 years agoPrepare v2021.10-rc1
Tom Rini [Tue, 27 Jul 2021 00:57:18 +0000 (20:57 -0400)]
Prepare v2021.10-rc1

Signed-off-by: Tom Rini <trini@konsulko.com>
3 years agoMerge tag 'xilinx-for-v2021.10-rc1' of https://source.denx.de/u-boot/custodians/u...
Tom Rini [Mon, 26 Jul 2021 16:09:32 +0000 (12:09 -0400)]
Merge tag 'xilinx-for-v2021.10-rc1' of https://source.denx.de/u-boot/custodians/u-boot-microblaze

Xilinx changes for v2021.10-rc1

xilinx:
- Use default ENVL_NOWHERE configuration
- Add support for handling compressed kernels

zynqmp:
- SPL malloc size extension
- USB2.0 for zc1751 dc2
- Fix USB3.0 nodes
- Handle lpd_lsbus clock
- Cleanup macros around SYSRESET

versal:
- Remove PBSIZE macro

zynq_sdhci:
- Tap delay fixups

net:
- Add support for MRMAC

3 years agoarm64: zynqmp: Move USB3 PHY properties from DWC3 node to USB node
Manish Narani [Wed, 14 Jul 2021 12:17:19 +0000 (06:17 -0600)]
arm64: zynqmp: Move USB3 PHY properties from DWC3 node to USB node

Move the PHY properties from DWC3 node to USB node in ZynqMP DTs as here
the USB3 PHY used is PSGTR, which is connected to Xilinx USB core. This
PHY initialization should be handled from Xilinx USB core as the
prerequisite register configurations are done here only.

Signed-off-by: Manish Narani <manish.narani@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agoxilinx: Define kernel_comp_addr_r,kernel_comp_size env variables
Raju Kumar Pothuraju [Mon, 12 Jul 2021 14:49:04 +0000 (20:19 +0530)]
xilinx: Define kernel_comp_addr_r,kernel_comp_size env variables

Add kernel_comp_addr_r, kernel_comp_size env variables for zynqmp and
versal to be able to use the compressed kernel Image(.gz,.bz2,.lzma,.lzo)
using booti command.

Signed-off-by: Raju Kumar Pothuraju <raju.kumar-pothuraju@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agoarm64: versal: Drop default definitions of CONFIG_SYS_PBSIZE
Michal Simek [Wed, 14 Jul 2021 07:07:04 +0000 (09:07 +0200)]
arm64: versal: Drop default definitions of CONFIG_SYS_PBSIZE

It is default value which had been converted by commit 432e39806805
("include/configs: drop default definitions of CONFIG_SYS_PBSIZE"). That's
why also remove it.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agoarm64: zynqmp: Enable reset and poweroff via sysreset framework
Michal Simek [Tue, 13 Jul 2021 14:49:04 +0000 (16:49 +0200)]
arm64: zynqmp: Enable reset and poweroff via sysreset framework

reset and poweroff are called via hooks in psci driver which is going
around sysreset framework that's why enable sysreset drivers and do reset
and poweroff via this framework. Using this flow will allow us to call
SYSTEM_WARM_RESET based on psci 1.1 spec which can be calles with reset -w
command.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agoarm64: zynqmp: Do not define do_reset() if sysreset is enabled
Michal Simek [Tue, 13 Jul 2021 14:39:26 +0000 (16:39 +0200)]
arm64: zynqmp: Do not define do_reset() if sysreset is enabled

The SPL can also be compiled with sysreset drivers just fine, so
update the condition to cater for that option.
The same change was done by commit efa1a62ad2dd ("ARM: imx8m: Do not define
do_reset() if sysreset is enabled").

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agopsci: Do not define do_poweroff() if CONFIG_SYSRESET_CMD_POWEROFF is enabled
Michal Simek [Tue, 13 Jul 2021 14:53:46 +0000 (16:53 +0200)]
psci: Do not define do_poweroff() if CONFIG_SYSRESET_CMD_POWEROFF is enabled

CONFIG_SYSRESET_CMD_POWEROFF defines do_poweroff() in sysreset-uclass.c
that's why don't define it twice when both CONFIG_SYSRESET_CMD_POWEROFF and
CONFIG_CMD_POWEROFF are enabled. CONFIG_SYSRESET_CMD_POWEROFF depends on
CONFIG_CMD_POWEROFF.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agoxilinx: versal: Enable Xilinx AXI MRMAC
Ashok Reddy Soma [Fri, 2 Jul 2021 10:40:35 +0000 (04:40 -0600)]
xilinx: versal: Enable Xilinx AXI MRMAC

Enable Xilinx AXI MRMAC for Versal platforms.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agonet: xilinx: axi_mrmac: Add MRMAC driver
Ashok Reddy Soma [Fri, 2 Jul 2021 10:40:34 +0000 (04:40 -0600)]
net: xilinx: axi_mrmac: Add MRMAC driver

Add support for xilinx multirate(MRMAC) ethernet driver.
This driver uses multichannel DMA(MCDMA) for data transfers of MRMAC.
Added support for 4 ports of MRMAC for speeds 10G and 25G.
MCDMA supports upto 16 channels but in this driver we have setup only
one channel which is enough.

Tested 10G and 25G on all 4 ports.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agonet: ethtool: Add ethernet speed macros for higher speeds
Ashok Reddy Soma [Fri, 2 Jul 2021 10:40:33 +0000 (04:40 -0600)]
net: ethtool: Add ethernet speed macros for higher speeds

Add speed macro's for higher ethernet speeds to be used in u-boot
networking drivers. Added Macros for speeds 14G, 20G, 25G, 40G, 50G,
56G, 100G and 200G inline with linux.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Acked-by: Ramon Fried <rfried.dev@gmail.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agoclk: zynqmp: Add support for enabling clock on lpd_lsbus
Michal Simek [Thu, 1 Jul 2021 17:01:42 +0000 (19:01 +0200)]
clk: zynqmp: Add support for enabling clock on lpd_lsbus

lpd_lsbus is clock which is used by many IPs like dmas, gems, gpio, sdhcis,
spis, ttcs, uarts, watchdog that's why make sense to also enable access to
change this clock. For this clock you already get the rate.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agoarm64: dts: zynqmp: Enable USB2.0 for zc1751-xm016-dc2
Piyush Mehta [Sat, 3 Jul 2021 05:10:30 +0000 (10:40 +0530)]
arm64: dts: zynqmp: Enable USB2.0 for zc1751-xm016-dc2

The board zynqmp-zc1751-xm016-dc2 support only USB2.0.
This patch removes USB3.0 DT configuration for DC2 board.

Signed-off-by: Piyush Mehta <piyush.mehta@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agoxilinx: Return ENVL_NOWHERE instead of ENVL_UNKNOWN
Mike Looijmans [Fri, 2 Jul 2021 08:28:36 +0000 (10:28 +0200)]
xilinx: Return ENVL_NOWHERE instead of ENVL_UNKNOWN

The system refuses to boot without any environment, so return ENVL_NOWHERE when
there's nowhere to store the environment instead of ENVL_UNKNOWN.

This fixes that the board won't boot from eMMC when CONFIG_ENV_IS_IN_FAT is not
defined, for example. Similar for other combinations.

Fixes: 1025bd098aa8 "xilinx: zynqmp: Add support for saving variables"

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agommc: zynq_sdhci: Make variables/structure static
Michal Simek [Fri, 9 Jul 2021 11:53:44 +0000 (05:53 -0600)]
mmc: zynq_sdhci: Make variables/structure static

All these variables/structure are local and should be static.

Issues are reported by sparse:
drivers/mmc/zynq_sdhci.c:49:11: warning: symbol 'zynqmp_iclk_phases' was not declared. Should it be static?
drivers/mmc/zynq_sdhci.c:50:11: warning: symbol 'zynqmp_oclk_phases' was not declared. Should it be static?
drivers/mmc/zynq_sdhci.c:53:11: warning: symbol 'versal_iclk_phases' was not declared. Should it be static?
drivers/mmc/zynq_sdhci.c:54:11: warning: symbol 'versal_oclk_phases' was not declared. Should it be static?
drivers/mmc/zynq_sdhci.c:546:24: warning: symbol 'arasan_ops' was not declared. Should it be static?

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
3 years agommc: zynq_sdhci: Fix kernel doc warnings
Michal Simek [Fri, 9 Jul 2021 11:53:43 +0000 (05:53 -0600)]
mmc: zynq_sdhci: Fix kernel doc warnings

Fix these kernel doc warnings:
drivers/mmc/zynq_sdhci.c:181: warning: contents before sections
drivers/mmc/zynq_sdhci.c:236: warning: contents before sections
drivers/mmc/zynq_sdhci.c:291: warning: contents before sections
drivers/mmc/zynq_sdhci.c:297: warning: Function parameter or member 'degrees' not described in                   'sdhci_versal_sdcardclk_set_phase'
drivers/mmc/zynq_sdhci.c:354: warning: contents before sections
drivers/mmc/zynq_sdhci.c:360: warning: Function parameter or member 'degrees' not described in                   'sdhci_versal_sampleclk_set_phase'
drivers/mmc/zynq_sdhci.c:467: warning: contents before sections

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
3 years agommc: zynq_sdhci: Split set_tapdelay function to in and out
Ashok Reddy Soma [Fri, 9 Jul 2021 11:53:42 +0000 (05:53 -0600)]
mmc: zynq_sdhci: Split set_tapdelay function to in and out

Split arasan_zynqmp_set_tapdelay() to handle input and output tapdelays
separately. This is required to handle zero values for ITAP and OTAP
values. If we dont split, we will have to remove the if() in the
function, which makes ITAP values to be overwritten when OTAP values are
called to set and vice-versa.

Restrict tap_delay value calculated to max allowed 8 bits for ITAP and 6
bits for OTAP for ZynqMP.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agommc: zynq_sdhci: Use Mask writes for Tap delays
Ashok Reddy Soma [Fri, 9 Jul 2021 11:53:41 +0000 (05:53 -0600)]
mmc: zynq_sdhci: Use Mask writes for Tap delays

Restrict tap_delay value to the allowed size(8bits for itap and 6 bits
for otap) before writing to the tap delay register.

Clear ITAP and OTAP delay bits before updating with the new tap value
for Versal platform.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agommc: zynq_sdhci: Allow configuring zero Tap values
Ashok Reddy Soma [Fri, 9 Jul 2021 11:53:40 +0000 (05:53 -0600)]
mmc: zynq_sdhci: Allow configuring zero Tap values

Allow configuring ITAP and OTAP values with zero to avoid failures in
some cases (one of them is SD boot mode). Legacy, SDR12 modes require
to program the ITAP and OTAP values as zero, whereas for SDR50 and SDR104
modes ITAP value is zero.

In SD boot mode firmware configures the SD ITAP and OTAP values and
in this case u-boot has to re-configure required tap values(including zero)
based on the operating mode.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agommc: zynq_sdhci: Resolve uninitialized return value
Ashok Reddy Soma [Fri, 9 Jul 2021 11:53:39 +0000 (05:53 -0600)]
mmc: zynq_sdhci: Resolve uninitialized return value

set_phase() functions are not modifying the ret value and returning
the same uninitialized ret, return 0 instead.

Keep the return type as int to return errors when the tapdelay's are
set via xilinx_pm_request() in future.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agoxilinx: zynqmp: increase CONFIG_SYS_SPL_MALLOC_SIZE to 16MB
Ricardo Salveti [Tue, 6 Jul 2021 23:43:01 +0000 (20:43 -0300)]
xilinx: zynqmp: increase CONFIG_SYS_SPL_MALLOC_SIZE to 16MB

commit 03f1f78a9b44 ("spl: fit: Prefer a malloc()'d buffer for loading
images")' changed the way buffer allocation worked for SPL to a more
flexible method.

For xilinx zynqmp the 1MB buffer is not necessarily enough when dealing
with complex fit images (e.g. containing FPGA/TF-A/OP-TEE/U-Boot
proper), which can easily reach up to 10MB, so increase the default
CONFIG_SYS_SPL_MALLOC_SIZE size to 16MB to cover more advanced
scenarios.

Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
3 years agoMerge tag 'efi-2021-10-rc1-3' of https://source.denx.de/u-boot/custodians/u-boot-efi
Tom Rini [Sat, 24 Jul 2021 20:41:25 +0000 (16:41 -0400)]
Merge tag 'efi-2021-10-rc1-3' of https://source.denx.de/u-boot/custodians/u-boot-efi

Pull request for efi-2021-10-rc1-3

Documentation:
provide Makefile documentation

SMBIOS:
generate BIOS release date based on UEFI version
improve error handling in SMBIOS table generation

UEFI:
correct handling of signed capsule if authentication if off

3 years agoMerge branch '2021-07-24-arm-and-platform-updates'
Tom Rini [Sat, 24 Jul 2021 20:38:09 +0000 (16:38 -0400)]
Merge branch '2021-07-24-arm-and-platform-updates'

- dragonboard410c, synquacer, aspeed fixes / updates
- pl011 serial driver fixes
- Two generic arm bugfixes

3 years agoserial: pl011: Enable DEBUG_UART_PL011 in SPL
Chen Baozi [Wed, 21 Jul 2021 06:11:26 +0000 (14:11 +0800)]
serial: pl011: Enable DEBUG_UART_PL011 in SPL

Commit b81406db51a6 ("arm: serial: Add debug UART capability to the
pl01x driver") add supports to use pl01x as a debug UART. However,
due to CONFIG_IS_ENABLED macro requires CONFIG_SPL_* prefix, the
_debug_uart_init() would not choose TYPE_PL011 in SPL build. This
patch fixes the bug by judging CONFIG_DEBUG_UART_PL011 explicitly.

Signed-off-by: Chen Baozi <chenbaozi@phytium.com.cn>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agoreset: ast2600: Fix missing reference operator
Chia-Wei Wang [Tue, 20 Jul 2021 07:01:36 +0000 (15:01 +0800)]
reset: ast2600: Fix missing reference operator

Fix missing reference operator '&' to correctly get
HW register addresses for writel().

Signed-off-by: Chia-Wei Wang <chiawei_wang@aspeedtech.com>
3 years agoMAINTAINERS: correct the path of UEFI docs
AKASHI Takahiro [Tue, 20 Jul 2021 07:09:46 +0000 (16:09 +0900)]
MAINTAINERS: correct the path of UEFI docs

Change the path from doc/uefi to doc/develop/uefi.

Fixes: commit d1ceeeff6c2e ("doc: Move UEFI under develop/")
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
3 years agotest/py: efi_capsule: align with efidebug syntax changes
AKASHI Takahiro [Tue, 20 Jul 2021 05:57:56 +0000 (14:57 +0900)]
test/py: efi_capsule: align with efidebug syntax changes

After the commit c70f44817d46 ("efi_loader: simplify 'printenv -e'"),
"-all" option is no longer necessary.
Just remove them in the test script.

Fixes: c70f44817d46 ("efi_loader: simplify 'printenv -e'")
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
3 years agoefi_loader: remove asm/setjmp.h from efi_api.h
AKASHI Takahiro [Tue, 20 Jul 2021 05:57:02 +0000 (14:57 +0900)]
efi_loader: remove asm/setjmp.h from efi_api.h

In the commit c982874e930d ("efi_loader: refactor
efi_setup_loaded_image()"), setjmp-related definitions were moved to
efi_loaded_image_obj in efi_loader.h. So setjmp.h is no longer
refererenced in efi_api.h.

This also fixes some error when efi_api.h will be included in
mkeficapsule.c.

Fixes: c982874e930d ("efi_loader: refactor efi_setup_loaded_image()")
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
3 years agoefi_loader: capsule: remove authentication data
AKASHI Takahiro [Tue, 20 Jul 2021 05:52:05 +0000 (14:52 +0900)]
efi_loader: capsule: remove authentication data

If capsule authentication is disabled and yet a capsule file is signed,
its signature must be removed from image data to flush.
Otherwise, the firmware will be corrupted after update.

Fixes: 04be98bd6bcf ("efi: capsule: Add support for uefi capsule
authentication")
Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
3 years agoefi_loader: capsule: remove unused guid
AKASHI Takahiro [Tue, 20 Jul 2021 05:53:11 +0000 (14:53 +0900)]
efi_loader: capsule: remove unused guid

efi_guid_capsule_root_cert_guid is never used.
Just remove it.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
3 years agosmbios: error handling for invalid addresses
Heinrich Schuchardt [Sat, 15 May 2021 16:07:47 +0000 (18:07 +0200)]
smbios: error handling for invalid addresses

SMBIOS tables only support 32bit addresses. If we don't have memory here
handle the error gracefully:

* on x86_64 fail to start U-Boot
* during UEFI booting ignore the missing table

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agosmbios: Fix calculating BIOS Release Date
Pali Rohár [Thu, 22 Apr 2021 16:09:57 +0000 (18:09 +0200)]
smbios: Fix calculating BIOS Release Date

BIOS Release Date must be in format mm/dd/yyyy and must be release date.
U-Boot currently sets BIOS Release Date from U_BOOT_DMI_DATE macro which is
generated from current build timestamp.

Fix this issue by setting U_BOOT_DMI_DATE macro to U-Boot version which is
better approximation of U-Boot release date than current build timestamp.
Current U-Boot versioning is in format yyyy.mm so as a day choose 01.

Some operating systems are using BIOS Release Date for detecting when was
SMBIOS table filled or if it could support some feature (e.g. BIOS from
1990 cannot support features invented in 2000). So this change also ensures
that recompiling U-Boot from same sources but in different year does not
change behavior of some operating systems.

Macro U_BOOT_DMI_DATE is not used in other file than lib/smbios.c
so remove it from global autogenerated files and also from Makefile.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agodoc: fix board/openpiton/riscv64.rst
Heinrich Schuchardt [Sat, 24 Jul 2021 08:43:35 +0000 (10:43 +0200)]
doc: fix board/openpiton/riscv64.rst

* remove duplicate heading to avoid build error with 'make htmldocs'
* length of underlines must match header
* use appropriate header levels
* fix type %s/linux/Linux/

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
3 years agodoc: remove qemu_capsule_update from index
Heinrich Schuchardt [Sat, 24 Jul 2021 08:33:31 +0000 (10:33 +0200)]
doc: remove qemu_capsule_update from index

Commit 316ab801c0d9 ("doc: Update CapsuleUpdate READMEs") deleted file
doc/board/emulation/qemu_capsule_update.rst. Update the index. this avoids

    doc/board/emulation/index.rst:6: WARNING:
    toctree contains reference to nonexisting document
    'board/emulation/qemu_capsule_update'

Fixes: 316ab801c0d9 ("doc: Update CapsuleUpdate READMEs")
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
3 years agodoc: Bring in Makefile documentation
Simon Glass [Thu, 22 Jul 2021 02:09:11 +0000 (20:09 -0600)]
doc: Bring in Makefile documentation

U-Boot uses the Linux Kbuild build system. Add the associated
documentation so that people can understand the Makefiles better.

This is taken from Linux v5.12

Signed-off-by: Simon Glass <sjg@chromium.org>
3 years agoserial: pl011: Resend the character if FIFO is full in debug uart
Chen Baozi [Mon, 19 Jul 2021 07:36:04 +0000 (15:36 +0800)]
serial: pl011: Resend the character if FIFO is full in debug uart

pl01x_putc() might return -EAGAIN if there was no space in FIFO. In that
case, high-level caller should wait until there is space and resend the
character.

Signed-off-by: Chen Baozi <chenbaozi@phytium.com.cn>
Reviewed-by: Stefan Roese <sr@denx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agocommand: Fix SMC and HVC maximum number of arguments
Siew Chin Lim [Thu, 15 Jul 2021 04:38:54 +0000 (12:38 +0800)]
command: Fix SMC and HVC maximum number of arguments

smc and hvc commands take upto 8 user input arguments, the maximum
number of arguments of the U_BOOT_CMD macro should set to 9.

Besides, fix the typo (arg7 -> arg6) in hvc command's help message.

Signed-off-by: Siew Chin Lim <elly.siew.chin.lim@intel.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agoarmv8: Initialize CNTFRQ if at highest exception level
Peter Hoyes [Mon, 12 Jul 2021 14:04:21 +0000 (15:04 +0100)]
armv8: Initialize CNTFRQ if at highest exception level

CNTFRQ_EL0 is only writable from the highest supported exception
level on the platform. For Armv8-A, this is typically EL3, but
technically EL2 and EL3 are optional so it may need to be
initialized at EL2 or EL1. For Armv8-R, the highest exception
level is always EL2.

This patch moves the initialization outside of the switch_el
block and uses a new macro branch_if_not_highest_el which
dynamically detects whether it is at the highest supported
exception level.

Linux's docs state that CNTFRQ_EL0 should be initialized by the
bootloader. If not set, the the U-Boot prompt countdown hangs.

Signed-off-by: Peter Hoyes <Peter.Hoyes@arm.com>
3 years agoserial: serial_msm: Delay initialization to let pins stabilize
Stephan Gerhold [Wed, 14 Jul 2021 08:56:26 +0000 (10:56 +0200)]
serial: serial_msm: Delay initialization to let pins stabilize

For some reason, the DragonBoard 410c aborts autoboot immediately if
U-Boot is started without LK. It looks like it picks up a single broken
character via serial and therefore believes a key was pressed to abort
autoboot.

After some debugging, it seems like adding some delay after pinctrl
setup but before UART initialization fixes the issue. It's also worth
mentioning that unlike when booting from LK, the pinctrl setup is
actually necessary when booting U-Boot without LK since UART is broken
if the pinctrl line is removed.

I suspect that reconfiguring the pins might take some time to stabilize
and if the UART controller is enabled too quickly it will pick up some
random noise. Adding a few milliseconds of delay fixes the issue and
shouldn't have any other negative side effects.

3ms seems to be the minimum delay required in my tests, use 5ms instead
just to be sure.

Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
3 years agoboard: dragonboard410c: Fix fastboot
Stephan Gerhold [Wed, 14 Jul 2021 08:56:25 +0000 (10:56 +0200)]
board: dragonboard410c: Fix fastboot

At the moment pressing the volume down key does not actually launch
fastboot. This is because setting "bootdelay" to "-1" actually
disables autoboot and drops to the U-Boot console. It does not execute
the "bootcmd".

The correct value for "bootdelay" here would be "-2", which disables
the delay and key checking and would immediately execute the "bootcmd".

However, even better in this case is using "preboot" to trigger Fastboot.
The advantage is that running "fastboot continue" will actually continue
the autoboot process instead of ending up in the U-Boot shell.

Also make sure to unset "preboot" again immediately in case the user
saves the environment after triggering fastboot.

Cc: Ramon Fried <rfried.dev@gmail.com>
Fixes: aa043ee91a47 ("db410c: automatically launch fastboot")
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
3 years agoboard: dragonboard410c: Fix PHYS_SDRAM_1_SIZE
Stephan Gerhold [Wed, 14 Jul 2021 08:56:24 +0000 (10:56 +0200)]
board: dragonboard410c: Fix PHYS_SDRAM_1_SIZE

The DragonBoard 410c has proprietary firmware from Qualcomm that
reserves 8 MiB of memory for tz/smem/hyp/rmtfs/rfsa from 0x86000000
to 0x86800000. I'm not aware of any ATF (ARM Trusted Firmware) port
for DB410c that would reserve 30 MiB of memory at the end of RAM.
I suspect the comment might have been copied from hikey.h which has
a very similar comment (and which actually does have an ATF port).

Reducing the memory size just prevents U-Boot from using the end of
the RAM, not the reserved region inbetween. Therefore we might as well
display the correct DRAM size (1 GiB) instead of strange 986 MiB.

Fixes: 626f048bbc14 ("board: Add Qualcomm Dragonboard 410C support")
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
3 years agoboard: dragonboard410c: Load U-Boot directly without LK
Stephan Gerhold [Wed, 7 Jul 2021 09:06:02 +0000 (11:06 +0200)]
board: dragonboard410c: Load U-Boot directly without LK

At the moment the U-Boot port for the DragonBoard 410c is designed
to be loaded as an Android boot image after Qualcomm's Little Kernel (LK)
bootloader. This is simple to set up but LK is redundant in this case,
since everything done by LK can be also done directly by U-Boot.

Dropping LK entirely has at least the following advantages:
  - Easier installation/board code (no need for Android boot images)
  - (Slightly) faster boot
  - Boot directly in 64-bit without a round trip to 32-bit for LK

So far this was not possible yet because of unsolved problems:

  1. Signing tool: The firmware expects a "signed" ELF image with extra
     (Qualcomm-specific) ELF headers, usually used for secure boot.
     The DragonBoard 410c does not have secure boot by default but the
     extra ELF headers are still required.

  2. PSCI bug: There seems to be a bug in the PSCI implementation
     (part of the TrustZone/tz firmware) that causes all other CPU cores
     to be started in 32-bit mode if LK is missing in the boot chain.
     This causes Linux to hang early during boot.

There is a solution for both problems now:

  1. qtestsign (https://github.com/msm8916-mainline/qtestsign)
     can be used as a "signing" tool for U-Boot and other firmware.

  2. A workaround for the "PSCI bug" is to execute the TZ syscall when
     entering U-Boot. That way PSCI is made aware of the 64-bit switch
     and starts all other CPU cores in 64-bit mode as well.

Simplify the dragonboard410c board by removing all the extra code that
is only used to build an Android boot image that can be loaded by LK.
This allows dropping the custom linker script, special image magic,
as well as most of the special build/installation instructions.

CONFIG_REMAKE_ELF is used to build a new ELF image that has both U-Boot
and the appended DTB combined. The resulting u-boot.elf can then be
passed to the "signing" tool (e.g. qtestsign).

The PSCI workaround is placed in the "boot0" hook that is enabled
with CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK. The extra check for EL1 allows
compatibility with custom firmware that enters U-Boot in EL2 or EL3,
e.g. qhypstub (https://github.com/msm8916-mainline/qhypstub).

As a first step these changes apply only to DragonBoard410c.
Similar changes could likely also work for the DragonBoard 820c.

Note that removing LK wouldn't be possible that easily without a lot of
work already done three years ago by Ramon Fried. A lot of missing
initialization, pinctrl etc was already added back then even though
it was not strictly needed yet.

Cc: Ramon Fried <rfried.dev@gmail.com>
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
3 years agoconfigs: synquacer: Ignore OsIndications on DeveloperBox
Masami Hiramatsu [Mon, 12 Jul 2021 10:36:49 +0000 (19:36 +0900)]
configs: synquacer: Ignore OsIndications on DeveloperBox

Since we can not set OsIndications from Runtime Services
SetVariables at this moment, it is better to ignore the
OsIndications if there is any capsule file in the
correct place.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
3 years agoconfigs: synquacer: Use RAW capsule image instead of FIT
Masami Hiramatsu [Mon, 12 Jul 2021 10:36:39 +0000 (19:36 +0900)]
configs: synquacer: Use RAW capsule image instead of FIT

Since the recent commit;

 commit b891ff18f899 ("efi_loader: Force a single FMP instance per hardware store")

forces a single FMP instances for a storage, we can not
enable both RAW and FIT capsule image support at once.
Since RAW capsule image support is simpler than FIT,
enable RAW capsule image instead of FIT by default.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
3 years agoconfigs: synquacer: Enable UEFI secure boot
Masami Hiramatsu [Mon, 12 Jul 2021 10:36:30 +0000 (19:36 +0900)]
configs: synquacer: Enable UEFI secure boot

Enable UEFI secure boot on synquacer. Note that unless user
setup their keys, the secure boot will not work.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
3 years agoconfigs: synquacer: Drop Ext2/4 support by default
Masami Hiramatsu [Mon, 12 Jul 2021 10:36:21 +0000 (19:36 +0900)]
configs: synquacer: Drop Ext2/4 support by default

Since the U-Boot for the SynQuacer DeveloperBox is designed for
compatible with EDK2 boot, we don't need to support Ext2/4 fs
support by default. Drop it.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
3 years agoconfigs: synquacer: Remove mtdparts settings and update DFU setting
Masami Hiramatsu [Mon, 12 Jul 2021 10:36:12 +0000 (19:36 +0900)]
configs: synquacer: Remove mtdparts settings and update DFU setting

Since MTD partitions are based on the devicetree name,
remove unneeded mtdparts settings and update DFU setting.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
3 years agodts: synquacer: Add partition information to the spi-nor
Masami Hiramatsu [Mon, 12 Jul 2021 10:36:03 +0000 (19:36 +0900)]
dts: synquacer: Add partition information to the spi-nor

Add partition information to the spi-nor flash.
This is required for accessing NOR flash via mtdparts.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
Reviewed-by: Marek Behún <marek.behun@nic.cz>
3 years agoconfigs: synquacer: Make U-Boot binary position independent
Masami Hiramatsu [Mon, 12 Jul 2021 10:35:54 +0000 (19:35 +0900)]
configs: synquacer: Make U-Boot binary position independent

Make the U-Boot binary for SynQuacer position independent so
that the previous bootloader (SCP firmware or BL2) can load
the U-Boot anywhere.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
3 years agoboard: synquacer: Initialize SCBM SMMU at board_init()
Masami Hiramatsu [Mon, 12 Jul 2021 10:35:44 +0000 (19:35 +0900)]
board: synquacer: Initialize SCBM SMMU at board_init()

Since the SCBM SMMU is not only connected to the NETSEC
but also shared with the F_SDH30 (eMMC controller), that
should be initialized at board level instead of NETSEC.

Move the SMMU initialization code into board support
and call it from board_init().

Without this fix, if the NETSEC is disabled, the Linux
eMMC ADMA cause an error because SMMU is not initialized.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
3 years agoMerge branch '2021-07-23-reboot-mode-and-cryptfs-passwd-support'
Tom Rini [Fri, 23 Jul 2021 18:50:43 +0000 (14:50 -0400)]
Merge branch '2021-07-23-reboot-mode-and-cryptfs-passwd-support'

- A new driver uclass is created to handle the reboot mode control.
- Add support for libcrypt-style passwords for autoboot

3 years agotest: add first autoboot unit tests
Steffen Jaeckel [Thu, 8 Jul 2021 13:57:40 +0000 (15:57 +0200)]
test: add first autoboot unit tests

This adds tests for the crypt-based and plain SHA256-based password hashing
algorithms in the autoboot flow.

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agocommon: add support to fallback to plain SHA256
Steffen Jaeckel [Thu, 8 Jul 2021 13:57:39 +0000 (15:57 +0200)]
common: add support to fallback to plain SHA256

In case crypt-based hashing is enabled this will be the default mechanism
that is used. If a user wants to have support for both, the environment
variable `bootstopusesha256` can be set to `true` to allow plain SHA256
based hashing of the password.

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agocommon: add AUTOBOOT_FLUSH_STDIN option
Steffen Jaeckel [Thu, 8 Jul 2021 13:57:38 +0000 (15:57 +0200)]
common: add AUTOBOOT_FLUSH_STDIN option

The key-sequence based unlock mechanisms are sensitive to junk symbols
that could have been sent to stdin and are still waiting to be retrieved.
Enabling this option will read all symbols off stdin before displaying the
autoboot prompt (and starting to read the password from stdin).

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agocommon: allow disabling of timeout for password entry
Steffen Jaeckel [Thu, 8 Jul 2021 13:57:37 +0000 (15:57 +0200)]
common: allow disabling of timeout for password entry

In case a user has to enter a complicated password it is sometimes
desireable to give the user more time than the default timeout.
Enabling this feature will disable the timeout entirely in case the user
presses the <Enter> key before entering any other character.

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agocommon: Rename macro appropriately
Steffen Jaeckel [Thu, 8 Jul 2021 13:57:36 +0000 (15:57 +0200)]
common: Rename macro appropriately

While doing code-review internally this got nitpicked by 2 reviewers, so
I decided to include this here.

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heiko Schocher <hs@denx.de>
3 years agocommon: integrate crypt-based passwords
Steffen Jaeckel [Thu, 8 Jul 2021 13:57:35 +0000 (15:57 +0200)]
common: integrate crypt-based passwords

Hook into the autoboot flow as an alternative to the existing
mechanisms.

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heiko Schocher <hs@denx.de>
3 years agolib: wrap crypt API to hide errno usage
Steffen Jaeckel [Thu, 8 Jul 2021 13:57:34 +0000 (15:57 +0200)]
lib: wrap crypt API to hide errno usage

In order to prevent using the global errno, replace it with a static
version and create a wrapper function which returns the error value.

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heiko Schocher <hs@denx.de>
3 years agolib: add crypt subsystem
Steffen Jaeckel [Thu, 8 Jul 2021 13:57:33 +0000 (15:57 +0200)]
lib: add crypt subsystem

Add the basic functionality required to support the standard crypt
format.
The files crypt-sha256.c and crypt-sha512.c originate from libxcrypt and
their formatting is therefor retained.
The integration is done via a crypt_compare() function in crypt.c.

```
libxcrypt $ git describe --long --always --all
tags/v4.4.17-0-g6b110bc
```

Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heiko Schocher <hs@denx.de>
3 years agoreboot-mode: read the boot mode from RTC memory
Nandor Han [Thu, 10 Jun 2021 13:56:45 +0000 (16:56 +0300)]
reboot-mode: read the boot mode from RTC memory

RTC devices could provide battery-backed memory that can be used for
storing the reboot mode magic value.

Add a new reboot-mode back-end that uses RTC to store the reboot-mode
magic value. The driver also supports both endianness modes.

Signed-off-by: Nandor Han <nandor.han@vaisala.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agoreboot-mode: read the boot mode from GPIOs status
Nandor Han [Thu, 10 Jun 2021 13:56:44 +0000 (16:56 +0300)]
reboot-mode: read the boot mode from GPIOs status

A use case for controlling the boot mode is when the user wants
to control the device boot by pushing a button without needing to
go in user-space.

Add a new backed for reboot mode where GPIOs are used to control the
reboot-mode. The driver is able to scan a predefined list of GPIOs
and return the magic value. Having the modes associated with
the magic value generated based on the GPIO values, allows the
reboot mode uclass to select the proper mode.

Signed-off-by: Nandor Han <nandor.han@vaisala.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agoreboot-mode: add support for reboot mode control
Nandor Han [Thu, 10 Jun 2021 13:56:43 +0000 (16:56 +0300)]
reboot-mode: add support for reboot mode control

A new driver uclass is created to handle the reboot mode control.

The new uclass driver is updating an environment variable with the
configured reboot mode. The mode is extracted from a map provided
at initialization time. The map contains a list of modes
and associated ids.

Signed-off-by: Nandor Han <nandor.han@vaisala.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
3 years agoMerge branch '2021-07-23-assorted-fixes'
Tom Rini [Fri, 23 Jul 2021 12:30:48 +0000 (08:30 -0400)]
Merge branch '2021-07-23-assorted-fixes'

- Assorted FIT, optee, pcf8575, mux, vexpress64 and distro bootcmd fixes.
- Allow pinmux status to take pin names

3 years agonet: remove CONFIG_NET_MULTI (again)
Michal Simek [Wed, 14 Jul 2021 07:12:41 +0000 (09:12 +0200)]
net: remove CONFIG_NET_MULTI (again)

CONFIG_NET_MULTI has been removed long time ago by commit 795428fc679f
("net: remove CONFIG_NET_MULTI") but 4 boards were added later which wasn't
found.  The patch is removing this reference from 4 boards.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
3 years agomux: correct prototype for mux_control_try_select()
Patrick Wildt [Tue, 13 Jul 2021 21:02:18 +0000 (23:02 +0200)]
mux: correct prototype for mux_control_try_select()

The macro should be passed a state, which should be passed
to the actual function.  Otherwise using that macro would
yield a build error.

Signed-off-by: Patrick Wildt <patrick@blueri.se>
Reviewed-by: Pratyush Yadav <p.yadav@ti.com>