blob: 15f180904f8a3980e2845c38bf327e5174b8df30 [file] [log] [blame]
David Brownella400cad2008-06-19 17:55:23 -07001/*
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
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +01009#define GZERO_BULK_BUFLEN 4096
10#define GZERO_QLEN 32
Andrzej Pietrasiewicz25d80152013-11-07 08:41:28 +010011#define GZERO_ISOC_INTERVAL 4
12#define GZERO_ISOC_MAXPACKET 1024
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +010013
Sebastian Andrzej Siewiorcf9a08a2012-12-23 21:10:01 +010014struct 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};
David Brownella400cad2008-06-19 17:55:23 -070023
Sebastian Andrzej Siewiorcf9a08a2012-12-23 21:10:01 +010024struct 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;
Andrzej Pietrasiewicz25d80152013-11-07 08:41:28 +010032
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;
Sebastian Andrzej Siewiorcf9a08a2012-12-23 21:10:01 +010041};
42
43struct f_lb_opts {
44 struct usb_function_instance func_inst;
45 unsigned bulk_buflen;
46 unsigned qlen;
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +010047
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;
Sebastian Andrzej Siewiorcf9a08a2012-12-23 21:10:01 +010056};
57
58void lb_modexit(void);
59int lb_modinit(void);
David Brownella400cad2008-06-19 17:55:23 -070060
61/* common utilities */
David Brownella400cad2008-06-19 17:55:23 -070062void free_ep_req(struct usb_ep *ep, struct usb_request *req);
63void disable_endpoints(struct usb_composite_dev *cdev,
Paul Zimmermanb4036cc2012-04-16 14:19:06 -070064 struct usb_ep *in, struct usb_ep *out,
65 struct usb_ep *iso_in, struct usb_ep *iso_out);
David Brownella400cad2008-06-19 17:55:23 -070066
David Brownella400cad2008-06-19 17:55:23 -070067#endif /* __G_ZERO_H */