# SPDX-License-Identifier: GPL-2.0
if RALINK

config CLKEVT_RT3352
	bool
	depends on SOC_RT305X || SOC_MT7620
	default y
	select TIMER_OF
	select CLKSRC_MMIO

config RALINK_ILL_ACC
	bool
	depends on SOC_RT305X
	default y

config IRQ_INTC
	bool
	default y
	depends on !SOC_MT7621

choice
	prompt "Ralink SoC selection"
	default SOC_RT305X
	help
	  Select Ralink MIPS SoC type.

	config SOC_RT288X
		bool "RT288x"
		select MIPS_L1_CACHE_SHIFT_4
		select HAVE_LEGACY_CLK
		select HAVE_PCI

	config SOC_RT305X
		bool "RT305x"
		select HAVE_LEGACY_CLK

	config SOC_RT3883
		bool "RT3883"
		select HAVE_LEGACY_CLK
		select HAVE_PCI

	config SOC_MT7620
		bool "MT7620/8"
		select CPU_MIPSR2_IRQ_VI
		select HAVE_LEGACY_CLK
		select HAVE_PCI

	config SOC_MT7621
		bool "MT7621"
		select MIPS_CPU_SCACHE
		select SYS_SUPPORTS_MULTITHREADING
		select SYS_SUPPORTS_SMP
		select SYS_SUPPORTS_MIPS_CPS
		select SYS_SUPPORTS_HIGHMEM
		select MIPS_GIC
		select COMMON_CLK
		select CLKSRC_MIPS_GIC
		select HAVE_PCI if PCI_MT7621
		select SOC_BUS
endchoice

choice
	prompt "Devicetree selection"
	default DTB_RT_NONE
	help
	  Select the devicetree.

	config DTB_RT_NONE
		bool "None"

	config DTB_RT2880_EVAL
		bool "RT2880 eval kit"
		depends on SOC_RT288X
		select BUILTIN_DTB

	config DTB_RT305X_EVAL
		bool "RT305x eval kit"
		depends on SOC_RT305X
		select BUILTIN_DTB

	config DTB_RT3883_EVAL
		bool "RT3883 eval kit"
		depends on SOC_RT3883
		select BUILTIN_DTB

	config DTB_MT7620A_EVAL
		bool "MT7620A eval kit"
		depends on SOC_MT7620
		select BUILTIN_DTB

	config DTB_OMEGA2P
		bool "Onion Omega2+"
		depends on SOC_MT7620
		select BUILTIN_DTB

	config DTB_VOCORE2
		bool "VoCore2"
		depends on SOC_MT7620
		select BUILTIN_DTB

endchoice

endif
