There are significant differences between the V3 and V3s that are relevant
for U-Boot support: a different DRAM driver, AXP209 support and extra UART1
pins.

To avoid overwriting V3s defaults that do not apply to V3 in board configs,
split off V3/S3 support as a separate MACH and pick-up all relevant
V3s-specific choices with it.

Also update the pinecube config to reflect the updated config options.

Signed-off-by: Paul Kocialkowski <cont...@paulk.fr>
---
 arch/arm/dts/Makefile                       |  5 ++--
 arch/arm/include/asm/arch-sunxi/cpu_sun4i.h |  1 +
 arch/arm/mach-sunxi/Kconfig                 | 27 ++++++++++++++++-----
 arch/arm/mach-sunxi/board.c                 |  3 ++-
 arch/arm/mach-sunxi/cpu_info.c              |  2 ++
 arch/arm/mach-sunxi/dram_sunxi_dw.c         |  4 +--
 arch/arm/mach-sunxi/spl_spi_sunxi.c         |  1 +
 board/sunxi/board.c                         |  2 +-
 configs/pinecube_defconfig                  |  4 +--
 drivers/clk/sunxi/Kconfig                   |  2 +-
 drivers/phy/allwinner/Kconfig               |  2 +-
 drivers/pinctrl/sunxi/Kconfig               |  2 +-
 drivers/power/Kconfig                       |  4 +--
 13 files changed, 39 insertions(+), 20 deletions(-)

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index be6867ceae0e..ba57284cda8a 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -646,10 +646,11 @@ dtb-$(CONFIG_MACH_SUN8I_R40) += \
        sun8i-r40-oka40i-c.dtb \
        sun8i-t3-cqa3t-bv3.dtb \
        sun8i-v40-bananapi-m2-berry.dtb
-dtb-$(CONFIG_MACH_SUN8I_V3S) += \
+dtb-$(CONFIG_MACH_SUN8I_V3) += \
        sun8i-s3-elimo-initium.dtb \
        sun8i-s3-pinecube.dtb \
-       sun8i-v3-sl631-imx179.dtb \
+       sun8i-v3-sl631-imx179.dtb
+dtb-$(CONFIG_MACH_SUN8I_V3S) += \
        sun8i-v3s-licheepi-zero.dtb \
        sun8i-v3s-licheepi-zero-dock.dtb
 dtb-$(CONFIG_MACH_SUN8I_R528) += \
diff --git a/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h 
b/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h
index f023a4cfd934..4863220d89bc 100644
--- a/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h
+++ b/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h
@@ -13,6 +13,7 @@
 
 #if defined(CONFIG_SUNXI_GEN_SUN6I) && \
     !defined(CONFIG_MACH_SUN8I_R40) && \
+    !defined(CONFIG_MACH_SUN8I_V3) && \
     !defined(CONFIG_MACH_SUN8I_V3S)
 #define SUNXI_SRAM_A2_BASE             0x00040000
 #ifdef CONFIG_MACH_SUN8I_H3
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index 8b43fd176dc0..742ec17f9767 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -400,8 +400,20 @@ config MACH_SUN8I_R528
        select SUPPORT_SPL
        select DRAM_SUN20I_D1
 
+config MACH_SUN8I_V3
+       bool "sun8i (Allwinner V3/S3)"
+       select CPU_V7A
+       select CPU_V7_HAS_NONSEC
+       select CPU_V7_HAS_VIRT
+       select ARCH_SUPPORT_PSCI
+       select SUNXI_GEN_SUN6I
+       select SUNXI_DRAM_DW
+       select SUNXI_DRAM_DW_16BIT
+       select SUPPORT_SPL
+       select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
+
 config MACH_SUN8I_V3S
-       bool "sun8i (Allwinner V3/V3s/S3/S3L)"
+       bool "sun8i (Allwinner V3s)"
        select CPU_V7A
        select CPU_V7_HAS_NONSEC
        select CPU_V7_HAS_VIRT
@@ -472,6 +484,7 @@ config MACH_SUN8I
        default y if MACH_SUN8I_A83T
        default y if MACH_SUNXI_H3_H5
        default y if MACH_SUN8I_R40
+       default y if MACH_SUN8I_V3
        default y if MACH_SUN8I_V3S
 
 config RESERVE_ALLWINNER_BOOT0_HEADER
