[PATCH 16/16] board: rzg2l: Add RZ/G2L SMARC EVK board
Marek Vasut
marek.vasut at mailbox.org
Sat Oct 7 23:15:48 CEST 2023
On 10/6/23 14:51, Biju Das wrote:
> Hi Paul,
>
>> Subject: Re: [PATCH 16/16] board: rzg2l: Add RZ/G2L SMARC EVK board
>>
>> 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.
>>
>> * 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.
>
> If you need reset other than TF-A, either you can implement
>
> 1) watchdog reset
>
> Or
>
> 2) System reset through PMIC
>
> Former requires watchdog driver support where as later requires
> I2C support.
>
> I will go with 2) as with 2 one can distinguish
> Normal reset from abnormal reset due to watchdog.
Let's add a ToDo comment for now, just to be clear this is being worked on.
More information about the U-Boot
mailing list