Allow usb-serial driver's attach callback to create sysfs attributes,
by calling device_register, before calling ->attach().

Signed-Off: Jim Radford <[EMAIL PROTECTED]>

diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -959,6 +959,22 @@ int usb_serial_probe(struct usb_interface *interface,
                dbg("the device claims to support interrupt out transfers, but 
write_int_callback is not defined");
        }
        
+       /* register all of the individual ports with the driver core */
+       for (i = 0; i < num_ports; ++i) {
+               port = serial->port[i];
+               port->dev.parent = &interface->dev;
+               port->dev.driver = NULL;
+               port->dev.bus = &usb_serial_bus_type;
+               port->dev.release = &port_release;
+
+               snprintf (&port->dev.bus_id[0], sizeof(port->dev.bus_id), 
"ttyUSB%d", port->number);
+               dbg ("%s - registering %s", __FUNCTION__, port->dev.bus_id);
+               retval = device_register(&port->dev);
+               if (retval)
+                       dev_err(&port->dev, "Error registering port device, "
+                               "continuing\n");
+       }
+
        /* if this device type has an attach function, call it */
        if (type->attach) {
                if (!try_module_get(type->driver.owner)) {
@@ -981,22 +997,6 @@ int usb_serial_probe(struct usb_interface *interface,
                goto probe_error;
        }
 
-       /* register all of the individual ports with the driver core */
-       for (i = 0; i < num_ports; ++i) {
-               port = serial->port[i];
-               port->dev.parent = &interface->dev;
-               port->dev.driver = NULL;
-               port->dev.bus = &usb_serial_bus_type;
-               port->dev.release = &port_release;
-
-               snprintf (&port->dev.bus_id[0], sizeof(port->dev.bus_id), 
"ttyUSB%d", port->number);
-               dbg ("%s - registering %s", __FUNCTION__, port->dev.bus_id);
-               retval = device_register(&port->dev);
-               if (retval)
-                       dev_err(&port->dev, "Error registering port device, "
-                               "continuing\n");
-       }
-
        usb_serial_console_init (debug, minor);
 
 exit:




-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to