if ROCKCHIP_RK3399

choice
	prompt "RK3399 board select"

config TARGET_CHROMEBOOK_BOB
	bool "Asus Flip C101PA Chromebook (RK3399)"
	select HAS_ROM
	select ROCKCHIP_SPI_IMAGE
	help
	  Bob is a small RK3299-based device similar in apperance to Minnie.
	  It has two USB 3.0 type-C ports, 4GB of SDRAM, WiFi and a 10.1",
	  1280x800 display. It uses its USB ports for both power and external
	  display. It includes a Chrome OS EC (Cortex-M3) to provide access to
	  the keyboard and battery functions.

config TARGET_CHROMEBOOK_KEVIN
	bool "Samsung Chromebook Plus (RK3399)"
	select HAS_ROM
	select ROCKCHIP_SPI_IMAGE
	help
	  Kevin is a RK3399-based convertible chromebook. It has two USB 3.0
	  Type-C ports, 4GB of SDRAM, WiFi and a 12.3" 2400x1600 display. It
	  uses its USB ports for both power and external display. It includes
	  a Chromium OS EC (Cortex-M3) to provide access to the keyboard and
	  battery functions.

config TARGET_EVB_RK3399
	bool "RK3399 evaluation board"
	help
	  RK3399evb is a evaluation board for Rockchip RK3399,
	  with full function and physical connectors support like Type-C ports,
	  USB.0 host ports, LVDS, JTAG, MAC, SD card, HDMI, USB-to-serial...

config TARGET_PINEBOOK_PRO_RK3399
	bool "Pinebook Pro"
	help
	  Pinebook Pro is a laptop based on the Rockchip rk3399 SoC
	  with 4Gb RAM, onboard eMMC, USB-C, a USB3 and USB2 port,
	  1920*1080 screen and all the usual laptop features.

config TARGET_PINEPHONE_PRO_RK3399
	bool "PinePhone Pro"
	help
	  PinePhone Pro is a phone based on a variant of the Rockchip
	  rk3399 SoC with 4Gb RAM, onboard eMMC, USB-C, headphone jack,
	  720x1440 screen and a Quectel 4G/LTE modem.

config TARGET_PUMA_RK3399
	bool "Theobroma Systems RK3399-Q7 (Puma)"
	help
	  The RK3399-Q7 (Puma) is a system-on-module (designed and
	  marketed by Theobroma Systems) featuring the Rockchip RK3399
	  in a Qseven-compatible form-factor (running of a single 5V
	  supply and exposing its external interfaces on a MXM-230
	  connector).

	  Key features of the RK3399-Q7 include:
	   * on-module USB 3.0 hub (2x USB 3.0 host + 1x USB 2.0 host)
	   * USB 3.0 dual-role
	   * on-module Micrel KSZ9031 GbE PHY
	   * on-module eMMC (up to 256GB configurations available)
	   * on-module DDR3 (1GB, 2GB and 4GB configurations available)
	   * HDMI, eDP, MIPI-DSI, MIPI-DSI/CSI and MIPI-CSI
	   * SPI, I2C, I2S, UART, GPIO, ...

config TARGET_ROCK960_RK3399
	bool "Vamrs Limited Rock960 board family"
	help
	  Support for Rock960 board family by Vamrs Limited. This board
	  family consists of Rock960 (Consumer Edition) and Ficus
	  (Enterprise Edition) 96Boards.

	  Common features implemented on both boards:
	   * Rockchip RK3399 SoC (2xCortex A72, 4xCortex A53, ARM Mali T860MP4)
	   * 16/32GB eMMC, uSD slot
	   * HDMI/DP/MIPI
	   * 20-pin low speed and 40-pin high speed expanders, 6 LED, 3 buttons

	  Additional features of Rock960:
	   * 2GiB/4GiB LPDDR3 RAM
	   * 1x USB 3.0 type A, 1x USB 2.0 type A (host mode only),
	     1x USB 3.0 type C OTG

	  Additional features of Ficus:
	   * 2GiB/4GiB DDR3 RAM
	   * Ethernet
	   * Dual SATA
	   * 2x USB 3.0 type A, 2x USB 2.0 type A (host mode only),
	     1x USB 3.0 type C OTG

config TARGET_ROCKPI4_RK3399
	bool "Radxa ROCK Pi 4 board"
	help
	  Support for ROCK Pi 4 board family by Radxa.

config TARGET_ROCKPRO64_RK3399
	bool "Pine64 Rockpro64 board"
	help
	  Rockro64 is SBC produced by Pine64. Key features:

	   * Rockchip RK3399
	   * 2/4GB Dual-Channel LPDDR3
	   * SD card slot
	   * eMMC socket
	   * 128Mb SPI Flash
	   * Gigabit ethernet
	   * PCIe 4X slot
	   * WiFI/BT module socket
	   * HDMI In/Out, DP, MIPI DSI/CSI, eDP
	   * USB 3.0, 2.0
	   * USB Type C power and data
	   * GPIO expansion ports
	   * DC 12V/2A

config TARGET_ROC_PC_RK3399
	bool "Firefly ROC-RK3399-PC board"
	help
	  ROC-RK3399-PC is SBC produced by Firefly. Key features:

	   * Rockchip RK3399
	   * 4GB Dual-Channel LPDDR4 64-bit
	   * SD card slot
	   * eMMC socket
	   * 16MB SPI Flash
	   * Gigabit ethernet
	   * PCIe
	   * HDMI In/Out, DP, MIPI DSI/CSI, eDP
	   * USB 3.0, 2.0
	   * USB Type C power and data
	   * GPIO expansion ports
	   * wide voltage input(5V-15V), dual cell battery
	   * Wifi/BT accessible via expansion board M.2

endchoice

config ROCKCHIP_BOOT_MODE_REG
	default 0xff320300

config ROCKCHIP_STIMER_BASE
	default 0xff8680a0

config SYS_SOC
	default "rk3399"

config ROCKCHIP_COMMON_STACK_ADDR
	default y

config SYS_MALLOC_F_LEN
	default 0x4000 if !SPL_SHARES_INIT_SP_ADDR

config SPL_LIBCOMMON_SUPPORT
	default y

config SPL_LIBGENERIC_SUPPORT
	default y

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

config TPL_STACK
        default 0xff8effff

config TPL_TEXT_BASE
        default 0xff8c2000

config SPL_STACK_R_ADDR
	default 0x04000000 if !SPL_SHARES_INIT_SP_ADDR

if BOOTCOUNT_LIMIT

config BOOTCOUNT_BOOTLIMIT
	default 3

config SYS_BOOTCOUNT_ADDR
	default 0xff3100f0	# PMU_SYS_REG0

endif # BOOTCOUNT_LIMIT

source "board/firefly/roc-pc-rk3399/Kconfig"
source "board/google/gru/Kconfig"
source "board/pine64/pinebook-pro-rk3399/Kconfig"
source "board/pine64/pinephone-pro-rk3399/Kconfig"
source "board/pine64/rockpro64_rk3399/Kconfig"
source "board/radxa/rockpi4-rk3399/Kconfig"
source "board/rockchip/evb_rk3399/Kconfig"
source "board/theobroma-systems/puma_rk3399/Kconfig"
source "board/vamrs/rock960_rk3399/Kconfig"

endif
