[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