at v3.18 79 lines 1.8 kB view raw
1#ifndef _INTERFACE_ADAPTER_H 2#define _INTERFACE_ADAPTER_H 3 4struct 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 11struct 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 20struct 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 28struct 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 36struct bcm_usb_tcb { 37 struct urb *urb; 38 void *psIntfAdapter; 39 bool bUsed; 40}; 41 42struct 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 */ 52struct 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