xref: /linux/drivers/net/wireless/realtek/rtw89/rtw8922au.c (revision 91ec2035134982b98fab0609a9fd8480e8217dc1)
16bb58cd6SBitterblue Smith // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
26bb58cd6SBitterblue Smith /* Copyright(c) 2026  Realtek Corporation
36bb58cd6SBitterblue Smith  */
46bb58cd6SBitterblue Smith 
56bb58cd6SBitterblue Smith #include <linux/module.h>
66bb58cd6SBitterblue Smith #include <linux/usb.h>
76bb58cd6SBitterblue Smith #include "rtw8922a.h"
86bb58cd6SBitterblue Smith #include "usb.h"
96bb58cd6SBitterblue Smith 
106bb58cd6SBitterblue Smith static const struct rtw89_usb_info rtw8922a_usb_info = {
116bb58cd6SBitterblue Smith 	.usb_host_request_2		= 0,
126bb58cd6SBitterblue Smith 	.usb_wlan0_1			= 0,
136bb58cd6SBitterblue Smith 	.hci_func_en			= 0,
146bb58cd6SBitterblue Smith 	.usb3_mac_npi_config_intf_0	= 0,
156bb58cd6SBitterblue Smith 	.usb_endpoint_0			= 0,
166bb58cd6SBitterblue Smith 	.usb_endpoint_2			= 0,
176bb58cd6SBitterblue Smith 	.rx_agg_alignment		= 16,
186bb58cd6SBitterblue Smith 	.bulkout_id = {
196bb58cd6SBitterblue Smith 		[RTW89_DMA_ACH0] = 3,
206bb58cd6SBitterblue Smith 		[RTW89_DMA_ACH2] = 5,
216bb58cd6SBitterblue Smith 		[RTW89_DMA_ACH4] = 4,
226bb58cd6SBitterblue Smith 		[RTW89_DMA_ACH6] = 6,
236bb58cd6SBitterblue Smith 		[RTW89_DMA_B0MG] = 0,
246bb58cd6SBitterblue Smith 		[RTW89_DMA_B0HI] = 0,
256bb58cd6SBitterblue Smith 		[RTW89_DMA_B1MG] = 1,
266bb58cd6SBitterblue Smith 		[RTW89_DMA_B1HI] = 1,
276bb58cd6SBitterblue Smith 		[RTW89_DMA_H2C] = 2,
286bb58cd6SBitterblue Smith 	},
296bb58cd6SBitterblue Smith };
306bb58cd6SBitterblue Smith 
316bb58cd6SBitterblue Smith static const struct rtw89_driver_info rtw89_8922au_info = {
326bb58cd6SBitterblue Smith 	.chip = &rtw8922a_chip_info,
336bb58cd6SBitterblue Smith 	.variant = NULL,
34*721d90c8SJohnson Tsai 	.board = NULL,
356bb58cd6SBitterblue Smith 	.quirks = NULL,
367554f660SJohnson Tsai 	.dev_id_quirks = 0,
376bb58cd6SBitterblue Smith 	.bus = {
386bb58cd6SBitterblue Smith 		.usb = &rtw8922a_usb_info,
396bb58cd6SBitterblue Smith 	},
406bb58cd6SBitterblue Smith };
416bb58cd6SBitterblue Smith 
426bb58cd6SBitterblue Smith static const struct usb_device_id rtw_8922au_id_table[] = {
436bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x0411, 0x03ef, 0xff, 0xff, 0xff),
446bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
456bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x0502, 0x76d7, 0xff, 0xff, 0xff),
466bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
476bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x056e, 0x4025, 0xff, 0xff, 0xff),
486bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
496bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x056e, 0x4026, 0xff, 0xff, 0xff),
506bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
516bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x1bcf, 0xff, 0xff, 0xff),
526bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
536bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x1bd2, 0xff, 0xff, 0xff),
546bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
556bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x0bda, 0x8912, 0xff, 0xff, 0xff),
566bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
576bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x0db0, 0xda0e, 0xff, 0xff, 0xff),
586bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
596bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x332b, 0xff, 0xff, 0xff),
606bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
616bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x3625, 0x010a, 0xff, 0xff, 0xff),
626bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
636bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x37ad, 0x0100, 0xff, 0xff, 0xff),
646bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
656bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x37ad, 0x0101, 0xff, 0xff, 0xff),
666bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
676bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0x3822, 0xff, 0xff, 0xff),
686bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
696bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0x4822, 0xff, 0xff, 0xff),
706bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
716bb58cd6SBitterblue Smith 	{ USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0x5822, 0xff, 0xff, 0xff),
726bb58cd6SBitterblue Smith 	  .driver_info = (kernel_ulong_t)&rtw89_8922au_info },
736bb58cd6SBitterblue Smith 	{},
746bb58cd6SBitterblue Smith };
756bb58cd6SBitterblue Smith MODULE_DEVICE_TABLE(usb, rtw_8922au_id_table);
766bb58cd6SBitterblue Smith 
776bb58cd6SBitterblue Smith static struct usb_driver rtw_8922au_driver = {
786bb58cd6SBitterblue Smith 	.name = KBUILD_MODNAME,
796bb58cd6SBitterblue Smith 	.id_table = rtw_8922au_id_table,
806bb58cd6SBitterblue Smith 	.probe = rtw89_usb_probe,
816bb58cd6SBitterblue Smith 	.disconnect = rtw89_usb_disconnect,
826bb58cd6SBitterblue Smith };
836bb58cd6SBitterblue Smith module_usb_driver(rtw_8922au_driver);
846bb58cd6SBitterblue Smith 
856bb58cd6SBitterblue Smith MODULE_AUTHOR("Bitterblue Smith <rtl8821cerfe2@gmail.com>");
866bb58cd6SBitterblue Smith MODULE_DESCRIPTION("Realtek 802.11be wireless 8922AU driver");
876bb58cd6SBitterblue Smith MODULE_LICENSE("Dual BSD/GPL");
88