hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/include/linux/usb/serial.h
....@@ -17,17 +17,14 @@
1717 #include <linux/kref.h>
1818 #include <linux/mutex.h>
1919 #include <linux/serial.h>
20
-#include <linux/sysrq.h>
2120 #include <linux/kfifo.h>
2221
2322 /* The maximum number of ports one device can grab at once */
2423 #define MAX_NUM_PORTS 16
2524
26
-/* parity check flag */
27
-#define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK))
28
-
2925 /* USB serial flags */
3026 #define USB_SERIAL_WRITE_BUSY 0
27
+#define USB_SERIAL_THROTTLED 1
3128
3229 /**
3330 * usb_serial_port: structure for the specific ports of a device.
....@@ -67,8 +64,6 @@
6764 * @flags: usb serial port flags
6865 * @write_wait: a wait_queue_head_t used by the port.
6966 * @work: work queue entry for the line discipline waking up.
70
- * @throttled: nonzero if the read urb is inactive to throttle the device
71
- * @throttle_req: nonzero if the tty wants to throttle us
7267 * @dev: pointer to the serial device
7368 *
7469 * This structure is used by the usb-serial core and drivers for the specific
....@@ -115,8 +110,6 @@
115110 unsigned long flags;
116111 wait_queue_head_t write_wait;
117112 struct work_struct work;
118
- char throttled;
119
- char throttle_req;
120113 unsigned long sysrq; /* sysrq timeout */
121114 struct device dev;
122115 };
....@@ -219,7 +212,7 @@
219212 * Return 0 to continue on with the initialization sequence. Anything
220213 * else will abort it.
221214 * @attach: pointer to the driver's attach function.
222
- * This will be called when the struct usb_serial structure is fully set
215
+ * This will be called when the struct usb_serial structure is fully
223216 * set up. Do any local initialization of the device, or any private
224217 * memory structure allocation at this point in time.
225218 * @disconnect: pointer to the driver's disconnect function. This will be
....@@ -285,6 +278,8 @@
285278 int (*write_room)(struct tty_struct *tty);
286279 int (*ioctl)(struct tty_struct *tty,
287280 unsigned int cmd, unsigned long arg);
281
+ int (*get_serial)(struct tty_struct *tty, struct serial_struct *ss);
282
+ int (*set_serial)(struct tty_struct *tty, struct serial_struct *ss);
288283 void (*set_termios)(struct tty_struct *tty,
289284 struct usb_serial_port *port, struct ktermios *old);
290285 void (*break_ctl)(struct tty_struct *tty, int break_state);
....@@ -320,19 +315,19 @@
320315 #define to_usb_serial_driver(d) \
321316 container_of(d, struct usb_serial_driver, driver)
322317
323
-extern int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[],
318
+int usb_serial_register_drivers(struct usb_serial_driver *const serial_drivers[],
324319 const char *name, const struct usb_device_id *id_table);
325
-extern void usb_serial_deregister_drivers(struct usb_serial_driver *const serial_drivers[]);
326
-extern void usb_serial_port_softint(struct usb_serial_port *port);
320
+void usb_serial_deregister_drivers(struct usb_serial_driver *const serial_drivers[]);
321
+void usb_serial_port_softint(struct usb_serial_port *port);
327322
328
-extern int usb_serial_suspend(struct usb_interface *intf, pm_message_t message);
329
-extern int usb_serial_resume(struct usb_interface *intf);
323
+int usb_serial_suspend(struct usb_interface *intf, pm_message_t message);
324
+int usb_serial_resume(struct usb_interface *intf);
330325
331326 /* USB Serial console functions */
332327 #ifdef CONFIG_USB_SERIAL_CONSOLE
333
-extern void usb_serial_console_init(int minor);
334
-extern void usb_serial_console_exit(void);
335
-extern void usb_serial_console_disconnect(struct usb_serial *serial);
328
+void usb_serial_console_init(int minor);
329
+void usb_serial_console_exit(void);
330
+void usb_serial_console_disconnect(struct usb_serial *serial);
336331 #else
337332 static inline void usb_serial_console_init(int minor) { }
338333 static inline void usb_serial_console_exit(void) { }
....@@ -340,45 +335,49 @@
340335 #endif
341336
342337 /* Functions needed by other parts of the usbserial core */
343
-extern struct usb_serial_port *usb_serial_port_get_by_minor(unsigned int minor);
344
-extern void usb_serial_put(struct usb_serial *serial);
345
-extern int usb_serial_generic_open(struct tty_struct *tty,
346
- struct usb_serial_port *port);
347
-extern int usb_serial_generic_write_start(struct usb_serial_port *port,
348
- gfp_t mem_flags);
349
-extern int usb_serial_generic_write(struct tty_struct *tty,
350
- struct usb_serial_port *port, const unsigned char *buf, int count);
351
-extern void usb_serial_generic_close(struct usb_serial_port *port);
352
-extern int usb_serial_generic_resume(struct usb_serial *serial);
353
-extern int usb_serial_generic_write_room(struct tty_struct *tty);
354
-extern int usb_serial_generic_chars_in_buffer(struct tty_struct *tty);
355
-extern void usb_serial_generic_wait_until_sent(struct tty_struct *tty,
356
- long timeout);
357
-extern void usb_serial_generic_read_bulk_callback(struct urb *urb);
358
-extern void usb_serial_generic_write_bulk_callback(struct urb *urb);
359
-extern void usb_serial_generic_throttle(struct tty_struct *tty);
360
-extern void usb_serial_generic_unthrottle(struct tty_struct *tty);
361
-extern int usb_serial_generic_tiocmiwait(struct tty_struct *tty,
362
- unsigned long arg);
363
-extern int usb_serial_generic_get_icount(struct tty_struct *tty,
364
- struct serial_icounter_struct *icount);
365
-extern int usb_serial_generic_register(void);
366
-extern void usb_serial_generic_deregister(void);
367
-extern int usb_serial_generic_submit_read_urbs(struct usb_serial_port *port,
368
- gfp_t mem_flags);
369
-extern void usb_serial_generic_process_read_urb(struct urb *urb);
370
-extern int usb_serial_generic_prepare_write_buffer(struct usb_serial_port *port,
371
- void *dest, size_t size);
372
-extern int usb_serial_handle_sysrq_char(struct usb_serial_port *port,
373
- unsigned int ch);
374
-extern int usb_serial_handle_break(struct usb_serial_port *port);
375
-extern void usb_serial_handle_dcd_change(struct usb_serial_port *usb_port,
376
- struct tty_struct *tty,
377
- unsigned int status);
338
+struct usb_serial_port *usb_serial_port_get_by_minor(unsigned int minor);
339
+void usb_serial_put(struct usb_serial *serial);
340
+int usb_serial_generic_open(struct tty_struct *tty, struct usb_serial_port *port);
341
+int usb_serial_generic_write_start(struct usb_serial_port *port, gfp_t mem_flags);
342
+int usb_serial_generic_write(struct tty_struct *tty, struct usb_serial_port *port,
343
+ const unsigned char *buf, int count);
344
+void usb_serial_generic_close(struct usb_serial_port *port);
345
+int usb_serial_generic_resume(struct usb_serial *serial);
346
+int usb_serial_generic_write_room(struct tty_struct *tty);
347
+int usb_serial_generic_chars_in_buffer(struct tty_struct *tty);
348
+void usb_serial_generic_wait_until_sent(struct tty_struct *tty, long timeout);
349
+void usb_serial_generic_read_bulk_callback(struct urb *urb);
350
+void usb_serial_generic_write_bulk_callback(struct urb *urb);
351
+void usb_serial_generic_throttle(struct tty_struct *tty);
352
+void usb_serial_generic_unthrottle(struct tty_struct *tty);
353
+int usb_serial_generic_tiocmiwait(struct tty_struct *tty, unsigned long arg);
354
+int usb_serial_generic_get_icount(struct tty_struct *tty, struct serial_icounter_struct *icount);
355
+int usb_serial_generic_register(void);
356
+void usb_serial_generic_deregister(void);
357
+int usb_serial_generic_submit_read_urbs(struct usb_serial_port *port, gfp_t mem_flags);
358
+void usb_serial_generic_process_read_urb(struct urb *urb);
359
+int usb_serial_generic_prepare_write_buffer(struct usb_serial_port *port, void *dest, size_t size);
360
+
361
+#if defined(CONFIG_USB_SERIAL_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
362
+int usb_serial_handle_sysrq_char(struct usb_serial_port *port, unsigned int ch);
363
+int usb_serial_handle_break(struct usb_serial_port *port);
364
+#else
365
+static inline int usb_serial_handle_sysrq_char(struct usb_serial_port *port, unsigned int ch)
366
+{
367
+ return 0;
368
+}
369
+static inline int usb_serial_handle_break(struct usb_serial_port *port)
370
+{
371
+ return 0;
372
+}
373
+#endif
374
+
375
+void usb_serial_handle_dcd_change(struct usb_serial_port *usb_port,
376
+ struct tty_struct *tty, unsigned int status);
378377
379378
380
-extern int usb_serial_bus_register(struct usb_serial_driver *device);
381
-extern void usb_serial_bus_deregister(struct usb_serial_driver *device);
379
+int usb_serial_bus_register(struct usb_serial_driver *device);
380
+void usb_serial_bus_deregister(struct usb_serial_driver *device);
382381
383382 extern struct bus_type usb_serial_bus_type;
384383 extern struct tty_driver *usb_serial_tty_driver;