config ATH9K_HW
	tristate
config ATH9K_COMMON
	tristate
	select ATH_COMMON
config ATH9K_DFS_DEBUGFS
	def_bool y
	depends on ATH9K_DEBUGFS && ATH9K_DFS_CERTIFIED

config ATH9K_BTCOEX_SUPPORT
	bool "Atheros bluetooth coexistence support"
	depends on (ATH9K || ATH9K_HTC)
	default y
	---help---
	  Say Y, if you want to use the ath9k/ath9k_htc radios together with
	  Bluetooth modules in the same system.

config ATH9K
	tristate "Atheros 802.11n wireless cards support"
	depends on MAC80211 && HAS_DMA
	select ATH9K_HW
	select MAC80211_LEDS
	select LEDS_CLASS
	select NEW_LEDS
	select ATH9K_COMMON
	---help---
	  This module adds support for wireless adapters based on
	  Atheros IEEE 802.11n AR5008, AR9001 and AR9002 family
	  of chipsets. For a specific list of supported external
	  cards, laptops that already ship with these cards and
	  APs that come with these cards refer to ath9k wiki
	  products page:

	  http://wireless.kernel.org/en/users/Drivers/ath9k/products

	  If you choose to build a module, it'll be called ath9k.

config ATH9K_PCI
	bool "Atheros ath9k PCI/PCIe bus support"
	default y
	depends on ATH9K && PCI
	---help---
	  This option enables the PCI bus support in ath9k.

	  Say Y, if you have a compatible PCI/PCIe wireless card.

config ATH9K_AHB
	bool "Atheros ath9k AHB bus support"
	depends on ATH9K
	default n
	---help---
	  This option enables the AHB bus support in ath9k.

	  Say Y, if you have a SoC with a compatible built-in
	  wireless MAC. Say N if unsure.

config ATH9K_DEBUGFS
	bool "Atheros ath9k debugging"
	depends on ATH9K && DEBUG_FS
	select MAC80211_DEBUGFS
	select RELAY
	---help---
	  Say Y, if you need access to ath9k's statistics for
	  interrupts, rate control, etc.

	  Also required for changing debug message flags at run time.

config ATH9K_STATION_STATISTICS
	bool "Detailed station statistics"
	depends on ATH9K && ATH9K_DEBUGFS && DEBUG_FS
	select MAC80211_DEBUGFS
	default n
	---help---
	  This option enables detailed statistics for association stations.

config ATH9K_DFS_CERTIFIED
	bool "Atheros DFS support for certified platforms"
	depends on ATH9K && CFG80211_CERTIFICATION_ONUS
	default n
	---help---
	  This option enables DFS support for initiating radiation on
	  ath9k. There is no way to dynamically detect if a card was DFS
	  certified and as such this is left as a build time option. This
	  option should only be enabled by system integrators that can
	  guarantee that all the platforms that their kernel will run on
	  have obtained appropriate regulatory body certification for a
	  respective Atheros card by using ath9k on the target shipping
	  platforms.

	  This is currently only a placeholder for future DFS support,
	  as DFS support requires more components that still need to be
	  developed. At this point enabling this option won't do anything
	  except increase code size.

config ATH9K_TX99
	bool "Atheros ath9k TX99 testing support"
	depends on ATH9K_DEBUGFS && CFG80211_CERTIFICATION_ONUS
	default n
	---help---
	  Say N. This should only be enabled on systems undergoing
	  certification testing and evaluation in a controlled environment.
	  Enabling this will only enable TX99 support, all other modes of
	  operation will be disabled.

	  TX99 support enables Specific Absorption Rate (SAR) testing.
	  SAR is the unit of measurement for the amount of radio frequency(RF)
	  absorbed by the body when using a wireless device. The RF exposure
	  limits used are expressed in the terms of SAR, which is a measure
	  of the electric and magnetic field strength and power density for
	  transmitters operating at frequencies from 300 kHz to 100 GHz.
	  Regulatory bodies around the world require that wireless device
	  be evaluated to meet the RF exposure limits set forth in the
	  governmental SAR regulations.

config ATH9K_WOW
	bool "Wake on Wireless LAN support (EXPERIMENTAL)"
	depends on ATH9K && PM
	default n
	---help---
	  This option enables Wake on Wireless LAN support for certain cards.
	  Currently, AR9462 is supported.

config ATH9K_RFKILL
	bool "Atheros ath9k rfkill support" if EXPERT
	depends on ATH9K
	depends on RFKILL=y || RFKILL=ATH9K
	default y
	help
	  Say Y to have ath9k poll the RF-Kill GPIO every couple of
	  seconds. Turn off to save power, but enable it if you have
	  a platform that can toggle the RF-Kill GPIO.

config ATH9K_HTC
       tristate "Atheros HTC based wireless cards support"
       depends on USB && MAC80211
       select ATH9K_HW
       select MAC80211_LEDS
       select LEDS_CLASS
       select NEW_LEDS
       select ATH9K_COMMON
       ---help---
	 Support for Atheros HTC based cards.
	 Chipsets supported: AR9271

	 For more information: http://wireless.kernel.org/en/users/Drivers/ath9k_htc

	 The built module will be ath9k_htc.

config ATH9K_HTC_DEBUGFS
	bool "Atheros ath9k_htc debugging"
	depends on ATH9K_HTC && DEBUG_FS
	---help---
	  Say Y, if you need access to ath9k_htc's statistics.
