18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ciconfig B43
38c2ecf20Sopenharmony_ci	tristate "Broadcom 43xx wireless support (mac80211 stack)"
48c2ecf20Sopenharmony_ci	depends on (BCMA_POSSIBLE || SSB_POSSIBLE) && MAC80211 && HAS_DMA
58c2ecf20Sopenharmony_ci	select BCMA if B43_BCMA
68c2ecf20Sopenharmony_ci	select SSB if B43_SSB
78c2ecf20Sopenharmony_ci	select FW_LOADER
88c2ecf20Sopenharmony_ci	select CORDIC
98c2ecf20Sopenharmony_ci	help
108c2ecf20Sopenharmony_ci	  b43 is a driver for the Broadcom 43xx series wireless devices.
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci	  Check "lspci" for something like
138c2ecf20Sopenharmony_ci	  "Broadcom Corporation BCM43XX 802.11 Wireless LAN Controller"
148c2ecf20Sopenharmony_ci	  to determine whether you own such a device.
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci	  This driver supports the new BCM43xx IEEE 802.11G devices, but not
178c2ecf20Sopenharmony_ci	  the old IEEE 802.11B devices. Old devices are supported by
188c2ecf20Sopenharmony_ci	  the b43legacy driver.
198c2ecf20Sopenharmony_ci	  Note that this has nothing to do with the standard that your AccessPoint
208c2ecf20Sopenharmony_ci	  supports (A, B, G or a combination).
218c2ecf20Sopenharmony_ci	  IEEE 802.11G devices can talk to IEEE 802.11B AccessPoints.
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci	  It is safe to include both b43 and b43legacy as the underlying glue
248c2ecf20Sopenharmony_ci	  layer will automatically load the correct version for your device.
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci	  This driver uses V4 firmware, which must be installed separately using
278c2ecf20Sopenharmony_ci	  b43-fwcutter.
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci	  This driver can be built as a module (recommended) that will be called "b43".
308c2ecf20Sopenharmony_ci	  If unsure, say M.
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciconfig B43_BCMA
338c2ecf20Sopenharmony_ci	bool
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciconfig B43_SSB
368c2ecf20Sopenharmony_ci	bool
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_cichoice
398c2ecf20Sopenharmony_ci	prompt "Supported bus types"
408c2ecf20Sopenharmony_ci	depends on B43
418c2ecf20Sopenharmony_ci	default B43_BUSES_BCMA_AND_SSB
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ciconfig B43_BUSES_BCMA_AND_SSB
448c2ecf20Sopenharmony_ci	bool "BCMA and SSB"
458c2ecf20Sopenharmony_ci	depends on BCMA_POSSIBLE && SSB_POSSIBLE
468c2ecf20Sopenharmony_ci	select B43_BCMA
478c2ecf20Sopenharmony_ci	select B43_SSB
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ciconfig B43_BUSES_BCMA
508c2ecf20Sopenharmony_ci	bool "BCMA only"
518c2ecf20Sopenharmony_ci	depends on BCMA_POSSIBLE
528c2ecf20Sopenharmony_ci	select B43_BCMA
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ciconfig B43_BUSES_SSB
558c2ecf20Sopenharmony_ci	bool "SSB only"
568c2ecf20Sopenharmony_ci	depends on SSB_POSSIBLE
578c2ecf20Sopenharmony_ci	select B43_SSB
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ciendchoice
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_ci# Auto-select SSB PCI-HOST support, if possible
628c2ecf20Sopenharmony_ciconfig B43_PCI_AUTOSELECT
638c2ecf20Sopenharmony_ci	bool
648c2ecf20Sopenharmony_ci	depends on B43 && SSB_PCIHOST_POSSIBLE
658c2ecf20Sopenharmony_ci	select SSB_PCIHOST
668c2ecf20Sopenharmony_ci	select SSB_B43_PCI_BRIDGE
678c2ecf20Sopenharmony_ci	default y
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci# Auto-select SSB PCICORE driver, if possible
708c2ecf20Sopenharmony_ciconfig B43_PCICORE_AUTOSELECT
718c2ecf20Sopenharmony_ci	bool
728c2ecf20Sopenharmony_ci	depends on B43 && SSB_DRIVER_PCICORE_POSSIBLE
738c2ecf20Sopenharmony_ci	select SSB_DRIVER_PCICORE
748c2ecf20Sopenharmony_ci	default y
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ciconfig B43_SDIO
778c2ecf20Sopenharmony_ci	bool "Broadcom 43xx SDIO device support"
788c2ecf20Sopenharmony_ci	depends on B43 && B43_SSB && SSB_SDIOHOST_POSSIBLE
798c2ecf20Sopenharmony_ci	select SSB_SDIOHOST
808c2ecf20Sopenharmony_ci	help
818c2ecf20Sopenharmony_ci	  Broadcom 43xx device support for Soft-MAC SDIO devices.
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ci	  With this config option you can drive Soft-MAC b43 cards with a
848c2ecf20Sopenharmony_ci	  Secure Digital I/O interface.
858c2ecf20Sopenharmony_ci	  This includes the WLAN daughter card found on the Nintendo Wii
868c2ecf20Sopenharmony_ci	  video game console.
878c2ecf20Sopenharmony_ci	  Note that this does not support Broadcom 43xx Full-MAC devices.
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ci	  It's safe to select Y here, even if you don't have a B43 SDIO device.
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci	  If unsure, say N.
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci#Data transfers to the device via PIO. We want it as a fallback even
948c2ecf20Sopenharmony_ci# if we can do DMA.
958c2ecf20Sopenharmony_ciconfig B43_BCMA_PIO
968c2ecf20Sopenharmony_ci	bool
978c2ecf20Sopenharmony_ci	depends on B43 && B43_BCMA
988c2ecf20Sopenharmony_ci	select BCMA_BLOCKIO
998c2ecf20Sopenharmony_ci	default y
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ciconfig B43_PIO
1028c2ecf20Sopenharmony_ci	bool
1038c2ecf20Sopenharmony_ci	depends on B43 && B43_SSB
1048c2ecf20Sopenharmony_ci	select SSB_BLOCKIO
1058c2ecf20Sopenharmony_ci	default y
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ciconfig B43_PHY_G
1088c2ecf20Sopenharmony_ci	bool "Support for G-PHY (802.11g) devices"
1098c2ecf20Sopenharmony_ci	depends on B43 && B43_SSB
1108c2ecf20Sopenharmony_ci	default y
1118c2ecf20Sopenharmony_ci	help
1128c2ecf20Sopenharmony_ci	  This PHY type can be found in the following chipsets:
1138c2ecf20Sopenharmony_ci	  PCI: BCM4306, BCM4311, BCM4318
1148c2ecf20Sopenharmony_ci	  SoC: BCM4712, BCM5352E
1158c2ecf20Sopenharmony_ci
1168c2ecf20Sopenharmony_ciconfig B43_PHY_N
1178c2ecf20Sopenharmony_ci	bool "Support for N-PHY (the main 802.11n series) devices"
1188c2ecf20Sopenharmony_ci	depends on B43
1198c2ecf20Sopenharmony_ci	default y
1208c2ecf20Sopenharmony_ci	help
1218c2ecf20Sopenharmony_ci	  This PHY type can be found in the following chipsets:
1228c2ecf20Sopenharmony_ci	  PCI: BCM4321, BCM4322,
1238c2ecf20Sopenharmony_ci	       BCM43222, BCM43224, BCM43225,
1248c2ecf20Sopenharmony_ci	       BCM43131, BCM43217, BCM43227, BCM43228
1258c2ecf20Sopenharmony_ci	  SoC: BCM4716, BCM4717, BCM4718, BCM5356, BCM5357, BCM5358
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ciconfig B43_PHY_LP
1288c2ecf20Sopenharmony_ci	bool "Support for LP-PHY (low-power 802.11g) devices"
1298c2ecf20Sopenharmony_ci	depends on B43 && B43_SSB
1308c2ecf20Sopenharmony_ci	default y
1318c2ecf20Sopenharmony_ci	help
1328c2ecf20Sopenharmony_ci	  The LP-PHY is a low-power PHY built into some notebooks
1338c2ecf20Sopenharmony_ci	  and embedded devices. It supports 802.11a/b/g
1348c2ecf20Sopenharmony_ci	  (802.11a support is optional, and currently disabled).
1358c2ecf20Sopenharmony_ci
1368c2ecf20Sopenharmony_ciconfig B43_PHY_HT
1378c2ecf20Sopenharmony_ci	bool "Support for HT-PHY (high throughput 802.11n) devices"
1388c2ecf20Sopenharmony_ci	depends on B43 && B43_BCMA
1398c2ecf20Sopenharmony_ci	default y
1408c2ecf20Sopenharmony_ci	help
1418c2ecf20Sopenharmony_ci	  This PHY type with 3x3:3 MIMO can be found in the BCM4331 PCI chipset.
1428c2ecf20Sopenharmony_ci
1438c2ecf20Sopenharmony_ciconfig B43_PHY_LCN
1448c2ecf20Sopenharmony_ci	bool "Support for LCN-PHY devices (BROKEN)"
1458c2ecf20Sopenharmony_ci	depends on B43 && BROKEN
1468c2ecf20Sopenharmony_ci	help
1478c2ecf20Sopenharmony_ci	  Support for the LCN-PHY.
1488c2ecf20Sopenharmony_ci
1498c2ecf20Sopenharmony_ci	  Say N, this is BROKEN and crashes driver.
1508c2ecf20Sopenharmony_ci
1518c2ecf20Sopenharmony_ciconfig B43_PHY_AC
1528c2ecf20Sopenharmony_ci	bool "Support for AC-PHY (802.11ac) devices (BROKEN)"
1538c2ecf20Sopenharmony_ci	depends on B43 && B43_BCMA && BROKEN
1548c2ecf20Sopenharmony_ci	help
1558c2ecf20Sopenharmony_ci	  This PHY type can be found in the following chipsets:
1568c2ecf20Sopenharmony_ci	  PCI: BCM4352, BCM4360
1578c2ecf20Sopenharmony_ci
1588c2ecf20Sopenharmony_ci	  Say N, this is BROKEN and crashes driver.
1598c2ecf20Sopenharmony_ci
1608c2ecf20Sopenharmony_ci# This config option automatically enables b43 LEDS support,
1618c2ecf20Sopenharmony_ci# if it's possible.
1628c2ecf20Sopenharmony_ciconfig B43_LEDS
1638c2ecf20Sopenharmony_ci	bool
1648c2ecf20Sopenharmony_ci	depends on B43 && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = B43)
1658c2ecf20Sopenharmony_ci	default y
1668c2ecf20Sopenharmony_ci
1678c2ecf20Sopenharmony_ci# This config option automatically enables b43 HW-RNG support,
1688c2ecf20Sopenharmony_ci# if the HW-RNG core is enabled.
1698c2ecf20Sopenharmony_ciconfig B43_HWRNG
1708c2ecf20Sopenharmony_ci	bool
1718c2ecf20Sopenharmony_ci	depends on B43 && (HW_RANDOM = y || HW_RANDOM = B43)
1728c2ecf20Sopenharmony_ci	default y
1738c2ecf20Sopenharmony_ci
1748c2ecf20Sopenharmony_ciconfig B43_DEBUG
1758c2ecf20Sopenharmony_ci	bool "Broadcom 43xx debugging"
1768c2ecf20Sopenharmony_ci	depends on B43
1778c2ecf20Sopenharmony_ci	help
1788c2ecf20Sopenharmony_ci	  Broadcom 43xx debugging.
1798c2ecf20Sopenharmony_ci
1808c2ecf20Sopenharmony_ci	  This adds additional runtime sanity checks and statistics to the driver.
1818c2ecf20Sopenharmony_ci	  These checks and statistics might be expensive and hurt the runtime
1828c2ecf20Sopenharmony_ci	  performance of your system.
1838c2ecf20Sopenharmony_ci	  This also adds the b43 debugfs interface.
1848c2ecf20Sopenharmony_ci
1858c2ecf20Sopenharmony_ci	  Do not enable this, unless you are debugging the driver.
1868c2ecf20Sopenharmony_ci
1878c2ecf20Sopenharmony_ci	  Say N, if you are a distributor or user building a release kernel
1888c2ecf20Sopenharmony_ci	  for production use.
1898c2ecf20Sopenharmony_ci	  Only say Y, if you are debugging a problem in the b43 driver sourcecode.
190