if ROCKCHIP_RK3588

config TARGET_EVB_RK3588
	bool "Rockchip EVB1 v10"
	select BOARD_LATE_INIT
	help
	  RK3588 EVB is a evaluation board for Rockchp RK3588.

config TARGET_JAGUAR_RK3588
	bool "Theobroma Systems SBC-RK3588-AMR (Jaguar)"
	select BOARD_LATE_INIT
	help
	  The SBC-RK3588-AMR is a Single Board Computer designed by
	  Theobroma Systems for autonomous mobile robots.

	  It provides the following features:
	    * up to 32GB LDDR4
	    * up to 128GB on-module eMMC (with 8-bit 1.8V interface)
	    * SD card
	    * Gigabit Ethernet
	    * 1x USB-A 2.0 host
	    * PCIe M.2 2230 Key M (Gen 2 1-lane) for WiFi+BT
	    * PCIe M.2 2280 Key M (Gen 3 4-lane) for NVMe
	    * CAN
	    * RS485 UART
	    * 2x USB Type-C 3.1 host/device
	    * HDMI output
	    * 2x camera connectors (MIPI-CSI 2-lane + I2C/SPI for IMUs + GPIOs)
	    * EEPROM
	    * Secure Element
	    * ATtiny companion controller implementing:
	      - low-power RTC functionality (ISL1208 emulation)
	      - fan controller (AMC6821 emulation)
	    * 80-pin Mezzanine connector

config TARGET_NANOPCT6_RK3588
	bool "FriendlyElec NanoPC-T6 RK3588 board"
	select BOARD_LATE_INIT
	help
	  The NanoPC-T6 is a Rockchip RK3588 based SBC by FriendlyElec.

	  There are four variants depending on the DRAM size: 4G/32GB eMMC,
	  8G/64GB eMMC, 16G/16MB SPI NOR, and 16G/256GB eMMC/16MB SPI NOR

	  Specifications:

	  CPU: Rockchip RK3588, 4x Cortex-A76 (up to 2.4GHz)
	                      + 4x Cortex-A55 (up to 1.8GHz)
	  GPU: Mali-G610 MP4
	  VPU: 8K@60fps H.265 and VP9 decoder, 8K@30fps H.264 decoder,
	       4K@60fps AV1 decoder, 8K@30fps H.264 and H.265 encoder
	  NPU: 6TOPs, supports INT4/INT8/INT16/FP16
	  RAM: 64-bit 4GB/8GB/16GB LPDDR4X at 2133MHz
	  eMMC: 0GB/32GB/64GB/256GB HS400
	  MicroSD Slot: MicroSD SDR104
	  PCIe 3.0: M.2 M-Key x1, PCIe 3.0 x4 for NVMe SSDs up to 2,500 MB/s
	  Ethernet: PCIe 2.5G 2x Ethernet (RTL8125BG)
	  PCIe 2.1: M.2 E-Key x1, PCIe 2.1 x1 and USB2.0 Host,
	            supports M.2 WiFi and Bluetooth
	  4G Module: MiniPCIe x1, MicroSIM Card Slot x1
	  Audio Out: 3.5mm jack for stereo headphone output
	  Audio In: 2.0mm PH-2A connector for analog microphone input
	  Video Input: standard HDMI input port, up to 4Kp60
	  2x 4-lane MIPI-CSI, compatible with MIPI V1.2
	  Video Output: 2x standard HDMI output ports compatible with HDMI2.1,
	                HDMI2.0, and HDMI1.4
	  2x 4-lane MIPI-DSI, compatible with MIPI DPHY 2.0 or CPHY 1.1
	  USB-A: USB 3.0, Type A
	  USB-C: Full function USB Type-C port, DP display up to 4Kp60, USB 3.0
	  40-pin 2.54mm header connector: up to 2x SPIs, 6x UARTs, 1x I2Cs,
	                                  8x PWMs, 2x I2Ss, 28x GPIOs
	  Debug UART: 3 Pin 2.54mm header, 3V level, 1500000bps
	  Onboard IR receiver: 38KHz carrier frequency
	  RTC Battery: 2 Pin 1.27/1.25mm RTC battery connector for low power
	               RTC IC HYM8563TS
	  5V Fan connector
	  Working Temperature: 0C to 70C
	  Power: 5.5*2.1mm DC Jack, 12VDC input
	  Dimensions: 110x80x1.6mm (without case) / 86x114.5x30mm (with case)

config TARGET_NANOPI_R6C_RK3588S
	bool "FriendlyElec NanoPi R6C"
	select BOARD_LATE_INIT
	help
	  The NanoPi R6C is a SBC by FriendlyElec based on the Rockchip
	  RK3588s.
	  It comes with 4GB or 8GB of RAM, a microSD card slot, optional 32GB
	  eMMC storage, one M.2 M-Key connector, one RTL8211F 1GbE and one
	  RTL8125 2.5GbE Ethernet port, one USB 2.0 Type-A and one USB 3.0
	  Type-A port, a HDMI port, a 30-pin GPIO header as well as some
	  buttons and LEDs.

