diff mbox series

[U-Boot,v2,1/6] sunxi: disable Pine A64 model detection code on other boards

Message ID 20181025092307.28201-2-icenowy@aosc.io
State Accepted
Delegated to: Jagannadha Sutradharudu Teki
Headers show
Series sunxi: extend SPL header to propagate DRAM size and H6 3GiB DRAM support | expand

Commit Message

Icenowy Zheng Oct. 25, 2018, 9:23 a.m. UTC
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>
---
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(-)

Comments

Andre Przywara Oct. 25, 2018, 10:21 a.m. UTC | #1
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 <icenowy@aosc.io>

Reviewed-by: Andre Przywara <andre.przywara@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
>
Jagan Teki Oct. 26, 2018, 5:56 a.m. UTC | #2
On Thu, Oct 25, 2018 at 2:53 PM Icenowy Zheng <icenowy@aosc.io> 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 <icenowy@aosc.io>
> ---

Reviewed-by: Jagan Teki <jagan@openedev.com>

Applied to u-boot-sunxi/master
diff mbox series

Patch

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