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_BCMA_EXTRA
	bool "Hardware support that overlaps with the brcmsmac driver"
	depends on B43_BCMA
	default n if BRCMSMAC || BRCMSMAC_MODULE
	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.
