[PATCH 1/5] ARM: rmobile: Enable board detection when FIT is enabled

There are three boards from Beacon, RZ/G2 M/N/H which all use the same board file, but different device trees. Add code to automatically select the proper device tree based on the CPU type.
Signed-off-by: Adam Ford aford173@gmail.com
diff --git a/board/beacon/beacon-rzg2m/beacon-rzg2m.c b/board/beacon/beacon-rzg2m/beacon-rzg2m.c index c12ff77fb2..b3521fcbc1 100644 --- a/board/beacon/beacon-rzg2m/beacon-rzg2m.c +++ b/board/beacon/beacon-rzg2m/beacon-rzg2m.c @@ -36,3 +36,19 @@ void reset_cpu(void) { writel(RST_CODE, RST_CA57RESCNT); } + +#if IS_ENABLED(CONFIG_MULTI_DTB_FIT) +int board_fit_config_name_match(const char *name) +{ + if (!strcmp(rzg_get_cpu_name(), "R8A774A1") && !strcmp(name, "r8a774a1-beacon-rzg2m-kit")) + return 0; + + if (!strcmp(rzg_get_cpu_name(), "R8A774B1") && !strcmp(name, "r8a774b1-beacon-rzg2n-kit")) + return 0; + + if (!strcmp(rzg_get_cpu_name(), "R8A774E1") && !strcmp(name, "r8a774e1-beacon-rzg2h-kit")) + return 0; + + return -1; +} +#endif

The three different boards share the same board file and only differ in terms of which SoC is being used. By enabling FIT on TARGET_BEACON_RZG2M, it can support all three boards and elimate duplicate code.
Signed-off-by: Adam Ford aford173@gmail.com
diff --git a/arch/arm/mach-rmobile/Kconfig.64 b/arch/arm/mach-rmobile/Kconfig.64 index a6dcce180b..2bde898928 100644 --- a/arch/arm/mach-rmobile/Kconfig.64 +++ b/arch/arm/mach-rmobile/Kconfig.64 @@ -80,8 +80,14 @@ config TARGET_BEACON_RZG2H config TARGET_BEACON_RZG2M bool "Beacon EmbeddedWorks RZ/G2M Dev Kit" select R8A774A1 + select R8A774B1 + select R8A774E1 select RZ_G2 select PINCTRL_PFC_R8A774A1 + select PINCTRL_PFC_R8A774B1 + select PINCTRL_PFC_R8A774E1 + imply MULTI_DTB_FIT + imply MULTI_DTB_FIT_USER_DEFINED_AREA
config TARGET_BEACON_RZG2N bool "Beacon EmbeddedWorks RZ/G2N Dev Kit" @@ -177,11 +183,13 @@ source "board/hoperun/hihope-rzg2/Kconfig" source "board/silinux/ek874/Kconfig"
config MULTI_DTB_FIT_UNCOMPRESS_SZ + default 0x80000 if TARGET_BEACON_RZG2M default 0x80000 if TARGET_HIHOPE_RZG2 default 0x80000 if TARGET_SALVATOR_X default 0x80000 if TARGET_ULCB
config MULTI_DTB_FIT_USER_DEF_ADDR + default 0x49000000 if TARGET_BEACON_RZG2M default 0x49000000 if TARGET_HIHOPE_RZG2 default 0x49000000 if TARGET_SALVATOR_X default 0x49000000 if TARGET_ULCB diff --git a/configs/r8a774a1_beacon_defconfig b/configs/r8a774a1_beacon_defconfig index 002b91176f..0956b44c06 100644 --- a/configs/r8a774a1_beacon_defconfig +++ b/configs/r8a774a1_beacon_defconfig @@ -31,6 +31,9 @@ CONFIG_CMD_EXT4_WRITE=y CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENERIC=y CONFIG_OF_CONTROL=y +CONFIG_OF_LIST="r8a774a1-beacon-rzg2m-kit r8a774b1-beacon-rzg2n-kit r8a774e1-beacon-rzg2h-kit" +CONFIG_MULTI_DTB_FIT_LZO=y +CONFIG_MULTI_DTB_FIT_USER_DEFINED_AREA=y CONFIG_ENV_OVERWRITE=y CONFIG_ENV_IS_IN_MMC=y CONFIG_SYS_MMC_ENV_DEV=1

