package: fix w1-gpio-custom package (closes #6770)
[librecmc/librecmc.git] / package / w1-gpio-custom / src / w1-gpio-custom.c
index 22c0b787f04b8776e17db73d226b7a2f62d9f1b3..8f739d49fd491f48ad54ab088c34486421de63f6 100644 (file)
@@ -47,7 +47,7 @@
 
 #define DRV_NAME       "w1-gpio-custom"
 #define DRV_DESC       "Custom GPIO-based W1 driver"
-#define DRV_VERSION    "0.1.0"
+#define DRV_VERSION    "0.1.1"
 
 #define PFX            DRV_NAME ": "
 
@@ -86,7 +86,7 @@ static void w1_gpio_custom_cleanup(void)
 
        for (i = 0; i < nr_devices; i++)
                if (devices[i])
-                       platform_device_unregister(devices[i]);
+                       platform_device_put(devices[i]);
 }
 
 static int __init w1_gpio_custom_add_one(unsigned int id, unsigned int *params)
@@ -110,22 +110,23 @@ static int __init w1_gpio_custom_add_one(unsigned int id, unsigned int *params)
                goto err;
        }
 
-       devices[nr_devices++] = pdev;
-
        pdata.pin = params[BUS_PARAM_PIN];
        pdata.is_open_drain = params[BUS_PARAM_OD] ? 1:0;
 
        err = platform_device_add_data(pdev, &pdata, sizeof(pdata));
        if (err)
-               goto err;
+               goto err_put;
 
-       err = platform_device_register(pdev);
+       err = platform_device_add(pdev);
        if (err)
-               goto err;
+               goto err_put;
 
+       devices[nr_devices++] = pdev;
        return 0;
 
-err:
+ err_put:
+       platform_device_put(pdev);
+ err:
        return err;
 }