]> git.dujemihanovic.xyz Git - u-boot.git/log
u-boot.git
5 years agoboard: j721e: Add README
Lokesh Vutla [Wed, 4 Sep 2019 10:31:51 +0000 (16:01 +0530)]
board: j721e: Add README

Add README file explaining the build and boot procedure for J721E evm.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoarmv8: K3: j721e: Updated ddr address regions in MMU table
Kedar Chitnis [Wed, 4 Sep 2019 10:31:50 +0000 (16:01 +0530)]
armv8: K3: j721e: Updated ddr address regions in MMU table

The A72 U-Boot code loads and boots a number of remote processors
including the C71x DSP, both the C66_0 and C66_1 DSPs, and the various
Main R5FSS Cores. In order to view the code loaded by the U-Boot by
remote cores, U-Boot should configure the memory region with right
memory attributes. Right now U-Boot carves out a memory region which
is not sufficient for all the images to be loaded. So, increase this
carve out region by 256MB.

Signed-off-by: Kedar Chitnis <kedarc@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoarmv8: K3: am65x: Update DDR address regions in MMU table
Suman Anna [Wed, 4 Sep 2019 10:31:49 +0000 (16:01 +0530)]
armv8: K3: am65x: Update DDR address regions in MMU table

The A53 U-Boot code can load and boot the MCU domain R5F cores (either a
single core in LockStep mode or 2 cores in Split mode) to achieve various
early system functionalities. Change the memory attributes for the DDR
regions used by the remote processors so that the cores can see and
execute the proper code loaded by U-Boot.

These regions are currently limited to 0xa0000000 to 0xa2100000 as per
the DDR carveouts assigned for these R5F cores in the overall DDR memory
map.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoconfigs: am65x_evm_a53: Enhance bootcmd to start remoteprocs
Suman Anna [Wed, 4 Sep 2019 10:31:48 +0000 (16:01 +0530)]
configs: am65x_evm_a53: Enhance bootcmd to start remoteprocs

The A53 U-boot can support early booting of the MCU R5F remote processor(s)
from U-boot prompt to achieve various system usecases before booting the
Linux kernel. Update the default BOOTCOMMAND to provide an automatic and
easier way to start the MCU R5F cores through added environment variables.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoconfigs: am65x_evm_a53: Enable R5F remoteproc driver
Suman Anna [Wed, 4 Sep 2019 10:31:47 +0000 (16:01 +0530)]
configs: am65x_evm_a53: Enable R5F remoteproc driver

Enable the R5F remoteproc driver for the AM65x GP EVM so that the
MCU domain R5F cores can be booted from A53 U-boot.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoconfigs: j721e_evm_a72: Enhance bootcmd to start remoteprocs
Suman Anna [Wed, 4 Sep 2019 10:31:46 +0000 (16:01 +0530)]
configs: j721e_evm_a72: Enhance bootcmd to start remoteprocs

The A72 U-boot can support early booting of any of the R5F or C66x
or C71x remote processors from U-boot prompt to achieve various system
usecases before booting the Linux kernel. Update the default BOOTCOMMAND
to provide an automatic and easier way to start various remote processors
through added environment variables.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
5 years agoconfigs: j721e_evm_a72: Enable R5F and DSP remoteproc driver
Lokesh Vutla [Wed, 4 Sep 2019 10:31:45 +0000 (16:01 +0530)]
configs: j721e_evm_a72: Enable R5F and DSP remoteproc driver

Enable R5F and DSP remoteproc drivers for j721e running on a72.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoenv: ti: am65x_evm: Add env support to boot the MCU R5F rprocs
Suman Anna [Wed, 4 Sep 2019 10:31:44 +0000 (16:01 +0530)]
env: ti: am65x_evm: Add env support to boot the MCU R5F rprocs

Add support to boot the MCU domain R5F Core0 remoteproc at U-boot prompt
on the AM65x EVM boards by using the 'boot_rprocs' and other env variables
defined in the common environment file k3_rproc.h, and updating the
'DEFAULT_RPROCS' macro.

The default configuration is to use the MCU R5F in Split mode, so both
the R5F Core0 and Core1 are started before loading and booting the Linux
kernel using the following firmware:
   MCU R5FSS0 Core0 (Split) : 0 /lib/firmware/am65x-mcu-r5f0_0-fw
   MCU R5FSS0 Core1 (Split) : 1 /lib/firmware/am65x-mcu-r5f0_1-fw

The MCU R5FSS was initially running the R5 SPL in LockStep mode with ATCM
disabled, and is actually shutdown to enable it to be reconfigured and
booted by either A53 U-Boot or Linux kernel in remoteproc mode and using
ATCM.

The MCU R5FSS would need to be reconfigured for Lockstep mode through
DT if a fault-tolerant/safety application were to be run on the cluster
with the DEFAULT_RPROCS macro updated to remove the Core1 firmware.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoenv: ti: j721e-evm: Add support to boot rprocs including R5Fs and DSPs
Suman Anna [Wed, 4 Sep 2019 10:31:43 +0000 (16:01 +0530)]
env: ti: j721e-evm: Add support to boot rprocs including R5Fs and DSPs

Add support to boot some remoteprocs at U-boot prompt on the J721E EVM
boards by using the 'boot_rprocs' and other env variables defined in the
common environment file k3_rproc.h, and updating the 'DEFAULT_RPROCS'
macro.

The list of R5F cores to be started before loading and booting the Linux
kernel are as follows, and in this order:
   Main R5FSS0 (Split) Core1 : 3 /lib/firmware/j7-main-r5f0_1-fw
   Main R5FSS1 (LockStep)    : 4 /lib/firmware/j7-main-r5f1_0-fw

