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

config B43_SSB
	bool

choice
	prompt "Supported bus types"
	depends on B43
	default B43_BUSES_BCMA_AND_SSB

config B43_BUSES_BCMA_AND_SSB
	bool "BCMA and SSB"
	depends on BCMA_POSSIBLE && SSB_POSSIBLE
	select B43_BCMA
	select B43_SSB

config B43_BUSES_BCMA
	bool "BCMA only"
	depends on BCMA_POSSIBLE
	select B43_BCMA

config B43_BUSES_SSB
	bool "SSB only"
	depends on SSB_POSSIBLE
	select B43_SSB

endchoice

# 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 && B43_SSB && 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 && B43_SSB && 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 && B43_BCMA
	select BCMA_BLOCKIO
	default y

config B43_PIO
	bool
	depends on B43 && B43_SSB
	select SSB_BLOCKIO
	default y

config B43_PHY_G
	bool "Support for G-PHY (802.11g) devices"
	depends on B43 && B43_SSB
	default y
	---help---
	  This PHY type can be found in the following chipsets:
	  PCI: BCM4306, BCM4311, BCM4318
	  SoC: BCM4712, BCM5352E

config B43_PHY_N
	bool "Support for N-PHY (the main 802.11n series) devices"
	depends on B43
	default y
	---help---
	  This PHY type can be found in the following chipsets:
	  PCI: BCM4321, BCM4322,
	       BCM43222, BCM43224, BCM43225,
	       BCM43131, BCM43217, BCM43227, BCM43228
	  SoC: BCM4716, BCM4717, BCM4718, BCM5356, BCM5357, BCM5358

config B43_PHY_LP
	bool "Support for LP-PHY (low-power 802.11g) devices"
	depends on B43 && B43_SSB
	default y
	---help---
	  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 802.11n) devices"
	depends on B43 && B43_BCMA
	default y
	---help---
	  This PHY type with 3x3:3 MIMO can be found in the BCM4331 PCI chipset.

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.

config B43_PHY_AC
	bool "Support for AC-PHY (802.11ac) devices (BROKEN)"
	depends on B43 && B43_BCMA && BROKEN
	---help---
	  This PHY type can be found in the following chipsets:
	  PCI: BCM4352, BCM4360

	  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.
