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