
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@bp.renesas.com Reviewed-by: Biju Das biju.das.jz@bp.renesas.com Reviewed-by: Lad Prabhakar prabhakar.mahadev-lad.rj@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@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) ?
+}
+int __weak board_init(void) +{
- return 0;
+}
+int dram_init(void) +{
- return fdtdec_setup_mem_size_base();
+}
+int dram_init_banksize(void) +{
- fdtdec_setup_memory_banksize();
This and the one function above can likely go into arch/mach-rmobile/
- return 0;
+}
+void __weak reset_cpu(void) +{
Is this platform missing a way to reset the system ? Please fix.
[...]