# SPDX-License-Identifier: ISC
config ATH10K
	tristate "Atheros 802.11ac wireless cards support"
	depends on MAC80211 && HAS_DMA
	select ATH_COMMON
	select CRC32
	select WANT_DEV_COREDUMP
	select ATH10K_CE
	help
	  This module adds support for wireless adapters based on
	  Atheros IEEE 802.11ac family of chipsets.

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

config ATH10K_CE
	bool

config ATH10K_PCI
	tristate "Atheros ath10k PCI support"
	depends on ATH10K && PCI
	help
	  This module adds support for PCIE bus

config ATH10K_AHB
	bool "Atheros ath10k AHB support"
	depends on ATH10K_PCI && OF && RESET_CONTROLLER
	help
	  This module adds support for AHB bus

config ATH10K_SDIO
	tristate "Atheros ath10k SDIO support"
	depends on ATH10K && MMC
	help
	  This module adds support for SDIO/MMC bus.

config ATH10K_USB
	tristate "Atheros ath10k USB support (EXPERIMENTAL)"
	depends on ATH10K && USB
	help
	  This module adds experimental support for USB bus. Currently
	  work in progress and will not fully work.

config ATH10K_SNOC
	tristate "Qualcomm ath10k SNOC support"
	depends on ATH10K
	depends on ARCH_QCOM || COMPILE_TEST
	depends on QCOM_SMEM
	select QCOM_SCM
	select QCOM_QMI_HELPERS
	help
	  This module adds support for integrated WCN3990 chip connected
	  to system NOC(SNOC).

config ATH10K_DEBUG
	bool "Atheros ath10k debugging"
	depends on ATH10K
	help
	  Enables debug support

	  If unsure, say Y to make it easier to debug problems.

config ATH10K_DEBUGFS
	bool "Atheros ath10k debugfs support"
	depends on ATH10K && DEBUG_FS
	help
	  Enabled debugfs support

	  If unsure, say Y to make it easier to debug problems.

config ATH10K_SPECTRAL
	bool "Atheros ath10k spectral scan support"
	depends on ATH10K_DEBUGFS
	select RELAY
	default n
	help
	  Say Y to enable access to the FFT/spectral data via debugfs.

config ATH10K_TRACING
	bool "Atheros ath10k tracing support"
	depends on ATH10K
	depends on EVENT_TRACING
	help
	  Select this to ath10k use tracing infrastructure.

config ATH10K_DFS_CERTIFIED
	bool "Atheros DFS support for certified platforms"
	depends on ATH10K && CFG80211_CERTIFICATION_ONUS
	default n
	help
	This option enables DFS support for initiating radiation on
	ath10k.
