Merge tag 'afs-next-20190915' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowel...
[linux-2.6-microblaze.git] / drivers / usb / misc / cypress_cy7c63.c
index 9d780b7..14faec5 100644 (file)
@@ -183,6 +183,7 @@ static ssize_t port0_show(struct device *dev,
 {
        return read_port(dev, attr, buf, 0, CYPRESS_READ_PORT_ID0);
 }
+static DEVICE_ATTR_RW(port0);
 
 /* attribute callback handler (read) */
 static ssize_t port1_show(struct device *dev,
@@ -190,11 +191,14 @@ static ssize_t port1_show(struct device *dev,
 {
        return read_port(dev, attr, buf, 1, CYPRESS_READ_PORT_ID1);
 }
-
-static DEVICE_ATTR_RW(port0);
-
 static DEVICE_ATTR_RW(port1);
 
+static struct attribute *cypress_attrs[] = {
+       &dev_attr_port0.attr,
+       &dev_attr_port1.attr,
+       NULL,
+};
+ATTRIBUTE_GROUPS(cypress);
 
 static int cypress_probe(struct usb_interface *interface,
                         const struct usb_device_id *id)
@@ -212,26 +216,11 @@ static int cypress_probe(struct usb_interface *interface,
        /* save our data pointer in this interface device */
        usb_set_intfdata(interface, dev);
 
-       /* create device attribute files */
-       retval = device_create_file(&interface->dev, &dev_attr_port0);
-       if (retval)
-               goto error;
-       retval = device_create_file(&interface->dev, &dev_attr_port1);
-       if (retval)
-               goto error;
-
        /* let the user know that the device is now attached */
        dev_info(&interface->dev,
                 "Cypress CY7C63xxx device now attached\n");
        return 0;
 
-error:
-       device_remove_file(&interface->dev, &dev_attr_port0);
-       device_remove_file(&interface->dev, &dev_attr_port1);
-       usb_set_intfdata(interface, NULL);
-       usb_put_dev(dev->udev);
-       kfree(dev);
-
 error_mem:
        return retval;
 }
@@ -242,9 +231,6 @@ static void cypress_disconnect(struct usb_interface *interface)
 
        dev = usb_get_intfdata(interface);
 
-       /* remove device attribute files */
-       device_remove_file(&interface->dev, &dev_attr_port0);
-       device_remove_file(&interface->dev, &dev_attr_port1);
        /* the intfdata can be set to NULL only after the
         * device files have been removed */
        usb_set_intfdata(interface, NULL);
@@ -262,6 +248,7 @@ static struct usb_driver cypress_driver = {
        .probe = cypress_probe,
        .disconnect = cypress_disconnect,
        .id_table = cypress_table,
+       .dev_groups = cypress_groups,
 };
 
 module_usb_driver(cypress_driver);