Now that TARGET_BEACON_RZG2M can handle all the work that was done with TARGET_BEACON_RZG2N and TARGET_BEACON_RZG2H, remove them since they just create more duplicate code.
Signed-off-by: Adam Ford aford173@gmail.com
diff --git a/arch/arm/mach-rmobile/Kconfig.64 b/arch/arm/mach-rmobile/Kconfig.64 index 2bde898928..114e6717ee 100644 --- a/arch/arm/mach-rmobile/Kconfig.64 +++ b/arch/arm/mach-rmobile/Kconfig.64 @@ -71,12 +71,6 @@ choice prompt "Renesas ARM64 SoCs board select" optional
-config TARGET_BEACON_RZG2H - bool "Beacon EmbeddedWorks RZ/G2H Dev Kit" - select R8A774E1 - select RZ_G2 - select PINCTRL_PFC_R8A774E1 - config TARGET_BEACON_RZG2M bool "Beacon EmbeddedWorks RZ/G2M Dev Kit" select R8A774A1 @@ -89,12 +83,6 @@ config TARGET_BEACON_RZG2M imply MULTI_DTB_FIT imply MULTI_DTB_FIT_USER_DEFINED_AREA
-config TARGET_BEACON_RZG2N - bool "Beacon EmbeddedWorks RZ/G2N Dev Kit" - select R8A774B1 - select RZ_G2 - select PINCTRL_PFC_R8A774B1 - config TARGET_CONDOR bool "Condor board" imply R8A77980 diff --git a/board/beacon/beacon-rzg2m/Kconfig b/board/beacon/beacon-rzg2m/Kconfig index 99c23a3d14..c03857cf2f 100644 --- a/board/beacon/beacon-rzg2m/Kconfig +++ b/board/beacon/beacon-rzg2m/Kconfig @@ -1,4 +1,4 @@ -if TARGET_BEACON_RZG2H || TARGET_BEACON_RZG2M || TARGET_BEACON_RZG2N +if TARGET_BEACON_RZG2M
config SYS_SOC default "rmobile" diff --git a/configs/r8a774b1_beacon_defconfig b/configs/r8a774b1_beacon_defconfig deleted file mode 100644 index 389e0d9ccc..0000000000 --- a/configs/r8a774b1_beacon_defconfig +++ /dev/null @@ -1,80 +0,0 @@ -CONFIG_ARM=y -CONFIG_ARCH_RMOBILE=y -CONFIG_SYS_TEXT_BASE=0x50000000 -CONFIG_SYS_MALLOC_F_LEN=0x2000 -CONFIG_ENV_OFFSET=0x0 -CONFIG_DM_GPIO=y -CONFIG_DEFAULT_DEVICE_TREE="r8a774b1-beacon-rzg2n-kit" -CONFIG_RCAR_GEN3=y -CONFIG_TARGET_BEACON_RZG2N=y -# CONFIG_SPL is not set -CONFIG_LTO=y -CONFIG_FIT=y -CONFIG_SUPPORT_RAW_INITRD=y -# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set -CONFIG_DEFAULT_FDT_FILE="r8a774b1-beacon-rzg2n-kit.dtb" -CONFIG_HUSH_PARSER=y -CONFIG_CMD_BOOTZ=y -CONFIG_CMD_GPIO=y -CONFIG_CMD_I2C=y -CONFIG_CMD_MMC=y -CONFIG_CMD_MTD=y -CONFIG_CMD_PART=y -CONFIG_CMD_SPI=y -CONFIG_CMD_USB=y -CONFIG_CMD_DHCP=y -CONFIG_CMD_MII=y -CONFIG_CMD_PING=y -CONFIG_CMD_EXT2=y -CONFIG_CMD_EXT4=y -CONFIG_CMD_EXT4_WRITE=y -CONFIG_CMD_FAT=y -CONFIG_CMD_FS_GENERIC=y -CONFIG_OF_CONTROL=y -CONFIG_ENV_OVERWRITE=y -CONFIG_ENV_IS_IN_MMC=y -CONFIG_SYS_MMC_ENV_DEV=1 -CONFIG_SYS_MMC_ENV_PART=2 -CONFIG_VERSION_VARIABLE=y -CONFIG_REGMAP=y -CONFIG_SYSCON=y -CONFIG_CLK=y -CONFIG_CLK_CCF=y -CONFIG_CLK_RENESAS=y -CONFIG_CLK_VERSACLOCK=y -CONFIG_RCAR_GPIO=y -CONFIG_DM_PCA953X=y -CONFIG_DM_I2C=y -CONFIG_SYS_I2C_RCAR_I2C=y -CONFIG_SYS_I2C_RCAR_IIC=y -CONFIG_MMC_IO_VOLTAGE=y -CONFIG_MMC_UHS_SUPPORT=y -CONFIG_MMC_HS200_SUPPORT=y -CONFIG_RENESAS_SDHI=y -CONFIG_MTD=y -CONFIG_DM_MTD=y -CONFIG_DM_SPI_FLASH=y -CONFIG_SPI_FLASH_WINBOND=y -CONFIG_MTD=y -CONFIG_DM_SPI_FLASH=y -CONFIG_BITBANGMII=y -CONFIG_PHY_REALTEK=y -CONFIG_DM_ETH=y -CONFIG_RENESAS_RAVB=y -CONFIG_DM_REGULATOR=y -CONFIG_DM_REGULATOR_FIXED=y -CONFIG_DM_REGULATOR_GPIO=y -CONFIG_SPECIFY_CONSOLE_INDEX=y -CONFIG_SCIF_CONSOLE=y -CONFIG_SPI=y -CONFIG_DM_SPI=y -CONFIG_RENESAS_RPC_SPI=y -CONFIG_SPI=y -CONFIG_DM_SPI=y -CONFIG_RENESAS_RPC_SPI=y -CONFIG_USB=y -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_GENERIC=y -CONFIG_USB_STORAGE=y -CONFIG_OF_LIBFDT_OVERLAY=y diff --git a/configs/r8a774e1_beacon_defconfig b/configs/r8a774e1_beacon_defconfig deleted file mode 100644 index cb9f4e2ffa..0000000000 --- a/configs/r8a774e1_beacon_defconfig +++ /dev/null @@ -1,75 +0,0 @@ -CONFIG_ARM=y -CONFIG_ARCH_RMOBILE=y -CONFIG_SYS_TEXT_BASE=0x50000000 -CONFIG_SYS_MALLOC_F_LEN=0x2000 -CONFIG_ENV_OFFSET=0x0 -CONFIG_DM_GPIO=y -CONFIG_DEFAULT_DEVICE_TREE="r8a774e1-beacon-rzg2h-kit" -CONFIG_RCAR_GEN3=y -CONFIG_TARGET_BEACON_RZG2H=y -# CONFIG_SPL is not set -CONFIG_LTO=y -CONFIG_FIT=y -CONFIG_SUPPORT_RAW_INITRD=y -# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set -CONFIG_DEFAULT_FDT_FILE="r8a774e1-beacon-rzg2h-kit.dtb" -CONFIG_HUSH_PARSER=y -CONFIG_CMD_BOOTZ=y -CONFIG_CMD_GPIO=y -CONFIG_CMD_I2C=y -CONFIG_CMD_MMC=y -CONFIG_CMD_MTD=y -CONFIG_CMD_PART=y -CONFIG_CMD_SPI=y -CONFIG_CMD_USB=y -CONFIG_CMD_DHCP=y -CONFIG_CMD_MII=y -CONFIG_CMD_PING=y -CONFIG_CMD_EXT2=y -CONFIG_CMD_EXT4=y -CONFIG_CMD_EXT4_WRITE=y -CONFIG_CMD_FAT=y -CONFIG_CMD_FS_GENERIC=y -CONFIG_OF_CONTROL=y -CONFIG_ENV_OVERWRITE=y -CONFIG_ENV_IS_IN_MMC=y -CONFIG_SYS_MMC_ENV_DEV=1 -CONFIG_SYS_MMC_ENV_PART=2 -CONFIG_VERSION_VARIABLE=y -CONFIG_REGMAP=y -CONFIG_SYSCON=y -CONFIG_CLK=y -CONFIG_CLK_CCF=y -CONFIG_CLK_RENESAS=y -CONFIG_CLK_VERSACLOCK=y -CONFIG_RCAR_GPIO=y -CONFIG_DM_PCA953X=y -CONFIG_DM_I2C=y -CONFIG_SYS_I2C_RCAR_I2C=y -CONFIG_SYS_I2C_RCAR_IIC=y -CONFIG_MMC_IO_VOLTAGE=y -CONFIG_MMC_UHS_SUPPORT=y -CONFIG_MMC_HS200_SUPPORT=y -CONFIG_RENESAS_SDHI=y -CONFIG_MTD=y -CONFIG_DM_MTD=y -CONFIG_DM_SPI_FLASH=y -CONFIG_SPI_FLASH_WINBOND=y -CONFIG_BITBANGMII=y -CONFIG_PHY_REALTEK=y -CONFIG_DM_ETH=y -CONFIG_RENESAS_RAVB=y -CONFIG_DM_REGULATOR=y -CONFIG_DM_REGULATOR_FIXED=y -CONFIG_DM_REGULATOR_GPIO=y -CONFIG_SPECIFY_CONSOLE_INDEX=y -CONFIG_SCIF_CONSOLE=y -CONFIG_SPI=y -CONFIG_DM_SPI=y -CONFIG_RENESAS_RPC_SPI=y -CONFIG_USB=y -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_GENERIC=y -CONFIG_USB_STORAGE=y -CONFIG_OF_LIBFDT_OVERLAY=y

