diff mbox

[U-Boot,19/24] sunxi: A64: enable SPL

Message ID 1479653838-3574-20-git-send-email-andre.przywara@arm.com
State Superseded
Delegated to: Jagannadha Sutradharudu Teki
Headers show

Commit Message

Andre Przywara Nov. 20, 2016, 2:57 p.m. UTC
Now that the SPL is ready to be compiled in AArch64 and the DRAM
init code is ready, enable SPL support for the A64 SoC and in the
Pine64 defconfig.
For now we keep the boot0 header in the U-Boot proper, as this allows
to still use boot0 as an SPL replacement without hurting the SPL use
case.
We disable FEL support for now, as the code isn't ready yet.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
 arch/arm/include/asm/arch-sunxi/boot0.h | 4 ++--
 arch/arm/mach-sunxi/board.c             | 2 +-
 board/sunxi/Kconfig                     | 2 ++
 configs/pine64_plus_defconfig           | 2 ++
 include/configs/sunxi-common.h          | 2 ++
 5 files changed, 9 insertions(+), 3 deletions(-)

Comments

Alexander Graf Nov. 21, 2016, 4:37 p.m. UTC | #1
On 20/11/2016 15:57, Andre Przywara wrote:
> Now that the SPL is ready to be compiled in AArch64 and the DRAM
> init code is ready, enable SPL support for the A64 SoC and in the
> Pine64 defconfig.
> For now we keep the boot0 header in the U-Boot proper, as this allows
> to still use boot0 as an SPL replacement without hurting the SPL use
> case.
> We disable FEL support for now, as the code isn't ready yet.
>
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
>  arch/arm/include/asm/arch-sunxi/boot0.h | 4 ++--
>  arch/arm/mach-sunxi/board.c             | 2 +-
>  board/sunxi/Kconfig                     | 2 ++
>  configs/pine64_plus_defconfig           | 2 ++
>  include/configs/sunxi-common.h          | 2 ++
>  5 files changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-sunxi/boot0.h b/arch/arm/include/asm/arch-sunxi/boot0.h
> index c31a2af..173e042 100644
> --- a/arch/arm/include/asm/arch-sunxi/boot0.h
> +++ b/arch/arm/include/asm/arch-sunxi/boot0.h
> @@ -4,11 +4,11 @@
>   * SPDX-License-Identifier:	GPL-2.0+
>   */
>
> -#if defined(CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER)
> +#if defined(CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER) && !defined(CONFIG_SPL_BUILD)
>  /* reserve space for BOOT0 header information */
>  	b	reset
>  	.space	1532
> -#elif defined(CONFIG_ARM_BOOT_HOOK_RMR)
> +#elif defined(CONFIG_ARM_BOOT_HOOK_RMR) && defined(CONFIG_SPL_BUILD)
>  /* switch into AArch64 if needed */
>  	tst     x0, x0                  // this is "b #0x84" in ARM
>  	b       reset

Shouldn't the hunk above go into the patches that introduce the options?



> diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
> index 0f8ead9..80d4b57 100644
> --- a/arch/arm/mach-sunxi/board.c
> +++ b/arch/arm/mach-sunxi/board.c
> @@ -133,7 +133,7 @@ static int gpio_init(void)
>  	return 0;
>  }
>
> -#ifdef CONFIG_SPL_BUILD
> +#if defined(CONFIG_SPL_BOARD_LOAD_IMAGE) && defined(CONFIG_SPL_BUILD)
>  static int spl_board_load_image(struct spl_image_info *spl_image,
>  				struct spl_boot_device *bootdev)
>  {
> diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
> index d477925..b5246df 100644
> --- a/board/sunxi/Kconfig
> +++ b/board/sunxi/Kconfig
> @@ -125,6 +125,7 @@ config MACH_SUN50I
>  	bool "sun50i (Allwinner A64)"
>  	select ARM64
>  	select SUNXI_GEN_SUN6I
> +	select SUPPORT_SPL
>
>  endchoice
>
> @@ -187,6 +188,7 @@ config DRAM_ODT_EN
>  	bool "sunxi dram odt enable"
>  	default n if !MACH_SUN8I_A23
>  	default y if MACH_SUN8I_A23
> +	default y if MACH_SUN50I
>  	---help---
>  	Select this to enable dram odt (on die termination).
>
> diff --git a/configs/pine64_plus_defconfig b/configs/pine64_plus_defconfig
> index ebc24b8..5286fee 100644
> --- a/configs/pine64_plus_defconfig
> +++ b/configs/pine64_plus_defconfig
> @@ -2,9 +2,11 @@ CONFIG_ARM=y
>  CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y
>  CONFIG_ARCH_SUNXI=y
>  CONFIG_MACH_SUN50I=y
> +CONFIG_DRAM_CLK=672

Do you need this?


Alex

>  CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pine64-plus"
>  # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
>  CONFIG_CONSOLE_MUX=y
> +CONFIG_SPL=y
>  # CONFIG_CMD_IMLS is not set
>  # CONFIG_CMD_FLASH is not set
>  # CONFIG_CMD_FPGA is not set
> diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
> index 86b4104..f2cb174 100644
> --- a/include/configs/sunxi-common.h
> +++ b/include/configs/sunxi-common.h
> @@ -182,7 +182,9 @@
>
>  #define CONFIG_SPL_FRAMEWORK
>
> +#ifndef CONFIG_MACH_SUN50I
>  #define CONFIG_SPL_BOARD_LOAD_IMAGE
> +#endif
>
>  #if defined(CONFIG_MACH_SUN9I)
>  #define CONFIG_SPL_TEXT_BASE		0x10040		/* sram start+header */
>
Andre Przywara Nov. 21, 2016, 4:42 p.m. UTC | #2
Hi,

On 21/11/16 16:37, Alexander Graf wrote:
> 
> 
> On 20/11/2016 15:57, Andre Przywara wrote:
>> Now that the SPL is ready to be compiled in AArch64 and the DRAM
>> init code is ready, enable SPL support for the A64 SoC and in the
>> Pine64 defconfig.
>> For now we keep the boot0 header in the U-Boot proper, as this allows
>> to still use boot0 as an SPL replacement without hurting the SPL use
>> case.
>> We disable FEL support for now, as the code isn't ready yet.
>>
>> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
>> ---
>>  arch/arm/include/asm/arch-sunxi/boot0.h | 4 ++--
>>  arch/arm/mach-sunxi/board.c             | 2 +-
>>  board/sunxi/Kconfig                     | 2 ++
>>  configs/pine64_plus_defconfig           | 2 ++
>>  include/configs/sunxi-common.h          | 2 ++
>>  5 files changed, 9 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/arm/include/asm/arch-sunxi/boot0.h
>> b/arch/arm/include/asm/arch-sunxi/boot0.h
>> index c31a2af..173e042 100644
>> --- a/arch/arm/include/asm/arch-sunxi/boot0.h
>> +++ b/arch/arm/include/asm/arch-sunxi/boot0.h
>> @@ -4,11 +4,11 @@
>>   * SPDX-License-Identifier:    GPL-2.0+
>>   */
>>
>> -#if defined(CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER)
>> +#if defined(CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER) &&
>> !defined(CONFIG_SPL_BUILD)
>>  /* reserve space for BOOT0 header information */
>>      b    reset
>>      .space    1532
>> -#elif defined(CONFIG_ARM_BOOT_HOOK_RMR)
>> +#elif defined(CONFIG_ARM_BOOT_HOOK_RMR) && defined(CONFIG_SPL_BUILD)
>>  /* switch into AArch64 if needed */
>>      tst     x0, x0                  // this is "b #0x84" in ARM
>>      b       reset
> 
> Shouldn't the hunk above go into the patches that introduce the options?

Possibly.

>> diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
>> index 0f8ead9..80d4b57 100644
>> --- a/arch/arm/mach-sunxi/board.c
>> +++ b/arch/arm/mach-sunxi/board.c
>> @@ -133,7 +133,7 @@ static int gpio_init(void)
>>      return 0;
>>  }
>>
>> -#ifdef CONFIG_SPL_BUILD
>> +#if defined(CONFIG_SPL_BOARD_LOAD_IMAGE) && defined(CONFIG_SPL_BUILD)
>>  static int spl_board_load_image(struct spl_image_info *spl_image,
>>                  struct spl_boot_device *bootdev)
>>  {
>> diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
>> index d477925..b5246df 100644
>> --- a/board/sunxi/Kconfig
>> +++ b/board/sunxi/Kconfig
>> @@ -125,6 +125,7 @@ config MACH_SUN50I
>>      bool "sun50i (Allwinner A64)"
>>      select ARM64
>>      select SUNXI_GEN_SUN6I
>> +    select SUPPORT_SPL
>>
>>  endchoice
>>
>> @@ -187,6 +188,7 @@ config DRAM_ODT_EN
>>      bool "sunxi dram odt enable"
>>      default n if !MACH_SUN8I_A23
>>      default y if MACH_SUN8I_A23
>> +    default y if MACH_SUN50I
>>      ---help---
>>      Select this to enable dram odt (on die termination).
>>
>> diff --git a/configs/pine64_plus_defconfig
>> b/configs/pine64_plus_defconfig
>> index ebc24b8..5286fee 100644
>> --- a/configs/pine64_plus_defconfig
>> +++ b/configs/pine64_plus_defconfig
>> @@ -2,9 +2,11 @@ CONFIG_ARM=y
>>  CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y
>>  CONFIG_ARCH_SUNXI=y
>>  CONFIG_MACH_SUN50I=y
>> +CONFIG_DRAM_CLK=672
> 
> Do you need this?

No, you are right. I think I had a lower default in sunxi/Kconfig before.

Cheers,
Andre.

>>  CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pine64-plus"
>>  # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
>>  CONFIG_CONSOLE_MUX=y
>> +CONFIG_SPL=y
>>  # CONFIG_CMD_IMLS is not set
>>  # CONFIG_CMD_FLASH is not set
>>  # CONFIG_CMD_FPGA is not set
>> diff --git a/include/configs/sunxi-common.h
>> b/include/configs/sunxi-common.h
>> index 86b4104..f2cb174 100644
>> --- a/include/configs/sunxi-common.h
>> +++ b/include/configs/sunxi-common.h
>> @@ -182,7 +182,9 @@
>>
>>  #define CONFIG_SPL_FRAMEWORK
>>
>> +#ifndef CONFIG_MACH_SUN50I
>>  #define CONFIG_SPL_BOARD_LOAD_IMAGE
>> +#endif
>>
>>  #if defined(CONFIG_MACH_SUN9I)
>>  #define CONFIG_SPL_TEXT_BASE        0x10040        /* sram
>> start+header */
>>
diff mbox

Patch

diff --git a/arch/arm/include/asm/arch-sunxi/boot0.h b/arch/arm/include/asm/arch-sunxi/boot0.h
index c31a2af..173e042 100644
--- a/arch/arm/include/asm/arch-sunxi/boot0.h
+++ b/arch/arm/include/asm/arch-sunxi/boot0.h
@@ -4,11 +4,11 @@ 
  * SPDX-License-Identifier:	GPL-2.0+
  */
 
-#if defined(CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER)
+#if defined(CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER) && !defined(CONFIG_SPL_BUILD)
 /* reserve space for BOOT0 header information */
 	b	reset
 	.space	1532
-#elif defined(CONFIG_ARM_BOOT_HOOK_RMR)
+#elif defined(CONFIG_ARM_BOOT_HOOK_RMR) && defined(CONFIG_SPL_BUILD)
 /* switch into AArch64 if needed */
 	tst     x0, x0                  // this is "b #0x84" in ARM
 	b       reset
diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
index 0f8ead9..80d4b57 100644
--- a/arch/arm/mach-sunxi/board.c
+++ b/arch/arm/mach-sunxi/board.c
@@ -133,7 +133,7 @@  static int gpio_init(void)
 	return 0;
 }
 