@@ -592,7 +605,7 @@ config DRAM_CLK
        default 792 if MACH_SUN9I
        default 648 if MACH_SUN8I_R40
        default 360 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || \
-                      MACH_SUN8I_V3S
+                      MACH_SUN8I_V3 || MACH_SUN8I_V3S
        default 312 if MACH_SUN6I || MACH_SUN8I
        default 672 if MACH_SUN50I
        default 744 if MACH_SUN50I_H6
@@ -617,7 +630,7 @@ config DRAM_ZQ
        default 123 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || \
                       MACH_SUN8I_A23 || MACH_SUN8I_A33 || MACH_SUN8I_A83T
        default 127 if MACH_SUN7I
-       default 14779 if MACH_SUN8I_V3S
+       default 14779 if MACH_SUN8I_V3 || MACH_SUN8I_V3S
        default 3881979 if MACH_SUNXI_H3_H5 || MACH_SUN8I_R40 || MACH_SUN50I_H6
        default 4145117 if MACH_SUN9I
        default 3881915 if MACH_SUN50I
@@ -743,7 +756,7 @@ config SYS_SOC
 config SUNXI_MINIMUM_DRAM_MB
        int "minimum DRAM size"
        default 32 if MACH_SUNIV
-       default 64 if MACH_SUN8I_V3S
+       default 64 if MACH_SUN8I_V3 || MACH_SUN8I_V3S
        default 256
        ---help---
        Minimum DRAM size expected on the board. Traditionally we assumed
@@ -784,7 +797,8 @@ config MMC_SUNXI_SLOT_EXTRA
 
 config I2C0_ENABLE
        bool "Enable I2C/TWI controller 0"
-       default y if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUN8I_R40
+       default y if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || \
+                    MACH_SUN8I_R40 || MACH_SUN8I_V3
        default n if MACH_SUN6I || MACH_SUN8I
        select CMD_I2C
        ---help---
@@ -829,6 +843,7 @@ config VIDEO_SUNXI
        depends on !MACH_SUN8I_A83T
        depends on !MACH_SUNXI_H3_H5
        depends on !MACH_SUN8I_R40
+       depends on !MACH_SUN8I_V3
        depends on !MACH_SUN8I_V3S
        depends on !MACH_SUN9I
        depends on !MACH_SUN50I
@@ -1052,7 +1067,7 @@ config SPL_STACK_R_ADDR
 
 config SPL_SPI_SUNXI
        bool "Support for SPI Flash on Allwinner SoCs in SPL"
-       depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUNXI_H3_H5 
|| MACH_SUN50I || MACH_SUN8I_R40 || MACH_SUN8I_V3S || SUN50I_GEN_H6 || 
MACH_SUNIV || SUNXI_GEN_NCAT2
+       depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUNXI_H3_H5 
|| MACH_SUN50I || MACH_SUN8I_R40 || MACH_SUN8I_V3 || MACH_SUN8I_V3S || 
SUN50I_GEN_H6 || MACH_SUNIV || SUNXI_GEN_NCAT2
        help
          Enable support for SPI Flash. This option allows SPL to read from
          sunxi SPI Flash. It uses the same method as the boot ROM, so does
diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
index b1bf51f40c5c..1b721791635e 100644
--- a/arch/arm/mach-sunxi/board.c
+++ b/arch/arm/mach-sunxi/board.c
@@ -141,7 +141,8 @@ static int gpio_init(void)
        sunxi_gpio_set_cfgpin(SUNXI_GPB(9), SUN8I_A83T_GPB_UART0);
        sunxi_gpio_set_cfgpin(SUNXI_GPB(10), SUN8I_A83T_GPB_UART0);
        sunxi_gpio_set_pull(SUNXI_GPB(10), SUNXI_GPIO_PULL_UP);
-#elif CONFIG_CONS_INDEX == 1 && defined(CONFIG_MACH_SUN8I_V3S)
+#elif CONFIG_CONS_INDEX == 1 && (defined(CONFIG_MACH_SUN8I_V3) || \
+                                defined(CONFIG_MACH_SUN8I_V3S))
        sunxi_gpio_set_cfgpin(SUNXI_GPB(8), SUN8I_V3S_GPB_UART0);
        sunxi_gpio_set_cfgpin(SUNXI_GPB(9), SUN8I_V3S_GPB_UART0);
        sunxi_gpio_set_pull(SUNXI_GPB(9), SUNXI_GPIO_PULL_UP);
