usb.h (1759B)
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl> 4 */ 5 6#ifndef __MT7601U_USB_H 7#define __MT7601U_USB_H 8 9#include "mt7601u.h" 10 11#define MT7601U_FIRMWARE "mt7601u.bin" 12 13#define MT_VEND_REQ_MAX_RETRY 10 14#define MT_VEND_REQ_TOUT_MS 300 15 16#define MT_VEND_DEV_MODE_RESET 1 17 18#define MT_VEND_BUF sizeof(__le32) 19 20enum mt_vendor_req { 21 MT_VEND_DEV_MODE = 1, 22 MT_VEND_WRITE = 2, 23 MT_VEND_MULTI_READ = 7, 24 MT_VEND_WRITE_FCE = 0x42, 25}; 26 27enum mt_usb_ep_in { 28 MT_EP_IN_PKT_RX, 29 MT_EP_IN_CMD_RESP, 30 __MT_EP_IN_MAX, 31}; 32 33enum mt_usb_ep_out { 34 MT_EP_OUT_INBAND_CMD, 35 MT_EP_OUT_AC_BK, 36 MT_EP_OUT_AC_BE, 37 MT_EP_OUT_AC_VI, 38 MT_EP_OUT_AC_VO, 39 MT_EP_OUT_HCCA, 40 __MT_EP_OUT_MAX, 41}; 42 43static inline struct usb_device *mt7601u_to_usb_dev(struct mt7601u_dev *mt7601u) 44{ 45 return interface_to_usbdev(to_usb_interface(mt7601u->dev)); 46} 47 48static inline bool mt7601u_urb_has_error(struct urb *urb) 49{ 50 return urb->status && 51 urb->status != -ENOENT && 52 urb->status != -ECONNRESET && 53 urb->status != -ESHUTDOWN; 54} 55 56bool mt7601u_usb_alloc_buf(struct mt7601u_dev *dev, size_t len, 57 struct mt7601u_dma_buf *buf); 58void mt7601u_usb_free_buf(struct mt7601u_dev *dev, struct mt7601u_dma_buf *buf); 59int mt7601u_usb_submit_buf(struct mt7601u_dev *dev, int dir, int ep_idx, 60 struct mt7601u_dma_buf *buf, gfp_t gfp, 61 usb_complete_t complete_fn, void *context); 62void mt7601u_complete_urb(struct urb *urb); 63 64int mt7601u_vendor_request(struct mt7601u_dev *dev, const u8 req, 65 const u8 direction, const u16 val, const u16 offset, 66 void *buf, const size_t buflen); 67void mt7601u_vendor_reset(struct mt7601u_dev *dev); 68int mt7601u_vendor_single_wr(struct mt7601u_dev *dev, const u8 req, 69 const u16 offset, const u32 val); 70 71#endif