]> git.sur5r.net Git - u-boot/blobdiff - arch/arm/mach-sunxi/Kconfig
Merge branch 'master' of git://git.denx.de/u-boot-sunxi
[u-boot] / arch / arm / mach-sunxi / Kconfig
index ac3be300fedd4e46029dfccc1372a7a5aa6cdfd9..678e33dd40e8bb6501960fd47a9d4546562cbb67 100644 (file)
@@ -1,33 +1,77 @@
 if ARCH_SUNXI
 
+config SPL_LDSCRIPT
+       default "arch/arm/cpu/armv7/sunxi/u-boot-spl.lds" if !ARM64
+
 config IDENT_STRING
        default " Allwinner Technology"
 
-# FIXME: Should not redefine these Kconfig symbols
-config PRE_CONSOLE_BUFFER
-       default y
+config DRAM_SUN4I
+       bool
+       help
+         Select this dram controller driver for Sun4/5/7i platforms,
+         like A10/A13/A20.
 
-config SPL_GPIO_SUPPORT
-       default y
+config DRAM_SUN6I
+       bool
+       help
+         Select this dram controller driver for Sun6i platforms,
+         like A31/A31s.
 
-config SPL_LIBCOMMON_SUPPORT
-       default y
+config DRAM_SUN8I_A23
+       bool
+       help
+         Select this dram controller driver for Sun8i platforms,
+         for A23 SOC.
 
-config SPL_LIBDISK_SUPPORT
-       default y
+config DRAM_SUN8I_A33
+       bool
+       help
+         Select this dram controller driver for Sun8i platforms,
+         for A33 SOC.
 
-config SPL_LIBGENERIC_SUPPORT
-       default y
+config DRAM_SUN8I_A83T
+       bool
+       help
+         Select this dram controller driver for Sun8i platforms,
+         for A83T SOC.
 
-config SPL_MMC_SUPPORT
-       depends on SPL && GENERIC_MMC
-       default y
+config DRAM_SUN9I
+       bool
+       help
+         Select this dram controller driver for Sun9i platforms,
+         like A80.
 
-config SPL_POWER_SUPPORT
-       default y
+config SUN6I_P2WI
+       bool "Allwinner sun6i internal P2WI controller"
+       help
+         If you say yes to this option, support will be included for the
+         P2WI (Push/Pull 2 Wire Interface) controller embedded in some sunxi
+         SOCs.
+         The P2WI looks like an SMBus controller (which supports only byte
+         accesses), except that it only supports one slave device.
+         This interface is used to connect to specific PMIC devices (like the
+         AXP221).
+
+config SUN6I_PRCM
+       bool
+       help
+         Support for the PRCM (Power/Reset/Clock Management) unit available
+         in A31 SoC.
 
-config SPL_SERIAL_SUPPORT
-       default y
+config AXP_PMIC_BUS
+       bool "Sunxi AXP PMIC bus access helpers"
+       help
+         Select this PMIC bus access helpers for Sunxi platform PRCM or other
+         AXP family PMIC devices.
+
+config SUN8I_RSB
+       bool "Allwinner sunXi Reduced Serial Bus Driver"
+       help
+         Say y here to enable support for Allwinner's Reduced Serial Bus
+         (RSB) support. This controller is responsible for communicating
+         with various RSB based devices, such as AXP223, AXP8XX PMICs,
+         and AC100/AC200 ICs.
 
 config SUNXI_HIGH_SRAM
        bool
@@ -40,6 +84,9 @@ config SUNXI_HIGH_SRAM
        Chips using the latter setup are supposed to select this option to
        adjust the addresses accordingly.
 
+config SUNXI_A64_TIMER_ERRATUM
+       bool
+
 # Note only one of these may be selected at a time! But hidden choices are
 # not supported by Kconfig
 config SUNXI_GEN_SUN4I
