# SPDX-License-Identifier: GPL-2.0-only
menuconfig RT2X00
	tristate "Ralink driver support"
	depends on MAC80211 && HAS_DMA
	help
	  This will enable the support for the Ralink drivers,
	  developed in the rt2x00 project <http://rt2x00.serialmonkey.com>.

	  These drivers make use of the mac80211 stack.

	  When building one of the individual drivers, the rt2x00 library
	  will also be created. That library (when the driver is built as
	  a module) will be called rt2x00lib.

	  Additionally PCI and USB libraries will also be build depending
	  on the types of drivers being selected, these libraries will be
	  called rt2x00pci and rt2x00usb.

if RT2X00

config RT2400PCI
	tristate "Ralink rt2400 (PCI/PCMCIA) support"
	depends on PCI
	select RT2X00_LIB_MMIO
	select RT2X00_LIB_PCI
	select EEPROM_93CX6
	help
	  This adds support for rt2400 wireless chipset family.
	  Supported chips: RT2460.

	  When compiled as a module, this driver will be called rt2400pci.

config RT2500PCI
	tristate "Ralink rt2500 (PCI/PCMCIA) support"
	depends on PCI
	select RT2X00_LIB_MMIO
	select RT2X00_LIB_PCI
	select EEPROM_93CX6
	help
	  This adds support for rt2500 wireless chipset family.
	  Supported chips: RT2560.

	  When compiled as a module, this driver will be called rt2500pci.

config RT61PCI
	tristate "Ralink rt2501/rt61 (PCI/PCMCIA) support"
	depends on PCI
	select RT2X00_LIB_PCI
	select RT2X00_LIB_MMIO
	select RT2X00_LIB_FIRMWARE
	select RT2X00_LIB_CRYPTO
	select CRC_ITU_T
	select EEPROM_93CX6
	help
	  This adds support for rt2501 wireless chipset family.
	  Supported chips: RT2561, RT2561S & RT2661.

	  When compiled as a module, this driver will be called rt61pci.

config RT2800PCI
	tristate "Ralink rt27xx/rt28xx/rt30xx (PCI/PCIe/PCMCIA) support"
	depends on PCI
	select RT2800_LIB
	select RT2800_LIB_MMIO
	select RT2X00_LIB_MMIO
	select RT2X00_LIB_PCI
	select RT2X00_LIB_FIRMWARE
	select RT2X00_LIB_CRYPTO
	select CRC_CCITT
	select EEPROM_93CX6
	help
	  This adds support for rt27xx/rt28xx/rt30xx wireless chipset family.
	  Supported chips: RT2760, RT2790, RT2860, RT2880, RT2890, RT3052,
			   RT3090, RT3091 & RT3092

	  When compiled as a module, this driver will be called "rt2800pci.ko".

if RT2800PCI

config RT2800PCI_RT33XX
	bool "rt2800pci - Include support for rt33xx devices"
	default y
	help
	  This adds support for rt33xx wireless chipset family to the
	  rt2800pci driver.
	  Supported chips: RT3390

config RT2800PCI_RT35XX
	bool "rt2800pci - Include support for rt35xx devices (EXPERIMENTAL)"
	default y
	help
	  This adds support for rt35xx wireless chipset family to the
	  rt2800pci driver.
	  Supported chips: RT3060, RT3062, RT3562, RT3592


config RT2800PCI_RT53XX
	bool "rt2800pci - Include support for rt53xx devices (EXPERIMENTAL)"
	default y
	help
	  This adds support for rt53xx wireless chipset family to the
	  rt2800pci driver.
	  Supported chips: RT5390

config RT2800PCI_RT3290
	bool "rt2800pci - Include support for rt3290 devices (EXPERIMENTAL)"
	default y
	help
	  This adds support for rt3290 wireless chipset family to the
	  rt2800pci driver.
	  Supported chips: RT3290
endif

config RT2500USB
	tristate "Ralink rt2500 (USB) support"
	depends on USB
	select RT2X00_LIB_USB
	select RT2X00_LIB_CRYPTO
	help
	  This adds support for rt2500 wireless chipset family.
	  Supported chips: RT2571 & RT2572.

	  When compiled as a module, this driver will be called rt2500usb.

