xref: /linux/drivers/usb/gadget/function/g_zero.h (revision 23b0f90ba871f096474e1c27c3d14f455189d2d9)
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_maxburst;
38 	unsigned bulk_qlen;
39 	unsigned iso_qlen;
40 
41 	/*
42 	 * Read/write access to configfs attributes is handled by configfs.
43 	 *
44 	 * This is to protect the data from concurrent access by read/write
45 	 * and create symlink/remove symlink.
46 	 */
47 	struct mutex			lock;
48 	int				refcnt;
49 };
50 
51 struct f_lb_opts {
52 	struct usb_function_instance func_inst;
53 	unsigned bulk_buflen;
54 	unsigned qlen;
55 
56 	/*
57 	 * Read/write access to configfs attributes is handled by configfs.
58 	 *
59 	 * This is to protect the data from concurrent access by read/write
60 	 * and create symlink/remove symlink.
61 	 */
62 	struct mutex			lock;
63 	int				refcnt;
64 };
65 
66 void lb_modexit(void);
67 int lb_modinit(void);
68 
69 /* common utilities */
70 void disable_endpoints(struct usb_composite_dev *cdev,
71 		struct usb_ep *in, struct usb_ep *out,
72 		struct usb_ep *iso_in, struct usb_ep *iso_out);
73 
74 #endif /* __G_ZERO_H */
75