config B43
	tristate "Broadcom 43xx wireless support (mac80211 stack)"
	depends on m
	depends on SSB_POSSIBLE && MAC80211 && HAS_DMA
	select SSB
	select BACKPORT_FW_LOADER
	---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.

config B43_BCMA
	bool "Support for BCMA bus"
	depends on B43 && (BCMA = y || BCMA = B43)
	default y

config B43_SSB
	bool
	depends on B43 && (SSB = y || SSB = B43)
	default y

# 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"
	depends on B43 && SSB_PCMCIAHOST_POSSIBLE
	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.

config B43_SDIO
	bool "Broadcom 43xx SDIO device support"
	depends on B43 && SSB_SDIOHOST_POSSIBLE
	select SSB_SDIOHOST
	---help---
	  Broadcom 43xx device support for Soft-MAC SDIO devices.

	  With this config option you can drive Soft-MAC b43 cards with a
	  Secure Digital I/O interface.
	  This includes the WLAN daughter card found on the Nintendo Wii
	  video game console.
	  Note that this does not support Broadcom 43xx Full-MAC devices.

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

	  If unsure, say N.

#Data transfers to the device via PIO. We want it as a fallback even
# if we can do DMA.
config B43_BCMA_PIO
	bool
	depends on B43_BCMA
	select BCMA_BLOCKIO
	default y

config B43_PIO
	bool
	depends on B43
	select SSB_BLOCKIO
	default y

config B43_PHY_N
	bool "Support for 802.11n (N-PHY) devices"
	depends on B43
	default y
	---help---
	  Support for the N-PHY.

	  This enables support for devices with N-PHY.

	  Say N if you expect high stability and performance. Saying Y will not
	  affect other devices support and may provide support for basic needs.

config B43_PHY_LP
	bool "Support for low-power (LP-PHY) devices"
	depends on B43
	default y
	---help---
	  Support for the LP-PHY.
	  The LP-PHY is a low-power PHY built into some notebooks
	  and embedded devices. It supports 802.11a/b/g
	  (802.11a support is optional, and currently disabled).

config B43_PHY_HT
	bool "Support for HT-PHY (high throughput) devices"
	depends on B43 && B43_BCMA
	default y
	---help---
	  Support for the HT-PHY.

	  Enables support for BCM4331 and possibly other chipsets with that PHY.

config B43_PHY_LCN
	bool "Support for LCN-PHY devices (BROKEN)"
	depends on B43 && BROKEN
	---help---
	  Support for the LCN-PHY.

	  Say N, this is BROKEN and crashes driver.

# 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 HW-RNG support,
# if the HW-RNG core is enabled.
config B43_HWRNG
	bool
	depends on B43 && (HW_RANDOM = y || HW_RANDOM = B43)
	default y

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

	  This adds additional runtime sanity checks and statistics to the driver.
	  These checks and statistics might be expensive and hurt the runtime
	  performance of your system.
	  This also adds the b43 debugfs interface.

	  Do not enable this, unless you are debugging the driver.

	  Say N, if you are a distributor or user building a release kernel
	  for production use.
	  Only say Y, if you are debugging a problem in the b43 driver sourcecode.
