if ARCH_SUNXI

choice
	prompt "Sunxi SoC Variant"

config MACH_SUN4I
	bool "sun4i (Allwinner A10)"
	select CPU_V7
	select SUPPORT_SPL

config MACH_SUN5I
	bool "sun5i (Allwinner A13)"
	select CPU_V7
	select SUPPORT_SPL

config MACH_SUN6I
	bool "sun6i (Allwinner A31)"
	select CPU_V7
	select SUPPORT_SPL

config MACH_SUN7I
	bool "sun7i (Allwinner A20)"
	select CPU_V7
	select CPU_V7_HAS_NONSEC
	select CPU_V7_HAS_VIRT
	select SUPPORT_SPL
	select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT

config MACH_SUN8I
	bool "sun8i (Allwinner A23)"
	select CPU_V7
	select SUPPORT_SPL

endchoice

if MACH_SUN6I || MACH_SUN8I

config DRAM_CLK
	int "sun6i dram clock speed"
	default 312
	---help---
	Set the dram clock speed, valid range 240 - 480, must be a multiple
	of 24.

config DRAM_ZQ
	int "sun6i dram zq value"
	default 123
	---help---
	Set the dram zq value.

endif

config SYS_CONFIG_NAME
	default "sun4i" if MACH_SUN4I
	default "sun5i" if MACH_SUN5I
	default "sun6i" if MACH_SUN6I
	default "sun7i" if MACH_SUN7I
	default "sun8i" if MACH_SUN8I

choice
	prompt "Board"

config TARGET_A10_OLINUXINO_L
	bool "A10_OLINUXINO_L"
	depends on MACH_SUN4I

config TARGET_A10S_OLINUXINO_M
	bool "A10S_OLINUXINO_M"
	depends on MACH_SUN5I

config TARGET_A13_OLINUXINOM
	bool "A13_OLINUXINOM"
	depends on MACH_SUN5I

config TARGET_A13_OLINUXINO
	bool "A13_OLINUXINO"
	depends on MACH_SUN5I

config TARGET_A20_OLINUXINO_L2
	bool "A20_OLINUXINO_L2"
	depends on MACH_SUN7I

config TARGET_A20_OLINUXINO_L
	bool "A20_OLINUXINO_L"
	depends on MACH_SUN7I

config TARGET_A20_OLINUXINO_M
	bool "A20_OLINUXINO_M"
	depends on MACH_SUN7I

config TARGET_AUXTEK_T004
	bool "AUXTEK_T004"
	depends on MACH_SUN5I

config TARGET_BANANAPI
	bool "BANANAPI"
	depends on MACH_SUN7I

config TARGET_BANANAPRO
	bool "BANANAPRO"
	depends on MACH_SUN7I

config TARGET_COLOMBUS
	bool "COLOMBUS"
	depends on MACH_SUN6I

config TARGET_CUBIEBOARD2
	bool "CUBIEBOARD2"
	depends on MACH_SUN7I

config TARGET_CUBIEBOARD
	bool "CUBIEBOARD"
	depends on MACH_SUN4I

config TARGET_CUBIETRUCK
	bool "CUBIETRUCK"
	depends on MACH_SUN7I

config TARGET_HUMMINGBIRD_A31
	bool "HUMMINGBIRD_A31"
	depends on MACH_SUN6I

config TARGET_IPPO_Q8H_V5
	bool "IPPO_Q8H_V5"
	depends on MACH_SUN8I

config TARGET_PCDUINO
	bool "PCDUINO"
	depends on MACH_SUN4I

config TARGET_PCDUINO3
	bool "PCDUINO3"
	depends on MACH_SUN7I

config TARGET_MELE_A1000G
	bool "MELE_A1000G"
	depends on MACH_SUN4I

config TARGET_MELE_A1000
	bool "MELE_A1000"
	depends on MACH_SUN4I

config TARGET_MELE_M3
	bool "MELE_M3"
	depends on MACH_SUN7I

config TARGET_MELE_M9
	bool "MELE_M9"
	depends on MACH_SUN6I

config TARGET_MINI_X_1GB
	bool "MINI_X_1GB"
	depends on MACH_SUN4I

config TARGET_MINI_X
	bool "MINI_X"
	depends on MACH_SUN4I

config TARGET_MSI_PRIMO73
	bool "MSI Primo73 (7\" tablet)"
	depends on MACH_SUN7I
	---help---
	The MSI Primo73 is an A20 based tablet, with 1G RAM, 16G NAND,
	1024x600 TN LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
	rear camera, 3000 mAh battery, gt911 touchscreen, mma8452 accelerometer
	and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
	(both volume buttons are also connected to the UBOOT_SEL pin). The
	external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
	OTG and 3.5mm headphone jack. More details are available at
	    http://linux-sunxi.org/MSI_Primo73

config TARGET_MSI_PRIMO81
	bool "MSI Primo81 (7.85\" tablet)"
	depends on MACH_SUN6I
	---help---
	The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND,
	1024x768 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP
	rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer
	and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons
	(both volume buttons are also connected to the UBOOT_SEL pin). The
	external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB
	OTG and 3.5mm headphone jack. More details are available at
	    http://linux-sunxi.org/MSI_Primo81

config TARGET_BA10_TV_BOX
	bool "BA10_TV_BOX"
	depends on MACH_SUN4I

config TARGET_I12_TVBOX
	bool "I12_TVBOX"
	depends on MACH_SUN7I

config TARGET_QT840A
	bool "QT840A"
	depends on MACH_SUN7I

config TARGET_R7DONGLE
	bool "R7DONGLE"
	depends on MACH_SUN5I

endchoice

config SYS_BOARD
	default "sunxi"

config SYS_SOC
	default "sunxi"

