# SPDX-License-Identifier: GPL-2.0-only
config B43LEGACY
	tristate "Broadcom 43xx-legacy wireless support (mac80211 stack)"
	depends on SSB_POSSIBLE && MAC80211 && HAS_DMA
	select SSB
	select FW_LOADER
	---help---
	  b43legacy is a driver for 802.11b devices from Broadcom (BCM4301 and
	  BCM4303) and early model 802.11g chips (BCM4306 Ver. 2) used in the
	  Linksys WPC54G V1 PCMCIA devices.

	  Newer 802.11g and 802.11a devices need b43.

	  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 V3 firmware, which must be installed separately using
	  b43-fwcutter.

	  This driver can be built as a module (recommended) that will be
	  called "b43legacy". If unsure, say M.

# Auto-select SSB PCI-HOST support, if possible
config B43LEGACY_PCI_AUTOSELECT
	bool
	depends on B43LEGACY && SSB_PCIHOST_POSSIBLE
	select SSB_PCIHOST
	select SSB_B43_PCI_BRIDGE
	default y

# Auto-select SSB PCICORE driver, if possible
config B43LEGACY_PCICORE_AUTOSELECT
	bool
	depends on B43LEGACY && SSB_DRIVER_PCICORE_POSSIBLE
	select SSB_DRIVER_PCICORE
	default y

# LED support
# This config option automatically enables b43legacy LEDS support,
# if it's possible.
config B43LEGACY_LEDS
	bool
	depends on B43LEGACY && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = B43LEGACY)
	default y

# This config option automatically enables b43 HW-RNG support,
# if the HW-RNG core is enabled.
config B43LEGACY_HWRNG
	bool
	depends on B43LEGACY && (HW_RANDOM = y || HW_RANDOM = B43LEGACY)
	default y

config B43LEGACY_DEBUG
	bool "Broadcom 43xx-legacy debugging"
	depends on B43LEGACY
	default y
	---help---
	  Say Y, because this information will help you get the driver running.
	  This option generates a minimum of log output.

config B43LEGACY_DMA
	bool
	depends on B43LEGACY

config B43LEGACY_PIO
	bool
	depends on B43LEGACY

choice
	prompt "Broadcom 43xx-legacy data transfer mode"
	depends on B43LEGACY
	default B43LEGACY_DMA_AND_PIO_MODE

config B43LEGACY_DMA_AND_PIO_MODE
	bool "DMA + PIO"
	select B43LEGACY_DMA
	select B43LEGACY_PIO
	---help---
	  Include both, Direct Memory Access (DMA) and Programmed I/O (PIO)
	  data transfer modes. The mode actually used is selectable through
	  the module parameter "pio". With pio=0 as a module parameter, the
	  default DMA is used, otherwise PIO is used.

	  If unsure, choose this option.

config B43LEGACY_DMA_MODE
	bool "DMA (Direct Memory Access) only"
	select B43LEGACY_DMA
	---help---
	  Only include Direct Memory Access (DMA).
	  This reduces the size of the driver module, by omitting the PIO code.

config B43LEGACY_PIO_MODE
	bool "PIO (Programmed I/O) only"
	select B43LEGACY_PIO
	---help---
	  Only include Programmed I/O (PIO).
	  This reduces the size of the driver module, by omitting the DMA code.
	  Please note that PIO transfers are slow (compared to DMA).

	  Also note that not all devices of the b43legacy series support PIO.

	  You should use PIO only if DMA does not work for you.

endchoice
