brintos

brintos / linux-shallow public Read only

0
0
Text · 2.8 KiB · 7e920b5 Raw
129 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * This file contains definitions for mwifiex USB interface driver.4 *5 * Copyright 2011-2020 NXP6 */7 8#ifndef _MWIFIEX_USB_H9#define _MWIFIEX_USB_H10 11#include <linux/completion.h>12#include <linux/usb.h>13 14#define USB8XXX_VID		0x128615 16#define USB8766_PID_1		0x204117#define USB8766_PID_2		0x204218#define USB8797_PID_1		0x204319#define USB8797_PID_2		0x204420#define USB8801_PID_1		0x204921#define USB8801_PID_2		0x204a22#define USB8997_PID_1		0x205223#define USB8997_PID_2		0x204e24 25 26#define USB8XXX_FW_DNLD		127#define USB8XXX_FW_READY	228#define USB8XXX_FW_MAX_RETRY	329 30#define MWIFIEX_TX_DATA_PORT	231#define MWIFIEX_TX_DATA_URB	632#define MWIFIEX_RX_DATA_URB	633#define MWIFIEX_USB_TIMEOUT	10034 35#define USB8766_DEFAULT_FW_NAME	"mrvl/usb8766_uapsta.bin"36#define USB8797_DEFAULT_FW_NAME	"mrvl/usb8797_uapsta.bin"37#define USB8801_DEFAULT_FW_NAME	"mrvl/usb8801_uapsta.bin"38#define USB8997_DEFAULT_FW_NAME	"mrvl/usbusb8997_combo_v4.bin"39 40#define FW_DNLD_TX_BUF_SIZE	62041#define FW_DNLD_RX_BUF_SIZE	204842#define FW_HAS_LAST_BLOCK	0x0000000443#define FW_CMD_7		0x0000000744 45#define FW_DATA_XMIT_SIZE \46	(sizeof(struct fw_header) + dlen + sizeof(u32))47 48struct urb_context {49	struct mwifiex_adapter *adapter;50	struct sk_buff *skb;51	struct urb *urb;52	u8 ep;53};54 55#define MWIFIEX_USB_TX_AGGR_TMO_MIN	156#define MWIFIEX_USB_TX_AGGR_TMO_MAX	457 58struct tx_aggr_tmr_cnxt {59	struct mwifiex_adapter *adapter;60	struct usb_tx_data_port *port;61	struct timer_list hold_timer;62	bool is_hold_timer_set;63	u32 hold_tmo_msecs;64};65 66struct usb_tx_aggr {67	struct sk_buff_head aggr_list;68	int aggr_len;69	int aggr_num;70	struct tx_aggr_tmr_cnxt timer_cnxt;71};72 73struct usb_tx_data_port {74	u8 tx_data_ep;75	u8 block_status;76	atomic_t tx_data_urb_pending;77	int tx_data_ix;78	struct urb_context tx_data_list[MWIFIEX_TX_DATA_URB];79	/* usb tx aggregation*/80	struct usb_tx_aggr tx_aggr;81	struct sk_buff *skb_aggr[MWIFIEX_TX_DATA_URB];82	/* lock for protect tx aggregation data path*/83	spinlock_t tx_aggr_lock;84};85 86struct usb_card_rec {87	struct mwifiex_adapter *adapter;88	struct usb_device *udev;89	struct usb_interface *intf;90	struct completion fw_done;91	u8 rx_cmd_ep;92	struct urb_context rx_cmd;93	atomic_t rx_cmd_urb_pending;94	struct urb_context rx_data_list[MWIFIEX_RX_DATA_URB];95	u8 usb_boot_state;96	u8 rx_data_ep;97	atomic_t rx_data_urb_pending;98	u8 tx_cmd_ep;99	atomic_t tx_cmd_urb_pending;100	int bulk_out_maxpktsize;101	struct urb_context tx_cmd;102	u8 mc_resync_flag;103	struct usb_tx_data_port port[MWIFIEX_TX_DATA_PORT];104	int rx_cmd_ep_type;105	u8 rx_cmd_interval;106	int tx_cmd_ep_type;107	u8 tx_cmd_interval;108};109 110struct fw_header {111	__le32 dnld_cmd;112	__le32 base_addr;113	__le32 data_len;114	__le32 crc;115};116 117struct fw_sync_header {118	__le32 cmd;119	__le32 seq_num;120} __packed;121 122struct fw_data {123	struct fw_header fw_hdr;124	__le32 seq_num;125	u8 data[];126} __packed;127 128#endif /*_MWIFIEX_USB_H */129