config SPL_FEL
	bool "SPL/FEL mode support"
	depends on SPL
	default n

config UART0_PORT_F
	bool "UART0 on MicroSD breakout board"
	depends on SPL_FEL
	default n
	---help---
	Repurpose the SD card slot for getting access to the UART0 serial
	console. Primarily useful only for low level u-boot debugging on
	tablets, where normal UART0 is difficult to access and requires
	device disassembly and/or soldering. As the SD card can't be used
	at the same time, the system can be only booted in the FEL mode.
	Only enable this if you really know what you are doing.

config FDTFILE
	string "Default fdtfile env setting for this board"

config OLD_SUNXI_KERNEL_COMPAT
	boolean "Enable workarounds for booting old kernels"
	default n
	---help---
	Set this to enable various workarounds for old kernels, this results in
	sub-optimal settings for newer kernels, only enable if needed.

config MMC0_CD_PIN
	string "Card detect pin for mmc0"
	default ""
	---help---
	Set the card detect pin for mmc0, leave empty to not use cd. This
	takes a string in the format understood by sunxi_name_to_gpio, e.g.
	PH1 for pin 1 of port H.

config MMC1_CD_PIN
	string "Card detect pin for mmc1"
	default ""
	---help---
	See MMC0_CD_PIN help text.

config MMC2_CD_PIN
	string "Card detect pin for mmc2"
	default ""
	---help---
	See MMC0_CD_PIN help text.

config MMC3_CD_PIN
	string "Card detect pin for mmc3"
	default ""
	---help---
	See MMC0_CD_PIN help text.

config MMC_SUNXI_SLOT_EXTRA
	int "mmc extra slot number"
	default -1
	---help---
	sunxi builds always enable mmc0, some boards also have a second sdcard
	slot or emmc on mmc1 - mmc3. Setting this to 1, 2 or 3 will enable
	support for this.

config USB0_VBUS_PIN
	string "Vbus enable pin for usb0 (otg)"
	default ""
	---help---
	Set the Vbus enable pin for usb0 (otg). This takes a string in the
	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.

config USB1_VBUS_PIN
	string "Vbus enable pin for usb1 (ehci0)"
	default "PH6" if MACH_SUN4I || MACH_SUN7I
	default "PH27" if MACH_SUN6I
	---help---
	Set the Vbus enable pin for usb1 (ehci0, usb0 is the otg). This takes
	a string in the format understood by sunxi_name_to_gpio, e.g.
	PH1 for pin 1 of port H.

config USB2_VBUS_PIN
	string "Vbus enable pin for usb2 (ehci1)"
	default "PH3" if MACH_SUN4I || MACH_SUN7I
	default "PH24" if MACH_SUN6I
	---help---
	See USB1_VBUS_PIN help text.

config VIDEO
	boolean "Enable graphical uboot console on HDMI, LCD or VGA"
	default y
	---help---
	Say Y here to add support for using a cfb console on the HDMI, LCD
	or VGA output found on most sunxi devices. See doc/README.video for
	info on how to select the video output and mode.

config VIDEO_HDMI
	boolean "HDMI output support"
	depends on VIDEO && !MACH_SUN8I
	default y
	---help---
	Say Y here to add support for outputting video over HDMI.

config VIDEO_VGA
	boolean "VGA output support"
	depends on VIDEO && (MACH_SUN4I || MACH_SUN7I)
	default n
	---help---
	Say Y here to add support for outputting video over VGA.

config VIDEO_VGA_VIA_LCD
	boolean "VGA via LCD controller support"
	depends on VIDEO && (MACH_SUN5I || MACH_SUN6I || MACH_SUN8I)
	default n
	---help---
	Say Y here to add support for external DACs connected to the parallel
	LCD interface driving a VGA connector, such as found on the
	Olimex A13 boards.

config VIDEO_VGA_EXTERNAL_DAC_EN
	string "LCD panel power enable pin"
	depends on VIDEO_VGA_VIA_LCD
	default ""
	---help---
	Set the enable pin for the external VGA DAC. This takes a string in the
	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.

config VIDEO_LCD_MODE
	string "LCD panel timing details"
	depends on VIDEO
	default ""
	---help---
	LCD panel timing details string, leave empty if there is no LCD panel.
	This is in drivers/video/videomodes.c: video_get_params() format, e.g.
	x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:0,vmode:0

config VIDEO_LCD_DCLK_PHASE
	int "LCD panel display clock phase"
	depends on 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
	default ""
	---help---
	Set the power enable pin for the LCD panel. This takes a string in the
	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.

config VIDEO_LCD_BL_EN
	string "LCD panel backlight enable pin"
	depends on VIDEO
	default ""
	---help---
	Set the backlight enable pin for the LCD panel. This takes a string in the
	the format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of
	port H.

config VIDEO_LCD_BL_PWM
	string "LCD panel backlight pwm pin"
	depends on VIDEO
	default ""
	---help---
	Set the backlight pwm pin for the LCD panel. This takes a string in the
	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.


# Note only one of these may be selected at a time! But hidden choices are
# not supported by Kconfig
config VIDEO_LCD_IF_PARALLEL
	bool

config VIDEO_LCD_IF_LVDS
	bool


choice
	prompt "LCD panel support"
	depends on VIDEO
	---help---
	Select which type of LCD panel to support.

config VIDEO_LCD_PANEL_PARALLEL
	bool "Generic parallel interface LCD panel"
	select VIDEO_LCD_IF_PARALLEL

config VIDEO_LCD_PANEL_LVDS
	bool "Generic lvds interface LCD panel"
	select VIDEO_LCD_IF_LVDS

endchoice


config USB_KEYBOARD
	boolean "Enable USB keyboard support"
	default y
	---help---
	Say Y here to add support for using a USB keyboard (typically used
	in combination with a graphical console).

endif
