sunxi: disable Pine A64 model detection code on other boards
authorIcenowy Zheng <icenowy@aosc.io>
Thu, 25 Oct 2018 09:23:02 +0000 (17:23 +0800)
committerJagan Teki <jagan@amarulasolutions.com>
Mon, 29 Oct 2018 15:11:07 +0000 (20:41 +0530)
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 <icenowy@aosc.io>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Reviewed-by: Jagan Teki <jagan@openedev.com>
arch/arm/mach-sunxi/Kconfig
board/sunxi/board.c
configs/pine64_plus_defconfig

index 686f38fec41f81d53f47c6cf02ed45715c6fd080..764337c6435f3df683a3264b0ca303714cb325af 100644 (file)
@@ -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
index d1d7f9f40061fc927bd2c93c63b02b67cd86e491..e075c132397d5f19a5656b5fa1f015731fb3913d 100644 (file)
@@ -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
index 14ccc9ba059352e441842a5815ac621bc42f318c..a5b87b90639aaeca451fd2553b2a5f861fccc1b4 100644 (file)
@@ -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