GNU Linux-libre 4.9.318-gnu1
[releases.git] / drivers / usb / gadget / function / g_zero.h
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 */