config TARGET_NANOPI_R6S_RK3588S
	bool "FriendlyElec NanoPi R6S"
	select BOARD_LATE_INIT
	help
	  The NanoPi R6S is a SBC by FriendlyElec based on the Rockchip
	  RK3588s.
	  It comes with 4GB or 8GB of RAM, a microSD card slot, 32GB eMMC
	  storage, one RTL8211F 1GbE and two RTL8125 2.5GbE Ethernet ports,
	  one USB 2.0 Type-A and one USB 3.0 Type-A port, a HDMI port, a
	  12-pin GPIO FPC connector, a fan connector, IR receiver as well
	  as some buttons and LEDs.

config TARGET_NOVA_RK3588
	bool "Indiedroid Nova RK3588"
	select BOARD_LATE_INIT
	help
	  Indiedroid Nova is a Rockchip RK3588s based SBC by Indiedroid.
	  It comes in configurations from 4GB of RAM to 16GB of RAM,
	  includes socket for eMMC storage, an SDMMC slot, and a 40-pin
	  GPIO header for expansion.

config TARGET_RK3588_NEU6
	bool "Edgeble Neural Compute Module 6(Neu6) SoM"
	select BOARD_LATE_INIT
	help
	  Neu6A:
	  Neural Compute Module 6A(Neu6A) is a 96boards SoM-CB compute module
	  based on Rockchip RK3588 from Edgeble AI.

	  Neu6A-IO:
	  Neural Compute Module 6A(Neu6A) IO board is an industrial form factor
	  IO board and Neu6a needs to mount on top of this IO board in order to
	  create complete Edgeble Neural Compute Module 6A(Neu6A) IO platform.

	  Neu6B:
	  Neural Compute Module 6B(Neu6B) is a 96boards SoM-CB compute module
	  based on Rockchip RK3588J from Edgeble AI.

	  Neu6A-IO:
	  Neural Compute Module 6B(Neu6B) IO board is an industrial form factor
	  IO board and Neu6a needs to mount on top of this IO board in order to
	  create complete Edgeble Neural Compute Module 6B(Neu6B) IO platform.

config TARGET_ROCK5A_RK3588
	bool "Radxa ROCK5A RK3588 board"
	select BOARD_LATE_INIT
	help
	  Radxa ROCK5A is a Rockchip RK3588S based SBC (Single Board Computer)
	  by Radxa.

	  There are tree variants depending on the DRAM size : 4G, 8G and 16G.

	  Specification:

	  Rockchip Rk3588S SoC
	  4x ARM Cortex-A76, 4x ARM Cortex-A55
	  4/8/16GB memory LPDDR4x
	  Mali G610MC4 GPU
	  MIPI CSI 2 multiple lanes connector
	  4-lane MIPI DSI connector
	  Audio - 3.5mm earphone jack
	  eMMC module connector
	  uSD slot (up to 128GB)
	  2x USB 2.0, 2x USB 3.0
	  2x micro HDMI 2.1 ports, one up to 8Kp60, the other up to 4Kp60
	  Gigabit Ethernet RJ45 with optional PoE support
	  40-pin IO header including UART, SPI, I2C and 5V DC power in
	  USB PD over USB Type-C
	  Size: 85mm x 56mm (Raspberry Pi 4 form factor)

config TARGET_ROCK5B_RK3588
	bool "Radxa ROCK5B RK3588 board"
	select BOARD_LATE_INIT
	help
	  Radxa ROCK5B is a Rockchip RK3588 based SBC (Single Board Computer)
	  by Radxa.

	  There are tree variants depending on the DRAM size : 4G, 8G and 16G.

	  Specification:

	  Rockchip Rk3588 SoC
	  4x ARM Cortex-A76, 4x ARM Cortex-A55
	  4/8/16GB memory LPDDR4x
	  Mali G610MC4 GPU
	  2x MIPI CSI 2 multiple lanes connector
	  eMMC module connector
	  uSD slot (up to 128GB)
	  2x USB 2.0 Type-A, 2x USB 3.0 Type-A, 1x USB 3.0 Type-C
	  2x HDMI 2.1 output, 1x micro HDMI input
	  2.5 Gbps Ethernet port
	  40-pin IO header including UART, SPI, I2C and 5V DC power in
	  USB PD over USB Type-C
	  Size: 100mm x 72mm (Pico-ITX form factor)

config TARGET_SIGE7_RK3588
	bool "ArmSoM Sige7 RK3588 board"
	select BOARD_LATE_INIT
	help
	  ArmSoM Sige7 is a Rockchip RK3588 based SBC (Single Board Computer)
	  by ArmSoM.

	  There are two variants depending on the DRAM size : 8G and 16G.

	  Specification:

	  Rockchip Rk3588 SoC
	  4x ARM Cortex-A76, 4x ARM Cortex-A55
	  8/16GB memory LPDDR4x
	  Mali G610MC4 GPU
	  2x MIPI CSI 2 multiple lanes connector
	  64GB/128GB on board eMMC
	  uSD slot
	  1x USB 2.0 Type-A, 1x USB 3.0 Type-A, 1x USB 3.0 Type-C
	  1x HDMI 2.1 output
	  2x 2.5 Gbps Ethernet port
	  40-pin IO header including UART, SPI and I2C
	  USB PD over USB Type-C
	  Size: 92mm x 62mm

