[U-Boot] [PATCH 5/9] ARM: sunxi: Add basic A23 support

Chen-Yu Tsai wens at csie.org
Sun Oct 12 04:43:14 CEST 2014


On Sat, Oct 11, 2014 at 11:58 PM, Ian Campbell <ijc at hellion.org.uk> wrote:
> On Tue, 2014-10-07 at 15:11 +0800, Chen-Yu Tsai wrote:
>> The basic blocks of the A23 are similar to the A31 (sun6i). Re-use
>> sun6i code for initial clock, gpio, and uart setup.
>
> Do I take it that sun8i is also in the same position wrt DRAM bring up
> code not existing yet and there therefore being no SPL yet?

That is correct.

>> Signed-off-by: Chen-Yu Tsai <wens at csie.org>
>> ---
>>  arch/arm/Kconfig                        |  3 +++
>>  arch/arm/cpu/armv7/sunxi/Makefile       |  2 ++
>>  arch/arm/cpu/armv7/sunxi/board.c        |  3 ++-
>>  arch/arm/cpu/armv7/sunxi/cpu_info.c     |  2 ++
>>  arch/arm/include/asm/arch-sunxi/clock.h |  2 +-
>>  board/sunxi/Kconfig                     |  9 ++++++++-
>>  include/configs/sun8i.h                 | 23 +++++++++++++++++++++++
>>  7 files changed, 41 insertions(+), 3 deletions(-)
>>  create mode 100644 include/configs/sun8i.h
>>
>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index e3e7e78..cb691b2 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -450,6 +450,9 @@ config TARGET_SUN6I
>>  config TARGET_SUN7I
>>       bool "Support sun7i"
>>
>> +config TARGET_SUN8I
>> +     bool "Support sun8i"
>> +
>>  config TARGET_SNOWBALL
>>       bool "Support snowball"
>>
>> diff --git a/arch/arm/cpu/armv7/sunxi/Makefile b/arch/arm/cpu/armv7/sunxi/Makefile
>> index 2a42dca..24f1dae 100644
>> --- a/arch/arm/cpu/armv7/sunxi/Makefile
>> +++ b/arch/arm/cpu/armv7/sunxi/Makefile
>> @@ -12,10 +12,12 @@ obj-y     += board.o
>>  obj-y        += clock.o
>>  obj-y        += pinmux.o
>>  obj-$(CONFIG_SUN6I)  += prcm.o
>> +obj-$(CONFIG_SUN8I)  += prcm.o
>>  obj-$(CONFIG_SUN4I)  += clock_sun4i.o
>>  obj-$(CONFIG_SUN5I)  += clock_sun4i.o
>>  obj-$(CONFIG_SUN6I)  += clock_sun6i.o
>>  obj-$(CONFIG_SUN7I)  += clock_sun4i.o
>> +obj-$(CONFIG_SUN8I)  += clock_sun6i.o
>>
>>  ifndef CONFIG_SPL_BUILD
>>  obj-y        += cpu_info.o
>> diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c
>> index 29d45b6..61c1ba9 100644
>> --- a/arch/arm/cpu/armv7/sunxi/board.c
>> +++ b/arch/arm/cpu/armv7/sunxi/board.c
>> @@ -100,7 +100,8 @@ void reset_cpu(ulong addr)
>>  /* do some early init */
>>  void s_init(void)
>>  {
>> -#if !defined CONFIG_SPL_BUILD && (defined CONFIG_SUN7I || defined CONFIG_SUN6I)
>> +#if !defined CONFIG_SPL_BUILD && (defined CONFIG_SUN7I || \
>> +             defined CONFIG_SUN6I || defined CONFIG_SUN8I)
>
> At some point we should refactor this to use a common Kconfig thing
> (SUNXI_SMP etc) which the relevant targets select.

I agree. We can do this as we move further to Kconfig.

ChenYu

>>       /* Enable SMP mode for CPU0, by setting bit 6 of Auxiliary Ctl reg */
>>       asm volatile(
>>               "mrc p15, 0, r0, c1, c0, 1\n"
>> diff --git a/arch/arm/cpu/armv7/sunxi/cpu_info.c b/arch/arm/cpu/armv7/sunxi/cpu_info.c
>> index 40c4e13..4f2a09c 100644
>> --- a/arch/arm/cpu/armv7/sunxi/cpu_info.c
>> +++ b/arch/arm/cpu/armv7/sunxi/cpu_info.c
>> @@ -27,6 +27,8 @@ int print_cpuinfo(void)
>>       puts("CPU:   Allwinner A31 (SUN6I)\n");
>>  #elif defined CONFIG_SUN7I
>>       puts("CPU:   Allwinner A20 (SUN7I)\n");
>> +#elif defined CONFIG_SUN8I
>> +     puts("CPU:   Allwinner A23 (SUN8I)\n");
>>  #else
>>  #warning Please update cpu_info.c with correct CPU information
>>       puts("CPU:   SUNXI Family\n");
>> diff --git a/arch/arm/include/asm/arch-sunxi/clock.h b/arch/arm/include/asm/arch-sunxi/clock.h
>> index 8f5d860..012c2af 100644
>> --- a/arch/arm/include/asm/arch-sunxi/clock.h
>> +++ b/arch/arm/include/asm/arch-sunxi/clock.h
>> @@ -15,7 +15,7 @@
>>  #define CLK_GATE_CLOSE                       0x0
>>
>>  /* clock control module regs definition */
>> -#ifdef CONFIG_SUN6I
>> +#if defined(CONFIG_SUN6I) || defined(CONFIG_SUN8I)
>>  #include <asm/arch/clock_sun6i.h>
>>  #else
>>  #include <asm/arch/clock_sun4i.h>
>> diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
>> index 05defac..16f6db4 100644
>> --- a/board/sunxi/Kconfig
>> +++ b/board/sunxi/Kconfig
>> @@ -27,7 +27,14 @@ config SYS_CONFIG_NAME
>>
>>  endif
>>
>> -if TARGET_SUN4I || TARGET_SUN5I || TARGET_SUN6I || TARGET_SUN7I
>> +if TARGET_SUN8I
>> +
>> +config SYS_CONFIG_NAME
>> +     default "sun8i"
>> +
>> +endif
>> +
>> +if TARGET_SUN4I || TARGET_SUN5I || TARGET_SUN6I || TARGET_SUN7I || TARGET_SUN8I
>>
>>  config SYS_CPU
>>       default "armv7"
>> diff --git a/include/configs/sun8i.h b/include/configs/sun8i.h
>> new file mode 100644
>> index 0000000..1c1a7cd
>> --- /dev/null
>> +++ b/include/configs/sun8i.h
>> @@ -0,0 +1,23 @@
>> +/*
>> + * (C) Copyright 2014 Chen-Yu Tsai <wens at csie.org>
>> + *
>> + * Configuration settings for the Allwinner A23 (sun8i) CPU
>> + *
>> + * SPDX-License-Identifier:  GPL-2.0+
>> + */
>> +
>> +#ifndef __CONFIG_H
>> +#define __CONFIG_H
>> +
>> +/*
>> + * A23 specific configuration
>> + */
>> +#define CONFIG_SUN8I         /* sun8i SoC generation */
>> +#define CONFIG_SYS_PROMPT    "sun8i# "
>> +
>> +/*
>> + * Include common sunxi configuration where most the settings are
>> + */
>> +#include <configs/sunxi-common.h>
>> +
>> +#endif /* __CONFIG_H */
>
>


More information about the U-Boot mailing list