menuconfig RT2X00
	tristate "Ralink driver support"
	depends on MAC80211
	---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_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_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