@@ -55,11 +102,35 @@ config SUNXI_GEN_SUN6I
        separate ahb reset control registers, custom pmic bus, new style
        watchdog, etc.
 
+config SUNXI_DRAM_DW
+       bool
+       ---help---
+       Select this for sunxi SoCs which uses a DRAM controller like the
+       DesignWare controller used in H3, mainly SoCs after H3, which do
+       not have official open-source DRAM initialization code, but can
+       use modified H3 DRAM initialization code.
+
+if SUNXI_DRAM_DW
+config SUNXI_DRAM_DW_16BIT
+       bool
+       ---help---
+       Select this for sunxi SoCs with DesignWare DRAM controller and
+       have only 16-bit memory buswidth.
+
+config SUNXI_DRAM_DW_32BIT
+       bool
+       ---help---
+       Select this for sunxi SoCs with DesignWare DRAM controller with
+       32-bit memory buswidth.
+endif
 
 config MACH_SUNXI_H3_H5
        bool
        select DM_I2C
+       select PHY_SUN4I_USB
        select SUNXI_DE2
+       select SUNXI_DRAM_DW
+       select SUNXI_DRAM_DW_32BIT
        select SUNXI_GEN_SUN6I
        select SUPPORT_SPL
 
@@ -69,67 +140,89 @@ choice
 
 config MACH_SUN4I
        bool "sun4i (Allwinner A10)"
-       select CPU_V7
+       select CPU_V7A
        select ARM_CORTEX_CPU_IS_UP
+       select DM_MMC if MMC
+       select DM_SCSI if SCSI
+       select PHY_SUN4I_USB
+       select DRAM_SUN4I
        select SUNXI_GEN_SUN4I
        select SUPPORT_SPL
 
 config MACH_SUN5I
        bool "sun5i (Allwinner A13)"
-       select CPU_V7
+       select CPU_V7A
        select ARM_CORTEX_CPU_IS_UP
+       select DRAM_SUN4I
+       select PHY_SUN4I_USB
        select SUNXI_GEN_SUN4I
        select SUPPORT_SPL
+       imply CONS_INDEX_2 if !DM_SERIAL
 
 config MACH_SUN6I
        bool "sun6i (Allwinner A31)"
-       select CPU_V7
+       select CPU_V7A
        select CPU_V7_HAS_NONSEC
        select CPU_V7_HAS_VIRT
        select ARCH_SUPPORT_PSCI
+       select DRAM_SUN6I
+       select PHY_SUN4I_USB
+       select SUN6I_P2WI
+       select SUN6I_PRCM
        select SUNXI_GEN_SUN6I
        select SUPPORT_SPL
        select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
 
 config MACH_SUN7I
        bool "sun7i (Allwinner A20)"
-       select CPU_V7
+       select CPU_V7A
        select CPU_V7_HAS_NONSEC
        select CPU_V7_HAS_VIRT
        select ARCH_SUPPORT_PSCI
+       select DRAM_SUN4I
+       select PHY_SUN4I_USB
        select SUNXI_GEN_SUN4I
        select SUPPORT_SPL
        select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
 
 config MACH_SUN8I_A23
        bool "sun8i (Allwinner A23)"
-       select CPU_V7
+       select CPU_V7A
        select CPU_V7_HAS_NONSEC
        select CPU_V7_HAS_VIRT
        select ARCH_SUPPORT_PSCI
+       select DRAM_SUN8I_A23
+       select PHY_SUN4I_USB
        select SUNXI_GEN_SUN6I
        select SUPPORT_SPL
        select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
+       imply CONS_INDEX_5 if !DM_SERIAL
 
 config MACH_SUN8I_A33
        bool "sun8i (Allwinner A33)"
-       select CPU_V7
+       select CPU_V7A
        select CPU_V7_HAS_NONSEC
        select CPU_V7_HAS_VIRT
        select ARCH_SUPPORT_PSCI