-#ifdef CONFIG_SPL_BUILD
+#if defined(CONFIG_SPL_BOARD_LOAD_IMAGE) && defined(CONFIG_SPL_BUILD)
 static int spl_board_load_image(struct spl_image_info *spl_image,
 				struct spl_boot_device *bootdev)
 {
diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
index d477925..b5246df 100644
--- a/board/sunxi/Kconfig
+++ b/board/sunxi/Kconfig
@@ -125,6 +125,7 @@  config MACH_SUN50I
 	bool "sun50i (Allwinner A64)"
 	select ARM64
 	select SUNXI_GEN_SUN6I
+	select SUPPORT_SPL
 
 endchoice
 
@@ -187,6 +188,7 @@  config DRAM_ODT_EN
 	bool "sunxi dram odt enable"
 	default n if !MACH_SUN8I_A23
 	default y if MACH_SUN8I_A23
+	default y if MACH_SUN50I
 	---help---
 	Select this to enable dram odt (on die termination).
 
diff --git a/configs/pine64_plus_defconfig b/configs/pine64_plus_defconfig
index ebc24b8..5286fee 100644
--- a/configs/pine64_plus_defconfig
+++ b/configs/pine64_plus_defconfig
@@ -2,9 +2,11 @@  CONFIG_ARM=y
 CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y
 CONFIG_ARCH_SUNXI=y
 CONFIG_MACH_SUN50I=y
+CONFIG_DRAM_CLK=672
 CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pine64-plus"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 CONFIG_CONSOLE_MUX=y
+CONFIG_SPL=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index 86b4104..f2cb174 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -182,7 +182,9 @@ 
 
 #define CONFIG_SPL_FRAMEWORK
 
+#ifndef CONFIG_MACH_SUN50I
 #define CONFIG_SPL_BOARD_LOAD_IMAGE
+#endif
 
 #if defined(CONFIG_MACH_SUN9I)
 #define CONFIG_SPL_TEXT_BASE		0x10040		/* sram start+header */