There are a few do-nothing functions that can be removed. Remove them.
Signed-off-by: Adam Ford aford173@gmail.com
diff --git a/board/beacon/beacon-rzg2m/beacon-rzg2m.c b/board/beacon/beacon-rzg2m/beacon-rzg2m.c index b3521fcbc1..df6044a429 100644 --- a/board/beacon/beacon-rzg2m/beacon-rzg2m.c +++ b/board/beacon/beacon-rzg2m/beacon-rzg2m.c @@ -10,16 +10,6 @@
DECLARE_GLOBAL_DATA_PTR;
-void s_init(void) -{ -} - -/* Kconfig forces this on, so just return 0 */ -int board_early_init_f(void) -{ - return 0; -} - int board_init(void) { /* address of boot parameters */ diff --git a/configs/r8a774a1_beacon_defconfig b/configs/r8a774a1_beacon_defconfig index 0956b44c06..d2c0d6a96e 100644 --- a/configs/r8a774a1_beacon_defconfig +++ b/configs/r8a774a1_beacon_defconfig @@ -13,6 +13,7 @@ CONFIG_FIT=y CONFIG_SUPPORT_RAW_INITRD=y # CONFIG_ARCH_FIXUP_FDT_MEMORY is not set CONFIG_DEFAULT_FDT_FILE="r8a774a1-beacon-rzg2m-kit.dtb" +# CONFIG_BOARD_EARLY_INIT_F is not set CONFIG_HUSH_PARSER=y CONFIG_CMD_BOOTZ=y CONFIG_CMD_GPIO=y

Both Ethernet and USB drivers get their reference clocks from the versaclock. Enable that driver and the common clock driver by default.
Signed-off-by: Adam Ford aford173@gmail.com
diff --git a/arch/arm/mach-rmobile/Kconfig.64 b/arch/arm/mach-rmobile/Kconfig.64 index 114e6717ee..ce60d79923 100644 --- a/arch/arm/mach-rmobile/Kconfig.64 +++ b/arch/arm/mach-rmobile/Kconfig.64 @@ -82,6 +82,8 @@ config TARGET_BEACON_RZG2M select PINCTRL_PFC_R8A774E1 imply MULTI_DTB_FIT imply MULTI_DTB_FIT_USER_DEFINED_AREA + imply CLK_VERSACLOCK + imply CLK_CCF
config TARGET_CONDOR bool "Condor board"

On Mon, Aug 30, 2021 at 10:40 AM Adam Ford aford173@gmail.com wrote:
There are three boards from Beacon, RZ/G2 M/N/H which all use the same board file, but different device trees. Add code to automatically select the proper device tree based on the CPU type.
Signed-off-by: Adam Ford aford173@gmail.com
Marek,
I was wondering if you had any feedback on this series. You asked if I could consolidate all three of my RZ/G2 boards to reduce the amount of duplicated code, so this series attempts to do that.
adam
diff --git a/board/beacon/beacon-rzg2m/beacon-rzg2m.c b/board/beacon/beacon-rzg2m/beacon-rzg2m.c index c12ff77fb2..b3521fcbc1 100644 --- a/board/beacon/beacon-rzg2m/beacon-rzg2m.c +++ b/board/beacon/beacon-rzg2m/beacon-rzg2m.c @@ -36,3 +36,19 @@ void reset_cpu(void) { writel(RST_CODE, RST_CA57RESCNT); }
+#if IS_ENABLED(CONFIG_MULTI_DTB_FIT) +int board_fit_config_name_match(const char *name) +{
if (!strcmp(rzg_get_cpu_name(), "R8A774A1") && !strcmp(name, "r8a774a1-beacon-rzg2m-kit"))
return 0;
if (!strcmp(rzg_get_cpu_name(), "R8A774B1") && !strcmp(name, "r8a774b1-beacon-rzg2n-kit"))
return 0;
if (!strcmp(rzg_get_cpu_name(), "R8A774E1") && !strcmp(name, "r8a774e1-beacon-rzg2h-kit"))
return 0;
return -1;
+}
+#endif
2.25.1

On 9/20/21 2:11 PM, Adam Ford wrote:
On Mon, Aug 30, 2021 at 10:40 AM Adam Ford aford173@gmail.com wrote:
There are three boards from Beacon, RZ/G2 M/N/H which all use the same board file, but different device trees. Add code to automatically select the proper device tree based on the CPU type.
Signed-off-by: Adam Ford aford173@gmail.com
Marek,
I was wondering if you had any feedback on this series. You asked if I could consolidate all three of my RZ/G2 boards to reduce the amount of duplicated code, so this series attempts to do that.
Please rebase/resend, it was likely missed, sorry.
participants (2)
-
Adam Ford
-
Marek Vasut