root/drivers/staging/gdm724x/gdm_usb.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /* Copyright (c) 2012 GCT Semiconductor, Inc. All rights reserved. */
   3 
   4 #ifndef _GDM_USB_H_
   5 #define _GDM_USB_H_
   6 
   7 #include <linux/types.h>
   8 #include <linux/usb.h>
   9 #include <linux/list.h>
  10 #include <linux/time.h>
  11 
  12 #include "gdm_endian.h"
  13 #include "hci_packet.h"
  14 
  15 #define PM_NORMAL 0
  16 #define PM_SUSPEND 1
  17 #define AUTO_SUSPEND_TIMER 5000 /* ms */
  18 
  19 #define RX_BUF_SIZE             (1024 * 32)
  20 #define TX_BUF_SIZE             (1024 * 32)
  21 #define SDU_BUF_SIZE    2048
  22 #define MAX_SDU_SIZE    (1024 * 30)
  23 #define MAX_PACKET_IN_MULTI_SDU 256
  24 
  25 #define VID_GCT                 0x1076
  26 #define PID_GDM7240             0x8000
  27 #define PID_GDM7243             0x9000
  28 
  29 #define NETWORK_INTERFACE 1
  30 #define USB_SC_SCSI 0x06
  31 #define USB_PR_BULK 0x50
  32 
  33 #define MAX_NUM_SDU_BUF 64
  34 
  35 struct usb_tx {
  36         struct list_head list;
  37         struct urb *urb;
  38         u8 *buf;
  39         u32 len;
  40         void (*callback)(void *cb_data);
  41         void *cb_data;
  42         struct tx_cxt *tx;
  43         u8 is_sdu;
  44 };
  45 
  46 struct usb_tx_sdu {
  47         struct list_head list;
  48         u8 *buf;
  49         u32 len;
  50         void (*callback)(void *cb_data);
  51         void *cb_data;
  52 };
  53 
  54 struct usb_rx {
  55         struct list_head to_host_list;
  56         struct list_head free_list;
  57         struct list_head rx_submit_list;
  58         struct rx_cxt   *rx;
  59         struct urb *urb;
  60         u8 *buf;
  61         int (*callback)(void *cb_data, void *data, int len, int context);
  62         void *cb_data;
  63         void *index;
  64 };
  65 
  66 struct tx_cxt {
  67         struct list_head sdu_list;
  68         struct list_head hci_list;
  69         struct list_head free_list;
  70         u32 avail_count;
  71         spinlock_t lock;
  72 };
  73 
  74 struct rx_cxt {
  75         struct list_head to_host_list;
  76         struct list_head rx_submit_list;
  77         struct list_head free_list;
  78         u32     avail_count;
  79         spinlock_t to_host_lock;
  80         spinlock_t rx_lock;
  81         spinlock_t submit_lock;
  82 };
  83 
  84 struct lte_udev {
  85         struct usb_device *usbdev;
  86         struct tx_cxt tx;
  87         struct rx_cxt rx;
  88         struct delayed_work work_tx;
  89         struct delayed_work work_rx;
  90         u8 gdm_ed;
  91         u8 send_complete;
  92         u8 tx_stop;
  93         struct usb_interface *intf;
  94         int (*rx_cb)(void *cb_data, void *data, int len, int context);
  95         int usb_state;
  96         u8 request_mac_addr;
  97 };
  98 
  99 #endif /* _GDM_USB_H_ */

/* [<][>][^][v][top][bottom][index][help] */