From c6c2c85e4b980cba54b34a55399f9b82ae2787ea Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Thu, 25 Oct 2018 17:23:02 +0800 Subject: [PATCH] sunxi: disable Pine A64 model detection code on other boards The Pine A64 Plus/non-Plus model detection code is now built on all 64-bit ARM SoCs, even if the code cannot be triggered when H5/H6 is in use. Disable them when the board is Pine A64 by adding a Kconfig option that is only selected on Pine A64. On GCC 7.3.1 this makes the size of the function reduces 184 bytes, and saves a 104 byte strstr() function, then makes SPL on H6 succeed to build. Signed-off-by: Icenowy Zheng Reviewed-by: Andre Przywara Acked-by: Maxime Ripard Reviewed-by: Jagan Teki --- arch/arm/mach-sunxi/Kconfig | 10 ++++++++++ board/sunxi/board.c | 3 +++ configs/pine64_plus_defconfig | 1 + 3 files changed, 14 insertions(+) diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig index 686f38fec4..764337c643 100644 --- a/arch/arm/mach-sunxi/Kconfig +++ b/arch/arm/mach-sunxi/Kconfig @@ -970,4 +970,14 @@ config SPL_SPI_SUNXI sunxi SPI Flash. It uses the same method as the boot ROM, so does not need any extra configuration. +config PINE64_DT_SELECTION + bool "Enable Pine64 device tree selection code" + depends on MACH_SUN50I + help + The original Pine A64 and Pine A64+ are similar but different + boards and can be differed by the DRAM size. Pine A64 has + 512MiB DRAM, and Pine A64+ has 1GiB or 2GiB. By selecting this + option, the device tree selection code specific to Pine64 which + utilizes the DRAM size will be enabled. + endif diff --git a/board/sunxi/board.c b/board/sunxi/board.c index d1d7f9f400..e075c13239 100644 --- a/board/sunxi/board.c +++ b/board/sunxi/board.c @@ -820,6 +820,7 @@ int board_fit_config_name_match(const char *name) #endif }; +#ifdef CONFIG_PINE64_DT_SELECTION /* Differentiate the two Pine64 board DTs by their DRAM size. */ if (strstr(name, "-pine64") && strstr(cmp_str, "-pine64")) { if ((gd->ram_size > 512 * 1024 * 1024)) @@ -829,5 +830,7 @@ int board_fit_config_name_match(const char *name) } else { return strcmp(name, cmp_str); } +#endif + return strcmp(name, cmp_str); } #endif diff --git a/configs/pine64_plus_defconfig b/configs/pine64_plus_defconfig index 14ccc9ba05..a5b87b9063 100644 --- a/configs/pine64_plus_defconfig +++ b/configs/pine64_plus_defconfig @@ -3,6 +3,7 @@ CONFIG_ARCH_SUNXI=y CONFIG_SPL=y CONFIG_MACH_SUN50I=y CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y +CONFIG_PINE64_DT_SELECTION=y CONFIG_NR_DRAM_BANKS=1 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set # CONFIG_CMD_FLASH is not set -- 2.39.5