The MCU R5FSS0 and Main R5FSS1 are currently in LockStep mode, so the
equivalent Core1 rprocs (rproc #1 and #5) are not included. The Main
R5FSS0 Core0 (rproc #2) is already started by R5 SPL, so is not included
in the list either.

The DSP cores are started in the following order before loading and
booting the Linux kernel:
   C66_0: 6 /lib/firmware/j7-c66_0-fw
   C66_1: 7 /lib/firmware/j7-c66_1-fw
   C71_0: 8 /lib/firmware/j7-c71_0-fw

The order of the rprocs to boot can be changed at runtime if desired by
overwriting the 'rproc_fw_binaries' environment variable at U-boot prompt.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoenv: ti: k3_rproc: Add common rproc environment variables
Suman Anna [Wed, 4 Sep 2019 10:31:42 +0000 (16:01 +0530)]
env: ti: k3_rproc: Add common rproc environment variables

Add a new file include/environment/ti/k3_rproc.h that defines
common environment variables useful for booting various remote
processors from U-Boot. This file is expected to be included in
the board config files with the EXTRA_ENV_RPROC_SETTINGS added
to CONFIG_EXTRA_ENV_SETTINGS and DEFAULT_RPROCS macro overwritten
to include the actual list of processors to be booted.

The 'boot_rprocs' variable just needs to be added to the board's
bootcmd to automatically boot the processors, and runtime control
can be achieved through the 'dorprocboot' variable.

The variables are currently defined to use MMC as the boot media,
and can be expanded in the future to include other boot media.
The immediate usage is intended for K3 J721E SoCs.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
5 years agoarm: dts: k3-am65-mcu: Add MCU domain R5F DT nodes
Suman Anna [Wed, 4 Sep 2019 10:31:41 +0000 (16:01 +0530)]
arm: dts: k3-am65-mcu: Add MCU domain R5F DT nodes

The AM65x SoCs has a single dual-core Arm Cortex-R5F processor
subsystem/cluster (MCU_R5FSS0) within the MCU domain. This cluster
can be configured at boot time to be either run in a LockStep mode
or in an Asymmetric Multi Processing (AMP) fashion in Split-mode.
This subsystem has 64 KB each Tightly-Coupled Memory (TCM) internal
memories for each core split between two banks - ATCM and BTCM
(further interleaved into two banks). There are some IP integration
differences from standard Arm R5 clusters such as the absence of
an ACP port, presence of an additional TI-specific Region Address
Translater (RAT) module for translating 32-bit CPU addresses into
larger system bus addresses etc.

Add the DT node for the MCU domain R5F cluster/subsystem, the two
R5 cores are added as child nodes to the main cluster/subsystem node.
The cluster is configured to run in Split-mode by default, with the
ATCMs enabled to allow the R5 cores to execute code from DDR with
boot-strapping code from ATCM. The inter-processor communication
between the main A72 cores and these processors is achieved through
shared memory and Mailboxes.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoarm: dts: k3-j721e-main: Add C71x DSP node
Lokesh Vutla [Wed, 4 Sep 2019 10:31:40 +0000 (16:01 +0530)]
arm: dts: k3-j721e-main: Add C71x DSP node

The J721E SoCs have a single TMS320C71x DSP Subsystem in the MAIN
voltage domain containing the next-generation C711 CPU core. The
subsystem has 32 KB of L1D configurable SRAM/Cache and 512 KB of
L2 configurable SRAM/Cache. This subsystem has a CMMU but is not
used currently. The inter-processor communication between the main
A72 cores and the C711 processor is achieved through shared memory
and a Mailbox. Add the DT node for this DSP processor sub-system
in the common k3-j721e-main.dtsi file.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoarm: dts: k3-j721e-main: Add C66x DSP nodes
Lokesh Vutla [Wed, 4 Sep 2019 10:31:39 +0000 (16:01 +0530)]
arm: dts: k3-j721e-main: Add C66x DSP nodes

The J721E SoCs have two TMS320C66x DSP Core Subsystems (C66x CorePacs)
in the MAIN voltage domain, each with a C66x Fixed/Floating-Point DSP
Core, and 32 KB of L1P & L1D configurable SRAMs/Cache and an additional
288 KB of L2 configurable SRAM/Cache. These subsystems do not have
an MMU but contain a Region Address Translator (RAT) sub-module for
translating 32-bit processor addresses into larger bus addresses.
The inter-processor communication between the main A72 cores and
these processors is achieved through shared memory and Mailboxes.
Add the DT nodes for these DSP processor sub-systems in the common
k3-j721e-main.dtsi file.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoarm: dts: k3-j721e-main: Add MAIN domain R5F cluster nodes
Lokesh Vutla [Wed, 4 Sep 2019 10:31:38 +0000 (16:01 +0530)]
arm: dts: k3-j721e-main: Add MAIN domain R5F cluster nodes

The J721E SoCs have 3 dual-core Arm Cortex-R5F processor (R5FSS)
subsystems/clusters. One R5F cluster (MCU_R5FSS0) is present within
the MCU domain, and the remaining two clusters are present in the
MAIN domain (MAIN_R5FSS0 & MAIN_R5FSS1). Each of these can be
configured at boot time to be either run in a LockStep mode or in
an Asymmetric Multi Processing (AMP) fashion in Split-mode. These
subsystems have 64 KB each Tightly-Coupled Memory (TCM) internal
memories for each core split between two banks - ATCM and BTCM
(further interleaved into two banks). There are some IP integration
differences from standard Arm R5 clusters such as the absence of
an ACP port, presence of an additional TI-specific Region Address
Translater (RAT) module for translating 32-bit CPU addresses into
larger system bus addresses etc.

Add the DT nodes for these two MAIN domain R5F cluster/subsystems,
the two R5 cores are each added as child nodes to the corresponding
main cluster node. Configure SS0 in split mode an SS1 in lockstep mode,
with the ATCMs enabled to allow the R5 cores to execute code from DDR
with boot-strapping code from ATCM.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoarm: dts: k3-j721e-mcu: Add MCU domain R5F cluster node
Lokesh Vutla [Wed, 4 Sep 2019 10:31:37 +0000 (16:01 +0530)]
arm: dts: k3-j721e-mcu: Add MCU domain R5F cluster node

The J721E SoCs have 3 dual-core Arm Cortex-R5F processor (R5FSS)
subsystems/clusters. One R5F cluster (MCU_R5FSS0) is present within
the MCU domain, and the remaining two clusters are present in the
MAIN domain (MAIN_R5FSS0 & MAIN_R5FSS1). Each of these can be
configured at boot time to be either run in a LockStep mode or in
an Asymmetric Multi Processing (AMP) fashion in Split-mode. These
subsystems have 64 KB each Tightly-Coupled Memory (TCM) internal
memories for each core split between two banks - ATCM and BTCM
(further interleaved into two banks). There are some IP integration
differences from standard Arm R5 clusters such as the absence of
an ACP port, presence of an additional TI-specific Region Address
Translater (RAT) module for translating 32-bit CPU addresses into
larger system bus addresses etc.

Add the DT node for the MCU domain R5F cluster/subsystem, the two
R5 cores are added as child nodes to the main cluster/subsystem node.
The cluster is configured to run in LockStep mode by default, with the
ATCMs enabled to allow the R5 cores to execute code from DDR with
boot-strapping code from ATCM. The inter-processor communication
between the main A72 cores and these processors is achieved through
shared memory and Mailboxes.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoremoteproc: Introduce K3 C66 and C71 remoteproc driver
Lokesh Vutla [Wed, 4 Sep 2019 10:31:36 +0000 (16:01 +0530)]
remoteproc: Introduce K3 C66 and C71 remoteproc driver

Certain SoCs with K3 architecture have integrated a C66 Corepac DSP
subsystem and an advanced C71 DSPs. Introduce a remoteproc driver
that that does take care of loading an elf to any of the specified
DSPs and start it.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
5 years agodt-bindings: remoteproc: Add bindings for DSP C66x clusters on TI K3 SoCs
Suman Anna [Wed, 4 Sep 2019 10:31:35 +0000 (16:01 +0530)]
dt-bindings: remoteproc: Add bindings for DSP C66x clusters on TI K3 SoCs

Some Texas Instruments K3 family of SoCs have one of more Digital Signal
Processor (DSP) subsystems that are comprised of either a TMS320C66x
CorePac and/or a next-generation TMS320C71x CorePac processor subsystem.
Add the device tree bindings document for the C66x DSP devices on these
SoCs. The added example illustrates the DT nodes for the first C66x DSP
device present on the K3 J721E family of SoCs.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoremoteproc: Introduce K3 remoteproc driver for R5F subsystem
Lokesh Vutla [Wed, 4 Sep 2019 10:31:34 +0000 (16:01 +0530)]
remoteproc: Introduce K3 remoteproc driver for R5F subsystem

SoCs with K3 architecture have an integrated Arm Cortex-R5F subsystem
that is comprised of dual-core Arm Cortex-R5F processor cores. This R5
subsytem can be configured at boot time to be either run in a LockStep
mode or in an Asymmetric Multi Processing (AMP) fashion in Split-mode.
This subsystem has each Tightly-Coupled Memory (TCM) internal memories
for each core split between two banks - TCMA and TCMB.

Add a remoteproc driver to support this subsystem to be able to load
and boot the R5 cores primarily in LockStep mode or split mode.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
5 years agodt-bindings: remoteproc: Add bindings for R5F subsystem on TI K3 SoCs
Suman Anna [Wed, 4 Sep 2019 10:31:33 +0000 (16:01 +0530)]
dt-bindings: remoteproc: Add bindings for R5F subsystem on TI K3 SoCs

The Texas Instruments K3 family of SoCs have one of more dual-core
Arm Cortex R5F processor subsystems/clusters (R5FSS). Add the device
tree bindings document for these R5F subsystem devices. These R5F
processors do not have an MMU, and so require fixed memory carveout
regions matching the firmware image addresses. The nodes require more
than one memory region, with the first memory region used for DMA
allocations at runtime. The remaining memory regions are reserved
and are used for the loading and running of the R5F remote processors.

The added example illustrates the DT nodes for the single R5FSS device
present on K3 AM65x family of SoCs.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoremoteproc: tisci_proc: Add helper api for controlling core power domain
Lokesh Vutla [Wed, 4 Sep 2019 10:31:32 +0000 (16:01 +0530)]
remoteproc: tisci_proc: Add helper api for controlling core power domain

Power domain for the remote cores needs to be handled in a right
sequence as mandated by the spec. Introduce tisci helper apis
that can control power-domains of remote cores. TISCI clients
can use this api and control the remote cores power domain instead
of hooking it to power-domain layer.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoremoteproc: elf_loader: Introduce rproc_elf_get_boot_addr() api
Lokesh Vutla [Wed, 4 Sep 2019 10:31:31 +0000 (16:01 +0530)]
remoteproc: elf_loader: Introduce rproc_elf_get_boot_addr() api

Introduce rproc_elf_get_boot_addr() that returns the entry point of
the elf file. This api auto detects the 64/32 bit elf file and returns
the boot addr accordingly.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoremoteproc: elf_loader: Introduce a common elf loader and checker functions
Lokesh Vutla [Wed, 4 Sep 2019 10:31:30 +0000 (16:01 +0530)]
remoteproc: elf_loader: Introduce a common elf loader and checker functions

Introduce a common remoteproc elf loader and checker functions that
automatically detects the 64 bit elf file or 32 bit elf file and
loads/checks the sections accordingly.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>
5 years agoremoteproc: elf-loader: Add 64 bit elf loading support
Lokesh Vutla [Wed, 4 Sep 2019 10:31:29 +0000 (16:01 +0530)]
remoteproc: elf-loader: Add 64 bit elf loading support

The current rproc-elf-loader supports loading of only 32 bit elf files.
Introduce support for loading of 64 bit elf files in rproc-elf-loader.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>
5 years agoremoteproc: elf_loader: Always check the validity of the image before loading
Lokesh Vutla [Wed, 4 Sep 2019 10:31:28 +0000 (16:01 +0530)]
remoteproc: elf_loader: Always check the validity of the image before loading

rproc_elf32_load_image() rely on user to send a valid address for elf loading.
Instead do a sanity check on the address passed by user. This will help
all rproc elf users to not call sanity_check explicitly before calling
elf_loading.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>
5 years agoremoteproc: ops: Add elf section size as input parameter to device_to_virt api
Lokesh Vutla [Wed, 4 Sep 2019 10:31:27 +0000 (16:01 +0530)]
remoteproc: ops: Add elf section size as input parameter to device_to_virt api

Introduce a new parameter "size" that accepts size of the region to
remoteproc ops callback device_to_virt(). This can enforce more checks
on the region that device_to_virt() is dealing with.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Tested-by: Fabien Dessenne <fabien.dessenne@st.com>
Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>
5 years agodm: core: Add a function to count the children of a device
Lokesh Vutla [Wed, 4 Sep 2019 10:31:26 +0000 (16:01 +0530)]
dm: core: Add a function to count the children of a device

Add a function to count the available children of a device.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
5 years agoboard: ti: am65x: Add UART boot procedure in README
Andreas Dannenberg [Thu, 15 Aug 2019 20:55:32 +0000 (15:55 -0500)]
board: ti: am65x: Add UART boot procedure in README

am65x ROM support booting over UART. And U-Boot built for am65x EVM
supports UART boot as well. Add the UART boot procedure into the README
also providing a corresponding example command sequence for execution
on a host PC.

Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
5 years agoconfigs: am65x_evm_r5: Activate early console functionality
Andreas Dannenberg [Thu, 15 Aug 2019 20:55:31 +0000 (15:55 -0500)]
configs: am65x_evm_r5: Activate early console functionality

Activate early console functionality on AM654x devices to allow for an
alternate serial port to be used to support UART-based boot. This is so
that System Firmware (SYSFW) can get loaded over the serial port prior
to the main console being brought up and made available.

Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
5 years agoarmv7R: dts: k3: am654: Add MCU_UART0 related definitions
Andreas Dannenberg [Thu, 15 Aug 2019 20:55:30 +0000 (15:55 -0500)]
armv7R: dts: k3: am654: Add MCU_UART0 related definitions

Although we currently use the MAIN_UART0 for R5 SPL console output there
are cases where we require access to the MCU_UART0 as well for example in
case of UART-based Y-Modem boot. To support these scenarios add related
DTS definitions to be able to use that UART early on.

Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
5 years agoarm: K3: sysfw-loader: Allow loading SYSFW via Y-Modem
Andreas Dannenberg [Thu, 15 Aug 2019 20:55:29 +0000 (15:55 -0500)]
arm: K3: sysfw-loader: Allow loading SYSFW via Y-Modem

In order to allow booting TI K3 family SoCs via Y-Modem add support for
loading System Firmware by tapping into the associated SPL core loader
function.

In this context also make sure a console is available and if not go
ahead and activate the early console feature which allows bringing up
an alternate full console before the main console is activated. Such
an alternate console is typically setup in a way that the associated
UART can be fully initialized prior to SYSFW services being available.

Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
5 years agoarm: K3: common: Allow for early console functionality
Andreas Dannenberg [Thu, 15 Aug 2019 20:55:28 +0000 (15:55 -0500)]
arm: K3: common: Allow for early console functionality

Implement an early console functionality in SPL that can be used before
the main console is being brought up. This helps in situations where the
main console is dependent on System Firmware (SYSFW) being up and running,
which is usually not the case during the very early stages of boot. Using
this early console functionality will allow for an alternate serial port
to be used to support things like UART-based boot and early diagnostic
messages until the main console is ready to get activated.

Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
5 years agospl: ymodem: Make SPL Y-Modem loader framework accessible
Andreas Dannenberg [Thu, 15 Aug 2019 20:55:27 +0000 (15:55 -0500)]
spl: ymodem: Make SPL Y-Modem loader framework accessible

Expose SPL's Y-Modem core loader function via the common SPL header
file so it can be re-used for purposes other than loading U-Boot itself.

Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
5 years agospl: ymodem: Fix FIT loading termination handling
Andreas Dannenberg [Thu, 15 Aug 2019 20:55:26 +0000 (15:55 -0500)]
spl: ymodem: Fix FIT loading termination handling

During FIT reading through ymodem_read_fit() the function
xyzModem_stream_read() is being used which returns zero once the end
of a stream has been reached. This could lead to an premature exit from
ymodem_read_fit() with certain-sized FIT images reporting that zero
bytes overall were read. Such a premature exit would then result in an
-EIO failure being triggered within the spl_load_simple_fit() caller
function and ultimately lead to a boot failure.

Fix this logic by simply aborting the stream read loops and continuing
with the regular code flow which ultimately would lead to returning
the number of bytes to be read ('size') as expected by the callers of
ymodem_read_fit().

Fixes: fa715193c083 ("spl: Add an option to load a FIT containing U-Boot from UART")
Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
5 years agoMerge tag 'xilinx-for-v2020.01' of https://gitlab.denx.de/u-boot/custodians/u-boot...
Tom Rini [Wed, 9 Oct 2019 20:22:03 +0000 (16:22 -0400)]
Merge tag 'xilinx-for-v2020.01' of https://gitlab.denx.de/u-boot/custodians/u-boot-microblaze

Xilinx/FPGA changes for v2020.01

FPGA:
- Enable fpga loading on Versal
- Minor fix

Microblaze:
- Fix LMB configurations to support initrds
- Some other cleanups

Zynq:
- Minor config/dt changes
- Add distro boot support for usb1 and mmc1
- Remove Xilinx private boot commands and use only distro boot

ZynqMP:
- Kconfig cleanups, defconfig updates
- Update some dt files
- Add firmware driver for talking to PMUFW
- Extend distro boot support for jtag
- Add new IDs
- Add system controller configurations
- Convert code to talk firmware via mailbox or SMCs

Versal:
- Add board_late_init()
- Add run time DT memory setup
- Add DFU support
- Extend distro boot support for jtag and dfu
- Add clock driver
- Tune mini configurations

Xilinx:
- Improve documentation (boot scripts, dt binding)
- Enable run time initrd_high calculation
- Define default SYS_PROMPT
- Add zynq/zynqmp virtual defconfig

Drivers:
- Add Xilinx mailbox driver for talking to firmware
- Clean zynq_gem for Versal
- Move ZYNQ_HISPD_BROKEN to Kconfig
- Wire genphy_init() in phy.c
- Add Xilinx gii2rgmii bridge
- Cleanup zynq_sdhci
- dwc3 fix
- zynq_gpio fix
- axi_emac fix

Others:
- apalis-tk1 - clean config file

5 years agotravis: Move keystone 3 (k3) boards into the k2 job
Tom Rini [Wed, 9 Oct 2019 15:02:21 +0000 (11:02 -0400)]
travis: Move keystone 3 (k3) boards into the k2 job

Build the keystone 3 platforms with the keystone 2 platforms, in order
to get back more room in the "catch-all" build jobs.

Signed-off-by: Tom Rini <trini@konsulko.com>
5 years agotravis: Split bcm SoCs into their own build job
Tom Rini [Wed, 9 Oct 2019 15:01:06 +0000 (11:01 -0400)]
travis: Split bcm SoCs into their own build job

As both "catch-all" ARM jobs are nearing their time limit, move all of
the bcm SoC boards into a single job.

Signed-off-by: Tom Rini <trini@konsulko.com>
5 years agoMerge tag 'u-boot-imx-20191009' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx
Tom Rini [Wed, 9 Oct 2019 13:35:43 +0000 (09:35 -0400)]
Merge tag 'u-boot-imx-20191009' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx

u-boot-imx-20191009
-------------------

Travis : https://travis-ci.org/sbabic/u-boot-imx/builds/595148532

- MX6UL / ULZ
- Toradex board
- Allow to set OCRAM for MX6Q/D
- MX7ULP
- MX8: (container image, imx8mq_mek), SCU API
- fix several board booting from SD/EMMC (cubox-i for example)
- pico boards

[trini: display5 merged manually]
Signed-off-by: Tom Rini <trini@konsulko.com>
5 years agoMerge https://gitlab.denx.de/u-boot/custodians/u-boot-marvell
Tom Rini [Tue, 8 Oct 2019 22:45:49 +0000 (18:45 -0400)]
Merge https://gitlab.denx.de/u-boot/custodians/u-boot-marvell

- Move WATCHDOG_TIMEOUT_MSECS to Kconfig (Heiko)

5 years agoMerge https://gitlab.denx.de/u-boot/custodians/u-boot-x86
Tom Rini [Tue, 8 Oct 2019 22:45:26 +0000 (18:45 -0400)]
Merge https://gitlab.denx.de/u-boot/custodians/u-boot-x86

- Rename existing FSP code to fsp1
- Add fsp2 directory in preparation to support FSP 2.0
- Various x86 platform codes update
- Various bug fixes and updates in dm core, sandbox and spl

5 years agoMerge tag 'u-boot-atmel-2020.01-a' of https://gitlab.denx.de/u-boot/custodians/u...
Tom Rini [Tue, 8 Oct 2019 22:43:56 +0000 (18:43 -0400)]
Merge tag 'u-boot-atmel-2020.01-a' of https://gitlab.denx.de/u-boot/custodians/u-boot-atmel

First set of u-boot-atmel features and fixes for 2020.01 cycle

The feature set includes support for two new boards from Microchip AT91:
The sama5d27_wlsom1_ek , an evaluation kit which includes the SAMA5D2
SOC packaged in a 256 MB LPDDR2 SIP, on a SOM including wireless, which
is placed on evaluation kit with sd-card, ethernet, LCD, Camera sensor,
QSPI, etc
The sam9x60ek, an evaluation kit for the new SoC based on ARM926j , the
SAM9X60 . The evaluation kit includes NAND flash, QSPI, Ethernet, Audio,
Camera sensor connector, etc.
The full support for sam9x60ek will come at a later time. There are
still missing bits regarding the clock support and power management
controller.

5 years agoMerge tag 'efi-2020-01-rc1' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
Tom Rini [Tue, 8 Oct 2019 22:43:37 +0000 (18:43 -0400)]
Merge tag 'efi-2020-01-rc1' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi

Pull request for UEFI sub-system for efi-2020-01-rc1

The major corrections in this pull request are:

Fixes for the SetVariable() boot service.
Device path node for NVMe drives.
Disable CONFIG_CMD_NVEDIT by default.

5 years agoMerge branch '2019-10-08-master-imports'
Tom Rini [Tue, 8 Oct 2019 22:37:19 +0000 (18:37 -0400)]
Merge branch '2019-10-08-master-imports'

- Python3 conversion of genboardscfg.py
- Resync Kconfiglib.py
- Switch to running CI on Ubuntu "bionic" to facilitate Python 3.6 being
  the minimum we use and test.

5 years agotravis.yml: Switch to bionic for the host distribution
Tom Rini [Tue, 8 Oct 2019 12:39:26 +0000 (08:39 -0400)]
travis.yml: Switch to bionic for the host distribution

To match what we're doing in GitLab, move to 'bionic' for these builds
as well.

Signed-off-by: Tom Rini <trini@konsulko.com>
5 years agogitlab-ci: Switch to Ubuntu 18.04 image
Tom Rini [Fri, 4 Oct 2019 16:12:54 +0000 (12:12 -0400)]
gitlab-ci: Switch to Ubuntu 18.04 image

In order to run all filesystem tests we need to have newer ext4 tools,
move up to Ubuntu 18.04 'bionic' for our base.  We need to change
slightly how we invoke the provided grub-mkimage.  This will also make
future python3 work easier.

Signed-off-by: Tom Rini <trini@konsulko.com>
5 years agogitlab-ci: Have buildman use /tmp for output
Tom Rini [Fri, 4 Oct 2019 16:12:53 +0000 (12:12 -0400)]
gitlab-ci: Have buildman use /tmp for output

When running as another user we might not be able to use '..' for
certain directories and this is the default for buildman.  Specify an
output directory instead.

Signed-off-by: Tom Rini <trini@konsulko.com>
5 years agobuildman: Perform tests in a temporary directory
Tom Rini [Mon, 7 Oct 2019 21:17:36 +0000 (17:17 -0400)]
buildman: Perform tests in a temporary directory

We may not always be able to write to the default output directory so
have a temporary directory for our output be created.

Cc: Simon Glass <sjg@chromium.org>
Reviewed-by: Stephen Warren <swarren@wwwdotorg.org>
Suggested-by: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
5 years agoARM: imx6q_logic: Fix MMC2 booting
Adam Ford [Tue, 8 Oct 2019 13:01:12 +0000 (08:01 -0500)]
ARM: imx6q_logic: Fix MMC2 booting

With the reverting of a previous change to spl_boot_device,
this board needs a new solution to determining if we're booting
from MMC1 or MMC2.

This patch creates board_boot_order function which overrides the
standard, and returns not only MMC1, or MMC2, but also can fall
back to NAND or the serial downloader should other boot options
fail.

Signed-off-by: Adam Ford <aford173@gmail.com>
5 years agoRevert "spl: imx6: Let spl_boot_device return USDHC1 or USDHC2"
Adam Ford [Tue, 8 Oct 2019 12:56:44 +0000 (07:56 -0500)]
Revert "spl: imx6: Let spl_boot_device return USDHC1 or USDHC2"

Apologies to everyone whose board I broke by attempting to return
MMC1 or MMC2. I misunderstood how the MMC indexing worked.

This reverts commit 14d319b1856b86e593e01abd0a1e3c2d63b52a8a.

Signed-off-by: Adam Ford <aford173@gmail.com>
5 years agoRevert "imx: mmc_env: update runtime SD/MMC boot env device"
Stefano Babic [Tue, 8 Oct 2019 09:01:53 +0000 (11:01 +0200)]
Revert "imx: mmc_env: update runtime SD/MMC boot env device"

This reverts commit 34f2feb92db6146831bafa696b7b46785c9f6b10.

Signed-off-by: Stefano Babic <sbabic@denx.de>
5 years agoconfigs: sheevaplug disable EFI_UNICODE_CAPITALIZATION
Heinrich Schuchardt [Sun, 6 Oct 2019 13:37:51 +0000 (15:37 +0200)]
configs: sheevaplug disable EFI_UNICODE_CAPITALIZATION

With upcoming patches u-boot.kwb gets too large.

Save 3740 bytes in u-boot.kwb by disabling Unicode support in the UEFI
sub-system.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
5 years agopico-imx7d: Remove dead code for dm_video
Joris Offouga [Mon, 23 Sep 2019 12:54:41 +0000 (14:54 +0200)]
pico-imx7d: Remove dead code for dm_video

Since convert dm_video, unused code introduced, so remove this

Signed-off-by: Joris Offouga <offougajoris@gmail.com>
Reviewed-by: Otavio Salvador <otavio@ossystems.com.br>
5 years agopico-imx7d: fix splash logo drawing
Joris Offouga [Mon, 23 Sep 2019 12:54:40 +0000 (14:54 +0200)]
pico-imx7d: fix splash logo drawing

Signed-off-by: Joris Offouga <offougajoris@gmail.com>
Reviewed-by: Otavio Salvador <otavio@ossystems.com.br>
5 years agoimx: replace CONFIG_SECURE_BOOT with CONFIG_IMX_HAB
Stefano Babic [Fri, 20 Sep 2019 06:47:53 +0000 (08:47 +0200)]
imx: replace CONFIG_SECURE_BOOT with CONFIG_IMX_HAB

CONFIG_SECURE_BOOT is too generic and forbids to use it for cross
architecture purposes. If Secure Boot is required for imx, this means to
enable and use the HAB processor in the soc.

Signed-off-by: Stefano Babic <sbabic@denx.de>
5 years agopinctrl: nxp: DM_FLAG_PRE_RELOC by default
Igor Opaniuk [Wed, 24 Jul 2019 15:09:57 +0000 (18:09 +0300)]
pinctrl: nxp: DM_FLAG_PRE_RELOC by default

For NXP SoCs we have to set pinmux configuration ASAP (ideally
before relocation) to get serial console working. Without this we miss
almost the half of output (U-boot version, CPU defails, Reset cause,
DRAM details etc.).

To achieve this we need to force appropriate pinctrl drivers to get
probed before relocation.

Fixes: cd69e8ef9b ("colibri-imx6ull: migrate pinctrl and regulators to dtb/dm")
Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
5 years agoconfigs: move CONFIG_SPL_TEXT_BASE to Kconfig
Parthiban Nallathambi [Mon, 16 Sep 2019 15:21:50 +0000 (17:21 +0200)]
configs: move CONFIG_SPL_TEXT_BASE to Kconfig

CONFIG_SPL_TEXT_BASE is moved to common/spl/Kconfig, update
pcl063_ull defconfig.

Signed-off-by: Parthiban Nallathambi <pn@denx.de>
5 years agoimx: variscite: Fix regression of SPL and U-boot booting
Saravanan Sekar [Sun, 4 Aug 2019 17:36:42 +0000 (19:36 +0200)]
imx: variscite: Fix regression of SPL and U-boot booting

1. Commit 3a7c45f6a772 ("simple-bus: add DM_FLAG_PRE_RELOC flag to
simple-bus driver") causes some i.MX boards that were converted
to DM, such as warp7, to fail to boot.

As explained by Lukas Auer:

"With the patch, U-Boot probes the drivers for devices under simple-bus
device tree nodes in the pre-relocation device model. The default value
of CONFIG_SYS_MALLOC_F_LEN (0x4000) leaves U-Boot with not enough memory to
do this, causing it to hang."

Fix this problem by providing a convenient default value for
CONFIG_SYS_MALLOC_F_LEN.

2. CONFIG_SPL_TEXT_BASE was moved to Kconfig, so added in defconfig
"configs: move CONFIG_SPL_TEXT_BASE to Kconfig"
(sha1: f89d6133eef2e068f9c33853b6584d7fcbfa9d2e)

Signed-off-by: Saravanan Sekar <saravanan@linumiz.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
5 years agoARM: imx6q_logic: Enable DM_SERIAL
Adam Ford [Wed, 7 Aug 2019 17:05:59 +0000 (12:05 -0500)]
ARM: imx6q_logic: Enable DM_SERIAL

In order to call preloader_console_init from board_init_f when
DM_SERIAL is enabled, it neesd to call spl_early_init() to get early access
to DM and device tree.

This patch calls spl_early_init just before preloader_console_init()
and enables DM_SERIAL and SPL_DM_SERIAL.

Signed-off-by: Adam Ford <aford173@gmail.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
5 years agoARM: imx6qlogic: Cleanup board_init_f
Adam Ford [Wed, 7 Aug 2019 17:05:58 +0000 (12:05 -0500)]
ARM: imx6qlogic: Cleanup board_init_f

Per the workflow found in crt0.S, we don't need to clear BSS in
board_init_f nor do we need to call board_init_r since that will be
done for us from main when we return from board_init_f.

This patch removes the unneeded function calls from board_init_f.

Signed-off-by: Adam Ford <aford173@gmail.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
5 years agomx6ulevk: Include SDP boot instructions in README
Breno Matheus Lima [Thu, 18 Jul 2019 20:44:31 +0000 (20:44 +0000)]
mx6ulevk: Include SDP boot instructions in README

Add instructions on how to boot mx6ul_14x14_evk_defconfig target
using the Serial Download Protocol.

Add examples from uuu and imx_usb_loader tools.

Signed-off-by: Breno Lima <breno.lima@nxp.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
5 years agoddr: imx8m: Fix the ddr init hang on imx8mq
Jacky Bai [Thu, 8 Aug 2019 09:59:11 +0000 (09:59 +0000)]
ddr: imx8m: Fix the ddr init hang on imx8mq

On, i.MX8MQ, the PLL config must be done when ddrmix
isolation is released. So move the dram pll init after
iso config done. For other i.MX8M SOC, either init pll
before or after isolation is ok.

Signed-off-by: Jacky Bai <ping.bai@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agodriver: ddr: Refine the ddr init driver on imx8m
Jacky Bai [Thu, 8 Aug 2019 09:59:08 +0000 (09:59 +0000)]
driver: ddr: Refine the ddr init driver on imx8m

Refine the ddr init driver to make it more reusable for different
DDR type(LPDDR4, DDR4 & DDR3L). So we can reduce some redundant
code.

Signed-off-by: Jacky Bai <ping.bai@nxp.com>
Reviewed-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8mq: Update the ddrc QoS setting for B1 chip
Bai Ping [Thu, 8 Aug 2019 09:59:05 +0000 (09:59 +0000)]
imx8mq: Update the ddrc QoS setting for B1 chip

Update the ddrc Qos setting for B1 to align with B0's setting.
Correct the initial clock for dram_pll. This setting will be
overwrite before ddr phy training. Although there is no impact
on the dram init, we still need to correct it to eliminate
confusion.

Signed-off-by: Bai Ping <ping.bai@nxp.com>
Reviewed-by: Ye Li <ye.li@nxp.com>
Tested-by: Robby Cai <robby.cai@nxp.com>
5 years agoddr: imx8m: Fix ddr4 driver build issue
Ye Li [Thu, 8 Aug 2019 09:59:02 +0000 (09:59 +0000)]
ddr: imx8m: Fix ddr4 driver build issue

Since the parameter of dram_pll_init is changed, update to use new.
Also remove non-existed header file.

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agospi: fsl_qspi: Add support for QSPI on iMX7ULP
Ye Li [Wed, 14 Aug 2019 11:31:40 +0000 (11:31 +0000)]
spi: fsl_qspi: Add support for QSPI on iMX7ULP

Add the compatible string and driver data for iMX7ULP platform

Signed-off-by: Ye Li <ye.li@nxp.com>
5 years agospi: fsl_qspi: Update to use driver data
Ye Li [Wed, 14 Aug 2019 11:31:36 +0000 (11:31 +0000)]
spi: fsl_qspi: Update to use driver data

Add the driver data for each compatible string. So we can remove the
SOC config and use driver data instead.

Signed-off-by: Ye Li <ye.li@nxp.com>
5 years agospi: fsl_qspi: Update write data size for page program LUT
Ye Li [Wed, 14 Aug 2019 11:31:31 +0000 (11:31 +0000)]
spi: fsl_qspi: Update write data size for page program LUT

The write data size can be overwritten by writing to the IDATSZ
field of IPCR register. Since the driver always updates the IDATSZ
in page program operation. Set the LUT data size to 0 to align
the codes with iMX.

Signed-off-by: Ye Li <ye.li@nxp.com>
5 years agospi: fsl_qspi: Fix DDR mode setting for latest iMX platforms
Ye Li [Wed, 14 Aug 2019 11:31:27 +0000 (11:31 +0000)]
spi: fsl_qspi: Fix DDR mode setting for latest iMX platforms

On latest iMX platforms like iMX7D/iMX6UL/iMX8MQ, the QSPI controller
is updated to have TDH field in FLSHCR register. According to reference
manual, this TDH must be set to 1 when DDR_EN is set. Otherwise, the TX
DDR delay logic won't be enabled.

Another issue in DDR mode is the MCR register will be overwritten in
every read/write/erase operation. This causes DDR_EN been cleared while
TDH=1, then no clk2x output for TX data shift and all operations will
fail.

Signed-off-by: Ye Li <ye.li@nxp.com>
5 years agoimx: nandbcb: include long help only when enabled
Parthiban Nallathambi [Fri, 23 Aug 2019 16:35:10 +0000 (18:35 +0200)]
imx: nandbcb: include long help only when enabled

conditionally include long help text when enabled

Signed-off-by: Parthiban Nallathambi <pn@denx.de>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx: initialize fec only when enabled
Parthiban Nallathambi [Fri, 23 Aug 2019 16:35:09 +0000 (18:35 +0200)]
imx: initialize fec only when enabled

board early initialize fec ethernet controller pinmux
only when FEC is enabled

Signed-off-by: Parthiban Nallathambi <pn@denx.de>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx: remove board specific boot order from spl
Parthiban Nallathambi [Fri, 23 Aug 2019 16:35:08 +0000 (18:35 +0200)]
imx: remove board specific boot order from spl

boot order was added to handle both SD and eMMC. But commit
14d319b1 introduced to handle both eMMC and SD globally.

Signed-off-by: Parthiban Nallathambi <pn@denx.de>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx: pcl063: add nand boot support
Parthiban Nallathambi [Fri, 23 Aug 2019 16:19:48 +0000 (18:19 +0200)]
imx: pcl063: add nand boot support

Booting from NAND needs nandbcb and nand boot device selection

Signed-off-by: Parthiban Nallathambi <pn@denx.de>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
5 years agoapalis_imx6: use distroboot by default
Igor Opaniuk [Fri, 23 Aug 2019 17:00:49 +0000 (20:00 +0300)]
apalis_imx6: use distroboot by default

Use distro_bootcmd as default bootcmd instead of legacy wrappers.

Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
5 years agocolibri_imx6/imx7/imx8x: use distroboot by default
Igor Opaniuk [Fri, 23 Aug 2019 17:00:48 +0000 (20:00 +0300)]
colibri_imx6/imx7/imx8x: use distroboot by default

Use distro_bootcmd as defauult bootcmd instead of legacy wrappers.

Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
5 years agomisc: imx8: add more scfw api
Peng Fan [Mon, 23 Sep 2019 10:12:31 +0000 (10:12 +0000)]
misc: imx8: add more scfw api

Add more scfw api for clk/partition/seco usage
The api will be used by ccf/partition/secure boot.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agospl: nor: support loading i.MX container format file
Peng Fan [Mon, 23 Sep 2019 02:18:48 +0000 (10:18 +0800)]
spl: nor: support loading i.MX container format file

i.MX8 only support AHAB secure boot with Container format image,
we could not use FIT to support secure boot, so introduce container
support to let SPL could load container images.

Cc: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Cc: Tien Fong Chee <tien.fong.chee@intel.com>
Cc: York Sun <york.sun@nxp.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Alex Kiernan <alex.kiernan@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Cc: Kever Yang <kever.yang@rock-chips.com>
Cc: Heiko Schocher <hs@denx.de>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agospl: spi: support loading i.MX container format file
Peng Fan [Mon, 23 Sep 2019 02:18:47 +0000 (10:18 +0800)]
spl: spi: support loading i.MX container format file

i.MX8 only support AHAB secure boot with Container format image,
we could not use FIT to support secure boot, so introduce container
support to let SPL could load container images.

Cc: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Cc: Tien Fong Chee <tien.fong.chee@intel.com>
Cc: York Sun <york.sun@nxp.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Alex Kiernan <alex.kiernan@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Cc: Kever Yang <kever.yang@rock-chips.com>
Cc: Heiko Schocher <hs@denx.de>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agospl: nand: support loading i.MX container format file
Peng Fan [Mon, 23 Sep 2019 02:18:46 +0000 (10:18 +0800)]
spl: nand: support loading i.MX container format file

i.MX8 only support AHAB secure boot with Container format image,
we could not use FIT to support secure boot, so introduce container
support to let SPL could load container images.

Cc: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Cc: Tien Fong Chee <tien.fong.chee@intel.com>
Cc: York Sun <york.sun@nxp.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Alex Kiernan <alex.kiernan@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Cc: Kever Yang <kever.yang@rock-chips.com>
Cc: Heiko Schocher <hs@denx.de>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8: update README
Peng Fan [Mon, 23 Sep 2019 02:18:45 +0000 (10:18 +0800)]
imx8: update README

After u-boot.cnt is padded to flash.bin automatically by script,
no need to burn the image mannually, so drop the step.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8: Add support to get container image set size
Peng Fan [Mon, 23 Sep 2019 02:18:44 +0000 (10:18 +0800)]
imx8: Add support to get container image set size

To avoid hardcoded offset when adding u-boot.cnt to flash.bin, we use
flexible offset which is calculated based on the size of the container
image generated int the first stage. And pad u-boot.cnt at 1KB
alignment.

So add code to get the offset when SPL loading u-boot.cnt.

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agospl: nand: Introduce spl_nand_get_uboot_raw_page
Peng Fan [Mon, 23 Sep 2019 02:18:43 +0000 (10:18 +0800)]
spl: nand: Introduce spl_nand_get_uboot_raw_page

Introduce weak spl_nand_get_uboot_raw_page, then platform could
have their own implementation.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Cc: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Cc: Tien Fong Chee <tien.fong.chee@intel.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Andreas Dannenberg <dannenberg@ti.com>
Cc: Alex Kiernan <alex.kiernan@gmail.com>
Cc: Stefan Roese <sr@denx.de>
Cc: Patrick Delaunay <patrick.delaunay@st.com>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Michal Simek <michal.simek@xilinx.com>
5 years agospl: nor: introduce spl_nor_get_uboot_base
Peng Fan [Mon, 23 Sep 2019 02:18:42 +0000 (10:18 +0800)]
spl: nor: introduce spl_nor_get_uboot_base

Introduce weak spl_nor_get_uboot_base, then platform have their own
implementation.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Cc: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Cc: Tien Fong Chee <tien.fong.chee@intel.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Andreas Dannenberg <dannenberg@ti.com>
Cc: Alex Kiernan <alex.kiernan@gmail.com>
Cc: Stefan Roese <sr@denx.de>
Cc: Patrick Delaunay <patrick.delaunay@st.com>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Michal Simek <michal.simek@xilinx.com>
5 years agospl: spi: introduce spl_spi_get_uboot_offs
Peng Fan [Mon, 23 Sep 2019 02:18:41 +0000 (10:18 +0800)]
spl: spi: introduce spl_spi_get_uboot_offs

Introduce a weak function spl_spi_get_uboot_offs, then
platform could have their own implementation.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Cc: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Cc: Tien Fong Chee <tien.fong.chee@intel.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Andreas Dannenberg <dannenberg@ti.com>
Cc: Alex Kiernan <alex.kiernan@gmail.com>
Cc: Stefan Roese <sr@denx.de>
Cc: Patrick Delaunay <patrick.delaunay@st.com>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Michal Simek <michal.simek@xilinx.com>
5 years agospl: mmc: introduce spl_mmc_get_uboot_raw_sector
Peng Fan [Mon, 23 Sep 2019 02:18:40 +0000 (10:18 +0800)]
spl: mmc: introduce spl_mmc_get_uboot_raw_sector

Introduce a weak function spl_mmc_get_uboot_raw_sector, then platform
could have their own implementation.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Cc: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Cc: Tien Fong Chee <tien.fong.chee@intel.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Andreas Dannenberg <dannenberg@ti.com>
Cc: Alex Kiernan <alex.kiernan@gmail.com>
Cc: Stefan Roese <sr@denx.de>
Cc: Patrick Delaunay <patrick.delaunay@st.com>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Michal Simek <michal.simek@xilinx.com>
5 years agoimx: Add i.MX8MM EVK board support.
Peng Fan [Tue, 27 Aug 2019 06:26:08 +0000 (06:26 +0000)]
imx: Add i.MX8MM EVK board support.

Add board and SoC dts
Add ddr training code
support SD/MMC/GPIO/PINCTRL/UART

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoarm: dts: add i.MX8MM pin func
Peng Fan [Tue, 27 Aug 2019 06:26:04 +0000 (06:26 +0000)]
arm: dts: add i.MX8MM pin func

Import i.MX8MM pin func from Linux Kernel,
commit <0a8ad0ffa4d8> ("Merge tag 'for-linus-5.3-ofs1' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux")

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoarm: dts: import i.MX8MM dtsi
Peng Fan [Tue, 27 Aug 2019 06:26:01 +0000 (06:26 +0000)]
arm: dts: import i.MX8MM dtsi

Import i.MX8MM dtsi from Linux Kernel,
commit <0a8ad0ffa4d8> ("Merge tag 'for-linus-5.3-ofs1' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux")

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8m: soc: probe clock device in arch_cpu_init_dm
Peng Fan [Tue, 27 Aug 2019 06:25:58 +0000 (06:25 +0000)]
imx8m: soc: probe clock device in arch_cpu_init_dm

Because we need to get cpu freq in print_cpuinfo at very early stage,
so we need to make sure the ccm be probed.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx: mmc_env: update runtime SD/MMC boot env device
Peng Fan [Tue, 27 Aug 2019 06:25:54 +0000 (06:25 +0000)]
imx: mmc_env: update runtime SD/MMC boot env device

When DM_MMC enabled, the USDHC index in U-Boot is the USDHC port.
To directly return devno, we could avoid add board specific code.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8m: add clk support for i.MX8MM
Peng Fan [Tue, 27 Aug 2019 06:25:51 +0000 (06:25 +0000)]
imx8m: add clk support for i.MX8MM

Introduce clk implementation for i.MX8MM, including pll configuration,
ccm configuration. Mostly will be done clk dm driver,
but such as DRAM part, we still use non clk dm driver, because we
have limited sram.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8m: restructure clock.h
Peng Fan [Tue, 27 Aug 2019 06:25:48 +0000 (06:25 +0000)]
imx8m: restructure clock.h

i.MX8MQ and i.MX8MM use different analog pll design, but they
share same ccm design.
Add clock_imx8mq.h for i.MX8MQ
keep common part in clock.h

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8m: rename clock to clock_imx8mq
Peng Fan [Tue, 27 Aug 2019 06:25:44 +0000 (06:25 +0000)]
imx8m: rename clock to clock_imx8mq

i.MX8MQ and i.MX8MM has totally different pll design, so
rename clock to clock_imx8mq.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8m: restrict reset_cpu
Peng Fan [Tue, 27 Aug 2019 06:25:41 +0000 (06:25 +0000)]
imx8m: restrict reset_cpu

Make reset_cpu only visible when CONFIG_SYSRESET not defined
or CONFIG_SPL_BUILD.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8m: soc: enable SCTR clock before timer init
Peng Fan [Tue, 27 Aug 2019 06:25:37 +0000 (06:25 +0000)]
imx8m: soc: enable SCTR clock before timer init

To i.MX8MM SCTR clock is disabled by ROM, so before timer init
need to enable it.
To i.MX8MQ, it does not hurt the clock is enabled again.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8m: Configure trustzone region 0 for non-secure access
Ye Li [Tue, 27 Aug 2019 06:25:34 +0000 (06:25 +0000)]
imx8m: Configure trustzone region 0 for non-secure access

Set trustzone region 0 to allow both non-secure and secure access
when trust zone is enabled. We found USB controller fails to access
DDR if the default region 0 is secure access only.

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8m: set BYPASS ID SWAP to avoid AXI bus errors
Peng Fan [Tue, 27 Aug 2019 06:25:30 +0000 (06:25 +0000)]
imx8m: set BYPASS ID SWAP to avoid AXI bus errors

set the BYPASS ID SWAP bit (GPR10 bit 1) in order for GPU not to
generated AXI bus errors with TZC380 enabled.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8m: Fix MMU table issue for OPTEE memory
Peng Fan [Tue, 27 Aug 2019 06:25:27 +0000 (06:25 +0000)]
imx8m: Fix MMU table issue for OPTEE memory

When running with OPTEE, the MMU table in u-boot does not remove the OPTEE
memory from its settings. So ARM speculative prefetch in u-boot may access
that OPTEE memory. Due to trust zone is enabled by OPTEE and that memory
is set to secure access, then the speculative prefetch will fail and cause
various memory issue in u-boot.
The fail address register and int_status register in trustzone has logged
that speculative access from u-boot.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx: add i.MX8MM PE property
Peng Fan [Tue, 27 Aug 2019 06:25:23 +0000 (06:25 +0000)]
imx: add i.MX8MM PE property

i.MX8MM does not have LVTTL, it has a PE property

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8m: add pin header for i.MX8MM
Peng Fan [Tue, 27 Aug 2019 06:25:20 +0000 (06:25 +0000)]
imx8m: add pin header for i.MX8MM

Add pin header file for i.MX8MM

To IMX8MM_PAD_NAND_WE_B_USDHC3_CLK, IOMUX_CONFIG_SION needs to be
selected.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx: add get_cpu_rev support for i.MX8MM
Peng Fan [Tue, 27 Aug 2019 06:25:17 +0000 (06:25 +0000)]
imx: add get_cpu_rev support for i.MX8MM

There are several variants based on i.MX8MM, add the support in
get_cpu_rev

Signed-off-by: Peng Fan <peng.fan@nxp.com>
5 years agoimx8m: update imx-regs for i.MX8MM
Peng Fan [Tue, 27 Aug 2019 06:25:14 +0000 (06:25 +0000)]
imx8m: update imx-regs for i.MX8MM

i.MX8MM has similar architecture with i.MX8MQ, but it has totally
different PLL design and register layout change.

Signed-off-by: Peng Fan <peng.fan@nxp.com>