if ROCKCHIP_RK3288

choice
	prompt "RK3288 board select"

config TARGET_CHROMEBOOK_JERRY
	bool "Google/Rockchip Veyron-Jerry Chromebook"
	select HAS_ROM
	select BOARD_LATE_INIT
	select ROCKCHIP_SPI_IMAGE
	help
	  Jerry is a RK3288-based clamshell device with 2 USB 3.0 ports,
	  HDMI, an 11.9 inch EDP display, micro-SD card, touchpad and
	  WiFi. It includes a Chrome OS EC (Cortex-M3) to provide access to
	  the keyboard and battery functions.

config TARGET_CHROMEBIT_MICKEY
	bool "Google/Rockchip Veyron-Mickey Chromebit"
	select BOARD_LATE_INIT
	help
	  Mickey is a small RK3288-based device with one USB 3.0 port, HDMI
	  and WiFi. It has a separate power port and is designed to connect
	  to the HDMI input of a monitor or TV. It has no internal battery.
	  Typically a USB hub or wireless keyboard/touchpad is used to get
	  keyboard and mouse access.

config TARGET_CHROMEBOOK_MINNIE
	bool "Google/Rockchip Veyron-Minnie Chromebook"
	select BOARD_LATE_INIT
	help
	  Minnie is a RK3288-based convertible clamshell device with 2 USB 3.0
	  ports, micro HDMI, a 10.1-inch 1280x800 EDP display, micro-SD card,
	  HD camera, touchpad, WiFi and Bluetooth. It includes a Chrome OS
	  EC (Cortex-M3) to provide access to the keyboard and battery
	  functions. It includes 2 or 4GB of SDRAM and 16 or 32GB of
	  internal MMC. The product name is ASUS Chromebook Flip.

config TARGET_CHROMEBOOK_SPEEDY
	bool "Google/Rockchip Veyron-Speedy Chromebook"
	select BOARD_LATE_INIT
	help
	  Speedy is a RK3288-based clamshell device with 2 USB 2.0 ports,
	  micro HDMI, an 11.6 inch display, micro-SD card,
	  HD camera, touchpad, wifi and Bluetooth. It includes a Chrome OS
	  EC (Cortex-M3) to provide access to the keyboard and battery
	  functions. It includes 2 or 4GB of SDRAM and 16GB of internal MMC.
	  The product name is Asus Chromebook C201PA.

config TARGET_EVB_RK3288
	bool "Evb-RK3288"
	select BOARD_LATE_INIT
	select TPL
	help
	  EVB-RK3288 is a RK3288-based development board with 2 USB ports,
	  HDMI, VGA, micro-SD card, audio, WiFi  and Gigabit Ethernet, It
	  also includes on-board eMMC and 2GB of SDRAM. Expansion connectors
	  provide access to display pins, I2C, SPI, UART and GPIOs.

config TARGET_FENNEC_RK3288
	bool "Fennec-RK3288"
	select BOARD_LATE_INIT
	help
	  Fennec is a RK3288-based development board with 2 USB ports,
	  HDMI, micro-SD card, audio, WiFi and Gigabit Ethernet. It also
	  includes on-board eMMC and 2GB of SDRAM. Expansion connectors
	  provide access to display pins, I2C, SPI, UART and GPIOs.

config TARGET_FIREFLY_RK3288
	bool "Firefly-RK3288"
	select BOARD_LATE_INIT
	select SPL_BOARD_INIT if SPL
	select TPL
	help
	  Firefly is a RK3288-based development board with 2 USB ports,
	  HDMI, VGA, micro-SD card, audio, WiFi  and Gigabit Ethernet, It
	  also includes on-board eMMC and 1GB of SDRAM. Expansion connectors
	  provide access to display pins, I2C, SPI, UART and GPIOs.

