Add R-Car Gen4 APMU controller remoteproc driver capable of starting
the Cortex-R52 cores in Renesas R8A779G0 V4H/V4M SoC. The APMU IP is
in fact a power management unit capable of additional operations, but
those are not used by U-Boot so far.
This requires slight adjustment to the SPL entry point code, as that
is being executed on the Cortex-R52 #0 and the Cortex-R52 #0 enters an
endless loop once it starts the rest of the SPL on Cortex-A76 core.
The endless loop now checks for content of APMU CRBARP registers and
tests whether valid VLD_BARP and BAREN_VALID bits are set, if so, the
Cortex-R52 core exits the endless loop and jumps to address started
in CRBARP[31:18] register in ARM mode, which is a trampoline code to
jump to the final entry point.
The trampoline code is in place to avoid limitation of CRBARP[31:18]
address field, which limits the core start address to memory addresses
aligned to 0x40000 or 256 kiB . The trampoline is placed at 0x40000
aligned address and jumps to the final entry point, which can be at
an address with arbitrary alignment at instruction granularity.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
(cherry picked from commit 5769328fab)
20 lines
803 B
Makefile
20 lines
803 B
Makefile
# SPDX-License-Identifier: GPL-2.0+
|
|
#
|
|
# (C) Copyright 2015
|
|
# Texas Instruments Incorporated - https://www.ti.com/
|
|
#
|
|
|
|
obj-$(CONFIG_$(PHASE_)REMOTEPROC) += rproc-uclass.o rproc-elf-loader.o
|
|
|
|
# Remote proc drivers - Please keep this list alphabetically sorted.
|
|
obj-$(CONFIG_K3_SYSTEM_CONTROLLER) += k3_system_controller.o
|
|
obj-$(CONFIG_REMOTEPROC_RENESAS_APMU) += renesas_apmu.o
|
|
obj-$(CONFIG_REMOTEPROC_SANDBOX) += sandbox_testproc.o
|
|
obj-$(CONFIG_REMOTEPROC_STM32_COPRO) += stm32_copro.o
|
|
obj-$(CONFIG_REMOTEPROC_TI_K3_ARM64) += ti_k3_arm64_rproc.o
|
|
obj-$(CONFIG_REMOTEPROC_TI_K3_DSP) += ti_k3_dsp_rproc.o
|
|
obj-$(CONFIG_REMOTEPROC_TI_K3_R5F) += ti_k3_r5f_rproc.o
|
|
obj-$(CONFIG_REMOTEPROC_TI_POWER) += ti_power_proc.o
|
|
obj-$(CONFIG_REMOTEPROC_TI_PRU) += pru_rproc.o
|
|
obj-$(CONFIG_REMOTEPROC_TI_IPU) += ipu_rproc.o
|