s390/lcs: switch to ccwgroup_create_dev
authorSebastian Ott <sebott@linux.vnet.ibm.com>
Tue, 15 May 2012 15:55:36 +0000 (17:55 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 16 May 2012 12:42:47 +0000 (14:42 +0200)
Switch to the new ccwgroup_create_dev interface. Also wrap device
attributes in a struct device_type and let the driver core create
these attributes automagically.

Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/net/lcs.c

index 687efe4d589a517274687e17ae45f0d32d9739f6..0abba9364214164f4f7523ea5b1ba15a41c5f807 100644 (file)
@@ -2051,10 +2051,17 @@ static struct attribute * lcs_attrs[] = {
        &dev_attr_recover.attr,
        NULL,
 };
-
 static struct attribute_group lcs_attr_group = {
        .attrs = lcs_attrs,
 };
+static const struct attribute_group *lcs_attr_groups[] = {
+       &lcs_attr_group,
+       NULL,
+};
+static const struct device_type lcs_devtype = {
+       .name = "lcs",
+       .groups = lcs_attr_groups,
+};
 
 /**
  * lcs_probe_device is called on establishing a new ccwgroup_device.
@@ -2063,7 +2070,6 @@ static int
 lcs_probe_device(struct ccwgroup_device *ccwgdev)
 {
        struct lcs_card *card;
-       int ret;
 
        if (!get_device(&ccwgdev->dev))
                return -ENODEV;
@@ -2075,12 +2081,6 @@ lcs_probe_device(struct ccwgroup_device *ccwgdev)
                put_device(&ccwgdev->dev);
                 return -ENOMEM;
         }
-       ret = sysfs_create_group(&ccwgdev->dev.kobj, &lcs_attr_group);
-       if (ret) {
-               lcs_free_card(card);
-               put_device(&ccwgdev->dev);
-               return ret;
-        }
        dev_set_drvdata(&ccwgdev->dev, card);
        ccwgdev->cdev[0]->handler = lcs_irq;
        ccwgdev->cdev[1]->handler = lcs_irq;
@@ -2089,7 +2089,9 @@ lcs_probe_device(struct ccwgroup_device *ccwgdev)
        card->thread_start_mask = 0;
        card->thread_allowed_mask = 0;
        card->thread_running_mask = 0;
-        return 0;
+       ccwgdev->dev.type = &lcs_devtype;
+
+       return 0;
 }
 
 static int
@@ -2323,9 +2325,9 @@ lcs_remove_device(struct ccwgroup_device *ccwgdev)
        }
        if (card->dev)
                unregister_netdev(card->dev);
-       sysfs_remove_group(&ccwgdev->dev.kobj, &lcs_attr_group);
        lcs_cleanup_card(card);
        lcs_free_card(card);
+       dev_set_drvdata(&ccwgdev->dev, NULL);
        put_device(&ccwgdev->dev);
 }
 
@@ -2412,7 +2414,7 @@ static struct ccwgroup_driver lcs_group_driver = {
        },
        .max_slaves  = 2,
        .driver_id   = 0xD3C3E2,
-       .probe       = lcs_probe_device,
+       .setup       = lcs_probe_device,
        .remove      = lcs_remove_device,
        .set_online  = lcs_new_device,
        .set_offline = lcs_shutdown_device,
@@ -2423,17 +2425,14 @@ static struct ccwgroup_driver lcs_group_driver = {
        .restore     = lcs_restore,
 };
 
-static ssize_t
-lcs_driver_group_store(struct device_driver *ddrv, const char *buf,
-                      size_t count)
+static ssize_t lcs_driver_group_store(struct device_driver *ddrv,
+                                     const char *buf, size_t count)
 {
        int err;
-       err = ccwgroup_create_from_string(lcs_root_dev,
-                                         lcs_group_driver.driver_id,
-                                         &lcs_ccw_driver, 2, buf);
+       err = ccwgroup_create_dev(lcs_root_dev, lcs_group_driver.driver_id,
+                                 &lcs_group_driver, 2, buf);
        return err ? err : count;
 }
-
 static DRIVER_ATTR(group, 0200, NULL, lcs_driver_group_store);
 
 static struct attribute *lcs_group_attrs[] = {