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 
14 struct usb_zero_options {
15 	unsigned pattern;
16 	unsigned isoc_interval;
17 	unsigned isoc_maxpacket;
18 	unsigned isoc_mult;
19 	unsigned isoc_maxburst;
20 	unsigned bulk_buflen;
21 	unsigned qlen;
22 };
23 
24 struct f_ss_opts {
25 	struct usb_function_instance func_inst;
26 	unsigned pattern;
27 	unsigned isoc_interval;
28 	unsigned isoc_maxpacket;
29 	unsigned isoc_mult;
30 	unsigned isoc_maxburst;
31 	unsigned bulk_buflen;
32 
33 	/*
34 	 * Read/write access to configfs attributes is handled by configfs.
35 	 *
36 	 * This is to protect the data from concurrent access by read/write
37 	 * and create symlink/remove symlink.
38 	 */
39 	struct mutex			lock;
40 	int				refcnt;
41 };
42 
43 struct f_lb_opts {
44 	struct usb_function_instance func_inst;
45 	unsigned bulk_buflen;
46 	unsigned qlen;
47 
48 	/*
49 	 * Read/write access to configfs attributes is handled by configfs.
50 	 *
51 	 * This is to protect the data from concurrent access by read/write
52 	 * and create symlink/remove symlink.
53 	 */
54 	struct mutex			lock;
55 	int				refcnt;
56 };
57 
58 void lb_modexit(void);
59 int lb_modinit(void);
60 
61 /* common utilities */
62 void free_ep_req(struct usb_ep *ep, struct usb_request *req);
63 void disable_endpoints(struct usb_composite_dev *cdev,
64 		struct usb_ep *in, struct usb_ep *out,
65 		struct usb_ep *iso_in, struct usb_ep *iso_out);
66 
67 #endif /* __G_ZERO_H */
68