ChangeSet 1.1123.18.19, 2003/08/14 15:51:32-07:00, [EMAIL PROTECTED]
USB: handle overloading of usb-serial functions in a much cleaner manner.
drivers/usb/serial/usb-serial.c | 66 ++++++++++++++++++++--------------------
1 files changed, 33 insertions(+), 33 deletions(-)
diff -Nru a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
--- a/drivers/usb/serial/usb-serial.c Fri Aug 15 10:44:42 2003
+++ b/drivers/usb/serial/usb-serial.c Fri Aug 15 10:44:42 2003
@@ -482,10 +482,7 @@
if (port->open_count == 1) {
/* only call the device specific open if this
* is the first time the port is opened */
- if (serial->type->open)
- retval = serial->type->open(port, filp);
- else
- retval = usb_serial_generic_open(port, filp);
+ retval = serial->type->open(port, filp);
if (retval) {
port->open_count = 0;
module_put(serial->type->owner);
@@ -507,10 +504,7 @@
if (port->open_count <= 0) {
/* only call the device specific close if this
* port is being closed by the last owner */
- if (port->serial->type->close)
- port->serial->type->close(port, filp);
- else
- usb_serial_generic_close(port, filp);
+ port->serial->type->close(port, filp);
port->open_count = 0;
}
@@ -552,11 +546,8 @@
goto exit;
}
- /* pass on to the driver specific version of this function if it is available
*/
- if (serial->type->write)
- retval = serial->type->write(port, from_user, buf, count);
- else
- retval = usb_serial_generic_write(port, from_user, buf, count);
+ /* pass on to the driver specific version of this function */
+ retval = serial->type->write(port, from_user, buf, count);
exit:
return retval;
@@ -578,11 +569,8 @@
goto exit;
}
- /* pass on to the driver specific version of this function if it is available
*/
- if (serial->type->write_room)
- retval = serial->type->write_room(port);
- else
- retval = usb_serial_generic_write_room(port);
+ /* pass on to the driver specific version of this function */
+ retval = serial->type->write_room(port);
exit:
return retval;
@@ -604,11 +592,8 @@
goto exit;
}
- /* pass on to the driver specific version of this function if it is available
*/
- if (serial->type->chars_in_buffer)
- retval = serial->type->chars_in_buffer(port);
- else
- retval = usb_serial_generic_chars_in_buffer(port);
+ /* pass on to the driver specific version of this function */
+ retval = serial->type->chars_in_buffer(port);
exit:
return retval;
@@ -736,10 +721,7 @@
{
dbg ("%s", __FUNCTION__);
- if (serial->type->shutdown)
- serial->type->shutdown(serial);
- else
- usb_serial_generic_shutdown(serial);
+ serial->type->shutdown(serial);
}
static int serial_read_proc (char *page, char **start, off_t off, int count, int
*eof, void *data)
@@ -1186,9 +1168,7 @@
usb_rcvbulkpipe (dev,
endpoint->bEndpointAddress),
port->bulk_in_buffer, buffer_size,
- ((serial->type->read_bulk_callback) ?
- serial->type->read_bulk_callback :
- usb_serial_generic_read_bulk_callback),
+ serial->type->read_bulk_callback,
port);
}
@@ -1212,9 +1192,7 @@
usb_sndbulkpipe (dev,
endpoint->bEndpointAddress),
port->bulk_out_buffer, buffer_size,
- ((serial->type->write_bulk_callback) ?
- serial->type->write_bulk_callback :
- usb_serial_generic_write_bulk_callback),
+ serial->type->write_bulk_callback,
port);
}
@@ -1429,10 +1407,32 @@
module_init(usb_serial_init);
module_exit(usb_serial_exit);
+#define set_to_generic_if_null(type, function) \
+ do { \
+ if (!type->function) { \
+ type->function = usb_serial_generic_##function; \
+ dbg("Had to override the " #function \
+ " usb serial operation with the generic one.");\
+ } \
+ } while (0)
+
+static void fixup_generic(struct usb_serial_device_type *device)
+{
+ set_to_generic_if_null(device, open);
+ set_to_generic_if_null(device, write);
+ set_to_generic_if_null(device, close);
+ set_to_generic_if_null(device, write_room);
+ set_to_generic_if_null(device, chars_in_buffer);
+ set_to_generic_if_null(device, read_bulk_callback);
+ set_to_generic_if_null(device, write_bulk_callback);
+ set_to_generic_if_null(device, shutdown);
+}
int usb_serial_register(struct usb_serial_device_type *new_device)
{
int retval;
+
+ fixup_generic(new_device);
/* Add this device to our list of devices */
list_add(&new_device->driver_list, &usb_serial_driver_list);
-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel