[U-Boot] [PATCH 00/13] System Firmware Loader for TI K3 family SoCs

Andreas Dannenberg
2019-05-07T17:25:29Z

TI K3 SoCs like the AM654x devices are fundamentally dependent on a
firmware called SYSFW (System Firmware) being loaded into the dedicated
DMSC (Device Management and Security Controller) processor to provide
various services via TISCI (Texas Instruments System Control Interface)
to manage device aspects such as core bringup, power, clocks, security,
and so on across the entire SoC.

Currently public U-Boot does not boot on an actual AM654x EVM due to
the missing loading and startup of SYSFW, with this being the only piece
missing preventing a successful boot from SD/MMC-type media. This gap
is addressed with this patch series.

Note that the loading and starting of SYSFW is done in the context of
board_init_f() in SPL which poses some unique challenges due to the very
constrained nature of this environment (minimal amount of SRAM, no DDR
yet available).

In order to be as lean as possible on resource use an approach was chosen
that extends the existing SPL loader framework to be usable beyond the
usual "loading U-Boot" use case. While this patch series only makes
changes to the MMC/SD card loader framework to support eMMC/MMC/SD FS-
and sector/partition-based RAW boot at this time we have this solution
in production today but extended to SPI/OSPI and Y-Modem without any
issues.

While I also have a working solution based on the existing FS loader
framework this has its own challenges, namely by its very nature only
addressing a subset of our use cases (no eMMC/SD RAW boot support for
example), being heavier on resource usage (needing to use ENV to pass
parameters), and not addressing the need to probe the boot peripheral.
This particular framework works well for use cases requiring to load
firmware from FS-based media once DDR is up and U-Boot is in a more
"initialized" state but it is not a one-fits all solution for very
early use in SPL board_init_f() accross different boot modes.

Andreas Dannenberg (10):
mmc: k3_arasan: Allow driver to probe without PDs specified
spl: Allow skipping clearing BSS during relocation
spl: Make image loader infrastructure more universal
arm: K3: Introduce System Firmware loader framework
armV7R: K3: am654: Allow using SPL BSS pre-relocation
armv7R: K3: am654: Use full malloc implementation in SPL
armV7R: K3: am654: Load SYSFW binary and config from boot media
configs: am65x_evm_r5: All sysfw to be loaded via MMC
configs: am65x_hs_evm_r5: All sysfw to be loaded via MMC
configs: am65x_hs_evm: Add Support for eMMC boot

Faiz Abbas (2):
configs: am65x_evm: Add Support for eMMC boot
am65x: README: Add eMMC layout and flash instructions

Lokesh Vutla (1):
armv7R: dts: k3: am654: Update mmc nodes for loading sysfw

arch/arm/dts/k3-am654-r5-base-board.dts | 18 ++
arch/arm/lib/crt0.S | 3 +
arch/arm/mach-k3/Kconfig | 40 +++
arch/arm/mach-k3/Makefile | 1 +
arch/arm/mach-k3/am6_init.c | 34 ++-
arch/arm/mach-k3/include/mach/sysfw-loader.h | 12 +
arch/arm/mach-k3/sysfw-loader.c | 263 +++++++++++++++++++
board/ti/am65x/Kconfig | 1 +
board/ti/am65x/README | 52 ++++
common/spl/Kconfig | 13 +
common/spl/spl_fit.c | 14 +
common/spl/spl_mmc.c | 76 ++++--
configs/am65x_evm_a53_defconfig | 2 +
configs/am65x_evm_r5_defconfig | 7 +-
configs/am65x_hs_evm_a53_defconfig | 2 +
configs/am65x_hs_evm_r5_defconfig | 7 +-
drivers/mmc/k3_arsan_sdhci.c | 16 +-
include/configs/am65x_evm.h | 30 ++-
include/spl.h | 26 ++
19 files changed, 577 insertions(+), 40 deletions(-)
create mode 100644 arch/arm/mach-k3/include/mach/sysfw-loader.h
create mode 100644 arch/arm/mach-k3/sysfw-loader.c

--
2.17.1