config RT73USB
	tristate "Ralink rt2501/rt73 (USB) support"
	depends on USB
	select RT2X00_LIB_USB
	select RT2X00_LIB_FIRMWARE
	select RT2X00_LIB_CRYPTO
	select CRC_ITU_T
	help
	  This adds support for rt2501 wireless chipset family.
	  Supported chips: RT2571W, RT2573 & RT2671.

	  When compiled as a module, this driver will be called rt73usb.

config RT2800USB
	tristate "Ralink rt27xx/rt28xx/rt30xx (USB) support"
	depends on USB
	select RT2800_LIB
	select RT2X00_LIB_USB
	select RT2X00_LIB_FIRMWARE
	select RT2X00_LIB_CRYPTO
	select CRC_CCITT
	help
	  This adds support for rt27xx/rt28xx/rt30xx wireless chipset family.
	  Supported chips: RT2770, RT2870 & RT3070, RT3071 & RT3072

	  When compiled as a module, this driver will be called "rt2800usb.ko".

if RT2800USB

config RT2800USB_RT33XX
	bool "rt2800usb - Include support for rt33xx devices"
	default y
	help
	  This adds support for rt33xx wireless chipset family to the
	  rt2800usb driver.
	  Supported chips: RT3370

config RT2800USB_RT35XX
	bool "rt2800usb - Include support for rt35xx devices (EXPERIMENTAL)"
	default y
	help
	  This adds support for rt35xx wireless chipset family to the
	  rt2800usb driver.
	  Supported chips: RT3572

config RT2800USB_RT3573
	bool "rt2800usb - Include support for rt3573 devices (EXPERIMENTAL)"
	help
	  This enables support for RT3573 chipset based wireless USB devices
	  in the rt2800usb driver.

config RT2800USB_RT53XX
	bool "rt2800usb - Include support for rt53xx devices (EXPERIMENTAL)"
	help
	  This adds support for rt53xx wireless chipset family to the
	  rt2800usb driver.
	  Supported chips: RT5370

config RT2800USB_RT55XX
	bool "rt2800usb - Include support for rt55xx devices (EXPERIMENTAL)"
	help
	  This adds support for rt55xx wireless chipset family to the
	  rt2800usb driver.
	  Supported chips: RT5572

config RT2800USB_UNKNOWN
	bool "rt2800usb - Include support for unknown (USB) devices"
	default n
	help
	  This adds support for rt2800usb devices that are known to
	  have a rt28xx family compatible chipset, but for which the exact
	  chipset is unknown.

	  Support status for these devices is unknown, and enabling these
	  devices may or may not work.

endif

config RT2800SOC
	tristate "Ralink WiSoC support"
	depends on SOC_RT288X || SOC_RT305X || SOC_MT7620
	select RT2X00_LIB_SOC
	select RT2X00_LIB_MMIO
	select RT2X00_LIB_CRYPTO
	select RT2X00_LIB_FIRMWARE
	select RT2800_LIB
	select RT2800_LIB_MMIO
	help
	  This adds support for Ralink WiSoC devices.
	  Supported chips: RT2880, RT3050, RT3052, RT3350, RT3352.

	  When compiled as a module, this driver will be called rt2800soc.


config RT2800_LIB
	tristate

config RT2800_LIB_MMIO
	tristate
	select RT2X00_LIB_MMIO
	select RT2800_LIB

config RT2X00_LIB_MMIO
	tristate

config RT2X00_LIB_PCI
	tristate
	select RT2X00_LIB

config RT2X00_LIB_SOC
	tristate
	select RT2X00_LIB

config RT2X00_LIB_USB
	tristate
	select RT2X00_LIB

config RT2X00_LIB
	tristate

config RT2X00_LIB_FIRMWARE
	bool
	select FW_LOADER

config RT2X00_LIB_CRYPTO
	bool

config RT2X00_LIB_LEDS
	bool
	default y if (RT2X00_LIB=y && LEDS_CLASS=y) || (RT2X00_LIB=m && LEDS_CLASS!=n)

config RT2X00_LIB_DEBUGFS
	bool "Ralink debugfs support"
	depends on RT2X00_LIB && MAC80211_DEBUGFS
	help
	  Enable creation of debugfs files for the rt2x00 drivers.
	  These debugfs files support both reading and writing of the
	  most important register types of the rt2x00 hardware.

config RT2X00_DEBUG
	bool "Ralink debug output"
	depends on RT2X00_LIB
	help
	  Enable debugging output for all rt2x00 modules

endif
