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 || SOC_RT288X || SOC_RT305X
	select RT2800_LIB
	select RT2X00_LIB_MMIO
	select RT2X00_LIB_PCI if PCI
	select RT2X00_LIB_SOC if SOC_RT288X || SOC_RT305X
	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 RT2800_LIB
	tristate

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
	boolean
	select FW_LOADER

config RT2X00_LIB_CRYPTO
	boolean

config RT2X00_LIB_LEDS
	boolean
	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
