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...@bp.renesas.com> >> Reviewed-by: Biju Das <biju.das...@bp.renesas.com> >> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad...@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...@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. Thanks, Paul
OpenPGP_0x27F4B3459F002257.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature