From 2b64bcfbc988ee6bc56541f0e8d5b30dfcf959d7 Mon Sep 17 00:00:00 2001 From: Johan Hovold Date: Wed, 17 Mar 2010 23:05:57 +0100 Subject: [PATCH] --- yaml --- r: 195349 b: refs/heads/master c: 231543206452f5c42bace54b5c13dfe5a0313812 h: refs/heads/master i: 195347: 597df478f4153add69961cdeca88afdc201ada2f v: v3 --- [refs] | 2 +- trunk/drivers/usb/serial/generic.c | 5 +++-- trunk/drivers/usb/serial/usb-serial.c | 1 + trunk/include/linux/usb/serial.h | 3 +++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 11324d6be0d9..52cce8a25ea8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0f3d5bae2bdacce6c6c1d116809d6b3d50338df7 +refs/heads/master: 231543206452f5c42bace54b5c13dfe5a0313812 diff --git a/trunk/drivers/usb/serial/generic.c b/trunk/drivers/usb/serial/generic.c index e16c0b234cc9..176f1257b664 100644 --- a/trunk/drivers/usb/serial/generic.c +++ b/trunk/drivers/usb/serial/generic.c @@ -408,7 +408,7 @@ int usb_serial_generic_submit_read_urb(struct usb_serial_port *port, } EXPORT_SYMBOL_GPL(usb_serial_generic_submit_read_urb); -static void usb_serial_generic_process_read_urb(struct urb *urb) +void usb_serial_generic_process_read_urb(struct urb *urb) { struct usb_serial_port *port = urb->context; struct tty_struct *tty; @@ -433,6 +433,7 @@ static void usb_serial_generic_process_read_urb(struct urb *urb) tty_flip_buffer_push(tty); tty_kref_put(tty); } +EXPORT_SYMBOL_GPL(usb_serial_generic_process_read_urb); void usb_serial_generic_read_bulk_callback(struct urb *urb) { @@ -451,7 +452,7 @@ void usb_serial_generic_read_bulk_callback(struct urb *urb) usb_serial_debug_data(debug, &port->dev, __func__, urb->actual_length, data); - usb_serial_generic_process_read_urb(urb); + port->serial->type->process_read_urb(urb); /* Throttle the device if requested by tty */ spin_lock_irqsave(&port->lock, flags); diff --git a/trunk/drivers/usb/serial/usb-serial.c b/trunk/drivers/usb/serial/usb-serial.c index 538924627eba..1b924425089f 100644 --- a/trunk/drivers/usb/serial/usb-serial.c +++ b/trunk/drivers/usb/serial/usb-serial.c @@ -1298,6 +1298,7 @@ static void fixup_generic(struct usb_serial_driver *device) set_to_generic_if_null(device, write_bulk_callback); set_to_generic_if_null(device, disconnect); set_to_generic_if_null(device, release); + set_to_generic_if_null(device, process_read_urb); } int usb_serial_register(struct usb_serial_driver *driver) diff --git a/trunk/include/linux/usb/serial.h b/trunk/include/linux/usb/serial.h index 53f6dc65e87e..ff8872eba3ac 100644 --- a/trunk/include/linux/usb/serial.h +++ b/trunk/include/linux/usb/serial.h @@ -272,6 +272,8 @@ struct usb_serial_driver { void (*write_int_callback)(struct urb *urb); void (*read_bulk_callback)(struct urb *urb); void (*write_bulk_callback)(struct urb *urb); + /* Called by the generic read bulk callback */ + void (*process_read_urb)(struct urb *urb); }; #define to_usb_serial_driver(d) \ container_of(d, struct usb_serial_driver, driver) @@ -323,6 +325,7 @@ extern int usb_serial_generic_register(int debug); extern void usb_serial_generic_deregister(void); extern int usb_serial_generic_submit_read_urb(struct usb_serial_port *port, gfp_t mem_flags); +extern void usb_serial_generic_process_read_urb(struct urb *urb); extern int usb_serial_handle_sysrq_char(struct tty_struct *tty, struct usb_serial_port *port, unsigned int ch);