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