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_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_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_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/edgeble/neural-compute-module-6/Kconfig"
source "board/friendlyelec/nanopc-t6-rk3588/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"

endif
