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_rx_ctrl_block { 24 struct rtw89_dev *rtwdev; 25 struct urb *rx_urb; 26 struct sk_buff *rx_skb; 27 }; 28 29 struct rtw89_usb_tx_ctrl_block { 30 struct rtw89_dev *rtwdev; 31 u8 txch; 32 struct sk_buff_head tx_ack_queue; 33 }; 34 35 struct rtw89_usb { 36 struct rtw89_dev *rtwdev; 37 struct usb_device *udev; 38 39 __le32 *vendor_req_buf; 40 41 atomic_t continual_io_error; 42 43 u8 in_pipe; 44 u8 out_pipe[RTW89_MAX_BULKOUT_NUM]; 45 46 struct workqueue_struct *rxwq; 47 struct rtw89_usb_rx_ctrl_block rx_cb[RTW89_USB_RXCB_NUM]; 48 struct sk_buff_head rx_queue; 49 struct sk_buff_head rx_free_queue; 50 struct work_struct rx_work; 51 struct work_struct rx_urb_work; 52 53 struct sk_buff_head tx_queue[RTW89_TXCH_NUM]; 54 }; 55 rtw89_usb_priv(struct rtw89_dev * rtwdev)56static inline struct rtw89_usb *rtw89_usb_priv(struct rtw89_dev *rtwdev) 57 { 58 return (struct rtw89_usb *)rtwdev->priv; 59 } 60 61 int rtw89_usb_probe(struct usb_interface *intf, 62 const struct usb_device_id *id); 63 void rtw89_usb_disconnect(struct usb_interface *intf); 64 65 #endif 66