config TARGET_MIQI_RK3288
	bool "MiQi-RK3288"
	select BOARD_LATE_INIT
	help
	  MiQi-RK3288 is a RK3288-based development board with 4 USB 2.0
	  ports, HDMI, micro-SD card, 16 GB eMMC and Gigabit Ethernet. It
	  has 1 or 2 GiB SDRAM. Expansion connectors provide access to
	  I2C, SPI, UART, GPIOs and fan control.

config TARGET_PHYCORE_RK3288
	bool "phyCORE-RK3288"
        select BOARD_LATE_INIT
	select SPL_BOARD_INIT if SPL
	help
	  Add basic support for the PCM-947 carrier board, a RK3288 based
	  development board made by PHYTEC. This board works in a combination
	  with the phyCORE-RK3288 System on Module.

config TARGET_POPMETAL_RK3288
	bool "PopMetal-RK3288"
	select BOARD_LATE_INIT
	help
	  PopMetal is a RK3288-based development board with 3 USB host ports,
	  1 micro USB OTG port, HDMI, VGA, micro-SD card, audio, WiFi, Gigabit
	  Ethernet and lots of sensors. It also includes on-board 8 GeMMC and
	  2GB DDR3. Expansion connectors provide access to I2C, SPI, UART,
	  GPIOs and display interface.

config TARGET_VYASA_RK3288
	bool "Vyasa-RK3288"
	select BOARD_LATE_INIT
	select TPL
	help
	  Vyasa is a RK3288-based development board with 2 USB ports,
	  HDMI, VGA, micro-SD card, audio, WiFi  and Gigabit Ethernet, It
	  also includes on-board eMMC and 2GB of SDRAM. Expansion connectors
	  provide access to display pins, I2C, SPI, UART and GPIOs.

config TARGET_ROCK2
	bool "Radxa Rock 2"
	select BOARD_LATE_INIT
	help
	  Rock 2 is a SOM and base-board combination based on RK3288. It
	  includes Ethernet, HDMI, 3 USB, micro-SD, audio, SATA, WiFi and
	  space for a real-time-clock battery. There is also an expansion
	  interface which provides access to many pins.

config TARGET_TINKER_RK3288
	bool "Tinker-RK3288"
        select BOARD_LATE_INIT
	select TPL
	help
	  Tinker is a RK3288-based development board with 2 USB ports, HDMI,
	  micro-SD card, audio, Gigabit Ethernet. It also includes on-board
	  8GB eMMC and 2GB of SDRAM. Expansion connectors provide access to
	  I2C, SPI, UART, GPIOs.

endchoice

config ROCKCHIP_FAST_SPL
	bool "Change the CPU to full speed in SPL"
	depends on TARGET_CHROMEBOOK_JERRY
	help
	  Some boards want to boot as fast as possible. We can increase the
	  CPU frequency in SPL if the power supply is configured to the correct
	  voltage. This option is only available on boards which support it
	  and have the required PMIC code.

config ROCKCHIP_BOOT_MODE_REG
	default 0xff730094

config SYS_SOC
	default "rk3288"

config SYS_MALLOC_F_LEN
	default 0x2000

config SPL_DRIVERS_MISC_SUPPORT
	default y

config SPL_LIBCOMMON_SUPPORT
	default y

config SPL_LIBGENERIC_SUPPORT
	default y

config SPL_SERIAL_SUPPORT
	default y

config TPL_LDSCRIPT
	default "arch/arm/mach-rockchip/u-boot-tpl.lds"

config TPL_MAX_SIZE
	default 32768

config TPL_STACK
        default 0xff718000

config TPL_TEXT_BASE
	default 0xff704000

source "board/amarula/vyasa-rk3288/Kconfig"

source "board/chipspark/popmetal_rk3288/Kconfig"

source "board/firefly/firefly-rk3288/Kconfig"

source "board/google/veyron/Kconfig"

source "board/mqmaker/miqi_rk3288/Kconfig"

source "board/phytec/phycore_rk3288/Kconfig"

source "board/radxa/rock2/Kconfig"

source "board/rockchip/evb_rk3288/Kconfig"

source "board/rockchip/tinker_rk3288/Kconfig"

endif