+       select DRAM_SUN8I_A33
+       select PHY_SUN4I_USB
        select SUNXI_GEN_SUN6I
        select SUPPORT_SPL
        select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
+       imply CONS_INDEX_5 if !DM_SERIAL
 
 config MACH_SUN8I_A83T
        bool "sun8i (Allwinner A83T)"
-       select CPU_V7
+       select CPU_V7A
+       select DRAM_SUN8I_A83T
+       select PHY_SUN4I_USB
        select SUNXI_GEN_SUN6I
+       select MMC_SUNXI_HAS_NEW_MODE
        select SUPPORT_SPL
 
 config MACH_SUN8I_H3
        bool "sun8i (Allwinner H3)"
-       select CPU_V7
+       select CPU_V7A
        select CPU_V7_HAS_NONSEC
        select CPU_V7_HAS_VIRT
        select ARCH_SUPPORT_PSCI
@@ -138,49 +231,67 @@ config MACH_SUN8I_H3
 
 config MACH_SUN8I_R40
        bool "sun8i (Allwinner R40)"
-       select CPU_V7
+       select CPU_V7A
        select CPU_V7_HAS_NONSEC
        select CPU_V7_HAS_VIRT
        select ARCH_SUPPORT_PSCI
        select SUNXI_GEN_SUN6I
        select SUPPORT_SPL
+       select SUNXI_DRAM_DW
+       select SUNXI_DRAM_DW_32BIT
 
 config MACH_SUN8I_V3S
        bool "sun8i (Allwinner V3s)"
-       select CPU_V7
+       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_SUN9I
        bool "sun9i (Allwinner A80)"
-       select CPU_V7
+       select CPU_V7A
+       select DRAM_SUN9I
+       select SUN6I_PRCM
        select SUNXI_HIGH_SRAM
        select SUNXI_GEN_SUN6I
+       select SUN8I_RSB
        select SUPPORT_SPL
 
 config MACH_SUN50I
        bool "sun50i (Allwinner A64)"
        select ARM64
        select DM_I2C
+       select PHY_SUN4I_USB
        select SUNXI_DE2
        select SUNXI_GEN_SUN6I
        select SUNXI_HIGH_SRAM
        select SUPPORT_SPL
+       select SUNXI_DRAM_DW
+       select SUNXI_DRAM_DW_32BIT
+       select FIT
+       select SPL_LOAD_FIT
+       select SUNXI_A64_TIMER_ERRATUM
 
 config MACH_SUN50I_H5
        bool "sun50i (Allwinner H5)"
        select ARM64
        select MACH_SUNXI_H3_H5
        select SUNXI_HIGH_SRAM
+       select FIT
+       select SPL_LOAD_FIT
 
 endchoice
 
 # The sun8i SoCs share a lot, this helps to avoid a lot of "if A23 || A33"
 config MACH_SUN8I
        bool
+       select SUN8I_RSB
+       select SUN6I_PRCM
        default y if MACH_SUN8I_A23
        default y if MACH_SUN8I_A33
        default y if MACH_SUN8I_A83T
@@ -211,6 +322,47 @@ config ARM_BOOT_HOOK_RMR
        This allows both the SPL and the U-Boot proper to be entered in
        either mode and switch to AArch64 if needed.
 
