ChangeSet 1.872.3.8, 2002/11/19 22:32:33-08:00, [EMAIL PROTECTED]

USB:  usb-serial core updates

 - removed a few #ifdefs in the main code
 - cleaned up the failure logic in initialization.


diff -Nru a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
--- a/drivers/usb/serial/usb-serial.c   Wed Nov 20 01:00:52 2002
+++ b/drivers/usb/serial/usb-serial.c   Wed Nov 20 01:00:52 2002
@@ -14,6 +14,10 @@
  *
  * See Documentation/usb/usb-serial.txt for more information on using this driver
  *
+ * (11/19/2002) gkh
+ *     removed a few #ifdefs for the generic code and cleaned up the failure
+ *     logic in initialization.
+ *
  * (10/02/2002) gkh
  *     moved the console code to console.c and out of this file.
  *
@@ -341,7 +345,7 @@
 /*
  * Version Information
  */
-#define DRIVER_VERSION "v1.6"
+#define DRIVER_VERSION "v1.7"
 #define DRIVER_AUTHOR "Greg Kroah-Hartman, [EMAIL PROTECTED], 
http://www.kroah.com/linux/";
 #define DRIVER_DESC "USB Serial Driver core"
 
@@ -382,7 +386,29 @@
        {.driver_info = 42},
        {}
 };
-#endif
+
+static int generic_register (void)
+{
+       generic_device_ids[0].idVendor = vendor;
+       generic_device_ids[0].idProduct = product;
+       generic_device_ids[0].match_flags = USB_DEVICE_ID_MATCH_VENDOR | 
+USB_DEVICE_ID_MATCH_PRODUCT;
+
+       /* register our generic driver with ourselves */
+       return usb_serial_register (&generic_device);
+}
+
+static void generic_deregister (void)
+{
+       /* remove our generic driver */
+       usb_serial_deregister (&generic_device);
+}
+
+#else
+
+static inline int generic_register (void) { return 0; }
+static inline void generic_deregister (void) { }
+
+#endif /* CONFIG_USB_SERIAL_GENERIC */
 
 /* Driver structure we register with the USB core */
 static struct usb_driver usb_serial_driver = {
@@ -409,7 +435,6 @@
 static struct usb_serial       *serial_table[SERIAL_TTY_MINORS];       /* initially 
all NULL */
 static LIST_HEAD(usb_serial_driver_list);
 
-
 struct usb_serial *usb_serial_get_by_minor (unsigned int minor)
 {
        return serial_table[minor];
@@ -1574,40 +1599,49 @@
 static int __init usb_serial_init(void)
 {
        int i;
-       int result;
+       int result = 0;
 
        /* Initalize our global data */
        for (i = 0; i < SERIAL_TTY_MINORS; ++i) {
                serial_table[i] = NULL;
        }
 
+       /* register the generic driver, if we should */
+       result = generic_register();
+       if (result < 0) {
+               err("%s - registering generic driver failed", __FUNCTION__);
+               goto exit;
+       }
+
        /* register the tty driver */
        serial_tty_driver.init_termios          = tty_std_termios;
        serial_tty_driver.init_termios.c_cflag  = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
-       if (tty_register_driver (&serial_tty_driver)) {
-               err("%s - failed to register tty driver", __FUNCTION__);
-               return -1;
+       result = tty_register_driver (&serial_tty_driver);
+       if (result) {
+               err("%s - tty_register_driver failed", __FUNCTION__);
+               goto exit_generic;
        }
 
        /* register the USB driver */
        result = usb_register(&usb_serial_driver);
        if (result < 0) {
-               tty_unregister_driver(&serial_tty_driver);
-               err("usb_register failed for the usb-serial driver. Error number %d", 
result);
-               return -1;
+               err("%s - usb_register failed", __FUNCTION__);
+               goto exit_tty;
        }
 
-#ifdef CONFIG_USB_SERIAL_GENERIC
-       generic_device_ids[0].idVendor = vendor;
-       generic_device_ids[0].idProduct = product;
-       generic_device_ids[0].match_flags = USB_DEVICE_ID_MATCH_VENDOR | 
USB_DEVICE_ID_MATCH_PRODUCT;
-       /* register our generic driver with ourselves */
-       usb_serial_register (&generic_device);
-#endif
-
        info(DRIVER_DESC " " DRIVER_VERSION);
 
-       return 0;
+       return result;
+
+exit_tty:
+       tty_unregister_driver(&serial_tty_driver);
+
+exit_generic:
+       generic_deregister();
+
+exit:
+       err ("%s - returning with error %d", __FUNCTION__, result);
+       return result;
 }
 
 
@@ -1615,11 +1649,8 @@
 {
        usb_serial_console_exit();
 
-#ifdef CONFIG_USB_SERIAL_GENERIC
-       /* remove our generic driver */
-       usb_serial_deregister (&generic_device);
-#endif
-       
+       generic_deregister();
+
        usb_deregister(&usb_serial_driver);
        tty_unregister_driver(&serial_tty_driver);
 }


-------------------------------------------------------
This sf.net email is sponsored by: To learn the basics of securing 
your web site with SSL, click here to get a FREE TRIAL of a Thawte 
Server Certificate: http://www.gothawte.com/rd524.html
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to