Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[deliverable/linux.git] / drivers / w1 / slaves / w1_ds2781.c
index 1eb98fb1688dcdae227efcad1c5a62745cbf1a06..9c03e014cf9eb6159f5087dc1065bd8f283fddaf 100644 (file)
@@ -17,7 +17,6 @@
 #include <linux/types.h>
 #include <linux/platform_device.h>
 #include <linux/mutex.h>
-#include <linux/idr.h>
 
 #include "../w1.h"
 #include "../w1_int.h"
@@ -111,25 +110,14 @@ static const struct attribute_group *w1_ds2781_groups[] = {
        NULL,
 };
 
-static DEFINE_IDA(bat_ida);
-
 static int w1_ds2781_add_slave(struct w1_slave *sl)
 {
        int ret;
-       int id;
        struct platform_device *pdev;
 
-       id = ida_simple_get(&bat_ida, 0, 0, GFP_KERNEL);
-       if (id < 0) {
-               ret = id;
-               goto noid;
-       }
-
-       pdev = platform_device_alloc("ds2781-battery", id);
-       if (!pdev) {
-               ret = -ENOMEM;
-               goto pdev_alloc_failed;
-       }
+       pdev = platform_device_alloc("ds2781-battery", PLATFORM_DEVID_AUTO);
+       if (!pdev)
+               return -ENOMEM;
        pdev->dev.parent = &sl->dev;
 
        ret = platform_device_add(pdev);
@@ -142,19 +130,15 @@ static int w1_ds2781_add_slave(struct w1_slave *sl)
 
 pdev_add_failed:
        platform_device_put(pdev);
-pdev_alloc_failed:
-       ida_simple_remove(&bat_ida, id);
-noid:
+
        return ret;
 }
 
 static void w1_ds2781_remove_slave(struct w1_slave *sl)
 {
        struct platform_device *pdev = dev_get_drvdata(&sl->dev);
-       int id = pdev->id;
 
        platform_device_unregister(pdev);
-       ida_simple_remove(&bat_ida, id);
 }
 
 static struct w1_family_ops w1_ds2781_fops = {
@@ -167,21 +151,7 @@ static struct w1_family w1_ds2781_family = {
        .fid = W1_FAMILY_DS2781,
        .fops = &w1_ds2781_fops,
 };
-
-static int __init w1_ds2781_init(void)
-{
-       ida_init(&bat_ida);
-       return w1_register_family(&w1_ds2781_family);
-}
-
-static void __exit w1_ds2781_exit(void)
-{
-       w1_unregister_family(&w1_ds2781_family);
-       ida_destroy(&bat_ida);
-}
-
-module_init(w1_ds2781_init);
-module_exit(w1_ds2781_exit);
+module_w1_family(w1_ds2781_family);
 
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Renata Sayakhova <renata@oktetlabs.ru>");
This page took 0.032098 seconds and 5 git commands to generate.