config B43
	tristate "Broadcom 43xx wireless support (mac80211 stack)"
	depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA
	select SSB
	select FW_LOADER
	select HW_RANDOM
	---help---
	  b43 is a driver for the Broadcom 43xx series wireless devices.

	  Check "lspci" for something like
	  "Broadcom Corporation BCM43XX 802.11 Wireless LAN Controller"
	  to determine whether you own such a device.

	  This driver supports the new BCM43xx IEEE 802.11G devices, but not
	  the old IEEE 802.11B devices. Old devices are supported by
	  the b43legacy driver.
	  Note that this has nothing to do with the standard that your AccessPoint
	  supports (A, B, G or a combination).
	  IEEE 802.11G devices can talk to IEEE 802.11B AccessPoints.

	  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 V4 firmware, which must be installed separately using
	  b43-fwcutter.

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

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

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

config B43_PCMCIA
	bool "Broadcom 43xx PCMCIA device support (EXPERIMENTAL)"
	depends on B43 && SSB_PCMCIAHOST_POSSIBLE && EXPERIMENTAL
	select SSB_PCMCIAHOST
	---help---
	  Broadcom 43xx PCMCIA device support.

	  Support for 16bit PCMCIA devices.
	  Please note that most PC-CARD devices are _NOT_ 16bit PCMCIA
	  devices, but 32bit CardBUS devices. CardBUS devices are supported
	  out of the box by b43.

	  With this config option you can drive b43 cards in
	  CompactFlash formfactor in a PCMCIA adaptor.
	  CF b43 cards can sometimes be found in handheld PCs.

	  It's safe to select Y here, even if you don't have a B43 PCMCIA device.

	  If unsure, say N.

# Data transfers to the device via PIO
# This is only needed on PCMCIA devices. All others can do DMA properly.
config B43_PIO
	bool
	depends on B43 && (B43_PCMCIA || B43_FORCE_PIO)
	select SSB_BLOCKIO
	default y

config B43_NPHY
	bool "Pre IEEE 802.11n support (BROKEN)"
	depends on B43 && EXPERIMENTAL && BROKEN
	---help---
	  Support for the IEEE 802.11n draft.

	  THIS IS BROKEN AND DOES NOT WORK YET.

	  SAY N.

# This config option automatically enables b43 LEDS support,
# if it's possible.
config B43_LEDS
	bool
	depends on B43 && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = B43)
	default y

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

config B43_DEBUG
	bool "Broadcom 43xx debugging"
	depends on B43
	---help---
	  Broadcom 43xx debugging messages.

	  Say Y, if you want to find out why the driver does not
	  work for you.

config B43_FORCE_PIO
	bool "Force usage of PIO instead of DMA"
	depends on B43 && B43_DEBUG
	---help---
	  This will disable DMA and always enable PIO instead.

	  Say N!
	  This is only for debugging the PIO engine code. You do
	  _NOT_ want to enable this.
