config B43LEGACY
	tristate "Broadcom 43xx-legacy wireless support (mac80211 stack)"
	depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
	select SSB
	select FW_LOADER
	select HW_RANDOM
	---help---
	  b43legacy is a driver for 802.11b devices from Broadcom (BCM4301 and
	  BCM4303) and early model 802.11g chips (BCM4306 Ver. 2) used in the
	  Linksys WPC54G V1 PCMCIA devices.

	  Newer 802.11g and 802.11a devices need b43.

	  It is safe to include both b43 and b43legacy as the underlying glue
	  layer will automatically load the correct version for your device.

	  This driver uses V3 firmware, which must be installed separately using
	  b43-fwcutter.

	  This driver can be built as a module (recommended) that will be
	  called "b43legacy". If unsure, say M.

# Auto-select SSB PCI-HOST support, if possible
config B43LEGACY_PCI_AUTOSELECT
	bool
	depends on B43LEGACY && SSB_PCIHOST_POSSIBLE
	select SSB_PCIHOST
	select SSB_B43_PCI_BRIDGE
	default y

# Auto-select SSB PCICORE driver, if possible
config B43LEGACY_PCICORE_AUTOSELECT
	bool
	depends on B43LEGACY && SSB_DRIVER_PCICORE_POSSIBLE
	select SSB_DRIVER_PCICORE
	default y

# LED support
# This config option automatically enables b43legacy LEDS support,
# if it's possible.
config B43LEGACY_LEDS
	bool
	depends on B43LEGACY && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = B43LEGACY)
	default y

# RFKILL support
# This config option automatically enables b43legacy RFKILL support,
# if it's possible.
config B43LEGACY_RFKILL
	bool
	depends on B43LEGACY && (RFKILL = y || RFKILL = B43LEGACY) && RFKILL_INPUT && (INPUT_POLLDEV = y || INPUT_POLLDEV = B43LEGACY)
	default y

config B43LEGACY_DEBUG
	bool "Broadcom 43xx-legacy debugging"
	depends on B43LEGACY
	default y
	---help---
	  Say Y, because this information will help you get the driver running.
	  This option generates a minimum of log output.

config B43LEGACY_DMA
	bool
	depends on B43LEGACY

config B43LEGACY_PIO
	bool
	depends on B43LEGACY

choice
	prompt "Broadcom 43xx-legacy data transfer mode"
	depends on B43LEGACY
	default B43LEGACY_DMA_AND_PIO_MODE

config B43LEGACY_DMA_AND_PIO_MODE
	bool "DMA + PIO"
	select B43LEGACY_DMA
	select B43LEGACY_PIO
	---help---
	  Include both, Direct Memory Access (DMA) and Programmed I/O (PIO)
	  data transfer modes. The mode actually used is selectable through
	  the module parameter "pio". With pio=0 as a module parameter, the
	  default DMA is used, otherwise PIO is used.

	  If unsure, choose this option.

config B43LEGACY_DMA_MODE
	bool "DMA (Direct Memory Access) only"
	select B43LEGACY_DMA
	---help---
	  Only include Direct Memory Access (DMA).
	  This reduces the size of the driver module, by omitting the PIO code.

config B43LEGACY_PIO_MODE
	bool "PIO (Programmed I/O) only"
	select B43LEGACY_PIO
	---help---
	  Only include Programmed I/O (PIO).
	  This reduces the size of the driver module, by omitting the DMA code.
	  Please note that PIO transfers are slow (compared to DMA).

	  Also note that not all devices of the b43legacy series support PIO.

	  You should use PIO only if DMA does not work for you.

endchoice
