config BRCMUTIL
	tristate
	depends on m

config BRCMSMAC
	tristate "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
	depends on m
	depends on MAC80211
	depends on BCMA_POSSIBLE
	select BCMA
	select NEW_LEDS if BCMA_DRIVER_GPIO
	select LEDS_CLASS if BCMA_DRIVER_GPIO
	select BRCMUTIL
	select BACKPORT_FW_LOADER
	select BACKPORT_CORDIC
	---help---
	  This module adds support for PCIe wireless adapters based on Broadcom
	  IEEE802.11n SoftMAC chipsets. It also has WLAN led support, which will
	  be available if you select BCMA_DRIVER_GPIO. If you choose to build a
	  module, the driver will be called brcmsmac.ko.

config BRCMFMAC
	depends on !BACKPORT_KERNEL_2_6_29
	tristate "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
	depends on m
	depends on CFG80211
	select BRCMUTIL
	---help---
	  This module adds support for embedded wireless adapters based on
	  Broadcom IEEE802.11n FullMAC chipsets. It has to work with at least
	  one of the bus interface support. If you choose to build a module,
	  it'll be called brcmfmac.ko.

config BRCMFMAC_SDIO
	bool "SDIO bus interface support for FullMAC driver"
	depends on (MMC = y || MMC = BRCMFMAC)
	depends on BRCMFMAC
	select BACKPORT_FW_LOADER
	default y
	---help---
	  This option enables the SDIO bus interface support for Broadcom
	  IEEE802.11n embedded FullMAC WLAN driver. Say Y if you want to
	  use the driver for a SDIO wireless card.

config BRCMFMAC_USB
	bool "USB bus interface support for FullMAC driver"
	depends on (USB = y || USB = BRCMFMAC)
	depends on BRCMFMAC
	select BACKPORT_FW_LOADER
	---help---
	  This option enables the USB bus interface support for Broadcom
	  IEEE802.11n embedded FullMAC WLAN driver. Say Y if you want to
	  use the driver for an USB wireless card.

config BRCM_TRACING
	bool "Broadcom device tracing"
	depends on BRCMSMAC || BRCMFMAC
	---help---
	  If you say Y here, the Broadcom wireless drivers will register
	  with ftrace to dump event information into the trace ringbuffer.
	  Tracing can be enabled at runtime to aid in debugging wireless
	  issues. This option adds a small amount of overhead when tracing
	  is disabled. If unsure, say Y to allow developers to better help
	  you when wireless problems occur.

config BRCMDBG
	depends on !BACKPORT_KERNEL_2_6_30
	bool "Broadcom driver debug functions"
	depends on BRCMSMAC || BRCMFMAC
	---help---
	  Selecting this enables additional code for debug purposes.