diff --git a/arch/arm/mach-sunxi/cpu_info.c b/arch/arm/mach-sunxi/cpu_info.c
index 310dca06e57e..1c6ef4b402fa 100644
--- a/arch/arm/mach-sunxi/cpu_info.c
+++ b/arch/arm/mach-sunxi/cpu_info.c
@@ -90,6 +90,8 @@ int print_cpuinfo(void)
        printf("CPU:   Allwinner H3 (SUN8I %04x)\n", sunxi_get_sram_id());
 #elif defined CONFIG_MACH_SUN8I_R40
        printf("CPU:   Allwinner R40 (SUN8I %04x)\n", sunxi_get_sram_id());
+#elif defined CONFIG_MACH_SUN8I_V3
+       printf("CPU:   Allwinner V3/S3 (SUN8I %04x)\n", sunxi_get_sram_id());
 #elif defined CONFIG_MACH_SUN8I_V3S
        printf("CPU:   Allwinner V3s (SUN8I %04x)\n", sunxi_get_sram_id());
 #elif defined CONFIG_MACH_SUN8I_R528
diff --git a/arch/arm/mach-sunxi/dram_sunxi_dw.c 
b/arch/arm/mach-sunxi/dram_sunxi_dw.c
index 4ed295909ceb..bf89509107b2 100644
--- a/arch/arm/mach-sunxi/dram_sunxi_dw.c
+++ b/arch/arm/mach-sunxi/dram_sunxi_dw.c
@@ -851,7 +851,7 @@ unsigned long sunxi_dram_init(void)
                .dx_read_delays  = SUN8I_H3_DX_READ_DELAYS,
                .dx_write_delays = SUN8I_H3_DX_WRITE_DELAYS,
                .ac_delays       = SUN8I_H3_AC_DELAYS,
-#elif defined(CONFIG_MACH_SUN8I_V3S)
+#elif defined(CONFIG_MACH_SUN8I_V3) || defined(CONFIG_MACH_SUN8I_V3S)
                .dx_read_delays  = SUN8I_V3S_DX_READ_DELAYS,
                .dx_write_delays = SUN8I_V3S_DX_WRITE_DELAYS,
                .ac_delays       = SUN8I_V3S_AC_DELAYS,
@@ -878,7 +878,7 @@ unsigned long sunxi_dram_init(void)
        uint16_t socid = SOCID_H3;
 #elif defined(CONFIG_MACH_SUN8I_R40)
        uint16_t socid = SOCID_R40;
-#elif defined(CONFIG_MACH_SUN8I_V3S)
+#elif defined(CONFIG_MACH_SUN8I_V3) || defined(CONFIG_MACH_SUN8I_V3S)
        uint16_t socid = SOCID_V3S;
 #elif defined(CONFIG_MACH_SUN50I)
        uint16_t socid = SOCID_A64;
diff --git a/arch/arm/mach-sunxi/spl_spi_sunxi.c 
b/arch/arm/mach-sunxi/spl_spi_sunxi.c
index 5f72e809952b..0e23bacdcaf0 100644
--- a/arch/arm/mach-sunxi/spl_spi_sunxi.c
+++ b/arch/arm/mach-sunxi/spl_spi_sunxi.c
@@ -141,6 +141,7 @@ static bool is_sun6i_gen_spi(void)
        return IS_ENABLED(CONFIG_SUNXI_GEN_SUN6I) ||
               IS_ENABLED(CONFIG_SUN50I_GEN_H6) ||
               IS_ENABLED(CONFIG_SUNXI_GEN_NCAT2) ||
+              IS_ENABLED(CONFIG_MACH_SUN8I_V3) ||
               IS_ENABLED(CONFIG_MACH_SUN8I_V3S);
 }
 
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index ac9cefc6eac9..4f0ceb319f32 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -68,7 +68,7 @@ void i2c_init_board(void)
        sunxi_gpio_set_cfgpin(SUNXI_GPH(14), SUN6I_GPH_TWI0);
        sunxi_gpio_set_cfgpin(SUNXI_GPH(15), SUN6I_GPH_TWI0);
        clock_twi_onoff(0, 1);
