rsi_usb.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * @section LICENSE
  3. * Copyright (c) 2014 Redpine Signals Inc.
  4. *
  5. * Permission to use, copy, modify, and/or distribute this software for any
  6. * purpose with or without fee is hereby granted, provided that the above
  7. * copyright notice and this permission notice appear in all copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  10. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  11. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  12. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  13. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  14. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  15. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  16. */
  17. #ifndef __RSI_USB_INTF__
  18. #define __RSI_USB_INTF__
  19. #include <linux/usb.h>
  20. #include "rsi_main.h"
  21. #include "rsi_common.h"
  22. #define RSI_USB_VENDOR_ID 0x1618
  23. #define RSI_USB_PID_9113 0x9113
  24. #define RSI_USB_PID_9116 0x9116
  25. #define USB_INTERNAL_REG_1 0x25000
  26. #define RSI_USB_READY_MAGIC_NUM 0xab
  27. #define FW_STATUS_REG 0x41050012
  28. #define RSI_TA_HOLD_REG 0x22000844
  29. #define RSI_FW_WDT_DISABLE_REQ 0x69
  30. #define USB_VENDOR_REGISTER_READ 0x15
  31. #define USB_VENDOR_REGISTER_WRITE 0x16
  32. #define RSI_USB_TX_HEAD_ROOM 128
  33. #define MAX_RX_URBS 2
  34. #define MAX_BULK_EP 8
  35. #define WLAN_EP 1
  36. #define BT_EP 2
  37. #define RSI_USB_BUF_SIZE 4096
  38. #define RSI_USB_CTRL_BUF_SIZE 0x04
  39. #define RSI_MAX_RX_USB_PKT_SIZE 3000
  40. struct rx_usb_ctrl_block {
  41. u8 *data;
  42. struct urb *rx_urb;
  43. struct sk_buff *rx_skb;
  44. u8 ep_num;
  45. };
  46. struct rsi_91x_usbdev {
  47. void *priv;
  48. struct rsi_thread rx_thread;
  49. u8 endpoint;
  50. struct usb_device *usbdev;
  51. struct usb_interface *pfunction;
  52. struct rx_usb_ctrl_block rx_cb[MAX_RX_URBS];
  53. u8 *tx_buffer;
  54. __le16 bulkin_size[MAX_BULK_EP];
  55. u8 bulkin_endpoint_addr[MAX_BULK_EP];
  56. __le16 bulkout_size[MAX_BULK_EP];
  57. u8 bulkout_endpoint_addr[MAX_BULK_EP];
  58. u32 tx_blk_size;
  59. u8 write_fail;
  60. struct sk_buff_head rx_q;
  61. };
  62. static inline int rsi_usb_check_queue_status(struct rsi_hw *adapter, u8 q_num)
  63. {
  64. /* In USB, there isn't any need to check the queue status */
  65. return QUEUE_NOT_FULL;
  66. }
  67. static inline int rsi_usb_event_timeout(struct rsi_hw *adapter)
  68. {
  69. return EVENT_WAIT_FOREVER;
  70. }
  71. void rsi_usb_rx_thread(struct rsi_common *common);
  72. #endif