Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6
[pandora-kernel.git] / drivers / staging / bcm / InterfaceAdapter.h
1 #ifndef _INTERFACE_ADAPTER_H
2 #define _INTERFACE_ADAPTER_H
3
4 typedef struct _BULK_ENDP_IN
5 {
6     PCHAR                   bulk_in_buffer;
7     size_t          bulk_in_size;
8     UCHAR                       bulk_in_endpointAddr;
9     UINT bulk_in_pipe;
10 }BULK_ENDP_IN, *PBULK_ENDP_IN;
11
12
13 typedef struct _BULK_ENDP_OUT
14 {
15     UCHAR                       bulk_out_buffer;
16     size_t          bulk_out_size;
17     UCHAR                       bulk_out_endpointAddr;
18     UINT bulk_out_pipe;
19     //this is used when int out endpoint is used as bulk out end point
20         UCHAR                   int_out_interval;
21 }BULK_ENDP_OUT, *PBULK_ENDP_OUT;
22
23 typedef struct _INTR_ENDP_IN
24 {
25     PCHAR                   int_in_buffer;
26     size_t          int_in_size;
27     UCHAR                       int_in_endpointAddr;
28     UCHAR                       int_in_interval;
29     UINT int_in_pipe;
30 }INTR_ENDP_IN, *PINTR_ENDP_IN;
31
32 typedef struct _INTR_ENDP_OUT
33 {
34     PCHAR                   int_out_buffer;
35     size_t          int_out_size;
36     UCHAR                       int_out_endpointAddr;
37     UCHAR                       int_out_interval;
38     UINT int_out_pipe;
39 }INTR_ENDP_OUT, *PINTR_ENDP_OUT;
40
41
42 typedef struct _USB_TCB
43 {
44         struct urb *urb;
45         PVOID psIntfAdapter;
46         BOOLEAN bUsed;
47 }USB_TCB, *PUSB_TCB;
48
49
50 typedef struct _USB_RCB
51 {
52         struct urb *urb;
53         PVOID psIntfAdapter;
54         BOOLEAN bUsed;
55 }USB_RCB, *PUSB_RCB;
56
57 /*
58 //This is the interface specific Sub-Adapter
59 //Structure.
60 */
61 typedef struct _S_INTERFACE_ADAPTER
62 {
63     struct usb_device * udev;
64     struct usb_interface *  interface;
65
66         /* Bulk endpoint in info */
67         BULK_ENDP_IN    sBulkIn;
68         /* Bulk endpoint out info */
69         BULK_ENDP_OUT   sBulkOut;
70         /* Interrupt endpoint in info */
71         INTR_ENDP_IN    sIntrIn;
72         /* Interrupt endpoint out info */
73         INTR_ENDP_OUT   sIntrOut;
74
75
76
77         ULONG ulInterruptData[2];
78
79         struct urb *psInterruptUrb;
80
81         USB_TCB                 asUsbTcb[MAXIMUM_USB_TCB];
82         USB_RCB                 asUsbRcb[MAXIMUM_USB_RCB];
83         atomic_t                uNumTcbUsed;
84         atomic_t                uCurrTcb;
85         atomic_t                uNumRcbUsed;
86         atomic_t                uCurrRcb;
87
88         PMINI_ADAPTER   psAdapter;
89         BOOLEAN                 bFlashBoot;
90         BOOLEAN                 bHighSpeedDevice ;
91
92         BOOLEAN                 bSuspended;
93         BOOLEAN                 bPreparingForBusSuspend;
94         struct work_struct usbSuspendWork;
95 }S_INTERFACE_ADAPTER,*PS_INTERFACE_ADAPTER;
96
97 #endif