[PATCH 16/16] board: rzg2l: Add RZ/G2L SMARC EVK board
Marek Vasut
marek.vasut at mailbox.org
Sat Oct 7 23:15:13 CEST 2023
On 10/5/23 22:50, Paul Barker wrote:
> On 03/10/2023 14:36, Marek Vasut wrote:
>> On 9/20/23 14:42, Paul Barker wrote:
>>> The Renesas RZ/G2L SMARC Evaluation Board Kit consists of the RZ/G2L
>>> System-on-Module (SOM) based on the R9A07G044L2 SoC, and a common SMARC
>>> carrier board.
>>>
>>> The ARM TrustedFirmware code for the Renesas RZ/G2L SoC family passes a
>>> devicetree blob to the bootloader as an argument in the same was
>>> previous R-Car gen3/gen4 SoCs. This blob contains a compatible string
>>> which can be used to identify the particular SoC we are running on and
>>> this is used to select the appropriate device tree to load.
>>>
>>> The configuration renesas_rzg2l_smarc_defconfig is added to support
>>> building for this target. In the future this defconfig will be extended
>>> to support other SoCs and evaluation boards from the RZ/G2L family.
>>>
>>> Signed-off-by: Paul Barker <paul.barker.ct at bp.renesas.com>
>>> Reviewed-by: Biju Das <biju.das.jz at bp.renesas.com>
>>> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj at bp.renesas.com>
>>> ---
>>> arch/arm/mach-rmobile/Kconfig.rzg2l | 14 +++++
>>> board/renesas/rzg2l/Kconfig | 18 +++++++
>>> board/renesas/rzg2l/MAINTAINERS | 6 +++
>>> board/renesas/rzg2l/Makefile | 4 ++
>>> board/renesas/rzg2l/rzg2l.c | 76 +++++++++++++++++++++++++++
>>> configs/renesas_rzg2l_smarc_defconfig | 52 ++++++++++++++++++
>>> include/configs/rzg2l-smarc.h | 14 +++++
>>> 7 files changed, 184 insertions(+)
>>> create mode 100644 board/renesas/rzg2l/Kconfig
>>> create mode 100644 board/renesas/rzg2l/MAINTAINERS
>>> create mode 100644 board/renesas/rzg2l/Makefile
>>> create mode 100644 board/renesas/rzg2l/rzg2l.c
>>> create mode 100644 configs/renesas_rzg2l_smarc_defconfig
>>> create mode 100644 include/configs/rzg2l-smarc.h
>>>
>>> diff --git a/arch/arm/mach-rmobile/Kconfig.rzg2l b/arch/arm/mach-rmobile/Kconfig.rzg2l
>>> index 7d268e8c366a..1fe49e323300 100644
>>> --- a/arch/arm/mach-rmobile/Kconfig.rzg2l
>>> +++ b/arch/arm/mach-rmobile/Kconfig.rzg2l
>>> @@ -9,6 +9,20 @@ config R9A07G044L
>>> help
>>> Enable support for the R9A07G044L SoC used in the RZ/G2L.
>>>
>>> +choice
>>> + prompt "Renesas RZ/G2L Family Board selection"
>>> + default TARGET_RZG2L_SMARC_EVK
>>> +
>>> +config TARGET_RZG2L_SMARC_EVK
>>> + bool "Renesas RZ/G2L SMARC EVK"
>>> + imply R9A07G044L
>>> + help
>>> + Enable support for the RZ/G2L SMARC evaluation board.
>>> +
>>> +source "board/renesas/rzg2l/Kconfig"
>>> +
>>> +endchoice
>>> +
>>> config MULTI_DTB_FIT_UNCOMPRESS_SZ
>>> default 0x80000 if TARGET_RZG2L_SMARC_EVK
>>>
>>> diff --git a/board/renesas/rzg2l/Kconfig b/board/renesas/rzg2l/Kconfig
>>> new file mode 100644
>>> index 000000000000..1335fc7ae806
>>> --- /dev/null
>>> +++ b/board/renesas/rzg2l/Kconfig
>>> @@ -0,0 +1,18 @@
>>> +# Copyright (C) 2023 Renesas Electronics Corporation
>>> +# SPDX-License-Identifier: GPL-2.0+
>>> +
>>> +if TARGET_RZG2L_SMARC_EVK
>>> +
>>> +config SYS_SOC
>>> + default "rmobile"
>>> +
>>> +config SYS_BOARD
>>> + default "rzg2l"
>>> +
>>> +config SYS_VENDOR
>>> + default "renesas"
>>> +
>>> +config SYS_CONFIG_NAME
>>> + default "rzg2l-smarc"
>>> +
>>> +endif
>>> diff --git a/board/renesas/rzg2l/MAINTAINERS b/board/renesas/rzg2l/MAINTAINERS
>>> new file mode 100644
>>> index 000000000000..0a51391c1fc9
>>> --- /dev/null
>>> +++ b/board/renesas/rzg2l/MAINTAINERS
>>> @@ -0,0 +1,6 @@
>>> +RENESAS RZG2L BOARD FAMILY
>>> +M: Paul Barker <paul.barker.ct at bp.renesas.com>
>>> +S: Supported
>>> +F: arch/arm/dts/rz-smarc-common.dtsi
>>
>> I suspect there should be more files here, right ?
>> You likely want to be CCed on things like rzg2l clock, scif, and so on.
>>
>>> +N: rzg2l
>>> +N: r9a07g044
>>> diff --git a/board/renesas/rzg2l/Makefile b/board/renesas/rzg2l/Makefile
>>> new file mode 100644
>>> index 000000000000..466935fc8158
>>> --- /dev/null
>>> +++ b/board/renesas/rzg2l/Makefile
>>> @@ -0,0 +1,4 @@
>>> +# Copyright (C) 2023 Renesas Electronics Corporation
>>> +# SPDX-License-Identifier: GPL-2.0+
>>> +
>>> +obj-y := rzg2l.o
>>
>>> diff --git a/board/renesas/rzg2l/rzg2l.c b/board/renesas/rzg2l/rzg2l.c
>>> new file mode 100644
>>> index 000000000000..2b1bb3546c26
>>> --- /dev/null
>>> +++ b/board/renesas/rzg2l/rzg2l.c
>>> @@ -0,0 +1,76 @@
>>> +// SPDX-License-Identifier: GPL-2.0+
>>> +/*
>>> + * RZ/G2L board support.
>>> + * Copyright (C) 2023 Renesas Electronics Corporation
>>> + */
>>> +
>>> +#include <common.h>
>>> +#include <fdtdec.h>
>>> +#include <linux/libfdt.h>
>>> +
>>> +#if IS_ENABLED(CONFIG_MULTI_DTB_FIT)
>>> +/* If the firmware passed a device tree, use it for board identification. */
>>> +extern u64 rcar_atf_boot_args[];
>>> +
>>> +static bool is_rzg2l_board(const char *board_name)
>>> +{
>>> + void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
>>> +
>>> + return fdt_node_check_compatible(atf_fdt_blob, 0, board_name) == 0;
>>> +}
>>> +
>>> +int board_fit_config_name_match(const char *name)
>>> +{
>>> + void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
>>> +
>>> + if (fdt_magic(atf_fdt_blob) != FDT_MAGIC)
>>> + return -1;
>>> +
>>> + if (is_rzg2l_board("renesas,r9a07g044l2"))
>>> + return strcmp(name, "r9a07g044l2-smarc");
>>> +
>>> + return -1;
>>> +}
>>> +#endif
>>> +
>>> +static void apply_atf_overlay(void *fdt_blob)
>>> +{
>>> + void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
>>> +
>>> + if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
>>> + fdt_overlay_apply_node(fdt_blob, 0, atf_fdt_blob, 0);
>>> +}
>>> +
>>> +int fdtdec_board_setup(const void *fdt_blob)
>>> +{
>>> + apply_atf_overlay((void *)fdt_blob);
>>> +
>>> + return 0;
>>> +}
>>> +
>>> +int ft_board_setup(void *blob, struct bd_info *bd)
>>> +{
>>> + return 0;
>>
>> Are all these stub functions really needed or can they be removed
>> (possibly also with removal of unnecessary config options) ?
>
> I've moved dram_init() & dram_init_banksize() out to
> arch/arm/mach-rmobile/memmap-rzg2l.c. However, the other three stub
> functions can't easily be removed:
>
> * board_init() is always called if CONFIG_ARM is enabled. There is a
> similar stub in board/renesas/rcar-common/common.c so I think this is
> ok.
>
> * ft_board_setup() is called if CONFIG_OF_BOARD_SETUP is enabled, which
> is selected by CONFIG_RCAR_64, I don't see much point messing around
> to break that config dependency when I'm going to be coming back to
> fill in this stub once support for these boards is fully upstreamed to
> TrustedFirmware.
OK
> * reset_cpu() is called from arch/arm/lib/reset.c, which is included
> unless CONFIG_SYSRESET is defined, and I don't think enabling
> CONFIG_SYSRESET makes any sense here. Again, I'll be filling in this
> stub once TrustedFirmware supports resetting this board.
>
> I'll chat to the rest of the team tomorrow and see if there's a hacky
> way we can do the reset before TrustedFirmware support is complete.
Maybe just add a ToDo comment and let's get this in before 2024.01-rc1
is out.
More information about the U-Boot
mailing list