blob: 98b8462ad5381486d88aa89d92e44ad76a8c9fc6 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
David Brownella400cad2008-06-19 17:55:23 -07002/*
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
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +010010#define GZERO_BULK_BUFLEN 4096
11#define GZERO_QLEN 32
Andrzej Pietrasiewicz25d80152013-11-07 08:41:28 +010012#define GZERO_ISOC_INTERVAL 4
13#define GZERO_ISOC_MAXPACKET 1024
Peter Chen0d6c3d92015-11-19 15:02:16 +080014#define GZERO_SS_BULK_QLEN 1
15#define GZERO_SS_ISO_QLEN 8
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +010016
Sebastian Andrzej Siewiorcf9a08a2012-12-23 21:10:01 +010017struct 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;
Peter Chen0d6c3d92015-11-19 15:02:16 +080025 unsigned ss_bulk_qlen;
26 unsigned ss_iso_qlen;
Sebastian Andrzej Siewiorcf9a08a2012-12-23 21:10:01 +010027};
David Brownella400cad2008-06-19 17:55:23 -070028
Sebastian Andrzej Siewiorcf9a08a2012-12-23 21:10:01 +010029struct 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;
Peter Chen0d6c3d92015-11-19 15:02:16 +080037 unsigned bulk_qlen;
38 unsigned iso_qlen;
Andrzej Pietrasiewicz25d80152013-11-07 08:41:28 +010039
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;
Sebastian Andrzej Siewiorcf9a08a2012-12-23 21:10:01 +010048};
49
50struct f_lb_opts {
51 struct usb_function_instance func_inst;
52 unsigned bulk_buflen;
53 unsigned qlen;
Andrzej Pietrasiewiczc0501f42013-11-07 08:41:27 +010054
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;
Sebastian Andrzej Siewiorcf9a08a2012-12-23 21:10:01 +010063};
64
65void lb_modexit(void);
66int lb_modinit(void);
David Brownella400cad2008-06-19 17:55:23 -070067
68/* common utilities */
David Brownella400cad2008-06-19 17:55:23 -070069void disable_endpoints(struct usb_composite_dev *cdev,
Paul Zimmermanb4036cc2012-04-16 14:19:06 -070070 struct usb_ep *in, struct usb_ep *out,
Felipe Balbi2c247802015-03-11 10:00:05 -050071 struct usb_ep *iso_in, struct usb_ep *iso_out);
David Brownella400cad2008-06-19 17:55:23 -070072
David Brownella400cad2008-06-19 17:55:23 -070073#endif /* __G_ZERO_H */