diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2012-05-15 11:55:36 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2012-05-16 08:42:47 -0400 |
commit | 00d5bdd17b6e2648ecff718e71c328864c9aae00 (patch) | |
tree | 7fe43de922b3701c730f713d31702e8cb7745a70 /drivers | |
parent | 20cdffa437f51f3afdf41e431ca17014434d3037 (diff) |
s390/lcs: switch to ccwgroup_create_dev
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/s390/net/lcs.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c index 687efe4d589a..0abba9364214 100644 --- a/drivers/s390/net/lcs.c +++ b/drivers/s390/net/lcs.c | |||
@@ -2051,10 +2051,17 @@ static struct attribute * lcs_attrs[] = { | |||
2051 | &dev_attr_recover.attr, | 2051 | &dev_attr_recover.attr, |
2052 | NULL, | 2052 | NULL, |
2053 | }; | 2053 | }; |
2054 | |||
2055 | static struct attribute_group lcs_attr_group = { | 2054 | static struct attribute_group lcs_attr_group = { |
2056 | .attrs = lcs_attrs, | 2055 | .attrs = lcs_attrs, |
2057 | }; | 2056 | }; |
2057 | static const struct attribute_group *lcs_attr_groups[] = { | ||
2058 | &lcs_attr_group, | ||
2059 | NULL, | ||
2060 | }; | ||
2061 | static const struct device_type lcs_devtype = { | ||
2062 | .name = "lcs", | ||
2063 | .groups = lcs_attr_groups, | ||
2064 | }; | ||
2058 | 2065 | ||
2059 | /** | 2066 | /** |
2060 | * lcs_probe_device is called on establishing a new ccwgroup_device. | 2067 | * lcs_probe_device is called on establishing a new ccwgroup_device. |
@@ -2063,7 +2070,6 @@ static int | |||
2063 | lcs_probe_device(struct ccwgroup_device *ccwgdev) | 2070 | lcs_probe_device(struct ccwgroup_device *ccwgdev) |
2064 | { | 2071 | { |
2065 | struct lcs_card *card; | 2072 | struct lcs_card *card; |
2066 | int ret; | ||
2067 | 2073 | ||
2068 | if (!get_device(&ccwgdev->dev)) | 2074 | if (!get_device(&ccwgdev->dev)) |
2069 | return -ENODEV; | 2075 | return -ENODEV; |
@@ -2075,12 +2081,6 @@ lcs_probe_device(struct ccwgroup_device *ccwgdev) | |||
2075 | put_device(&ccwgdev->dev); | 2081 | put_device(&ccwgdev->dev); |
2076 | return -ENOMEM; | 2082 | return -ENOMEM; |
2077 | } | 2083 | } |
2078 | ret = sysfs_create_group(&ccwgdev->dev.kobj, &lcs_attr_group); | ||
2079 | if (ret) { | ||
2080 | lcs_free_card(card); | ||
2081 | put_device(&ccwgdev->dev); | ||
2082 | return ret; | ||
2083 | } | ||
2084 | dev_set_drvdata(&ccwgdev->dev, card); | 2084 | dev_set_drvdata(&ccwgdev->dev, card); |
2085 | ccwgdev->cdev[0]->handler = lcs_irq; | 2085 | ccwgdev->cdev[0]->handler = lcs_irq; |
2086 | ccwgdev->cdev[1]->handler = lcs_irq; | 2086 | ccwgdev->cdev[1]->handler = lcs_irq; |
@@ -2089,7 +2089,9 @@ lcs_probe_device(struct ccwgroup_device *ccwgdev) | |||
2089 | card->thread_start_mask = 0; | 2089 | card->thread_start_mask = 0; |
2090 | card->thread_allowed_mask = 0; | 2090 | card->thread_allowed_mask = 0; |
2091 | card->thread_running_mask = 0; | 2091 | card->thread_running_mask = 0; |
2092 | return 0; | 2092 | ccwgdev->dev.type = &lcs_devtype; |
2093 | |||
2094 | return 0; | ||
2093 | } | 2095 | } |
2094 | 2096 | ||
2095 | static int | 2097 | static int |
@@ -2323,9 +2325,9 @@ lcs_remove_device(struct ccwgroup_device *ccwgdev) | |||
2323 | } | 2325 | } |
2324 | if (card->dev) | 2326 | if (card->dev) |
2325 | unregister_netdev(card->dev); | 2327 | unregister_netdev(card->dev); |
2326 | sysfs_remove_group(&ccwgdev->dev.kobj, &lcs_attr_group); | ||
2327 | lcs_cleanup_card(card); | 2328 | lcs_cleanup_card(card); |
2328 | lcs_free_card(card); | 2329 | lcs_free_card(card); |
2330 | dev_set_drvdata(&ccwgdev->dev, NULL); | ||
2329 | put_device(&ccwgdev->dev); | 2331 | put_device(&ccwgdev->dev); |
2330 | } | 2332 | } |
2331 | 2333 | ||
@@ -2412,7 +2414,7 @@ static struct ccwgroup_driver lcs_group_driver = { | |||
2412 | }, | 2414 | }, |
2413 | .max_slaves = 2, | 2415 | .max_slaves = 2, |
2414 | .driver_id = 0xD3C3E2, | 2416 | .driver_id = 0xD3C3E2, |
2415 | .probe = lcs_probe_device, | 2417 | .setup = lcs_probe_device, |
2416 | .remove = lcs_remove_device, | 2418 | .remove = lcs_remove_device, |
2417 | .set_online = lcs_new_device, | 2419 | .set_online = lcs_new_device, |
2418 | .set_offline = lcs_shutdown_device, | 2420 | .set_offline = lcs_shutdown_device, |
@@ -2423,17 +2425,14 @@ static struct ccwgroup_driver lcs_group_driver = { | |||
2423 | .restore = lcs_restore, | 2425 | .restore = lcs_restore, |
2424 | }; | 2426 | }; |
2425 | 2427 | ||
2426 | static ssize_t | 2428 | static ssize_t lcs_driver_group_store(struct device_driver *ddrv, |
2427 | lcs_driver_group_store(struct device_driver *ddrv, const char *buf, | 2429 | const char *buf, size_t count) |
2428 | size_t count) | ||
2429 | { | 2430 | { |
2430 | int err; | 2431 | int err; |
2431 | err = ccwgroup_create_from_string(lcs_root_dev, | 2432 | err = ccwgroup_create_dev(lcs_root_dev, lcs_group_driver.driver_id, |
2432 | lcs_group_driver.driver_id, | 2433 | &lcs_group_driver, 2, buf); |
2433 | &lcs_ccw_driver, 2, buf); | ||
2434 | return err ? err : count; | 2434 | return err ? err : count; |
2435 | } | 2435 | } |
2436 | |||
2437 | static DRIVER_ATTR(group, 0200, NULL, lcs_driver_group_store); | 2436 | static DRIVER_ATTR(group, 0200, NULL, lcs_driver_group_store); |
2438 | 2437 | ||
2439 | static struct attribute *lcs_group_attrs[] = { | 2438 | static struct attribute *lcs_group_attrs[] = { |