1 /* 2 * This header declares the utility functions used by "Gadget Zero", plus 3 * interfaces to its two single-configuration function drivers. 4 */ 5 6 #ifndef __G_ZERO_H 7 #define __G_ZERO_H 8 9 #define GZERO_BULK_BUFLEN 4096 10 #define GZERO_QLEN 32 11 #define GZERO_ISOC_INTERVAL 4 12 #define GZERO_ISOC_MAXPACKET 1024 13 #define GZERO_SS_BULK_QLEN 1 14 #define GZERO_SS_ISO_QLEN 8 15 16 struct usb_zero_options { 17 unsigned pattern; 18 unsigned isoc_interval; 19 unsigned isoc_maxpacket; 20 unsigned isoc_mult; 21 unsigned isoc_maxburst; 22 unsigned bulk_buflen; 23 unsigned qlen; 24 unsigned ss_bulk_qlen; 25 unsigned ss_iso_qlen; 26 }; 27 28 struct f_ss_opts { 29 struct usb_function_instance func_inst; 30 unsigned pattern; 31 unsigned isoc_interval; 32 unsigned isoc_maxpacket; 33 unsigned isoc_mult; 34 unsigned isoc_maxburst; 35 unsigned bulk_buflen; 36 unsigned bulk_qlen; 37 unsigned iso_qlen; 38 39 /* 40 * Read/write access to configfs attributes is handled by configfs. 41 * 42 * This is to protect the data from concurrent access by read/write 43 * and create symlink/remove symlink. 44 */ 45 struct mutex lock; 46 int refcnt; 47 }; 48 49 struct f_lb_opts { 50 struct usb_function_instance func_inst; 51 unsigned bulk_buflen; 52 unsigned qlen; 53 54 /* 55 * Read/write access to configfs attributes is handled by configfs. 56 * 57 * This is to protect the data from concurrent access by read/write 58 * and create symlink/remove symlink. 59 */ 60 struct mutex lock; 61 int refcnt; 62 }; 63 64 void lb_modexit(void); 65 int lb_modinit(void); 66 67 /* common utilities */ 68 void disable_endpoints(struct usb_composite_dev *cdev, 69 struct usb_ep *in, struct usb_ep *out, 70 struct usb_ep *iso_in, struct usb_ep *iso_out); 71 72 #endif /* __G_ZERO_H */ 73