xref: /linux/drivers/net/wireless/realtek/rtw89/usb.h (revision 8f7aa3d3c7323f4ca2768a9e74ebbe359c4f8f88)
1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2 /* Copyright(c) 2025  Realtek Corporation
3  */
4 
5 #ifndef __RTW89_USB_H__
6 #define __RTW89_USB_H__
7 
8 #include "txrx.h"
9 
10 #define RTW89_USB_VENQT			0x05
11 #define RTW89_USB_VENQT_READ		0xc0
12 #define RTW89_USB_VENQT_WRITE		0x40
13 
14 #define RTW89_USB_RECVBUF_SZ		20480
15 #define RTW89_USB_RXCB_NUM		8
16 #define RTW89_USB_RX_SKB_NUM		16
17 #define RTW89_USB_MAX_RXQ_LEN		512
18 #define RTW89_USB_MOD512_PADDING	4
19 
20 #define RTW89_MAX_ENDPOINT_NUM		9
21 #define RTW89_MAX_BULKOUT_NUM		7
22 
23 struct rtw89_usb_info {
24 	u32 usb_host_request_2;
25 	u32 usb_wlan0_1;
26 	u32 hci_func_en;
27 	u32 usb3_mac_npi_config_intf_0;
28 	u32 usb_endpoint_0;
29 	u32 usb_endpoint_2;
30 	u8 bulkout_id[RTW89_DMA_CH_NUM];
31 };
32 
33 struct rtw89_usb_rx_ctrl_block {
34 	struct rtw89_dev *rtwdev;
35 	struct urb *rx_urb;
36 	struct sk_buff *rx_skb;
37 };
38 
39 struct rtw89_usb_tx_ctrl_block {
40 	struct rtw89_dev *rtwdev;
41 	u8 txch;
42 	struct sk_buff_head tx_ack_queue;
43 };
44 
45 struct rtw89_usb {
46 	struct rtw89_dev *rtwdev;
47 	struct usb_device *udev;
48 	const struct rtw89_usb_info *info;
49 
50 	__le32 *vendor_req_buf;
51 
52 	atomic_t continual_io_error;
53 
54 	u8 in_pipe;
55 	u8 out_pipe[RTW89_MAX_BULKOUT_NUM];
56 
57 	struct workqueue_struct *rxwq;
58 	struct rtw89_usb_rx_ctrl_block rx_cb[RTW89_USB_RXCB_NUM];
59 	struct sk_buff_head rx_queue;
60 	struct sk_buff_head rx_free_queue;
61 	struct work_struct rx_work;
62 	struct work_struct rx_urb_work;
63 	struct usb_anchor tx_submitted;
64 
65 	struct sk_buff_head tx_queue[RTW89_TXCH_NUM];
66 };
67 
68 static inline struct rtw89_usb *rtw89_usb_priv(struct rtw89_dev *rtwdev)
69 {
70 	return (struct rtw89_usb *)rtwdev->priv;
71 }
72 
73 int rtw89_usb_probe(struct usb_interface *intf,
74 		    const struct usb_device_id *id);
75 void rtw89_usb_disconnect(struct usb_interface *intf);
76 
77 #endif
78