diff options
Diffstat (limited to 'drivers/usb/gadget/u_serial.h')
-rw-r--r-- | drivers/usb/gadget/u_serial.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/drivers/usb/gadget/u_serial.h b/drivers/usb/gadget/u_serial.h new file mode 100644 index 000000000000..7b561138f90e --- /dev/null +++ b/drivers/usb/gadget/u_serial.h | |||
@@ -0,0 +1,58 @@ | |||
1 | /* | ||
2 | * u_serial.h - interface to USB gadget "serial port"/TTY utilities | ||
3 | * | ||
4 | * Copyright (C) 2008 David Brownell | ||
5 | * Copyright (C) 2008 by Nokia Corporation | ||
6 | * | ||
7 | * This software is distributed under the terms of the GNU General | ||
8 | * Public License ("GPL") as published by the Free Software Foundation, | ||
9 | * either version 2 of that License or (at your option) any later version. | ||
10 | */ | ||
11 | |||
12 | #ifndef __U_SERIAL_H | ||
13 | #define __U_SERIAL_H | ||
14 | |||
15 | #include <linux/usb/composite.h> | ||
16 | #include <linux/usb/cdc.h> | ||
17 | |||
18 | /* | ||
19 | * One non-multiplexed "serial" I/O port ... there can be several of these | ||
20 | * on any given USB peripheral device, if it provides enough endpoints. | ||
21 | * | ||
22 | * The "u_serial" utility component exists to do one thing: manage TTY | ||
23 | * style I/O using the USB peripheral endpoints listed here, including | ||
24 | * hookups to sysfs and /dev for each logical "tty" device. | ||
25 | * | ||
26 | * REVISIT need TTY --> USB event flow too, so ACM can report open/close | ||
27 | * as carrier detect events. Model after ECM. There's more ACM state too. | ||
28 | * | ||
29 | * REVISIT someday, allow multiplexing several TTYs over these endpoints. | ||
30 | */ | ||
31 | struct gserial { | ||
32 | struct usb_function func; | ||
33 | |||
34 | /* port is managed by gserial_{connect,disconnect} */ | ||
35 | struct gs_port *ioport; | ||
36 | |||
37 | struct usb_ep *in; | ||
38 | struct usb_ep *out; | ||
39 | struct usb_endpoint_descriptor *in_desc; | ||
40 | struct usb_endpoint_descriptor *out_desc; | ||
41 | |||
42 | /* REVISIT avoid this CDC-ACM support harder ... */ | ||
43 | struct usb_cdc_line_coding port_line_coding; /* 9600-8-N-1 etc */ | ||
44 | }; | ||
45 | |||
46 | /* port setup/teardown is handled by gadget driver */ | ||
47 | int gserial_setup(struct usb_gadget *g, unsigned n_ports); | ||
48 | void gserial_cleanup(void); | ||
49 | |||
50 | /* connect/disconnect is handled by individual functions */ | ||
51 | int gserial_connect(struct gserial *, u8 port_num); | ||
52 | void gserial_disconnect(struct gserial *); | ||
53 | |||
54 | /* functions are bound to configurations by a config or gadget driver */ | ||
55 | int acm_bind_config(struct usb_configuration *c, u8 port_num); | ||
56 | int gser_bind_config(struct usb_configuration *c, u8 port_num); | ||
57 | |||
58 | #endif /* __U_SERIAL_H */ | ||