# 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 RTL8192D_COMMON
	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 RTL8192DU
	tristate "Realtek RTL8192DU USB Wireless Network Adapter"
	depends on USB
	select RTLWIFI
	select RTLWIFI_USB
	select RTL8192D_COMMON
	help
	This is the driver for Realtek RTL8192DU 802.11n USB
	wireless network adapters.

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

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 RTL8192D_COMMON
	tristate

config RTL8723_COMMON
	tristate
	depends on RTL8723AE || RTL8723BE
	default y

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

endif