+if SUNXI_DRAM_DW
+config SUNXI_DRAM_DDR3
+       bool
+
+config SUNXI_DRAM_DDR2
+       bool
+
+config SUNXI_DRAM_LPDDR3
+       bool
+
+choice
+       prompt "DRAM Type and Timing"
+       default SUNXI_DRAM_DDR3_1333 if !MACH_SUN8I_V3S
+       default SUNXI_DRAM_DDR2_V3S if MACH_SUN8I_V3S
+
+config SUNXI_DRAM_DDR3_1333
+       bool "DDR3 1333"
+       select SUNXI_DRAM_DDR3
+       depends on !MACH_SUN8I_V3S
+       ---help---
+       This option is the original only supported memory type, which suits
+       many H3/H5/A64 boards available now.
+
+config SUNXI_DRAM_LPDDR3_STOCK
+       bool "LPDDR3 with Allwinner stock configuration"
+       select SUNXI_DRAM_LPDDR3
+       ---help---
+       This option is the LPDDR3 timing used by the stock boot0 by
+       Allwinner.
+
+config SUNXI_DRAM_DDR2_V3S
+       bool "DDR2 found in V3s chip"
+       select SUNXI_DRAM_DDR2
+       depends on MACH_SUN8I_V3S
+       ---help---
+       This option is only for the DDR2 memory chip which is co-packaged in
+       Allwinner V3s SoC.
+
+endchoice
+endif
+
 config DRAM_TYPE
        int "sunxi dram type"
        depends on MACH_SUN8I_A83T
@@ -223,7 +375,8 @@ config DRAM_CLK
        default 792 if MACH_SUN9I
        default 648 if MACH_SUN8I_R40
        default 312 if MACH_SUN6I || MACH_SUN8I
-       default 360 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
+       default 360 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || \
+                      MACH_SUN8I_V3S
        default 672 if MACH_SUN50I
        ---help---
        Set the dram clock speed, valid range 240 - 480 (prior to sun9i),
@@ -243,6 +396,7 @@ config DRAM_ZQ
        int "sunxi dram zq value"
        default 123 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN8I
        default 127 if MACH_SUN7I
+       default 14779 if MACH_SUN8I_V3S
        default 3881979 if MACH_SUN8I_R40
        default 4145117 if MACH_SUN9I
        default 3881915 if MACH_SUN50I
@@ -342,9 +496,9 @@ config SYS_CLK_FREQ
        default 1008000000 if MACH_SUN5I
        default 1008000000 if MACH_SUN6I
        default 912000000 if MACH_SUN7I
+       default 816000000 if MACH_SUN50I || MACH_SUN50I_H5
        default 1008000000 if MACH_SUN8I
        default 1008000000 if MACH_SUN9I
-       default 816000000 if MACH_SUN50I
 
 config SYS_CONFIG_NAME
        default "sun4i" if MACH_SUN4I
@@ -551,7 +705,7 @@ config AXP_GPIO
        ---help---
        Say Y here to enable support for the gpio pins of the axp PMIC ICs.
 
-config VIDEO
+config VIDEO_SUNXI
        bool "Enable graphical uboot console on HDMI, LCD or VGA"
        depends on !MACH_SUN8I_A83T
        depends on !MACH_SUNXI_H3_H5
@@ -559,6 +713,8 @@ config VIDEO
        depends on !MACH_SUN8I_V3S
        depends on !MACH_SUN9I
        depends on !MACH_SUN50I
+       select VIDEO
+       imply VIDEO_DT_SIMPLEFB
        default y
        ---help---
        Say Y here to add support for using a cfb console on the HDMI, LCD
@@ -567,21 +723,21 @@ config VIDEO
 
 config VIDEO_HDMI
        bool "HDMI output support"
-       depends on VIDEO && !MACH_SUN8I
+       depends on VIDEO_SUNXI && !MACH_SUN8I
        default y
        ---help---
        Say Y here to add support for outputting video over HDMI.
 
 config VIDEO_VGA
        bool "VGA output support"
-       depends on VIDEO && (MACH_SUN4I || MACH_SUN7I)
+       depends on VIDEO_SUNXI && (MACH_SUN4I || MACH_SUN7I)
        default n
        ---help---
        Say Y here to add support for outputting video over VGA.
 
 config VIDEO_VGA_VIA_LCD
        bool "VGA via LCD controller support"
