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

config B43_SSB
	bool
	depends on B43 && SSB
	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 (EXPERIMENTAL)"
	depends on B43 && SSB_SDIOHOST_POSSIBLE && EXPERIMENTAL
	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 (EXPERIMENTAL)"
	depends on B43 && EXPERIMENTAL
	---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 (EXPERIMENTAL)"
	depends on B43 && EXPERIMENTAL
	---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 me expensive and hurt 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.
