# SPDX-License-Identifier: GPL-2.0-only
menuconfig RTW88
	tristate "Realtek 802.11ac wireless chips support"
	depends on MAC80211
	help
	  This module adds support for mac80211-based wireless drivers that
	  enables Realtek IEEE 802.11ac wireless chipsets.

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

if RTW88

config RTW88_CORE
	tristate
	select WANT_DEV_COREDUMP

config RTW88_PCI
	tristate

config RTW88_SDIO
	tristate

config RTW88_USB
	tristate

config RTW88_8822B
	tristate

config RTW88_8822C
	tristate

config RTW88_8723X
	tristate

config RTW88_8703B
	tristate
	select RTW88_8723X

config RTW88_8723D
	tristate
	select RTW88_8723X

config RTW88_8821C
	tristate

config RTW88_88XXA
	tristate

config RTW88_8821A
	tristate
	select RTW88_88XXA

config RTW88_8812A
	tristate
	select RTW88_88XXA

config RTW88_8814A
	tristate

config RTW88_8822BE
	tristate "Realtek 8822BE PCI wireless network adapter"
	depends on PCI
	select RTW88_CORE
	select RTW88_PCI
	select RTW88_8822B
	help
	  Select this option will enable support for 8822BE chipset

	  802.11ac PCIe wireless network adapter

config RTW88_8822BS
	tristate "Realtek 8822BS SDIO wireless network adapter"
	depends on MMC
	select RTW88_CORE
	select RTW88_SDIO
	select RTW88_8822B
	help
	  Select this option will enable support for 8822BS chipset

	  802.11ac SDIO wireless network adapter

config RTW88_8822BU
	tristate "Realtek 8822BU USB wireless network adapter"
	depends on USB
	select RTW88_CORE
	select RTW88_USB
	select RTW88_8822B
	help
	  Select this option will enable support for 8822BU chipset

	  802.11ac USB wireless network adapter

config RTW88_8822CE
	tristate "Realtek 8822CE PCI wireless network adapter"
	depends on PCI
	select RTW88_CORE
	select RTW88_PCI
	select RTW88_8822C
	help
	  Select this option will enable support for 8822CE chipset

	  802.11ac PCIe wireless network adapter

config RTW88_8822CS
	tristate "Realtek 8822CS SDIO wireless network adapter"
	depends on MMC
	select RTW88_CORE
	select RTW88_SDIO
	select RTW88_8822C
	help
	  Select this option will enable support for 8822CS chipset

	  802.11ac SDIO wireless network adapter

config RTW88_8822CU
	tristate "Realtek 8822CU USB wireless network adapter"
	depends on USB
	select RTW88_CORE
	select RTW88_USB
	select RTW88_8822C
	help
	  Select this option will enable support for 8822CU chipset

	  802.11ac USB wireless network adapter

config RTW88_8723DE
	tristate "Realtek 8723DE PCI wireless network adapter"
	depends on PCI
	select RTW88_CORE
	select RTW88_PCI
	select RTW88_8723D
	help
	  Select this option will enable support for 8723DE chipset

	  802.11n PCIe wireless network adapter

config RTW88_8723DS
	tristate "Realtek 8723DS SDIO wireless network adapter"
	depends on MMC
	select RTW88_CORE
	select RTW88_SDIO
	select RTW88_8723D
	help
	  Select this option will enable support for 8723DS chipset

	  802.11n SDIO wireless network adapter

config RTW88_8723CS
	tristate "Realtek 8723CS SDIO wireless network adapter"
	depends on MMC
	select RTW88_CORE
	select RTW88_SDIO
	select RTW88_8703B
	help
	  Select this option to enable support for 8723CS chipset (EXPERIMENTAL)

	  This module adds support for the 8723CS 802.11n SDIO
	  wireless network adapter.

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

config RTW88_8723DU
	tristate "Realtek 8723DU USB wireless network adapter"
	depends on USB
	select RTW88_CORE
	select RTW88_USB
	select RTW88_8723D
	help
	  Select this option will enable support for 8723DU chipset

	  802.11n USB wireless network adapter

config RTW88_8821CE
	tristate "Realtek 8821CE PCI wireless network adapter"
	depends on PCI
	select RTW88_CORE
	select RTW88_PCI
	select RTW88_8821C
	help
	  Select this option will enable support for 8821CE chipset

	  802.11ac PCIe wireless network adapter

config RTW88_8821CS
	tristate "Realtek 8821CS SDIO wireless network adapter"
	depends on MMC
	select RTW88_CORE
	select RTW88_SDIO
	select RTW88_8821C
	help
	  Select this option will enable support for 8821CS chipset

	  802.11ac SDIO wireless network adapter

config RTW88_8821CU
	tristate "Realtek 8821CU USB wireless network adapter"
	depends on USB
	select RTW88_CORE
	select RTW88_USB
	select RTW88_8821C
	help
	  Select this option will enable support for 8821CU chipset

	  802.11ac USB wireless network adapter

config RTW88_8821AU
	tristate "Realtek 8821AU/8811AU USB wireless network adapter"
	depends on USB
	select RTW88_CORE
	select RTW88_USB
	select RTW88_8821A
	help
	  Select this option will enable support for 8821AU and 8811AU chipset

	  802.11ac USB wireless network adapter

config RTW88_8812AU
	tristate "Realtek 8812AU USB wireless network adapter"
	depends on USB
	select RTW88_CORE
	select RTW88_USB
	select RTW88_8812A
	help
	  Select this option will enable support for 8812AU chipset

	  802.11ac USB wireless network adapter

config RTW88_8814AE
	tristate "Realtek 8814AE PCI wireless network adapter"
	depends on PCI
	select RTW88_CORE
	select RTW88_PCI
	select RTW88_8814A
	help
	  Select this option will enable support for 8814AE chipset

	  802.11ac PCIe wireless network adapter

config RTW88_8814AU
	tristate "Realtek 8814AU USB wireless network adapter"
	depends on USB
	select RTW88_CORE
	select RTW88_USB
	select RTW88_8814A
	help
	  Select this option will enable support for 8814AU chipset

	  802.11ac USB wireless network adapter

config RTW88_DEBUG
	bool "Realtek rtw88 debug support"
	depends on RTW88_CORE
	help
	  Enable debug support

	  If unsure, say Y to simplify debug problems

config RTW88_DEBUGFS
	bool "Realtek rtw88 debugfs support"
	depends on RTW88_CORE
	help
	  Enable debug support

	  If unsure, say Y to simplify debug problems

config RTW88_LEDS
	bool
	depends on LEDS_CLASS=y || LEDS_CLASS=MAC80211
	default y

endif
