Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
usb
gadget
u_serial.h
Go to the documentation of this file.
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 at least ACM could support tiocmget() if needed.
27
*
28
* REVISIT someday, allow multiplexing several TTYs over these endpoints.
29
*/
30
struct
gserial
{
31
struct
usb_function
func
;
32
33
/* port is managed by gserial_{connect,disconnect} */
34
struct
gs_port
*
ioport
;
35
36
struct
usb_ep
*
in
;
37
struct
usb_ep
*
out
;
38
39
/* REVISIT avoid this CDC-ACM support harder ... */
40
struct
usb_cdc_line_coding
port_line_coding
;
/* 9600-8-N-1 etc */
41
42
/* notification callbacks */
43
void
(*
connect
)(
struct
gserial
*
p
);
44
void
(*
disconnect
)(
struct
gserial
*
p
);
45
int
(*
send_break
)(
struct
gserial
*
p
,
int
duration
);
46
};
47
48
/* utilities to allocate/free request and buffer */
49
struct
usb_request
*
gs_alloc_req
(
struct
usb_ep
*ep,
unsigned
len,
gfp_t
flags
);
50
void
gs_free_req
(
struct
usb_ep
*,
struct
usb_request
*
req
);
51
52
/* port setup/teardown is handled by gadget driver */
53
int
gserial_setup
(
struct
usb_gadget
*g,
unsigned
n_ports);
54
void
gserial_cleanup
(
void
);
55
56
/* connect/disconnect is handled by individual functions */
57
int
gserial_connect
(
struct
gserial
*,
u8
port_num
);
58
void
gserial_disconnect
(
struct
gserial
*);
59
60
/* functions are bound to configurations by a config or gadget driver */
61
int
acm_bind_config
(
struct
usb_configuration
*
c
,
u8
port_num
);
62
int
gser_bind_config
(
struct
usb_configuration
*
c
,
u8
port_num
);
63
int
obex_bind_config
(
struct
usb_configuration
*
c
,
u8
port_num
);
64
65
#endif
/* __U_SERIAL_H */
Generated on Thu Jan 10 2013 14:26:17 for Linux Kernel by
1.8.2