162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ciconfig B43
362306a36Sopenharmony_ci	tristate "Broadcom 43xx wireless support (mac80211 stack)"
462306a36Sopenharmony_ci	depends on (BCMA_POSSIBLE || SSB_POSSIBLE) && MAC80211 && HAS_DMA
562306a36Sopenharmony_ci	select BCMA if B43_BCMA
662306a36Sopenharmony_ci	select SSB if B43_SSB
762306a36Sopenharmony_ci	select FW_LOADER
862306a36Sopenharmony_ci	select CORDIC
962306a36Sopenharmony_ci	help
1062306a36Sopenharmony_ci	  b43 is a driver for the Broadcom 43xx series wireless devices.
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci	  Check "lspci" for something like
1362306a36Sopenharmony_ci	  "Broadcom Corporation BCM43XX 802.11 Wireless LAN Controller"
1462306a36Sopenharmony_ci	  to determine whether you own such a device.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci	  This driver supports the new BCM43xx IEEE 802.11G devices, but not
1762306a36Sopenharmony_ci	  the old IEEE 802.11B devices. Old devices are supported by
1862306a36Sopenharmony_ci	  the b43legacy driver.
1962306a36Sopenharmony_ci	  Note that this has nothing to do with the standard that your AccessPoint
2062306a36Sopenharmony_ci	  supports (A, B, G or a combination).
2162306a36Sopenharmony_ci	  IEEE 802.11G devices can talk to IEEE 802.11B AccessPoints.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci	  It is safe to include both b43 and b43legacy as the underlying glue
2462306a36Sopenharmony_ci	  layer will automatically load the correct version for your device.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	  This driver uses V4 firmware, which must be installed separately using
2762306a36Sopenharmony_ci	  b43-fwcutter.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci	  This driver can be built as a module (recommended) that will be called "b43".
3062306a36Sopenharmony_ci	  If unsure, say M.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciconfig B43_BCMA
3362306a36Sopenharmony_ci	bool
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciconfig B43_SSB
3662306a36Sopenharmony_ci	bool
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_cichoice
3962306a36Sopenharmony_ci	prompt "Supported bus types"
4062306a36Sopenharmony_ci	depends on B43
4162306a36Sopenharmony_ci	default B43_BUSES_BCMA_AND_SSB
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ciconfig B43_BUSES_BCMA_AND_SSB
4462306a36Sopenharmony_ci	bool "BCMA and SSB"
4562306a36Sopenharmony_ci	depends on BCMA_POSSIBLE && SSB_POSSIBLE
4662306a36Sopenharmony_ci	select B43_BCMA
4762306a36Sopenharmony_ci	select B43_SSB
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciconfig B43_BUSES_BCMA
5062306a36Sopenharmony_ci	bool "BCMA only"
5162306a36Sopenharmony_ci	depends on BCMA_POSSIBLE
5262306a36Sopenharmony_ci	select B43_BCMA
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciconfig B43_BUSES_SSB
5562306a36Sopenharmony_ci	bool "SSB only"
5662306a36Sopenharmony_ci	depends on SSB_POSSIBLE
5762306a36Sopenharmony_ci	select B43_SSB
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ciendchoice
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci# Auto-select SSB PCI-HOST support, if possible
6262306a36Sopenharmony_ciconfig B43_PCI_AUTOSELECT
6362306a36Sopenharmony_ci	bool
6462306a36Sopenharmony_ci	depends on B43 && SSB_PCIHOST_POSSIBLE
6562306a36Sopenharmony_ci	select SSB_PCIHOST
6662306a36Sopenharmony_ci	select SSB_B43_PCI_BRIDGE
6762306a36Sopenharmony_ci	default y
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci# Auto-select SSB PCICORE driver, if possible
7062306a36Sopenharmony_ciconfig B43_PCICORE_AUTOSELECT
7162306a36Sopenharmony_ci	bool
7262306a36Sopenharmony_ci	depends on B43 && SSB_DRIVER_PCICORE_POSSIBLE
7362306a36Sopenharmony_ci	select SSB_DRIVER_PCICORE
7462306a36Sopenharmony_ci	default y
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ciconfig B43_SDIO
7762306a36Sopenharmony_ci	bool "Broadcom 43xx SDIO device support"
7862306a36Sopenharmony_ci	depends on B43 && B43_SSB && SSB_SDIOHOST_POSSIBLE
7962306a36Sopenharmony_ci	select SSB_SDIOHOST
8062306a36Sopenharmony_ci	help
8162306a36Sopenharmony_ci	  Broadcom 43xx device support for Soft-MAC SDIO devices.
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci	  With this config option you can drive Soft-MAC b43 cards with a
8462306a36Sopenharmony_ci	  Secure Digital I/O interface.
8562306a36Sopenharmony_ci	  This includes the WLAN daughter card found on the Nintendo Wii
8662306a36Sopenharmony_ci	  video game console.
8762306a36Sopenharmony_ci	  Note that this does not support Broadcom 43xx Full-MAC devices.
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci	  It's safe to select Y here, even if you don't have a B43 SDIO device.
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci	  If unsure, say N.
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci#Data transfers to the device via PIO. We want it as a fallback even
9462306a36Sopenharmony_ci# if we can do DMA.
9562306a36Sopenharmony_ciconfig B43_BCMA_PIO
9662306a36Sopenharmony_ci	bool
9762306a36Sopenharmony_ci	depends on B43 && B43_BCMA
9862306a36Sopenharmony_ci	select BCMA_BLOCKIO
9962306a36Sopenharmony_ci	default y
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ciconfig B43_PIO
10262306a36Sopenharmony_ci	bool
10362306a36Sopenharmony_ci	depends on B43 && B43_SSB
10462306a36Sopenharmony_ci	select SSB_BLOCKIO
10562306a36Sopenharmony_ci	default y
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ciconfig B43_PHY_G
10862306a36Sopenharmony_ci	bool "Support for G-PHY (802.11g) devices"
10962306a36Sopenharmony_ci	depends on B43 && B43_SSB
11062306a36Sopenharmony_ci	default y
11162306a36Sopenharmony_ci	help
11262306a36Sopenharmony_ci	  This PHY type can be found in the following chipsets:
11362306a36Sopenharmony_ci	  PCI: BCM4306, BCM4311, BCM4318
11462306a36Sopenharmony_ci	  SoC: BCM4712, BCM5352E
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ciconfig B43_PHY_N
11762306a36Sopenharmony_ci	bool "Support for N-PHY (the main 802.11n series) devices"
11862306a36Sopenharmony_ci	depends on B43
11962306a36Sopenharmony_ci	default y
12062306a36Sopenharmony_ci	help
12162306a36Sopenharmony_ci	  This PHY type can be found in the following chipsets:
12262306a36Sopenharmony_ci	  PCI: BCM4321, BCM4322,
12362306a36Sopenharmony_ci	       BCM43222, BCM43224, BCM43225,
12462306a36Sopenharmony_ci	       BCM43131, BCM43217, BCM43227, BCM43228
12562306a36Sopenharmony_ci	  SoC: BCM4716, BCM4717, BCM4718, BCM5356, BCM5357, BCM5358
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ciconfig B43_PHY_LP
12862306a36Sopenharmony_ci	bool "Support for LP-PHY (low-power 802.11g) devices"
12962306a36Sopenharmony_ci	depends on B43 && B43_SSB
13062306a36Sopenharmony_ci	default y
13162306a36Sopenharmony_ci	help
13262306a36Sopenharmony_ci	  The LP-PHY is a low-power PHY built into some notebooks
13362306a36Sopenharmony_ci	  and embedded devices. It supports 802.11a/b/g
13462306a36Sopenharmony_ci	  (802.11a support is optional, and currently disabled).
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ciconfig B43_PHY_HT
13762306a36Sopenharmony_ci	bool "Support for HT-PHY (high throughput 802.11n) devices"
13862306a36Sopenharmony_ci	depends on B43 && B43_BCMA
13962306a36Sopenharmony_ci	default y
14062306a36Sopenharmony_ci	help
14162306a36Sopenharmony_ci	  This PHY type with 3x3:3 MIMO can be found in the BCM4331 PCI chipset.
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ciconfig B43_PHY_LCN
14462306a36Sopenharmony_ci	bool "Support for LCN-PHY devices (BROKEN)"
14562306a36Sopenharmony_ci	depends on B43 && BROKEN
14662306a36Sopenharmony_ci	help
14762306a36Sopenharmony_ci	  Support for the LCN-PHY.
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci	  Say N, this is BROKEN and crashes driver.
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ciconfig B43_PHY_AC
15262306a36Sopenharmony_ci	bool "Support for AC-PHY (802.11ac) devices (BROKEN)"
15362306a36Sopenharmony_ci	depends on B43 && B43_BCMA && BROKEN
15462306a36Sopenharmony_ci	help
15562306a36Sopenharmony_ci	  This PHY type can be found in the following chipsets:
15662306a36Sopenharmony_ci	  PCI: BCM4352, BCM4360
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci	  Say N, this is BROKEN and crashes driver.
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci# This config option automatically enables b43 LEDS support,
16162306a36Sopenharmony_ci# if it's possible.
16262306a36Sopenharmony_ciconfig B43_LEDS
16362306a36Sopenharmony_ci	bool
16462306a36Sopenharmony_ci	depends on B43 && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = B43)
16562306a36Sopenharmony_ci	default y
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci# This config option automatically enables b43 HW-RNG support,
16862306a36Sopenharmony_ci# if the HW-RNG core is enabled.
16962306a36Sopenharmony_ciconfig B43_HWRNG
17062306a36Sopenharmony_ci	bool
17162306a36Sopenharmony_ci	depends on B43 && (HW_RANDOM = y || HW_RANDOM = B43)
17262306a36Sopenharmony_ci	default y
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ciconfig B43_DEBUG
17562306a36Sopenharmony_ci	bool "Broadcom 43xx debugging"
17662306a36Sopenharmony_ci	depends on B43
17762306a36Sopenharmony_ci	help
17862306a36Sopenharmony_ci	  Broadcom 43xx debugging.
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ci	  This adds additional runtime sanity checks and statistics to the driver.
18162306a36Sopenharmony_ci	  These checks and statistics might be expensive and hurt the runtime
18262306a36Sopenharmony_ci	  performance of your system.
18362306a36Sopenharmony_ci	  This also adds the b43 debugfs interface.
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci	  Do not enable this, unless you are debugging the driver.
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci	  Say N, if you are a distributor or user building a release kernel
18862306a36Sopenharmony_ci	  for production use.
18962306a36Sopenharmony_ci	  Only say Y, if you are debugging a problem in the b43 driver sourcecode.
190