xref: /freebsd/sys/contrib/dev/rtw88/rtw8821cu.c (revision 11c53278a8a3e86e14377f09bbaa7bad193d3713)
190aac0d8SBjoern A. Zeeb // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
290aac0d8SBjoern A. Zeeb /* Copyright(c) 2018-2019  Realtek Corporation
390aac0d8SBjoern A. Zeeb  */
490aac0d8SBjoern A. Zeeb 
590aac0d8SBjoern A. Zeeb #include <linux/module.h>
690aac0d8SBjoern A. Zeeb #include <linux/usb.h>
790aac0d8SBjoern A. Zeeb #include "main.h"
890aac0d8SBjoern A. Zeeb #include "rtw8821c.h"
990aac0d8SBjoern A. Zeeb #include "usb.h"
1090aac0d8SBjoern A. Zeeb 
1190aac0d8SBjoern A. Zeeb static const struct usb_device_id rtw_8821cu_id_table[] = {
1290aac0d8SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0x2006, 0xff, 0xff, 0xff),
13*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
14*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0x8731, 0xff, 0xff, 0xff),
15*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
16*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0x8811, 0xff, 0xff, 0xff),
17*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
18*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0xb820, 0xff, 0xff, 0xff),
19*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
20*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0xb82b, 0xff, 0xff, 0xff),
21*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
22*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0xc80c, 0xff, 0xff, 0xff),
23*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
24*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0xc811, 0xff, 0xff, 0xff),
25*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
26*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0xc820, 0xff, 0xff, 0xff),
27*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
28*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0xc821, 0xff, 0xff, 0xff),
29*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
30*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0xc82a, 0xff, 0xff, 0xff),
31*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
32*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0xc82b, 0xff, 0xff, 0xff),
33*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
34*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(RTW_USB_VENDOR_ID_REALTEK, 0xc82c, 0xff, 0xff, 0xff),
35*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) },
36*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x331d, 0xff, 0xff, 0xff),
37*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) }, /* D-Link */
38*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0xc811, 0xff, 0xff, 0xff),
39*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) }, /* Edimax */
40*11c53278SBjoern A. Zeeb 	{ USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0xd811, 0xff, 0xff, 0xff),
41*11c53278SBjoern A. Zeeb 	  .driver_info = (kernel_ulong_t)&(rtw8821c_hw_spec) }, /* Edimax */
4290aac0d8SBjoern A. Zeeb 	{},
4390aac0d8SBjoern A. Zeeb };
4490aac0d8SBjoern A. Zeeb MODULE_DEVICE_TABLE(usb, rtw_8821cu_id_table);
4590aac0d8SBjoern A. Zeeb 
4690aac0d8SBjoern A. Zeeb static int rtw_8821cu_probe(struct usb_interface *intf,
4790aac0d8SBjoern A. Zeeb 			    const struct usb_device_id *id)
4890aac0d8SBjoern A. Zeeb {
4990aac0d8SBjoern A. Zeeb 	return rtw_usb_probe(intf, id);
5090aac0d8SBjoern A. Zeeb }
5190aac0d8SBjoern A. Zeeb 
5290aac0d8SBjoern A. Zeeb static struct usb_driver rtw_8821cu_driver = {
5390aac0d8SBjoern A. Zeeb 	.name = "rtw_8821cu",
5490aac0d8SBjoern A. Zeeb 	.id_table = rtw_8821cu_id_table,
5590aac0d8SBjoern A. Zeeb 	.probe = rtw_8821cu_probe,
5690aac0d8SBjoern A. Zeeb 	.disconnect = rtw_usb_disconnect,
5790aac0d8SBjoern A. Zeeb #if defined(__FreeBSD__) && defined(__notyet__)
5890aac0d8SBjoern A. Zeeb 	.bsddriver.name = KBUILD_MODNAME,
5990aac0d8SBjoern A. Zeeb #endif
6090aac0d8SBjoern A. Zeeb };
6190aac0d8SBjoern A. Zeeb module_usb_driver(rtw_8821cu_driver);
6290aac0d8SBjoern A. Zeeb 
6390aac0d8SBjoern A. Zeeb MODULE_AUTHOR("Hans Ulli Kroll <linux@ulli-kroll.de>");
6490aac0d8SBjoern A. Zeeb MODULE_DESCRIPTION("Realtek 802.11ac wireless 8821cu driver");
6590aac0d8SBjoern A. Zeeb MODULE_LICENSE("Dual BSD/GPL");
66