# SPDX-License-Identifier: GPL-2.0-only
menuconfig RTL_CARDS
	tristate "Realtek rtlwifi family of devices"
	depends on MAC80211 && (PCI || USB)
	default y
	help
	  This option will enable support for the Realtek mac80211-based
	  wireless drivers. Drivers rtl8192ce, rtl8192cu, rtl8192se, rtl8192de,
	  rtl8723ae, rtl8723be, rtl8188ee, rtl8192ee, and rtl8821ae share
	  some common code.

if RTL_CARDS

config RTL8192CE
	tristate "Realtek RTL8192CE/RTL8188CE Wireless Network Adapter"
	depends on PCI
	select RTL8192C_COMMON
	select RTLWIFI
	select RTLWIFI_PCI
	help
	This is the driver for Realtek RTL8192CE/RTL8188CE 802.11n PCIe
	wireless network adapters.

	If you choose to build it as a module, it will be called rtl8192ce

config RTL8192SE
	tristate "Realtek RTL8192SE/RTL8191SE PCIe Wireless Network Adapter"
	depends on PCI
	select RTLWIFI
	select RTLWIFI_PCI
	help
	This is the driver for Realtek RTL8192SE/RTL8191SE 802.11n PCIe
	wireless network adapters.

	If you choose to build it as a module, it will be called rtl8192se

config RTL8192DE
	tristate "Realtek RTL8192DE/RTL8188DE PCIe Wireless Network Adapter"
	depends on PCI
	select RTLWIFI
	select RTLWIFI_PCI
	help
	This is the driver for Realtek RTL8192DE/RTL8188DE 802.11n PCIe
	wireless network adapters.

	If you choose to build it as a module, it will be called rtl8192de

config RTL8723AE
	tristate "Realtek RTL8723AE PCIe Wireless Network Adapter"
	depends on PCI
	select RTLWIFI
	select RTLWIFI_PCI
	select RTL8723_COMMON
	select RTLBTCOEXIST
	help
	This is the driver for Realtek RTL8723AE 802.11n PCIe
	wireless network adapters.

	If you choose to build it as a module, it will be called rtl8723ae

config RTL8723BE
	tristate "Realtek RTL8723BE PCIe Wireless Network Adapter"
	depends on PCI
	select RTLWIFI
	select RTLWIFI_PCI
	select RTL8723_COMMON
	select RTLBTCOEXIST
	help
	This is the driver for Realtek RTL8723BE 802.11n PCIe
	wireless network adapters.

	If you choose to build it as a module, it will be called rtl8723be

config RTL8188EE
	tristate "Realtek RTL8188EE Wireless Network Adapter"
	depends on PCI
	select RTLWIFI
	select RTLWIFI_PCI
	help
	This is the driver for Realtek RTL8188EE 802.11n PCIe
	wireless network adapters.

	If you choose to build it as a module, it will be called rtl8188ee

config RTL8192EE
	tristate "Realtek RTL8192EE Wireless Network Adapter"
	depends on PCI
	select RTLWIFI
	select RTLWIFI_PCI
	select RTLBTCOEXIST
	help
	This is the driver for Realtek RTL8192EE 802.11n PCIe
	wireless network adapters.

	If you choose to build it as a module, it will be called rtl8192ee

config RTL8821AE
	tristate "Realtek RTL8821AE/RTL8812AE Wireless Network Adapter"
	depends on PCI
	select RTLWIFI
	select RTLWIFI_PCI
	select RTLBTCOEXIST
	help
	This is the driver for Realtek RTL8821AE/RTL8812AE 802.11ac PCIe
	wireless network adapters.

	If you choose to build it as a module, it will be called rtl8821ae

config RTL8192CU
	tristate "Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter"
	depends on USB
	select RTLWIFI
	select RTLWIFI_USB
	select RTL8192C_COMMON
	help
	This is the driver for Realtek RTL8192CU/RTL8188CU 802.11n USB
	wireless network adapters.

	If you choose to build it as a module, it will be called rtl8192cu

config RTLWIFI
	tristate
	select FW_LOADER

config RTLWIFI_PCI
	tristate

config RTLWIFI_USB
	tristate

config RTLWIFI_DEBUG
	bool "Debugging output for rtlwifi driver family"
	depends on RTLWIFI
	default y
	help
	To use the module option that sets the dynamic-debugging level for,
	the front-end driver, this parameter must be "Y". For memory-limited
	systems, choose "N". If in doubt, choose "Y".

config RTL8192C_COMMON
	tristate
	depends on RTL8192CE || RTL8192CU
	default y

config RTL8723_COMMON
	tristate
	depends on RTL8723AE || RTL8723BE
	default y

config RTLBTCOEXIST
	tristate
	depends on RTL8723AE || RTL8723BE || RTL8821AE || RTL8192EE
	default y

endif
