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_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 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
	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_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_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.

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
