This source file includes following definitions.
- usb_get_serial_port_data
- usb_set_serial_port_data
- usb_get_serial_data
- usb_set_serial_data
- usb_serial_console_init
- usb_serial_console_exit
- usb_serial_console_disconnect
- usb_serial_debug_data
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #ifndef __LINUX_USB_SERIAL_H
15 #define __LINUX_USB_SERIAL_H
16
17 #include <linux/kref.h>
18 #include <linux/mutex.h>
19 #include <linux/serial.h>
20 #include <linux/sysrq.h>
21 #include <linux/kfifo.h>
22
23
24 #define MAX_NUM_PORTS 16
25
26
27 #define USB_SERIAL_WRITE_BUSY 0
28 #define USB_SERIAL_THROTTLED 1
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 struct usb_serial_port {
74 struct usb_serial *serial;
75 struct tty_port port;
76 spinlock_t lock;
77 u32 minor;
78 u8 port_number;
79
80 unsigned char *interrupt_in_buffer;
81 struct urb *interrupt_in_urb;
82 __u8 interrupt_in_endpointAddress;
83
84 unsigned char *interrupt_out_buffer;
85 int interrupt_out_size;
86 struct urb *interrupt_out_urb;
87 __u8 interrupt_out_endpointAddress;
88
89 unsigned char *bulk_in_buffer;
90 int bulk_in_size;
91 struct urb *read_urb;
92 __u8 bulk_in_endpointAddress;
93
94 unsigned char *bulk_in_buffers[2];
95 struct urb *read_urbs[2];
96 unsigned long read_urbs_free;
97
98 unsigned char *bulk_out_buffer;
99 int bulk_out_size;
100 struct urb *write_urb;
101 struct kfifo write_fifo;
102
103 unsigned char *bulk_out_buffers[2];
104 struct urb *write_urbs[2];
105 unsigned long write_urbs_free;
106 __u8 bulk_out_endpointAddress;
107
108 struct async_icount icount;
109 int tx_bytes;
110
111 unsigned long flags;
112 wait_queue_head_t write_wait;
113 struct work_struct work;
114 unsigned long sysrq;
115 struct device dev;
116 };
117 #define to_usb_serial_port(d) container_of(d, struct usb_serial_port, dev)
118
119
120 static inline void *usb_get_serial_port_data(struct usb_serial_port *port)
121 {
122 return dev_get_drvdata(&port->dev);
123 }
124
125 static inline void usb_set_serial_port_data(struct usb_serial_port *port,
126 void *data)
127 {
128 dev_set_drvdata(&port->dev, data);
129 }
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147 struct usb_serial {
148 struct usb_device *dev;
149 struct usb_serial_driver *type;
150 struct usb_interface *interface;
151 unsigned char disconnected:1;
152 unsigned char suspending:1;
153 unsigned char attached:1;
154 unsigned char minors_reserved:1;
155 unsigned char num_ports;
156 unsigned char num_port_pointers;
157 unsigned char num_interrupt_in;
158 unsigned char num_interrupt_out;
159 unsigned char num_bulk_in;
160 unsigned char num_bulk_out;
161 struct usb_serial_port *port[MAX_NUM_PORTS];
162 struct kref kref;
163 struct mutex disc_mutex;
164 void *private;
165 };
166 #define to_usb_serial(d) container_of(d, struct usb_serial, kref)
167
168
169 static inline void *usb_get_serial_data(struct usb_serial *serial)
170 {
171 return serial->private;
172 }
173
174 static inline void usb_set_serial_data(struct usb_serial *serial, void *data)
175 {
176 serial->private = data;
177 }
178
179 struct usb_serial_endpoints {
180 unsigned char num_bulk_in;
181 unsigned char num_bulk_out;
182 unsigned char num_interrupt_in;
183 unsigned char num_interrupt_out;
184 struct usb_endpoint_descriptor *bulk_in[MAX_NUM_PORTS];
185 struct usb_endpoint_descriptor *bulk_out[MAX_NUM_PORTS];
186 struct usb_endpoint_descriptor *interrupt_in[MAX_NUM_PORTS];
187 struct usb_endpoint_descriptor *interrupt_out[MAX_NUM_PORTS];
188 };
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238 struct usb_serial_driver {
239 const char *description;
240 const struct usb_device_id *id_table;
241
242 struct list_head driver_list;
243 struct device_driver driver;
244 struct usb_driver *usb_driver;
245 struct usb_dynids dynids;
246
247 unsigned char num_ports;
248
249 unsigned char num_bulk_in;
250 unsigned char num_bulk_out;
251 unsigned char num_interrupt_in;
252 unsigned char num_interrupt_out;
253
254 size_t bulk_in_size;
255 size_t bulk_out_size;
256
257 int (*probe)(struct usb_serial *serial, const struct usb_device_id *id);
258 int (*attach)(struct usb_serial *serial);
259 int (*calc_num_ports)(struct usb_serial *serial,
260 struct usb_serial_endpoints *epds);
261
262 void (*disconnect)(struct usb_serial *serial);
263 void (*release)(struct usb_serial *serial);
264
265 int (*port_probe)(struct usb_serial_port *port);
266 int (*port_remove)(struct usb_serial_port *port);
267
268 int (*suspend)(struct usb_serial *serial, pm_message_t message);
269 int (*resume)(struct usb_serial *serial);
270 int (*reset_resume)(struct usb_serial *serial);
271
272
273
274 int (*open)(struct tty_struct *tty, struct usb_serial_port *port);
275 void (*close)(struct usb_serial_port *port);
276 int (*write)(struct tty_struct *tty, struct usb_serial_port *port,
277 const unsigned char *buf, int count);
278
279 int (*write_room)(struct tty_struct *tty);
280 int (*ioctl)(struct tty_struct *tty,
281 unsigned int cmd, unsigned long arg);
282 int (*get_serial)(struct tty_struct *tty, struct serial_struct *ss);
283 int (*set_serial)(struct tty_struct *tty, struct serial_struct *ss);
284 void (*set_termios)(struct tty_struct *tty,
285 struct usb_serial_port *port, struct ktermios *old);
286 void (*break_ctl)(struct tty_struct *tty, int break_state);
287 int (*chars_in_buffer)(struct tty_struct *tty);
288 void (*wait_until_sent)(struct tty_struct *tty, long timeout);
289 bool (*tx_empty)(struct usb_serial_port *port);
290 void (*throttle)(struct tty_struct *tty);
291 void (*unthrottle)(struct tty_struct *tty);
292 int (*tiocmget)(struct tty_struct *tty);
293 int (*tiocmset)(struct tty_struct *tty,
294 unsigned int set, unsigned int clear);
295 int (*tiocmiwait)(struct tty_struct *tty, unsigned long arg);
296 int (*get_icount)(struct tty_struct *tty,
297 struct serial_icounter_struct *icount);
298
299
300 void (*dtr_rts)(struct usb_serial_port *port, int on);
301 int (*carrier_raised)(struct usb_serial_port *port);
302
303
304 void (*init_termios)(struct tty_struct *tty);
305
306 void (*read_int_callback)(struct urb *urb);
307 void (*write_int_callback)(struct urb *urb);
308 void (*read_bulk_callback)(struct urb *urb);
309 void (*write_bulk_callback)(struct urb *urb);
310
311 void (*process_read_urb)(struct urb *urb);
312
313 int (*prepare_write_buffer)(struct usb_serial_port *port,
314 void *dest, size_t size);
315 };
316 #define to_usb_serial_driver(d) \
317 container_of(d, struct usb_serial_driver, driver)
318
319 extern int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[],
320 const char *name, const struct usb_device_id *id_table);
321 extern void usb_serial_deregister_drivers(struct usb_serial_driver *const serial_drivers[]);
322 extern void usb_serial_port_softint(struct usb_serial_port *port);
323
324 extern int usb_serial_suspend(struct usb_interface *intf, pm_message_t message);
325 extern int usb_serial_resume(struct usb_interface *intf);
326
327
328 #ifdef CONFIG_USB_SERIAL_CONSOLE
329 extern void usb_serial_console_init(int minor);
330 extern void usb_serial_console_exit(void);
331 extern void usb_serial_console_disconnect(struct usb_serial *serial);
332 #else
333 static inline void usb_serial_console_init(int minor) { }
334 static inline void usb_serial_console_exit(void) { }
335 static inline void usb_serial_console_disconnect(struct usb_serial *serial) {}
336 #endif
337
338
339 extern struct usb_serial_port *usb_serial_port_get_by_minor(unsigned int minor);
340 extern void usb_serial_put(struct usb_serial *serial);
341 extern int usb_serial_generic_open(struct tty_struct *tty,
342 struct usb_serial_port *port);
343 extern int usb_serial_generic_write_start(struct usb_serial_port *port,
344 gfp_t mem_flags);
345 extern int usb_serial_generic_write(struct tty_struct *tty,
346 struct usb_serial_port *port, const unsigned char *buf, int count);
347 extern void usb_serial_generic_close(struct usb_serial_port *port);
348 extern int usb_serial_generic_resume(struct usb_serial *serial);
349 extern int usb_serial_generic_write_room(struct tty_struct *tty);
350 extern int usb_serial_generic_chars_in_buffer(struct tty_struct *tty);
351 extern void usb_serial_generic_wait_until_sent(struct tty_struct *tty,
352 long timeout);
353 extern void usb_serial_generic_read_bulk_callback(struct urb *urb);
354 extern void usb_serial_generic_write_bulk_callback(struct urb *urb);
355 extern void usb_serial_generic_throttle(struct tty_struct *tty);
356 extern void usb_serial_generic_unthrottle(struct tty_struct *tty);
357 extern int usb_serial_generic_tiocmiwait(struct tty_struct *tty,
358 unsigned long arg);
359 extern int usb_serial_generic_get_icount(struct tty_struct *tty,
360 struct serial_icounter_struct *icount);
361 extern int usb_serial_generic_register(void);
362 extern void usb_serial_generic_deregister(void);
363 extern int usb_serial_generic_submit_read_urbs(struct usb_serial_port *port,
364 gfp_t mem_flags);
365 extern void usb_serial_generic_process_read_urb(struct urb *urb);
366 extern int usb_serial_generic_prepare_write_buffer(struct usb_serial_port *port,
367 void *dest, size_t size);
368 extern int usb_serial_handle_sysrq_char(struct usb_serial_port *port,
369 unsigned int ch);
370 extern int usb_serial_handle_break(struct usb_serial_port *port);
371 extern void usb_serial_handle_dcd_change(struct usb_serial_port *usb_port,
372 struct tty_struct *tty,
373 unsigned int status);
374
375
376 extern int usb_serial_bus_register(struct usb_serial_driver *device);
377 extern void usb_serial_bus_deregister(struct usb_serial_driver *device);
378
379 extern struct bus_type usb_serial_bus_type;
380 extern struct tty_driver *usb_serial_tty_driver;
381
382 static inline void usb_serial_debug_data(struct device *dev,
383 const char *function, int size,
384 const unsigned char *data)
385 {
386 dev_dbg(dev, "%s - length = %d, data = %*ph\n",
387 function, size, size, data);
388 }
389
390
391
392
393
394 #define dev_err_console(usport, fmt, ...) \
395 do { \
396 static bool __print_once; \
397 struct usb_serial_port *__port = (usport); \
398 \
399 if (!__port->port.console || !__print_once) { \
400 __print_once = true; \
401 dev_err(&__port->dev, fmt, ##__VA_ARGS__); \
402 } \
403 } while (0)
404
405
406
407
408
409
410
411
412
413
414
415
416 #define usb_serial_module_driver(__name, __serial_drivers, __ids) \
417 static int __init usb_serial_module_init(void) \
418 { \
419 return usb_serial_register_drivers(__serial_drivers, \
420 __name, __ids); \
421 } \
422 module_init(usb_serial_module_init); \
423 static void __exit usb_serial_module_exit(void) \
424 { \
425 usb_serial_deregister_drivers(__serial_drivers); \
426 } \
427 module_exit(usb_serial_module_exit);
428
429 #define module_usb_serial_driver(__serial_drivers, __ids) \
430 usb_serial_module_driver(KBUILD_MODNAME, __serial_drivers, __ids)
431
432 #endif
433