Merge branch 'core-objtool-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-block.git] / drivers / staging / gdm724x / gdm_mux.h
CommitLineData
1146ee4a 1/* SPDX-License-Identifier: GPL-2.0 */
ad9bd58c 2/* Copyright (c) 2012 GCT Semiconductor, Inc. All rights reserved. */
61e12104
WK
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
bf0373f1
WK
11#include "gdm_tty.h"
12
61e12104
WK
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
601e59fa 20#define MUX_TX_MAX_SIZE (1024 * 10)
21#define MUX_RX_MAX_SIZE (1024 * 30)
61e12104
WK
22#define AT_PKT_TYPE 0xF011
23#define DM_PKT_TYPE 0xF010
24
25#define RETRY_TIMER 30 /* msec */
26
27struct mux_pkt_header {
48131a6b
EA
28 __le32 start_flag;
29 __le32 seq_num;
30 __le32 payload_size;
31 __le16 packet_type;
5979afa2 32 unsigned char data[];
61e12104
WK
33};
34
35struct mux_tx {
36 struct urb *urb;
37 u8 *buf;
38 int len;
39 void (*callback)(void *cb_data);
40 void *cb_data;
41};
42
43struct 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;
bf0373f1
WK
52 int (*callback)(void *data,
53 int len,
54 int tty_index,
55 struct tty_dev *tty_dev,
aee9440d 56 int complete);
61e12104
WK
57};
58
59struct 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
68struct 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;
bf0373f1
WK
76 int (*rx_cb)(void *data,
77 int len,
78 int tty_index,
79 struct tty_dev *tty_dev,
aee9440d 80 int complete);
61e12104 81 spinlock_t write_lock;
bf0373f1 82 struct tty_dev *tty_dev;
61e12104
WK
83};
84
85#endif /* _GDM_MUX_H_ */