162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ciconfig B43LEGACY
362306a36Sopenharmony_ci	tristate "Broadcom 43xx-legacy wireless support (mac80211 stack)"
462306a36Sopenharmony_ci	depends on SSB_POSSIBLE && MAC80211 && HAS_DMA
562306a36Sopenharmony_ci	select SSB
662306a36Sopenharmony_ci	select FW_LOADER
762306a36Sopenharmony_ci	help
862306a36Sopenharmony_ci	  b43legacy is a driver for 802.11b devices from Broadcom (BCM4301 and
962306a36Sopenharmony_ci	  BCM4303) and early model 802.11g chips (BCM4306 Ver. 2) used in the
1062306a36Sopenharmony_ci	  Linksys WPC54G V1 PCMCIA devices.
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci	  Newer 802.11g and 802.11a devices need b43.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci	  It is safe to include both b43 and b43legacy as the underlying glue
1562306a36Sopenharmony_ci	  layer will automatically load the correct version for your device.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci	  This driver uses V3 firmware, which must be installed separately using
1862306a36Sopenharmony_ci	  b43-fwcutter.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci	  This driver can be built as a module (recommended) that will be
2162306a36Sopenharmony_ci	  called "b43legacy". If unsure, say M.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci# Auto-select SSB PCI-HOST support, if possible
2462306a36Sopenharmony_ciconfig B43LEGACY_PCI_AUTOSELECT
2562306a36Sopenharmony_ci	bool
2662306a36Sopenharmony_ci	depends on B43LEGACY && SSB_PCIHOST_POSSIBLE
2762306a36Sopenharmony_ci	select SSB_PCIHOST
2862306a36Sopenharmony_ci	select SSB_B43_PCI_BRIDGE
2962306a36Sopenharmony_ci	default y
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci# Auto-select SSB PCICORE driver, if possible
3262306a36Sopenharmony_ciconfig B43LEGACY_PCICORE_AUTOSELECT
3362306a36Sopenharmony_ci	bool
3462306a36Sopenharmony_ci	depends on B43LEGACY && SSB_DRIVER_PCICORE_POSSIBLE
3562306a36Sopenharmony_ci	select SSB_DRIVER_PCICORE
3662306a36Sopenharmony_ci	default y
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci# LED support
3962306a36Sopenharmony_ci# This config option automatically enables b43legacy LEDS support,
4062306a36Sopenharmony_ci# if it's possible.
4162306a36Sopenharmony_ciconfig B43LEGACY_LEDS
4262306a36Sopenharmony_ci	bool
4362306a36Sopenharmony_ci	depends on B43LEGACY && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = B43LEGACY)
4462306a36Sopenharmony_ci	default y
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci# This config option automatically enables b43 HW-RNG support,
4762306a36Sopenharmony_ci# if the HW-RNG core is enabled.
4862306a36Sopenharmony_ciconfig B43LEGACY_HWRNG
4962306a36Sopenharmony_ci	bool
5062306a36Sopenharmony_ci	depends on B43LEGACY && (HW_RANDOM = y || HW_RANDOM = B43LEGACY)
5162306a36Sopenharmony_ci	default y
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ciconfig B43LEGACY_DEBUG
5462306a36Sopenharmony_ci	bool "Broadcom 43xx-legacy debugging"
5562306a36Sopenharmony_ci	depends on B43LEGACY
5662306a36Sopenharmony_ci	default y
5762306a36Sopenharmony_ci	help
5862306a36Sopenharmony_ci	  Say Y, because this information will help you get the driver running.
5962306a36Sopenharmony_ci	  This option generates a minimum of log output.
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ciconfig B43LEGACY_DMA
6262306a36Sopenharmony_ci	bool
6362306a36Sopenharmony_ci	depends on B43LEGACY
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ciconfig B43LEGACY_PIO
6662306a36Sopenharmony_ci	bool
6762306a36Sopenharmony_ci	depends on B43LEGACY
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_cichoice
7062306a36Sopenharmony_ci	prompt "Broadcom 43xx-legacy data transfer mode"
7162306a36Sopenharmony_ci	depends on B43LEGACY
7262306a36Sopenharmony_ci	default B43LEGACY_DMA_AND_PIO_MODE
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ciconfig B43LEGACY_DMA_AND_PIO_MODE
7562306a36Sopenharmony_ci	bool "DMA + PIO"
7662306a36Sopenharmony_ci	select B43LEGACY_DMA
7762306a36Sopenharmony_ci	select B43LEGACY_PIO
7862306a36Sopenharmony_ci	help
7962306a36Sopenharmony_ci	  Include both, Direct Memory Access (DMA) and Programmed I/O (PIO)
8062306a36Sopenharmony_ci	  data transfer modes. The mode actually used is selectable through
8162306a36Sopenharmony_ci	  the module parameter "pio". With pio=0 as a module parameter, the
8262306a36Sopenharmony_ci	  default DMA is used, otherwise PIO is used.
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci	  If unsure, choose this option.
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciconfig B43LEGACY_DMA_MODE
8762306a36Sopenharmony_ci	bool "DMA (Direct Memory Access) only"
8862306a36Sopenharmony_ci	select B43LEGACY_DMA
8962306a36Sopenharmony_ci	help
9062306a36Sopenharmony_ci	  Only include Direct Memory Access (DMA).
9162306a36Sopenharmony_ci	  This reduces the size of the driver module, by omitting the PIO code.
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ciconfig B43LEGACY_PIO_MODE
9462306a36Sopenharmony_ci	bool "PIO (Programmed I/O) only"
9562306a36Sopenharmony_ci	select B43LEGACY_PIO
9662306a36Sopenharmony_ci	help
9762306a36Sopenharmony_ci	  Only include Programmed I/O (PIO).
9862306a36Sopenharmony_ci	  This reduces the size of the driver module, by omitting the DMA code.
9962306a36Sopenharmony_ci	  Please note that PIO transfers are slow (compared to DMA).
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci	  Also note that not all devices of the b43legacy series support PIO.
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci	  You should use PIO only if DMA does not work for you.
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ciendchoice
106