if ARCH_MEDIATEK

config SYS_SOC
	default "mediatek"

config SYS_VENDOR
	default "mediatek"

choice
	prompt "MediaTek board select"

config TARGET_MT7622
	bool "MediaTek MT7622 SoC"
	select ARM64
	help
	  The MediaTek MT7622 is a ARM64-based SoC with a dual-core Cortex-A53.
	  including UART, SPI, USB3.0, SD and MMC cards, NAND, SNFI, PWM, PCIe,
	  Gigabit Ethernet, I2C, built-in Wi-Fi, and PCIe.

config TARGET_MT7623
	bool "MediaTek MT7623 SoC"
	select CPU_V7A
	select MMC_SUPPORTS_TUNING
	help
	  The MediaTek MT7623 is a ARM-based SoC with a quad-core Cortex-A7
	  including NEON and GPU, Mali-450 graphics, several DDR3 options,
	  crypto engine, built-in Wi-Fi / Bluetooth combo chip, JPEG decoder,
	  video interfaces supporting HDMI and MIPI, and video codec support.
	  Peripherals include Gigabit Ethernet, switch, USB3.0 and OTG, PCIe,
	  I2S, PCM, S/PDIF, UART, SPI, I2C, IR TX/RX, and PWM.

config TARGET_MT7629
	bool "MediaTek MT7629 SoC"
	select CPU_V7A
	select SPL
	help
	  The MediaTek MT7629 is a ARM-based SoC with a dual-core Cortex-A7
	  including DDR3, crypto engine, 3x3 11n/ac Wi-Fi, Gigabit Ethernet,
	  switch, USB3.0, PCIe, UART, SPI, I2C and PWM.

config TARGET_MT7981
	bool "MediaTek MT7981 SoC"
	select ARM64
	select CPU
	help
	  The MediaTek MT7981 is a ARM64-based SoC with a dual-core Cortex-A53.
	  including UART, SPI, USB, NAND, SNFI, PWM, Gigabit Ethernet, I2C,
	  built-in Wi-Fi, and PCIe.

config TARGET_MT7986
	bool "MediaTek MT7986 SoC"
	select ARM64
	select CPU
	help
	  The MediaTek MT7986 is a ARM64-based SoC with a quad-core Cortex-A53.
	  including UART, SPI, SPI flash, USB3.0, MMC, NAND, SNFI, PWM, PCIe,
	  Gigabit Ethernet, I2C, built-in 4x4 Wi-Fi, and PCIe.

config TARGET_MT7987
	bool "MediaTek MT7987 SoC"
	select ARM64
	select CPU
	select MTK_TZ_MOVABLE
	help
	  The MediaTek MT7987 is a ARM64-based SoC with a quad-core Cortex-A53.
	  including UART, I2C, PWM, SPI controller which support SPI flash,
	  USB3.0, MMC, PCIe, SGMII and built-in Ethernet PHY.

config TARGET_MT7988
	bool "MediaTek MT7988 SoC"
	select ARM64
	select CPU
	help
	  The MediaTek MT7988 is a ARM64-based SoC with a quad-core Cortex-A73.
	  including UART, SPI, SPI flash, USB3.0, MMC, NAND, SNFI, PWM, PCIe,
	  10 Gigabit Ethernet , I2C, and PCIe.

config TARGET_MT8183
	bool "MediaTek MT8183 SoC"
	select ARM64
	help
	  The MediaTek MT8183 is a ARM64-based SoC with a quad-core Cortex-A73 and
	  a quad-core Cortex-A53. It is including UART, SPI, USB3.0 dual role,
	  SD and MMC cards, UFS, PWM, I2C, I2S, S/PDIF, and several LPDDR3
	  and LPDDR4 options.

config TARGET_MT8188
	bool "MediaTek MT8188 SoC"
	select ARM64
	help
	  The MediaTek MT8188 is a ARM64-based SoC with a dual-core Cortex-A78
	  cluster and a six-core Cortex-A55 cluster. It includes UART, SPI,
	  USB3.0 dual role, SD and MMC cards, UFS, PWM, I2C, I2S, S/PDIF, and
	  several LPDDR3 and LPDDR4 options.

config TARGET_MT8189
	bool "MediaTek MT8189 SoC"
	select ARM64
	help
	  The MediaTek MT8189 is a ARM64-based SoC with a dual-core Cortex-A78 and
	  a six-core Cortex-A55. It is including UART, SPI, USB3.0 dual role,
	  SD and MMC cards, UFS, PWM, I2C, I2S, S/PDIF, and several LPDDR4x
	  and LPDDR5x options.

config TARGET_MT8195
	bool "MediaTek MT8195 SoC"
	select ARM64
	help
	  The MediaTek MT8195 is a ARM64-based SoC with a quad-core Cortex-A73 and
	  a quad-core Cortex-A53. It is including UART, SPI, USB3.0 dual role,
	  SD and MMC cards, UFS, PWM, I2C, I2S, S/PDIF, and several LPDDR3
	  and LPDDR4 options.

