config BRCMUTIL
	tristate

config BRCMSMAC
	tristate "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
	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 FW_LOADER
	select 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
	tristate "Broadcom FullMAC WLAN driver"
	depends on CFG80211
	select BRCMUTIL
	---help---
	  This module adds support for wireless adapters based on Broadcom
	  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_PROTO_BCDC
	bool

config BRCMFMAC_PROTO_MSGBUF
	bool

config BRCMFMAC_SDIO
	bool "SDIO bus interface support for FullMAC driver"
	depends on (MMC = y || MMC = BRCMFMAC)
	depends on BRCMFMAC
	select BRCMFMAC_PROTO_BCDC
	select 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 BRCMFMAC_PROTO_BCDC
	select 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 BRCMFMAC_PCIE
	bool "PCIE bus interface support for FullMAC driver"
	depends on BRCMFMAC
	depends on PCI
	select BRCMFMAC_PROTO_MSGBUF
	select FW_LOADER
	---help---
	  This option enables the PCIE bus interface support for Broadcom
	  IEEE802.11ac embedded FullMAC WLAN driver. Say Y if you want to
	  use the driver for an PCIE 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
	bool "Broadcom driver debug functions"
	depends on BRCMSMAC || BRCMFMAC
	select WANT_DEV_COREDUMP
	---help---
	  Selecting this enables additional code for debug purposes.