config TARGET_QUARTZPRO64_RK3588
	bool "Pine64 QuartzPro64 RK3588 board"
	select BOARD_LATE_INIT
	help
	  Pine64 QuartzPro64 is a Rockchip RK3588 based SBC (Single Board
	  Computer) by Pine64.

config TARGET_TIGER_RK3588
	bool "Theobroma Systems SOM-RK3588-Q7 (Tiger)"
	select BOARD_LATE_INIT
	help
	  The RK3588-Q7 SoM is a Qseven-compatible (70mm x 70mm, MXM-230
	  connector) system-on-module from Theobroma Systems, featuring the
	  Rockchip RK3588.

	  It provides the following feature set:
	   * up to 16GB LPDDR4x
	   * on-module eMMC
	   * SD card (on a baseboard) via edge connector
	   * Gigabit Ethernet with on-module GbE PHY
	   * HDMI/eDP
	   * MIPI-DSI
	   * 4x MIPI-CSI (3x on FPC connectors, 1x over Q7)
	   * HDMI input over FPC connector
	   * CAN
	   * USB
	     - 1x USB 3.0 dual-role (direct connection)
	     - 2x USB 3.0 host + 1x USB 2.0 host
	   * PCIe
	     - 1x PCIe 2.1 Gen3, 4 lanes
	     - 2xSATA / 2x PCIe 2.1 Gen1, 2 lanes
	   * on-module ATtiny816 companion controller, implementing:
	     - low-power RTC functionality (ISL1208 emulation)
	     - fan controller (AMC6821 emulation)
	   * on-module Secure Element with Global Platform 2.2.1 compliant
	     JavaCard environment

config TARGET_TURINGRK1_RK3588
	bool "Turing Machines RK1 RK3588 board"
	select BOARD_LATE_INIT
	help
	  The Turing RK1 is a Rockchip RK3588 based SoM from Turing Machines.

	  There are three variants depending on the DRAM size : 8G, 16G and 32G.

	  Specifications:

	  Rockchip RK3588 SoC
	  4x ARM Cortex-A76, 4x ARM Cortex-A55
	  8/16/32GB memory LPDDR4x
	  Mali G610MC4 GPU
	  32GB eMMC HS400
	  2x USB 2.0, 2x USB 3.0
	  2x MIPI CSI 4x lanes
	  1x MIPI-DSI DPHY 2x lanes
	  PCIe 2.0 x1, PCIe 3.0 x4
	  1x HDMI 2.1 output, 1x DP 1.4 output
	  Gigabit Ethernet
	  Size: 69.6mm x 45mm (260-pin SO-DIMM connector)

config TARGET_TOYBRICK_RK3588
	bool "Toybrick TB-RK3588X board"
	select BOARD_LATE_INIT
	help
	  Rockchip Toybrick TB-RK3588X is a Rockchip RK3588 based development board.
	  TB-RK3588X adopts core board and mainboard design. The core board is connected
	  with the mainboard through the MXM314Pin standard interface, which can form
	  a complete industry development board.

	  Specifications:

	  Rockchip RK3588 SoC
	  4x ARM Cortex-A76, 4x ARM Cortex-A55
	  8/16GB Memory LPDDR4x
	  Mali G610MC4 GPU
	  2x MIPI-CSI0 Connector
	  1x 2Lanes PCIe3.0 Connector
	  1x SATA3.0 Connector
	  32GB eMMC Module
	  2x USB2.0, 2x USB3.0
	  1x HDMI Output, 1x HDMI Input
	  2x Ethernet Port


config ROCKCHIP_BOOT_MODE_REG
	default 0xfd588080

config ROCKCHIP_STIMER_BASE
	default 0xfd8c8000

config SYS_SOC
	default "rk3588"

config ROCKCHIP_COMMON_STACK_ADDR
	default y

config TEXT_BASE
	default 0x00a00000

source "board/armsom/sige7-rk3588/Kconfig"
source "board/edgeble/neural-compute-module-6/Kconfig"
source "board/friendlyelec/nanopc-t6-rk3588/Kconfig"
source "board/friendlyelec/nanopi-r6c-rk3588s/Kconfig"
source "board/friendlyelec/nanopi-r6s-rk3588s/Kconfig"
source "board/indiedroid/nova/Kconfig"
source "board/pine64/quartzpro64-rk3588/Kconfig"
source "board/turing/turing-rk1-rk3588/Kconfig"
source "board/radxa/rock5a-rk3588s/Kconfig"
source "board/radxa/rock5b-rk3588/Kconfig"
source "board/rockchip/evb_rk3588/Kconfig"
source "board/rockchip/toybrick_rk3588/Kconfig"
source "board/theobroma-systems/jaguar_rk3588/Kconfig"
source "board/theobroma-systems/tiger_rk3588/Kconfig"

endif