-#elif defined(CONFIG_MACH_SUN8I_V3S)
+#elif defined(CONFIG_MACH_SUN8I_V3) || defined(CONFIG_MACH_SUN8I_V3S)
        sunxi_gpio_set_cfgpin(SUNXI_GPB(6), SUN8I_V3S_GPB_TWI0);
        sunxi_gpio_set_cfgpin(SUNXI_GPB(7), SUN8I_V3S_GPB_TWI0);
        clock_twi_onoff(0, 1);
diff --git a/configs/pinecube_defconfig b/configs/pinecube_defconfig
index 7567a6aa7394..ea40d227bd53 100644
--- a/configs/pinecube_defconfig
+++ b/configs/pinecube_defconfig
@@ -2,11 +2,9 @@ CONFIG_ARM=y
 CONFIG_ARCH_SUNXI=y
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-s3-pinecube"
 CONFIG_SPL=y
-CONFIG_MACH_SUN8I_V3S=y
-CONFIG_SUNXI_DRAM_DDR3_1333=y
+CONFIG_MACH_SUN8I_V3=y
 CONFIG_DRAM_CLK=504
 CONFIG_DRAM_ODT_EN=y
-CONFIG_I2C0_ENABLE=y
 # CONFIG_HAS_ARMV7_SECURE_BASE is not set
 CONFIG_SPL_I2C=y
 CONFIG_NO_NET=y
diff --git a/drivers/clk/sunxi/Kconfig b/drivers/clk/sunxi/Kconfig
index f44db76c1823..620f330ea169 100644
--- a/drivers/clk/sunxi/Kconfig
+++ b/drivers/clk/sunxi/Kconfig
@@ -68,7 +68,7 @@ config CLK_SUN8I_R40
 
 config CLK_SUN8I_V3S
        bool "Clock driver for Allwinner V3S"
-       default MACH_SUN8I_V3S
+       default MACH_SUN8I_V3 || MACH_SUN8I_V3S
        help
          This enables common clock driver support for platforms based
          on Allwinner V3S SoC.
diff --git a/drivers/phy/allwinner/Kconfig b/drivers/phy/allwinner/Kconfig
index bb0bd8d5f812..8b995bde041d 100644
--- a/drivers/phy/allwinner/Kconfig
+++ b/drivers/phy/allwinner/Kconfig
@@ -5,7 +5,7 @@ config PHY_SUN4I_USB
        bool "Allwinner Sun4I USB PHY driver"
        depends on ARCH_SUNXI
        depends on !MACH_SUN9I
-       default n if MACH_SUN8I_V3S
+       default n if MACH_SUN8I_V3 || MACH_SUN8I_V3S
        default y
        select DM_REGULATOR
        select PHY
diff --git a/drivers/pinctrl/sunxi/Kconfig b/drivers/pinctrl/sunxi/Kconfig
index 65e8192a99a1..1106102a5eae 100644
--- a/drivers/pinctrl/sunxi/Kconfig
+++ b/drivers/pinctrl/sunxi/Kconfig
@@ -76,7 +76,7 @@ config PINCTRL_SUN8I_H3_R
 
 config PINCTRL_SUN8I_V3S
        bool "Support for the Allwinner V3s PIO"
-       default MACH_SUN8I_V3S
+       default MACH_SUN8I_V3 || MACH_SUN8I_V3S
        select PINCTRL_SUNXI
 
 config PINCTRL_SUN9I_A80
diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index eed65058e667..08369bf833e4 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -54,7 +54,7 @@ source "drivers/power/regulator/Kconfig"
 choice
        prompt "Select Sunxi PMIC Variant"
        depends on ARCH_SUNXI
-       default AXP209_POWER if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
+       default AXP209_POWER if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || 
MACH_SUN8I_V3
        default AXP221_POWER if MACH_SUN6I || MACH_SUN8I_A23 || MACH_SUN8I_A33 
|| MACH_SUN8I_R40
        default AXP818_POWER if MACH_SUN8I_A83T
        default SUNXI_NO_PMIC if MACH_SUNXI_H3_H5 || MACH_SUN50I || 
MACH_SUN8I_V3S
@@ -75,7 +75,7 @@ config AXP152_POWER
 
 config AXP209_POWER
        bool "axp209 pmic support"
-       depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUN8I_V3S
+       depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUN8I_V3
        select AXP_PMIC_BUS
        select CMD_POWEROFF
        ---help---
-- 
2.49.0

Reply via email to