summaryrefslogtreecommitdiff
path: root/board/renesas/rcar-common
AgeCommit message (Collapse)Author
2025-01-29ARM: renesas: Rename board/renesas/rcar-common to board/renesas/commonMarek Vasut
Rename directory board/renesas/rcar-common to board/renesas/common and move files. This allows the build system to use HAVE_VENDOR_COMMON_LIB which automatically includes board/$(VENDOR)/common/Makefile . Create temporarily empty board/renesas/common/Makefile to be extended with actual content later in this series. This is a preparatory patch for board Makefile simplification. No functional change so far. Reviewed-by: Quentin Schulz <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2025-01-12arm64: renesas: Convert boards over to is_cortex_a() functionsMarek Vasut
Use generic is_cortex_a() functions instead of open-coded midr_el1 read. No functional change. Reviewed-by: Paul Barker <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2024-12-29arm64: renesas: Add Renesas R-Car V4H SPL implementationMarek Vasut
Add support for building U-Boot SPL for Renesas R-Car Gen4 R8A779G0 V4H SoC. The SPL initializes the DBSC5 DRAM controller, RT-VRAM and loads and starts U-Boot proper on the Cortex-A76 core. The SoC BootROM can not boot the CA76 core directly, instead the SPL starts on the CR52 core which immediately brings up the CA76 core, which in turn starts executing the actual SPL. This is achieved by placing a tiny bit of precompiled Aarch32 code at the very beginning of the SPL. The code consists of some 32 instructions, uses APMU to configure CA76 start address to offset 0x80 Bytes from start of the SPL, and uses APMU to start the CA76 core. The code parts the CR52 core in an endless loop once the CA76 core got started. The 32 instructions are completely arbitrary number, so is the offset 0x80 Bytes from start of SPL, because 0x80 = 128 decimal and 128 / 4 bytes per instruction is 32 instructions. The 32 instructions turned out to be enough to started the CA76 and 0x80 is nicely aligned. Once the SPL completes hardware initialization, the SPL loads U-Boot proper. The u-boot.itb proper fitImage contains 64bit build on u-boot-nodtb.bin and a DT for R8A779G0 V4H White Hawk board and is generated by binman. The u-boot.itb is loaded from SPI NOR offset 0x80000. In order to install this setup on an existing R8A779G0 V4H White Hawk board, build using r8a779g0_whitehawk_defconfig, generate SPI NOR image flash.bin and write flash.bin to SPI NOR offset 0x0 . Finally, configure board MD pin switches according to the R8A779G0 V4H White Hawk board documentation for 40 MHz SPI NOR boot using DMA and restart the board. Signed-off-by: Marek Vasut <[email protected]>
2024-12-29arm64: renesas: Make bottom 128 MiB of DRAM available in EL3Marek Vasut
In case U-Boot runs in EL3, which is the highest privilege level on ARM64, there can be no firmware running that would restrict access to the bottom 128 MiB of DRAM. In fact, it is likely that U-Boot would have to load that firmware into those bottom 128 MiB of DRAM and start that firmware. Make those bottom 128 MiB of DRAM available in case U-Boot runs in EL3 to allow loading the firmware to that area. Signed-off-by: Marek Vasut <[email protected]>
2024-12-29arm64: renesas: Split R-Car Gen3 and Gen4 common board codeMarek Vasut
Split common board code for R-Car Gen3 and Gen4 into separate files. The R-Car Gen3 board code contains fixups specific to TFA which are no longer required on R-Car Gen4, keep those fixups in its own file so they would not interfere with Gen4. Signed-off-by: Marek Vasut <[email protected]>
2024-12-29arm64: renesas: Deduplicate R-Car Gen4 board filesMarek Vasut
All R-Car Gen4 board files are copies of one another at this point. Deduplicate them into single board/renesas/rcar-common/gen4-common.c and remove all the duplicates. The one exception is R-Car V3U Falcon board, which enables RWDT reset in board_init(), conditionally build RWDT enablement in board_init() in the new common code for V3U. Signed-off-by: Marek Vasut <[email protected]>
2024-03-02ARM: renesas: Rename rmobile.h to renesas.hMarek Vasut
Rename rmobile.h to renesas.h because all the chips are made by Renesas, while only a subset of them is from the R-Mobile line. Use the following command to perform the rename: " $ git grep -l 'include.*rmobile.h' | \ xargs -I {} sed -i '/include.*rmobile.h/ [email protected]@renesas.h@g' {} " Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2024-01-27ARM: renesas: Drop include common.hMarek Vasut
The header file is not necessary in either of those files, remove it as common.h is going away. Include missing asm/arch/rmobile.h in board/renesas/rcar-common/v3-common.c to prevent build failure of r8a77970_eagle r8a779a0_falcon r8a77980_v3hsk and r8a77970_v3msk . Include missing asm/u-boot.h in falcon.c and grpeach.c to fix build failure due to missing definition of struct bd_info . Include errno.h in grpeach.c to fix build error due to missing definition of EINVAL. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2023-06-12Merge tag v2023.07-rc4 into nextTom Rini
Signed-off-by: Tom Rini <[email protected]>
2023-06-10renesas: rcar: Apply ATF overlay for reserved-memoryDetlev Casanova
The function fdtdec_board_setup() is called early and adds the overlay from ATF to the u-boot device tree. That is necessary so that u-boot doesn't use reserved memory. Linux also needs to know about that reserved memory so the overlay from ATF needs to be aplied on the linux device tree as well. This commit makes sure that the ATF overlay is applied to both device trees. Signed-off-by: Detlev Casanova <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Reviewed-by: Adam Ford <[email protected]>
2023-06-08ARM: rmobile: Introduce weak default board_init()Marek Vasut
Introduce weak default board_init() in rcar-common/common.c , which allows complete removal of ebisu.c and condor.c at the same time . Signed-off-by: Marek Vasut <[email protected]>
2023-06-08ARM: rmobile: Factor out common R-Car V3M/V3H board codeMarek Vasut
Pull common board initialization code from V3M Eagle board into rcar-common/v3-common.c so it can be re-used by other V3M/V3H boards. Signed-off-by: Marek Vasut <[email protected]>
2023-06-08ARM: rmobile: Deduplicate R-Car Gen3/Gen4 reset_cpu()Marek Vasut
The reset_cpu() implementation is basically the same across Gen3 SoCs and identical across Gen4 SoCs. Introduce weak default for reset_cpu(), so that it does not have to be duplicated in every board file again. There is a slight difference for CA53 only systems, like E3 and D3, which now check MIDR for CPU ID first just like the other systems, but this is OK since the MIDR always returns CA53 core type and the correct reset register is written. Signed-off-by: Marek Vasut <[email protected]>
2023-04-07ARM: rmobile: Add R-Car Generation 4 supportHai Pham
This adds R-Car Generation 4 (Gen4) support as Renesas ARM64 SoC. In this version, reusing R-Car Gen3 lowlevel initialize routine [1] and R-Car Gen3 memory map tables [2] . [1] arch/arm/mach-rmobile/lowlevel_init_gen3.S [2] arch/arm/mach-rmobile/memmap-gen3.c Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Hai Pham <[email protected]> Signed-off-by: Marek Vasut <[email protected]> [Marek: - Enable DTO support by default - Sort the Kconfig lists - Select RCAR_64 Kconfig option to pull in all the shared Kconfig options with Gen3, and use where applicable to deduplicate entries. - Fix reference [2] typo in commit message - Drop config options moved to Kconfig, rename rest to CFG_ accordingly to synchronize with upstream changes. Drop removed CONFIG_VERY_BIG_RAM. - Move board size limit to arch/Kconfig - Move GICR_BASE to headers instead of common config]
2023-03-18ARM: renesas: Demote overlap memory nodes message to debug on Gen3Hai Pham
The R-Car DTs might contains multiple /memory@* nodes from various sources, i.e. prior firmware, u-boot itself or the OS The duplicates are likely to happen so the messages are not meaningful in the default setting since we have already handled that. Reduce the message to debug level. Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Hai Pham <[email protected]> Signed-off-by: Marek Vasut <[email protected]>
2022-09-02ARM: renesas: Propagate RPC-IF enablement to subsequent softwareGeert Uytterhoeven
As the Renesas Reduced Pin Count Interface may be locked by TF-A, it is disabled by default[1]. When unlocked, TF-A passes a DT fragment to enable it, which is applied to the U-Boot DT[2]. Unlike the memory layout, the RPC-IF enablement is not propagated to subsequent software. Hence e.g. Linux cannot know if the RPC-IF is locked or not, and will lock-up when trying to access the RPC-IF when locked. Fix this by checking if the RPC-IF is enabled in the TF-A DT fragment, and setting the status of the RPC-IF device node in the target DT, if present, to "okay". Do this only when a "flash" subnode is found, to avoid errors in subsequent software when the RPC-IF is not intended to be used. Note that this requires the status of the RPC-IF node to be set to "disabled" in the target DT, just like in the U-Boot DT. [1] commit 3d5f45c95c9db73d ("ARM: dts: rmobile: Disable RPC HF by default") [2] commit 361377dbdbc9f0f5 ("ARM: rmobile: Merge prior-stage firmware DT fragment into U-Boot DT on Gen3") Signed-off-by: Geert Uytterhoeven <[email protected]>
2021-05-12ARM: renesas: Scrub duplicate memory nodes from DT on Gen3Marek Vasut
Scrub duplicate /memory@* node entries here. Some R-Car DTs might contain multiple /memory@* nodes, however fdt_fixup_memory_banks() either generates single /memory node or updates the first /memory node. Any remaining memory nodes are thus potential duplicates. However, it is not possible to delete all the memory nodes right away, since some of those might not be DRAM memory nodes, but some sort of other memory. Thus, delete only the memory nodes which are in the R-Car3 DBSC ranges. Signed-off-by: Marek Vasut <[email protected]>
2021-03-02reset: Remove addr parameter from reset_cpu()Harald Seiler
Historically, the reset_cpu() function had an `addr` parameter which was meant to pass in an address of the reset vector location, where the CPU should reset to. This feature is no longer used anywhere in U-Boot as all reset_cpu() implementations now ignore the passed value. Generic code has been added which always calls reset_cpu() with `0` which means this feature can no longer be used easily anyway. Over time, many implementations seem to have "misunderstood" the existence of this parameter as a way to customize/parameterize the reset (e.g. COLD vs WARM resets). As this is not properly supported, the code will almost always not do what it is intended to (because all call-sites just call reset_cpu() with 0). To avoid confusion and to clean up the codebase from unused left-overs of the past, remove the `addr` parameter entirely. Code which intends to support different kinds of resets should be rewritten as a sysreset driver instead. This transformation was done with the following coccinelle patch: @@ expression argvalue; @@ - reset_cpu(argvalue) + reset_cpu() @@ identifier argname; type argtype; @@ - reset_cpu(argtype argname) + reset_cpu(void) { ... } Signed-off-by: Harald Seiler <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-02-02common: Drop asm/global_data.h from common headerSimon Glass
Move this out of the common header and include it only where needed. In a number of cases this requires adding "struct udevice;" to avoid adding another large header or in other cases replacing / adding missing header files that had been pulled in, very indirectly. Finally, we have a few cases where we did not need to include <asm/global_data.h> at all, so remove that include. Signed-off-by: Simon Glass <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2020-08-25ARM: renesas: Drop unnecessary function ft_board_setup()Stefan Roese
Marek explained on IRC, that ft_board_setup() is not used / necessary at all. So its best to just drop it completely, as it interferes with the cleanup of CONFIG_MAX_PCI_REGIONS (completely removed). Signed-off-by: Stefan Roese <[email protected]> Suggested-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2020-07-25ARM: rmobile: Switch back to fdtdec_setup_memory/banksize_fdt()Michal Simek
The commit 361377dbdbc9 ("ARM: rmobile: Merge prior-stage firmware DT fragment into U-Boot DT on Gen3") reverted changes introduced by commit 175f5027345c ("ARM: renesas: Configure DRAM size from ATF DT fragment") that's why there is no reason to use functions with _fdt() suffix because parameter is gd->fdt_blob as is already for functions without _fdt() suffix. Signed-off-by: Michal Simek <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2020-07-24Revert "Merge tag 'dm-pull-20jul20' of git://git.denx.de/u-boot-dm"Tom Rini
This reverts commit 5d3a21df6694ebd66d5c34c9d62a26edc7456fc7, reversing changes made to 56d37f1c564107e27d873181d838571b7d7860e7. Unfortunately this is causing CI failures: https://travis-ci.org/github/trini/u-boot/jobs/711313649 Signed-off-by: Tom Rini <[email protected]>
2020-07-20ARM: rmobile: Switch back to fdtdec_setup_memory/banksize_fdt()Michal Simek
The commit 361377dbdbc9 ("ARM: rmobile: Merge prior-stage firmware DT fragment into U-Boot DT on Gen3") reverted changes introduced by commit 175f5027345c ("ARM: renesas: Configure DRAM size from ATF DT fragment") that's why there is no reason to use functions with _fdt() suffix because parameter is gd->fdt_blob as is already for functions without _fdt() suffix. Signed-off-by: Michal Simek <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2020-07-17treewide: convert bd_t to struct bd_info by coccinelleMasahiro Yamada
The Linux coding style guide (Documentation/process/coding-style.rst) clearly says: It's a **mistake** to use typedef for structures and pointers. Besides, using typedef for structures is annoying when you try to make headers self-contained. Let's say you have the following function declaration in a header: void foo(bd_t *bd); This is not self-contained since bd_t is not defined. To tell the compiler what 'bd_t' is, you need to include <asm/u-boot.h> #include <asm/u-boot.h> void foo(bd_t *bd); Then, the include direcective pulls in more bloat needlessly. If you use 'struct bd_info' instead, it is enough to put a forward declaration as follows: struct bd_info; void foo(struct bd_info *bd); Right, typedef'ing bd_t is a mistake. I used coccinelle to generate this commit. The semantic patch that makes this change is as follows: <smpl> @@ typedef bd_t; @@ -bd_t +struct bd_info </smpl> Signed-off-by: Masahiro Yamada <[email protected]>
2020-05-20ARM: rmobile: Merge prior-stage firmware DT fragment into U-Boot DT on Gen3Marek Vasut
The prior-stage firmware generates DT fragment containing the /firmware node, /reserved-memory node and /memory@ nodes. Merge these nodes into the U-Boot DT, so U-Boot can use this information. Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Marek Vasut <[email protected]> Cc: Nobuhiro Iwamatsu <[email protected]> Cc: Simon Glass <[email protected]> Cc: Tom Rini <[email protected]>
2020-05-18common: Drop linux/bitops.h from common headerSimon Glass
Move this uncommon header out of the common header. Signed-off-by: Simon Glass <[email protected]>
2020-05-18common: Drop log.h from common headerSimon Glass
Move this header out of the common header. Signed-off-by: Simon Glass <[email protected]>
2020-05-18common: Drop init.h from common headerSimon Glass
Move this uncommon header out of the common header. Signed-off-by: Simon Glass <[email protected]>
2020-05-18common: Drop image.h from common headerSimon Glass
Move this uncommon header out of the common header. Signed-off-by: Simon Glass <[email protected]>
2020-01-17common: Move reset_cpu() to the CPU headerSimon Glass
Move this function out of common.h and into a relevant header file. Signed-off-by: Simon Glass <[email protected]>
2019-07-23ARM: renesas: Update Gen3 PCIe dma-ranges before bootMarek Vasut
Update "dma-ranges" DT property of all PCIe controllers in the system with the up-to-date DRAM layout. This allows the PCIe controller take full advantage of all the available DRAM. Signed-off-by: Marek Vasut <[email protected]> Cc: Nobuhiro Iwamatsu <[email protected]>
2019-05-21ARM: renesas: Factor out DRAM setup on R-Car Gen3Marek Vasut
Pull DRAM layout configuration code into rcar-common.c instead of having it in multiple copies across board files. This poses no change for Salvator-X/XS, ULCB and Ebisu boards, however it adds a bit of extra code for Draak and Eagle boards, which now gain the capability of being passed in the DRAM layout by the ATF. Signed-off-by: Marek Vasut <[email protected]> Cc: Eugeniu Rosca <[email protected]> Cc: Nobuhiro Iwamatsu <[email protected]>
2019-05-21ARM: rmobile: Add recovery SPL for R-Car Gen3Marek Vasut
Build an SPL which can be started via SCIF download mode on R-Car Gen3 and allows loading and executing U-Boot uImage with the next stage code. This is also useful for starting e.g. ATF BL2, which inits the hardware and returns to the U-Boot SPL, which can then load e.g. U-Boot proper. The H3, M3-W, M3-N SoCs have plenty of SRAM for storing the U-Boot SPL while the payload, e.g. ATF BL2, executes, so there is no problem here. However, E3 and D3 have much less SRAM, hence the loader uses a trick where it copies itself beyond the area used by BL2 and executes from there. That area is 32kiB large and not enough to hold U-Boot SPL, BSS, stack and malloc area, so the later two are placed at +0x4000 offset from start of SRAM, another area not used by ATF BL2. To make things even more complicated, the SCIF loader cannot load to the upper 32kiB of the SRAM directly, hence the copying approach. Signed-off-by: Marek Vasut <[email protected]> Cc: Nobuhiro Iwamatsu <[email protected]>
2019-04-09ARM: rmobile: rcar-common: Zap arch_preboot_os()Eugeniu Rosca
v2018.01 commit e23eb942ad103f ("ARM: rmobile: Stop using rcar-common/common.c on Gen3") removed board/renesas/rcar-common/common.c from the build chain with the reasoning that calling arch_preboot_os() is no longer needed. However, it left the arch_preboot_os() in place. Get rid of it. This is done in preparation of resurrecting rcar-common/common.c. NOTE: The three removed header includes (io.h, sys_proto.h, rcar-mstp.h) are in direct relationship with the dropped arch_preboot_os() hook. The other headers (common.h, rmobile.h) are going to be needed by pretty much anything that is going to appear in the rcar common code. So, keep the two in place. Signed-off-by: Eugeniu Rosca <[email protected]>
2018-05-07SPDX: Convert all of our single license tags to Linux Kernel styleTom Rini
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <[email protected]>
2016-08-17ARM: rmobile: rcar-common: Fix warning of type differenceNobuhiro Iwamatsu
Signed-off-by: Nobuhiro Iwamatsu <[email protected]>
2016-08-17ARM: rmobile: Add support R-Car Generation 3Nobuhiro Iwamatsu
This adds supporting R-Car Generation 3 (Gen3) as Renesas ARM64 SoC. Signed-off-by: Hiroyuki Yokoyama <[email protected]> Signed-off-by: Nobuhiro Iwamatsu <[email protected]>
2016-08-17ARM: rmobile: Move rcar-gen2-common to rcar-commonNobuhiro Iwamatsu
To common use of rcar-gen2-common directory in the R-Car SoCs, and change from rcar-gen2-common to rcar-common. Signed-off-by: Nobuhiro Iwamatsu <[email protected]>