
Hi,
On 17-11-15 15:12, Jens Kuske wrote:
Add initial sun8i H3 support, only uart + mmc are supported for now.
Signed-off-by: Jens Kuske jenskuske@gmail.com
Thanks! I've applied both patches and added 2 more from myself to bring in the latest upstream dts[i] work and add defconfigs for the orangepi_plus and orangepi_pc.
I know that the upstream dts work is not yet fully final due to bus_gates discussion, but the bus_gates bindings (or any clk stuff for that matter) are not used by u-boot. So from a u-boot pov this does not matter (and when booting the kernel u-boot uses the dtb from the boot medium, not its own copy).
Given the popularity of H3 boards I believe that it is important to get basic support in place now. Esp. to keep the contributions from various people working on H3 support flowing. I'm very happy to see that various people are contributing to this and I do not want to discourage them by taking for-ever to merge this :)
Regards,
Hans
p.s.
I've listed myself as maintainer for the orangepi_plus for now but I do not actually have one, feel free to submit a follow-up patch updating board/sunxi/MAINTAINERS to make you the maintainer for that one.
arch/arm/cpu/armv7/sunxi/board.c | 4 ++++ arch/arm/cpu/armv7/sunxi/cpu_info.c | 2 ++ arch/arm/include/asm/arch-sunxi/gpio.h | 1 + board/sunxi/Kconfig | 7 ++++++- drivers/power/Kconfig | 5 +++-- include/configs/sun8i.h | 2 ++ 6 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c index 4785ac6..7615e50 100644 --- a/arch/arm/cpu/armv7/sunxi/board.c +++ b/arch/arm/cpu/armv7/sunxi/board.c @@ -72,6 +72,10 @@ static int gpio_init(void) sunxi_gpio_set_cfgpin(SUNXI_GPB(0), SUN8I_A33_GPB_UART0); sunxi_gpio_set_cfgpin(SUNXI_GPB(1), SUN8I_A33_GPB_UART0); sunxi_gpio_set_pull(SUNXI_GPB(1), SUNXI_GPIO_PULL_UP); +#elif CONFIG_CONS_INDEX == 1 && defined(CONFIG_MACH_SUN8I_H3)
- sunxi_gpio_set_cfgpin(SUNXI_GPA(4), SUN8I_H3_GPA_UART0);
- sunxi_gpio_set_cfgpin(SUNXI_GPA(5), SUN8I_H3_GPA_UART0);
- sunxi_gpio_set_pull(SUNXI_GPA(5), SUNXI_GPIO_PULL_UP); #elif CONFIG_CONS_INDEX == 1 && defined(CONFIG_MACH_SUN9I) sunxi_gpio_set_cfgpin(SUNXI_GPH(12), SUN9I_GPH_UART0); sunxi_gpio_set_cfgpin(SUNXI_GPH(13), SUN9I_GPH_UART0);
diff --git a/arch/arm/cpu/armv7/sunxi/cpu_info.c b/arch/arm/cpu/armv7/sunxi/cpu_info.c index 05fef32..1e73332 100644 --- a/arch/arm/cpu/armv7/sunxi/cpu_info.c +++ b/arch/arm/cpu/armv7/sunxi/cpu_info.c @@ -69,6 +69,8 @@ int print_cpuinfo(void) puts("CPU: Allwinner A23 (SUN8I)\n"); #elif defined CONFIG_MACH_SUN8I_A33 puts("CPU: Allwinner A33 (SUN8I)\n"); +#elif defined CONFIG_MACH_SUN8I_H3
- puts("CPU: Allwinner H3 (SUN8I)\n"); #elif defined CONFIG_MACH_SUN9I puts("CPU: Allwinner A80 (SUN9I)\n"); #else
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h index 8382101..7af5e29 100644 --- a/arch/arm/include/asm/arch-sunxi/gpio.h +++ b/arch/arm/include/asm/arch-sunxi/gpio.h @@ -147,6 +147,7 @@ enum sunxi_gpio_number { #define SUN7I_GPA_GMAC 5 #define SUN6I_GPA_SDC2 5 #define SUN6I_GPA_SDC3 4 +#define SUN8I_H3_GPA_UART0 2
#define SUN4I_GPB_TWI0 2 #define SUN4I_GPB_TWI1 2 diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig index f6f2a60..e1f574f 100644 --- a/board/sunxi/Kconfig +++ b/board/sunxi/Kconfig @@ -68,6 +68,11 @@ config MACH_SUN8I_A33 select SUPPORT_SPL select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
+config MACH_SUN8I_H3
- bool "sun8i (Allwinner H3)"
- select CPU_V7
- select SUNXI_GEN_SUN6I
- config MACH_SUN9I bool "sun9i (Allwinner A80)" select CPU_V7
@@ -78,7 +83,7 @@ endchoice # The sun8i SoCs share a lot, this helps to avoid a lot of "if A23 || A33" config MACH_SUN8I bool
- default y if MACH_SUN8I_A23 || MACH_SUN8I_A33
default y if MACH_SUN8I_A23 || MACH_SUN8I_A33 || MACH_SUN8I_H3
config DRAM_CLK
diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig index 809f8f1..1936e5f 100644 --- a/drivers/power/Kconfig +++ b/drivers/power/Kconfig @@ -8,7 +8,8 @@ choice prompt "Select Sunxi PMIC Variant" depends on ARCH_SUNXI default AXP209_POWER if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
- default AXP221_POWER if MACH_SUN6I || MACH_SUN8I
default AXP221_POWER if MACH_SUN6I || MACH_SUN8I_A23 || MACH_SUN8I_A33
default SUNXI_NO_PMIC if MACH_SUN8I_H3
config SUNXI_NO_PMIC boolean "board without a pmic"
@@ -31,7 +32,7 @@ config AXP209_POWER
config AXP221_POWER boolean "axp221 / axp223 pmic support"
- depends on MACH_SUN6I || MACH_SUN8I
- depends on MACH_SUN6I || MACH_SUN8I_A23 || MACH_SUN8I_A33 ---help--- Select this to enable support for the axp221/axp223 pmic found on most A23 and A31 boards.
diff --git a/include/configs/sun8i.h b/include/configs/sun8i.h index 4fc6365..113e320 100644 --- a/include/configs/sun8i.h +++ b/include/configs/sun8i.h @@ -25,6 +25,8 @@ #define CONFIG_ARMV7_PSCI_NR_CPUS 2 #elif defined(CONFIG_MACH_SUN8I_A33) #define CONFIG_ARMV7_PSCI_NR_CPUS 4 +#elif defined(CONFIG_MACH_SUN8I_H3) +#define CONFIG_ARMV7_PSCI_NR_CPUS 4 #else #error Unsupported sun8i variant #endif