/* * This header declares the utility functions used by "Gadget Zero", plus * interfaces to its two single-configuration function drivers. */ #ifndef __G_ZERO_H #define __G_ZERO_H #define GZERO_BULK_BUFLEN 4096 #define GZERO_QLEN 32 #define GZERO_ISOC_INTERVAL 4 #define GZERO_ISOC_MAXPACKET 1024 #define GZERO_INT_INTERVAL 1 /* Default interrupt interval = 1 ms */ #define GZERO_INT_MAXPACKET 1024 struct usb_zero_options { unsigned pattern; unsigned isoc_interval; unsigned isoc_maxpacket; unsigned isoc_mult; unsigned isoc_maxburst; unsigned int_interval; /* In ms */ unsigned int_maxpacket; unsigned int_mult; unsigned int_maxburst; unsigned bulk_buflen; unsigned qlen; }; struct f_ss_opts { struct usb_function_instance func_inst; unsigned pattern; unsigned isoc_interval; unsigned isoc_maxpacket; unsigned isoc_mult; unsigned isoc_maxburst; unsigned int_interval; /* In ms */ unsigned int_maxpacket; unsigned int_mult; unsigned int_maxburst; unsigned bulk_buflen; /* * Read/write access to configfs attributes is handled by configfs. * * This is to protect the data from concurrent access by read/write * and create symlink/remove symlink. */ struct mutex lock; int refcnt; }; struct f_lb_opts { struct usb_function_instance func_inst; unsigned bulk_buflen; unsigned qlen; /* * Read/write access to configfs attributes is handled by configfs. * * This is to protect the data from concurrent access by read/write * and create symlink/remove symlink. */ struct mutex lock; int refcnt; }; void lb_modexit(void); int lb_modinit(void); /* common utilities */ void free_ep_req(struct usb_ep *ep, struct usb_request *req); void disable_endpoints(struct usb_composite_dev *cdev, struct usb_ep *in, struct usb_ep *out, struct usb_ep *iso_in, struct usb_ep *iso_out, struct usb_ep *int_in, struct usb_ep *int_out); #endif /* __G_ZERO_H */