]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/staging/gdm72xx/gdm_usb.h
Merge tag 'for-3.7-rc1' of git://gitorious.org/linux-pwm/linux-pwm
[karo-tx-linux.git] / 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 __GDM_USB_H__
15 #define __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
32         struct urb              *urb;
33         u8                      *buf;
34
35         void (*callback)(void *cb_data);
36         void *cb_data;
37 };
38
39 struct tx_cxt {
40         struct list_head        free_list;
41         struct list_head        sdu_list;
42         struct list_head        hci_list;
43 #if defined(CONFIG_WIMAX_GDM72XX_USB_PM) || defined(CONFIG_WIMAX_GDM72XX_K_MODE)
44         struct list_head        pending_list;
45 #endif
46
47         spinlock_t              lock;
48 };
49
50 struct usb_rx {
51         struct list_head        list;
52         struct rx_cxt           *rx_cxt;
53
54         struct urb              *urb;
55         u8                      *buf;
56
57         void (*callback)(void *cb_data, void *data, int len);
58         void *cb_data;
59 };
60
61 struct rx_cxt {
62         struct list_head        free_list;
63         struct list_head        used_list;
64         spinlock_t              lock;
65 };
66
67 struct usbwm_dev {
68         struct usb_device       *usbdev;
69 #ifdef CONFIG_WIMAX_GDM72XX_USB_PM
70         struct work_struct      pm_ws;
71
72         struct usb_interface    *intf;
73 #endif
74 #ifdef CONFIG_WIMAX_GDM72XX_K_MODE
75         int bw_switch;
76         struct list_head        list;
77 #endif
78
79         struct tx_cxt           tx;
80         struct rx_cxt           rx;
81
82         int padding;
83 };
84
85 #endif /* __GDM_USB_H__ */