config TARGET_MT8365
	bool "MediaTek MT8365 SoC"
	select ARM64
	help
	  The MediaTek MT8365 is a ARM64-based SoC with a quad-core Cortex-A53.
	  It is including UART, SPI, USB2.0 dual role, SD and MMC cards, NAND, PWM,
	  I2C, I2S, S/PDIF, and several LPDDR3 and LPDDR4 options.

config TARGET_MT8512
	bool "MediaTek MT8512 SoC"
	select ARM64
	help
	  The MediaTek MT8512 is a ARM64-based SoC with a dual-core Cortex-A53.
	  including UART, SPI, USB2.0 and OTG, SD and MMC cards, NAND, PWM,
	  IR RX, I2C, I2S, S/PDIF, and built-in Wi-Fi / Bluetooth digital
	  and several LPDDR3 and LPDDR4 options.

config TARGET_MT8516
	bool "MediaTek MT8516 SoC"
	select ARM64
	help
	  The MediaTek MT8516 is a ARM64-based SoC with a quad-core Cortex-A35.
	  including UART, SPI, USB2.0 and OTG, SD and MMC cards, NAND, PWM,
	  Ethernet, IR TX/RX, I2C, I2S, S/PDIF, and built-in Wi-Fi / Bluetooth combo
	  chip and several DDR3 and DDR4 options.

config TARGET_MT8518
	bool "MediaTek MT8518 SoC"
	select ARM64
	help
	  The MediaTek MT8518 is a ARM64-based SoC with a quad-core Cortex-A53.
	  including UART, SPI, USB2.0 and OTG, SD and MMC cards, NAND, PWM,
	  Ethernet, IR TX/RX, I2C, I2S, S/PDIF, and built-in Wi-Fi / Bluetooth combo
	  chip and several DDR3 and DDR4 options.

endchoice

if ARM64

config MTK_MEM_MAP_DDR_BASE_PHY
	hex "DDR physical base address"
	default 0x40000000
	help
	  Target-specific DDR physical base address.

config MTK_MEM_MAP_DDR_SIZE
	hex "DDR .size in mem_map"
	default 0x200000000 if TARGET_MT7987 || TARGET_MT7988 || TARGET_MT8188 || TARGET_MT8195
	default 0xc0000000 if TARGET_MT8365
	default 0x80000000 if TARGET_MT7981 || TARGET_MT7986 || TARGET_MT8183
	default 0x40000000 if TARGET_MT7622 || TARGET_MT8512
	default 0x20000000
	help
	  Target-specific DDR region size in mem_map.

config MTK_MEM_MAP_MMIO_SIZE
	hex "MMIO .size in mem_map"
	default 0x40000000 if TARGET_MT7622 || TARGET_MT7981 || TARGET_MT7986 || TARGET_MT7987 || TARGET_MT7988 || TARGET_MT8512
	default 0x20000000
	help
	  Target-specific MMIO region size in mem_map.

endif

config SYS_BOARD
	string "Board name"
	default "mt7622" if TARGET_MT7622
	default "mt7623" if TARGET_MT7623
	default "mt7629" if TARGET_MT7629
	default "mt7981" if TARGET_MT7981
	default "mt7986" if TARGET_MT7986
	default "mt7987" if TARGET_MT7987
	default "mt7988" if TARGET_MT7988
	default "mt8183" if TARGET_MT8183
	default "mt8512" if TARGET_MT8512
	default "mt8516" if TARGET_MT8516
	default "mt8518" if TARGET_MT8518
	default ""
	help
	  This option contains information about board name.
	  Based on this option board/<CONFIG_SYS_VENDOR>/<CONFIG_SYS_BOARD> will
	  be used.

config SYS_CONFIG_NAME
	default "mt7623" if TARGET_MT7623
	default "mt7629" if TARGET_MT7629
	default "mt7981" if TARGET_MT7981
	default "mt7986" if TARGET_MT7986
	default "mt8183" if TARGET_MT8183
	default "mt8512" if TARGET_MT8512
	default "mt8516" if TARGET_MT8516
	default "mt8518" if TARGET_MT8518

config MTK_BROM_HEADER_INFO
	string
	default "media=nor" if TARGET_MT8518 || TARGET_MT8512 || TARGET_MT7629
	default "media=emmc" if TARGET_MT8516 || TARGET_MT8365 || TARGET_MT8183 || TARGET_MT8188 || TARGET_MT8189 || TARGET_MT8195
	default "lk=1" if TARGET_MT7623

config MTK_TZ_MOVABLE
	select ARCH_MISC_INIT
	select OF_SYSTEM_SETUP
	bool

endif
