mirror of
https://github.com/smaeul/u-boot.git
synced 2025-09-14 22:16:03 +01:00
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>
20 lines
801 B
Makefile
20 lines
801 B
Makefile
# SPDX-License-Identifier: GPL-2.0+
|
|
#
|
|
# (C) Copyright 2015
|
|
# Texas Instruments Incorporated - https://www.ti.com/
|
|
#
|
|
|
|
obj-$(CONFIG_$(XPL_)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
|