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 80