Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / staging / gdm72xx / gdm_usb.h
1 /*
2  * Copyright (c) 2012 GCT Semiconductor, Inc. All rights reserved.
3  *
4  * This software is licensed under the terms of the GNU General Public
5  * License version 2, as published by the Free Software Foundation, and
6  * may be copied, distributed, and modified under those terms.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  */
13
14 #ifndef __GDM72XX_GDM_USB_H__
15 #define __GDM72XX_GDM_USB_H__
16
17 #include <linux/types.h>
18 #include <linux/usb.h>
19 #include <linux/list.h>
20
21 #define B_DIFF_DL_DRV           (1 << 4)
22 #define B_DOWNLOAD              (1 << 5)
23 #define MAX_NR_SDU_BUF          64
24
25 struct usb_tx {
26         struct list_head        list;
27 #if defined(CONFIG_WIMAX_GDM72XX_USB_PM) || defined(CONFIG_WIMAX_GDM72XX_K_MODE)
28         struct list_head        p_list;
29 #endif
30         struct tx_cxt           *tx_cxt;
31         struct urb              *urb;
32         u8                      *buf;
33         void (*callback)(void *cb_data);
34         void                    *cb_data;
35 };
36
37 struct tx_cxt {
38         struct list_head        free_list;
39         struct list_head        sdu_list;
40         struct list_head        hci_list;
41 #if defined(CONFIG_WIMAX_GDM72XX_USB_PM) || defined(CONFIG_WIMAX_GDM72XX_K_MODE)
42         struct list_head        pending_list;
43 #endif
44         spinlock_t              lock;
45 };
46
47 struct usb_rx {
48         struct list_head        list;
49         struct rx_cxt           *rx_cxt;
50         struct urb              *urb;
51         u8                      *buf;
52         void (*callback)(void *cb_data, void *data, int len);
53         void *cb_data;
54 };
55
56 struct rx_cxt {
57         struct list_head        free_list;
58         struct list_head        used_list;
59         spinlock_t              lock;
60 };
61
62 struct usbwm_dev {
63         struct usb_device       *usbdev;
64 #ifdef CONFIG_WIMAX_GDM72XX_USB_PM
65         struct work_struct      pm_ws;
66
67         struct usb_interface    *intf;
68 #endif
69 #ifdef CONFIG_WIMAX_GDM72XX_K_MODE
70         int bw_switch;
71         struct list_head        list;
72 #endif
73         struct tx_cxt           tx;
74         struct rx_cxt           rx;
75         int                     padding;
76 };
77
78 #endif /* __GDM72XX_GDM_USB_H__ */