1178825Sdfr/* SPDX-License-Identifier: GPL-2.0-only */ 2233294Sstas/* 3233294Sstas * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl> 4233294Sstas */ 5178825Sdfr 6233294Sstas#ifndef __MT7601U_USB_H 7233294Sstas#define __MT7601U_USB_H 8233294Sstas 9178825Sdfr#include "mt7601u.h" 10233294Sstas 11233294Sstas#define MT7601U_FIRMWARE "mt7601u.bin" 12178825Sdfr 13233294Sstas#define MT_VEND_REQ_MAX_RETRY 10 14233294Sstas#define MT_VEND_REQ_TOUT_MS 300 15233294Sstas 16178825Sdfr#define MT_VEND_DEV_MODE_RESET 1 17233294Sstas 18233294Sstas#define MT_VEND_BUF sizeof(__le32) 19233294Sstas 20178825Sdfrenum mt_vendor_req { 21233294Sstas MT_VEND_DEV_MODE = 1, 22233294Sstas MT_VEND_WRITE = 2, 23233294Sstas MT_VEND_MULTI_READ = 7, 24233294Sstas MT_VEND_WRITE_FCE = 0x42, 25233294Sstas}; 26233294Sstas 27233294Sstasenum mt_usb_ep_in { 28233294Sstas MT_EP_IN_PKT_RX, 29233294Sstas MT_EP_IN_CMD_RESP, 30233294Sstas __MT_EP_IN_MAX, 31233294Sstas}; 32178825Sdfr 33178825Sdfrenum mt_usb_ep_out { 34178825Sdfr MT_EP_OUT_INBAND_CMD, 35178825Sdfr MT_EP_OUT_AC_BK, 36178825Sdfr MT_EP_OUT_AC_BE, 37178825Sdfr MT_EP_OUT_AC_VI, 38178825Sdfr MT_EP_OUT_AC_VO, 39178825Sdfr MT_EP_OUT_HCCA, 40178825Sdfr __MT_EP_OUT_MAX, 41178825Sdfr}; 42178825Sdfr 43178825Sdfrstatic inline struct usb_device *mt7601u_to_usb_dev(struct mt7601u_dev *mt7601u) 44178825Sdfr{ 45178825Sdfr return interface_to_usbdev(to_usb_interface(mt7601u->dev)); 46178825Sdfr} 47178825Sdfr 48178825Sdfrstatic inline bool mt7601u_urb_has_error(struct urb *urb) 49178825Sdfr{ 50178825Sdfr return urb->status && 51178825Sdfr urb->status != -ENOENT && 52178825Sdfr urb->status != -ECONNRESET && 53178825Sdfr urb->status != -ESHUTDOWN; 54178825Sdfr} 55178825Sdfr 56178825Sdfrbool mt7601u_usb_alloc_buf(struct mt7601u_dev *dev, size_t len, 57178825Sdfr struct mt7601u_dma_buf *buf); 58178825Sdfrvoid mt7601u_usb_free_buf(struct mt7601u_dev *dev, struct mt7601u_dma_buf *buf); 59178825Sdfrint mt7601u_usb_submit_buf(struct mt7601u_dev *dev, int dir, int ep_idx, 60178825Sdfr struct mt7601u_dma_buf *buf, gfp_t gfp, 61178825Sdfr usb_complete_t complete_fn, void *context); 62178825Sdfrvoid mt7601u_complete_urb(struct urb *urb); 63178825Sdfr 64178825Sdfrint mt7601u_vendor_request(struct mt7601u_dev *dev, const u8 req, 65178825Sdfr const u8 direction, const u16 val, const u16 offset, 66178825Sdfr void *buf, const size_t buflen); 67233294Sstasvoid mt7601u_vendor_reset(struct mt7601u_dev *dev); 68178825Sdfrint mt7601u_vendor_single_wr(struct mt7601u_dev *dev, const u8 req, 69178825Sdfr const u16 offset, const u32 val); 70178825Sdfr 71178825Sdfr#endif 72178825Sdfr