diff options
Diffstat (limited to 'drivers/net/wireless/nxp/mxm_wifiex/wlan_src/mlinux/moal_usb.h')
-rw-r--r-- | drivers/net/wireless/nxp/mxm_wifiex/wlan_src/mlinux/moal_usb.h | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/drivers/net/wireless/nxp/mxm_wifiex/wlan_src/mlinux/moal_usb.h b/drivers/net/wireless/nxp/mxm_wifiex/wlan_src/mlinux/moal_usb.h new file mode 100644 index 000000000000..7c95c28be29c --- /dev/null +++ b/drivers/net/wireless/nxp/mxm_wifiex/wlan_src/mlinux/moal_usb.h @@ -0,0 +1,234 @@ +/** @file moal_usb.h + * + * @brief This file contains definitions for USB interface. + * driver. + * + * + * Copyright 2014-2020 NXP + * + * This software file (the File) is distributed by NXP + * under the terms of the GNU General Public License Version 2, June 1991 + * (the License). You may use, redistribute and/or modify the File in + * accordance with the terms and conditions of the License, a copy of which + * is available by writing to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the + * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. + * + * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE + * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE + * ARE EXPRESSLY DISCLAIMED. The License provides additional details about + * this warranty disclaimer. + * + */ +/************************************************************* +Change Log: + 10/21/2008: initial version +************************************************************/ + +#ifndef _MOAL_USB_H +#define _MOAL_USB_H + +#ifdef USB8997 +/** USB VID 1 */ +#define USB8997_VID_1 0x1286 +/** USB PID 1 */ +#define USB8997_PID_1 0x204D +/** USB PID 2 */ +#define USB8997_PID_2 0x204E +#define USB8997_PID_3 0x2047 +#define USB8997_PID_4 0x2048 +#define USB8997_PID_5 0x2050 +#define USB8997_PID_6 0x2051 +#define USB8997V2_PID_1 0x2052 +#endif /* USB8997 */ + +#ifdef USB8978 +/** USB VID 1 */ +#define USB8978_VID_1 0x1286 +/** USB PID 1 */ +#define USB8978_PID_1 0x2062 +/** USB PID 2 */ +#define USB8978_PID_2 0x2063 +/* BT downloaded combo firmware; register for WLAN enumeration */ +#define USB8978_PID_1_BT 0x2064 +#define USB8978_PID_2_BT 0x2065 +#endif + +#ifdef USB8897 +/** USB VID 1 */ +#define USB8897_VID_1 0x1286 +/** USB PID 1 */ +#define USB8897_PID_1 0x2045 +/** USB PID 2 */ +#define USB8897_PID_2 0x2046 +#endif /* USB8897 */ + +#ifdef USB9098 +/** USB VID 1 */ +#define USB9098_VID_1 0x1286 +/** USB PID 1 */ +#define USB9098_PID_1 0x2056 +/** USB PID 2 */ +#define USB9098_PID_2 0x2057 +#endif /* USB9098 */ + +#ifdef USB9097 +/** USB VID 1 */ +#define USB9097_VID_1 0x1286 +/** USB PID 1 */ +#define USB9097_PID_1 0x2060 +/** USB PID 2 */ +#define USB9097_PID_2 0x2061 +#endif /* USB9097 */ + +/** Boot state: FW download */ +#define USB_FW_DNLD 1 +/** Boot state: FW ready */ +#define USB_FW_READY 2 + +/** High watermark for Tx data */ +#define MVUSB_TX_HIGH_WMARK 12 + +/** Number of Rx data URB */ +#define MVUSB_RX_DATA_URB 6 + +#if defined(USB8997) || defined(USB9098) || defined(USB9097) || defined(USB8978) +/* Transmit buffer size for chip revision check */ +#define CHIP_REV_TX_BUF_SIZE 16 +/* Receive buffer size for chip revision check */ +#define CHIP_REV_RX_BUF_SIZE 2048 + +/* Extensions */ +#define EXTEND_HDR (0xAB950000) +#define EXTEND_V1 (0x00000001) +#define EXTEND_V2 (0x00000002) + +#endif + +/** Default firmaware name */ +#ifdef USB8997 +#define USB8997_DEFAULT_COMBO_FW_NAME "nxp/usbusb8997_combo_v4.bin" +#define USB8997_DEFAULT_WLAN_FW_NAME "nxp/usb8997_wlan_v4.bin" +#define USBUART8997_DEFAULT_COMBO_FW_NAME "nxp/usbuart8997_combo_v4.bin" +#define USBUSB8997_DEFAULT_COMBO_FW_NAME "nxp/usbusb8997_combo_v4.bin" + +#endif /* USB8997 */ + +#ifdef USB8978 +#define USB8978_DEFAULT_COMBO_FW_NAME "nxp/usbusb8978_combo.bin" +#define USB8978_DEFAULT_WLAN_FW_NAME "nxp/usb8978_wlan.bin" +#define USBUART8978_DEFAULT_COMBO_FW_NAME "nxp/usbuart8978_combo.bin" +#define USBUSB8978_DEFAULT_COMBO_FW_NAME "nxp/usbusb8978_combo.bin" +#endif /* USB8978 */ + +#ifdef USB8897 +#define USB8897_DEFAULT_COMBO_FW_NAME "nxp/usb8897_uapsta.bin" +#define USB8897_DEFAULT_WLAN_FW_NAME "nxp/usb8897_wlan.bin" +#endif /* USB8897 */ + +#ifdef USB9098 +#define USB9098_Z1Z2 0x00 +#define USB9098_A0 0x01 +#define USB9098_A1 0x02 +#define USB9098_A2 0x03 +#define USB9098_DEFAULT_COMBO_FW_NAME "nxp/usbusb9098_combo.bin" +#define USB9098_DEFAULT_WLAN_FW_NAME "nxp/usb9098_wlan.bin" +#define USBUART9098_DEFAULT_COMBO_FW_NAME "nxp/usbuart9098_combo.bin" +#define USBUSB9098_DEFAULT_COMBO_FW_NAME "nxp/usbusb9098_combo.bin" +#define USB9098_WLAN_V1_FW_NAME "nxp/usb9098_wlan_v1.bin" +#define USBUART9098_COMBO_V1_FW_NAME "nxp/usbuart9098_combo_v1.bin" +#define USBUSB9098_COMBO_V1_FW_NAME "nxp/usbusb9098_combo_v1.bin" +#endif /* USB9098 */ + +#ifdef USB9097 +#define USB9097_B0 0x01 +#define USB9097_B1 0x02 +#define USB9097_DEFAULT_COMBO_FW_NAME "nxp/usbusb9097_combo_v1.bin" +#define USB9097_DEFAULT_WLAN_FW_NAME "nxp/usb9097_wlan_v1.bin" +#define USB9097_WLAN_V1_FW_NAME "nxp/usb9097_wlan_v1.bin" +#define USBUART9097_COMBO_V1_FW_NAME "nxp/usbuart9097_combo_v1.bin" +#define USBUSB9097_COMBO_V1_FW_NAME "nxp/usbusb9097_combo_v1.bin" +#endif /* USB9097 */ + +/** urb context */ +typedef struct _urb_context { + /** Pointer to moal_handle structure */ + moal_handle *handle; + /** Pointer to mlan buffer */ + mlan_buffer *pmbuf; + /** URB */ + struct urb *urb; + /** EP */ + t_u8 ep; +} urb_context; + +/** USB card description structure*/ +struct usb_card_rec { + /** USB device */ + struct usb_device *udev; + /** MOAL handle */ + moal_handle *phandle; + /** USB interface */ + struct usb_interface *intf; + /** Rx command endpoint type */ + int rx_cmd_ep_type; + /** Rx command interval for INTR type */ + t_u8 rx_cmd_interval; + /** Rx data endpoint address */ + t_u8 rx_cmd_ep; + /** Rx cmd contxt */ + urb_context rx_cmd; + /** Rx command URB pending count */ + atomic_t rx_cmd_urb_pending; + /** Rx data context list */ + urb_context rx_data_list[MVUSB_RX_DATA_URB]; + /** Flag to indicate boot state */ + t_u8 boot_state; + /** Rx data endpoint address */ + t_u8 rx_data_ep; + /** Rx data URB pending count */ + atomic_t rx_data_urb_pending; + /** Tx data endpoint address */ + t_u8 tx_data_ep; + /** Tx command endpoint type */ + int tx_cmd_ep_type; + /** Tx command interval for INTR type */ + t_u8 tx_cmd_interval; + /** Tx command endpoint address */ + t_u8 tx_cmd_ep; + /** Tx data URB pending count */ + atomic_t tx_data_urb_pending; + /** Tx command URB pending count */ + atomic_t tx_cmd_urb_pending; + /** Tx data endpoint max pkt size */ + int tx_data_maxpktsize; + /** Tx cmd endpoint max pkt size */ + int tx_cmd_maxpktsize; + /** Pre-allocated urb for command */ + urb_context tx_cmd; + /** Index to point to next data urb to use */ + int tx_data_ix; + /** Pre-allocated urb for data */ + urb_context tx_data_list[MVUSB_TX_HIGH_WMARK]; + usb_aggr_ctrl tx_aggr_ctrl; + usb_aggr_ctrl rx_deaggr_ctrl; + t_u8 resubmit_urbs; + /** USB card type */ + t_u16 card_type; + t_u8 second_mac; +}; + +void woal_kill_urbs(moal_handle *handle); +void woal_resubmit_urbs(moal_handle *handle); + +mlan_status woal_write_data_async(moal_handle *handle, mlan_buffer *pmbuf, + t_u8 ep); +mlan_status woal_usb_submit_rx_data_urbs(moal_handle *handle); +mlan_status woal_usb_rx_init(moal_handle *handle); +mlan_status woal_usb_tx_init(moal_handle *handle); +mlan_status woal_usb_aggr_init(moal_handle *handle); +void woal_submit_rx_urb(moal_handle *handle, t_u8 ep); +void woal_usb_bus_unregister(void); +mlan_status woal_usb_bus_register(void); +void woal_usb_free(struct usb_card_rec *cardp); +#endif /*_MOAL_USB_H */ |