[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