-       depends on VIDEO && (MACH_SUN5I || MACH_SUN6I || MACH_SUN8I)
+       depends on VIDEO_SUNXI && (MACH_SUN5I || MACH_SUN6I || MACH_SUN8I)
        default n
        ---help---
        Say Y here to add support for external DACs connected to the parallel
@@ -608,14 +764,14 @@ config VIDEO_VGA_EXTERNAL_DAC_EN
 
 config VIDEO_COMPOSITE
        bool "Composite video output support"
-       depends on VIDEO && (MACH_SUN4I || MACH_SUN5I || MACH_SUN7I)
+       depends on VIDEO_SUNXI && (MACH_SUN4I || MACH_SUN5I || MACH_SUN7I)
        default n
        ---help---
        Say Y here to add support for outputting composite video.
 
 config VIDEO_LCD_MODE
        string "LCD panel timing details"
-       depends on VIDEO
+       depends on VIDEO_SUNXI
        default ""
        ---help---
        LCD panel timing details string, leave empty if there is no LCD panel.
@@ -625,14 +781,14 @@ config VIDEO_LCD_MODE
 
 config VIDEO_LCD_DCLK_PHASE
        int "LCD panel display clock phase"
-       depends on VIDEO
+       depends on VIDEO_SUNXI || DM_VIDEO
        default 1
        ---help---
        Select LCD panel display clock phase shift, range 0-3.
 
 config VIDEO_LCD_POWER
        string "LCD panel power enable pin"
-       depends on VIDEO
+       depends on VIDEO_SUNXI
        default ""
        ---help---
        Set the power enable pin for the LCD panel. This takes a string in the
@@ -640,7 +796,7 @@ config VIDEO_LCD_POWER
 
 config VIDEO_LCD_RESET
        string "LCD panel reset pin"
-       depends on VIDEO
+       depends on VIDEO_SUNXI
        default ""
        ---help---
        Set the reset pin for the LCD panel. This takes a string in the format
@@ -648,7 +804,7 @@ config VIDEO_LCD_RESET
 
 config VIDEO_LCD_BL_EN
        string "LCD panel backlight enable pin"
-       depends on VIDEO
+       depends on VIDEO_SUNXI
        default ""
        ---help---
        Set the backlight enable pin for the LCD panel. This takes a string in the
@@ -657,7 +813,7 @@ config VIDEO_LCD_BL_EN
 
 config VIDEO_LCD_BL_PWM
        string "LCD panel backlight pwm pin"
-       depends on VIDEO
+       depends on VIDEO_SUNXI
        default ""
        ---help---
        Set the backlight pwm pin for the LCD panel. This takes a string in the
@@ -665,14 +821,14 @@ config VIDEO_LCD_BL_PWM
 
 config VIDEO_LCD_BL_PWM_ACTIVE_LOW
        bool "LCD panel backlight pwm is inverted"
-       depends on VIDEO
+       depends on VIDEO_SUNXI
        default y
        ---help---
        Set this if the backlight pwm output is active low.
 
 config VIDEO_LCD_PANEL_I2C
        bool "LCD panel needs to be configured via i2c"
-       depends on VIDEO
+       depends on VIDEO_SUNXI
        default n
        select CMD_I2C
        ---help---
@@ -713,6 +869,7 @@ config VIDEO_DE2
        depends on SUNXI_DE2
        select DM_VIDEO
        select DISPLAY
+       imply VIDEO_DT_SIMPLEFB
        default y
        ---help---
        Say y here if you want to build DE2 video driver which is present on
@@ -721,7 +878,7 @@ config VIDEO_DE2
 
 choice
        prompt "LCD panel support"
-       depends on VIDEO
+       depends on VIDEO_SUNXI
        ---help---
        Select which type of LCD panel to support.
 
@@ -789,4 +946,12 @@ config SPL_STACK_R_ADDR
        default 0x2fe00000 if MACH_SUN9I
        default 0x4fe00000 if MACH_SUN50I
 
+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
+       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
+         not need any extra configuration.
+
 endif