# SPDX-License-Identifier: GPL-2.0-only
config WLAN_VENDOR_ATMEL
	bool "Atmel devices"
	default y
	help
	  If you have a wireless card belonging to this class, say Y.

	  Note that the answer to this question doesn't directly affect the
	  kernel: saying N will just cause the configurator to skip all the
	  questions about these cards. If you say Y, you will be asked for
	  your specific card in the following questions.

if WLAN_VENDOR_ATMEL

config ATMEL
	tristate "Atmel at76c50x chipset  802.11b support"
	depends on CFG80211 && (PCI || PCMCIA) && HAS_IOPORT
	select WIRELESS_EXT
	select WEXT_PRIV
	select FW_LOADER
	select CRC32
	help
	  A driver 802.11b wireless cards based on the Atmel fast-vnet
	  chips. This driver supports standard Linux wireless extensions.

	  Many  cards based on this chipset do not have flash memory
	  and need their firmware loaded at start-up. If yours is
	  one of these, you will need to provide a firmware image
	  to be loaded into the card by the driver. The Atmel
	  firmware package can be downloaded from
	  <http://www.thekelleys.org.uk/atmel>

config PCI_ATMEL
	tristate "Atmel at76c506 PCI cards"
	depends on ATMEL && PCI
	help
	  Enable support for PCI and mini-PCI cards containing the
	  Atmel at76c506 chip.

config PCMCIA_ATMEL
	tristate "Atmel at76c502/at76c504 PCMCIA cards"
	depends on ATMEL && PCMCIA
	select WIRELESS_EXT
	select FW_LOADER
	select CRC32
	help
	  Enable support for PCMCIA cards containing the
	  Atmel at76c502 and at76c504 chips.

config AT76C50X_USB
	tristate "Atmel at76c503/at76c505/at76c505a USB cards"
	depends on MAC80211 && USB
	select FW_LOADER
	help
	  Enable support for USB Wireless devices using Atmel at76c503,
	  at76c505 or at76c505a chips.

endif # WLAN_VENDOR_ATMEL
