Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
[safe/jmp/linux-2.6] / drivers / usb / core / endpoint.c
index c505b76..e1710f2 100644 (file)
@@ -156,6 +156,10 @@ static struct attribute *ep_dev_attrs[] = {
 static struct attribute_group ep_dev_attr_grp = {
        .attrs = ep_dev_attrs,
 };
+static struct attribute_group *ep_dev_groups[] = {
+       &ep_dev_attr_grp,
+       NULL
+};
 
 static int usb_endpoint_major_init(void)
 {
@@ -165,7 +169,8 @@ static int usb_endpoint_major_init(void)
        error = alloc_chrdev_region(&dev, 0, MAX_ENDPOINT_MINORS,
                                    "usb_endpoint");
        if (error) {
-               err("unable to get a dynamic major for usb endpoints");
+               printk(KERN_ERR "Unable to get a dynamic major for "
+                      "usb endpoints.\n");
                return error;
        }
        usb_endpoint_major = MAJOR(dev);
@@ -229,7 +234,7 @@ static int init_endpoint_class(void)
        kref_init(&ep_class->kref);
        ep_class->class = class_create(THIS_MODULE, "usb_endpoint");
        if (IS_ERR(ep_class->class)) {
-               result = IS_ERR(ep_class->class);
+               result = PTR_ERR(ep_class->class);
                goto class_create_error;
        }
 
@@ -267,11 +272,11 @@ static void ep_device_release(struct device *dev)
 {
        struct ep_device *ep_dev = to_ep_device(dev);
 
-       dev_dbg(dev, "%s called for %s\n", __FUNCTION__, dev->bus_id);
+       endpoint_free_minor(ep_dev);
        kfree(ep_dev);
 }
 
-int usb_create_ep_files(struct device *parent,
+int usb_create_ep_devs(struct device *parent,
                        struct usb_host_endpoint *endpoint,
                        struct usb_device *udev)
 {
@@ -291,27 +296,25 @@ int usb_create_ep_files(struct device *parent,
 
        retval = endpoint_get_minor(ep_dev);
        if (retval) {
-               dev_err(parent, "can not allocate minor number for %s",
-                       ep_dev->dev.bus_id);
+               dev_err(parent, "can not allocate minor number for %s\n",
+                       dev_name(&ep_dev->dev));
                goto error_register;
        }
 
        ep_dev->desc = &endpoint->desc;
        ep_dev->udev = udev;
+       ep_dev->dev.groups = ep_dev_groups;
        ep_dev->dev.devt = MKDEV(usb_endpoint_major, ep_dev->minor);
        ep_dev->dev.class = ep_class->class;
        ep_dev->dev.parent = parent;
        ep_dev->dev.release = ep_device_release;
-       snprintf(ep_dev->dev.bus_id, BUS_ID_SIZE, "usbdev%d.%d_ep%02x",
+       dev_set_name(&ep_dev->dev, "usbdev%d.%d_ep%02x",
                 udev->bus->busnum, udev->devnum,
                 endpoint->desc.bEndpointAddress);
 
        retval = device_register(&ep_dev->dev);
        if (retval)
                goto error_chrdev;
-       retval = sysfs_create_group(&ep_dev->dev.kobj, &ep_dev_attr_grp);
-       if (retval)
-               goto error_group;
 
        /* create the symlink to the old-style "ep_XX" directory */
        sprintf(name, "ep_%02x", endpoint->desc.bEndpointAddress);
@@ -322,8 +325,6 @@ int usb_create_ep_files(struct device *parent,
        return retval;
 
 error_link:
-       sysfs_remove_group(&ep_dev->dev.kobj, &ep_dev_attr_grp);
-error_group:
        device_unregister(&ep_dev->dev);
        destroy_endpoint_class();
        return retval;
@@ -339,7 +340,7 @@ exit:
        return retval;
 }
 
-void usb_remove_ep_files(struct usb_host_endpoint *endpoint)
+void usb_remove_ep_devs(struct usb_host_endpoint *endpoint)
 {
        struct ep_device *ep_dev = endpoint->ep_dev;
 
@@ -348,8 +349,6 @@ void usb_remove_ep_files(struct usb_host_endpoint *endpoint)
 
                sprintf(name, "ep_%02x", endpoint->desc.bEndpointAddress);
                sysfs_remove_link(&ep_dev->dev.parent->kobj, name);
-               sysfs_remove_group(&ep_dev->dev.kobj, &ep_dev_attr_grp);
-               endpoint_free_minor(ep_dev);
                device_unregister(&ep_dev->dev);
                endpoint->ep_dev = NULL;
                destroy_endpoint_class();