On 10/25/18 10:23 AM, Icenowy Zheng wrote: > 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 <icen...@aosc.io>
Reviewed-by: Andre Przywara <andre.przyw...@arm.com> Thanks! Andre. > --- > This used to be a independently sent patch. > > Changes in v2: > - Added a Kconfig option to restrict the code on only Pine A64. > > arch/arm/mach-sunxi/Kconfig | 10 ++++++++++ > board/sunxi/board.c | 5 ++++- > configs/pine64_plus_defconfig | 1 + > 3 files changed, 15 insertions(+), 1 deletion(-) > > 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..49f5695566 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 > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot