root/drivers/staging/gdm724x/gdm_mux.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_MUX_H_
   5 #define _GDM_MUX_H_
   6 
   7 #include <linux/types.h>
   8 #include <linux/usb.h>
   9 #include <linux/list.h>
  10 
  11 #include "gdm_tty.h"
  12 
  13 #define PM_NORMAL 0
  14 #define PM_SUSPEND 1
  15 
  16 #define USB_RT_ACM          (USB_TYPE_CLASS | USB_RECIP_INTERFACE)
  17 
  18 #define START_FLAG 0xA512485A
  19 #define MUX_HEADER_SIZE 14
  20 #define MUX_TX_MAX_SIZE (1024 * 10)
  21 #define MUX_RX_MAX_SIZE (1024 * 30)
  22 #define AT_PKT_TYPE 0xF011
  23 #define DM_PKT_TYPE 0xF010
  24 
  25 #define RETRY_TIMER 30 /* msec */
  26 
  27 struct mux_pkt_header {
  28         __le32 start_flag;
  29         __le32 seq_num;
  30         __le32 payload_size;
  31         __le16 packet_type;
  32         unsigned char data[0];
  33 };
  34 
  35 struct mux_tx {
  36         struct urb *urb;
  37         u8 *buf;
  38         int  len;
  39         void (*callback)(void *cb_data);
  40         void *cb_data;
  41 };
  42 
  43 struct mux_rx {
  44         struct list_head free_list;
  45         struct list_head rx_submit_list;
  46         struct list_head to_host_list;
  47         struct urb *urb;
  48         u8 *buf;
  49         void *mux_dev;
  50         u32 offset;
  51         u32 len;
  52         int (*callback)(void *data,
  53                         int len,
  54                         int tty_index,
  55                         struct tty_dev *tty_dev,
  56                         int complete);
  57 };
  58 
  59 struct rx_cxt {
  60         struct list_head to_host_list;
  61         struct list_head rx_submit_list;
  62         struct list_head rx_free_list;
  63         spinlock_t to_host_lock;
  64         spinlock_t submit_list_lock;
  65         spinlock_t free_list_lock;
  66 };
  67 
  68 struct mux_dev {
  69         struct usb_device *usbdev;
  70         struct usb_interface *control_intf;
  71         struct usb_interface *data_intf;
  72         struct rx_cxt   rx;
  73         struct delayed_work work_rx;
  74         struct usb_interface *intf;
  75         int usb_state;
  76         int (*rx_cb)(void *data,
  77                      int len,
  78                      int tty_index,
  79                      struct tty_dev *tty_dev,
  80                      int complete);
  81         spinlock_t write_lock;
  82         struct tty_dev *tty_dev;
  83 };
  84 
  85 #endif /* _GDM_MUX_H_ */

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