06a6b18bca4881680624ebe9495eb9bf33e1b0fc
[linux-2.6-microblaze.git] / drivers / staging / bcm / InterfaceAdapter.h
1 #ifndef _INTERFACE_ADAPTER_H
2 #define _INTERFACE_ADAPTER_H
3
4 struct bcm_bulk_endpoint_in {
5         char    *bulk_in_buffer;
6         size_t  bulk_in_size;
7         unsigned char   bulk_in_endpointAddr;
8         unsigned int    bulk_in_pipe;
9 };
10
11 struct bcm_bulk_endpoint_out {
12         unsigned char   bulk_out_buffer;
13         size_t  bulk_out_size;
14         unsigned char   bulk_out_endpointAddr;
15         unsigned int    bulk_out_pipe;
16         /* this is used when int out endpoint is used as bulk out end point */
17         unsigned char   int_out_interval;
18 };
19
20 struct bcm_intr_endpoint_in {
21         char    *int_in_buffer;
22         size_t  int_in_size;
23         unsigned char   int_in_endpointAddr;
24         unsigned char   int_in_interval;
25         unsigned int    int_in_pipe;
26 };
27
28 struct bcm_intr_endpoint_out {
29         char    *int_out_buffer;
30         size_t  int_out_size;
31         unsigned char   int_out_endpointAddr;
32         unsigned char   int_out_interval;
33         unsigned int    int_out_pipe;
34 };
35
36 struct bcm_usb_tcb {
37         struct urb *urb;
38         void *psIntfAdapter;
39         bool bUsed;
40 };
41
42 struct bcm_usb_rcb {
43         struct urb *urb;
44         void *psIntfAdapter;
45         bool bUsed;
46 };
47
48 /*
49  * This is the interface specific Sub-Adapter
50  * Structure.
51  */
52 struct bcm_interface_adapter {
53         struct usb_device *udev;
54         struct usb_interface *interface;
55         /* Bulk endpoint in info */
56         struct bcm_bulk_endpoint_in     sBulkIn;
57         /* Bulk endpoint out info */
58         struct bcm_bulk_endpoint_out    sBulkOut;
59         /* Interrupt endpoint in info */
60         struct bcm_intr_endpoint_in     sIntrIn;
61         /* Interrupt endpoint out info */
62         struct bcm_intr_endpoint_out    sIntrOut;
63         unsigned long           ulInterruptData[2];
64         struct urb *psInterruptUrb;
65         struct bcm_usb_tcb      asUsbTcb[MAXIMUM_USB_TCB];
66         struct bcm_usb_rcb      asUsbRcb[MAXIMUM_USB_RCB];
67         atomic_t        uNumTcbUsed;
68         atomic_t        uCurrTcb;
69         atomic_t        uNumRcbUsed;
70         atomic_t        uCurrRcb;
71         struct bcm_mini_adapter *psAdapter;
72         bool            bFlashBoot;
73         bool            bHighSpeedDevice;
74         bool            bSuspended;
75         bool            bPreparingForBusSuspend;
76         struct work_struct usbSuspendWork;
77 };
78
79 #endif