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

menu "Atheros AR71XX/AR724X/AR913X machine selection"

config ATH79_MACH_AP121
	bool "Atheros AP121 reference board"
	select SOC_AR933X
	select ATH79_DEV_GPIO_BUTTONS
	select ATH79_DEV_LEDS_GPIO
	select ATH79_DEV_SPI
	select ATH79_DEV_USB
	select ATH79_DEV_WMAC
	help
	  Say 'Y' here if you want your kernel to support the
	  Atheros AP121 reference board.

config ATH79_MACH_AP136
	bool "Atheros AP136 reference board"
	select SOC_QCA955X
	select ATH79_DEV_GPIO_BUTTONS
	select ATH79_DEV_LEDS_GPIO
	select ATH79_DEV_SPI
	select ATH79_DEV_USB
	select ATH79_DEV_WMAC
	help
	  Say 'Y' here if you want your kernel to support the
	  Atheros AP136 reference board.

config ATH79_MACH_AP81
	bool "Atheros AP81 reference board"
	select SOC_AR913X
	select ATH79_DEV_GPIO_BUTTONS
	select ATH79_DEV_LEDS_GPIO
	select ATH79_DEV_SPI
	select ATH79_DEV_USB
	select ATH79_DEV_WMAC
	help
	  Say 'Y' here if you want your kernel to support the
	  Atheros AP81 reference board.

config ATH79_MACH_DB120
	bool "Atheros DB120 reference board"
	select SOC_AR934X
	select ATH79_DEV_GPIO_BUTTONS
	select ATH79_DEV_LEDS_GPIO
	select ATH79_DEV_SPI
	select ATH79_DEV_USB
	select ATH79_DEV_WMAC
	help
	  Say 'Y' here if you want your kernel to support the
	  Atheros DB120 reference board.

config ATH79_MACH_PB44
	bool "Atheros PB44 reference board"
	select SOC_AR71XX
	select ATH79_DEV_GPIO_BUTTONS
	select ATH79_DEV_LEDS_GPIO
	select ATH79_DEV_SPI
	select ATH79_DEV_USB
	help
	  Say 'Y' here if you want your kernel to support the
	  Atheros PB44 reference board.

config ATH79_MACH_UBNT_XM
	bool "Ubiquiti Networks XM (rev 1.0) board"
	select SOC_AR724X
	select ATH79_DEV_GPIO_BUTTONS
	select ATH79_DEV_LEDS_GPIO
	select ATH79_DEV_SPI
	help
	  Say 'Y' here if you want your kernel to support the
	  Ubiquiti Networks XM (rev 1.0) board.

endmenu

config SOC_AR71XX
	select HW_HAS_PCI
	def_bool n

config SOC_AR724X
	select HW_HAS_PCI
	select PCI_AR724X if PCI
	def_bool n

config SOC_AR913X
	def_bool n

config SOC_AR933X
	def_bool n

config SOC_AR934X
	select HW_HAS_PCI
	select PCI_AR724X if PCI
	def_bool n

config SOC_QCA955X
	select HW_HAS_PCI
	select PCI_AR724X if PCI
	def_bool n

config PCI_AR724X
	def_bool n

config ATH79_DEV_GPIO_BUTTONS
	def_bool n

config ATH79_DEV_LEDS_GPIO
	def_bool n

config ATH79_DEV_SPI
	def_bool n

config ATH79_DEV_USB
	def_bool n

config ATH79_DEV_WMAC
	depends on (SOC_AR913X || SOC_AR933X || SOC_AR934X || SOC_QCA955X)
	def_bool n

endif
