kernel: fix *-gpio-custom module unloading
[openwrt/openwrt.git] / package / kernel / w1-gpio-custom / src / w1-gpio-custom.c
index 96cfcabc610703cba707d2fbf5f95567b28fbb54..6928769975590b761e5881459e8497bb99d39dcc 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.1"
+#define DRV_VERSION    "0.1.2"
 
 #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_put(devices[i]);
+                       platform_device_unregister(devices[i]);
 }
 
 static int __init w1_gpio_custom_add_one(unsigned int id, unsigned int *params)
@@ -111,8 +111,9 @@ static int __init w1_gpio_custom_add_one(unsigned int id, unsigned int *params)
        }
 
        pdata.pin = params[BUS_PARAM_PIN];
-       pdata.is_open_drain = params[BUS_PARAM_OD] ? 1:0;
+       pdata.is_open_drain = params[BUS_PARAM_OD] ? 1 : 0;
        pdata.enable_external_pullup = NULL;
+       pdata.ext_pullup_enable_pin = -EINVAL;
 
        err = platform_device_add_data(pdev, &pdata, sizeof(pdata));
        if (err)
@@ -139,16 +140,20 @@ static int __init w1_gpio_custom_probe(void)
        printk(KERN_INFO DRV_DESC " version " DRV_VERSION "\n");
 
        err = w1_gpio_custom_add_one(0, bus0);
-       if (err) goto err;
+       if (err)
+               goto err;
 
        err = w1_gpio_custom_add_one(1, bus1);
-       if (err) goto err;
+       if (err)
+               goto err;
 
        err = w1_gpio_custom_add_one(2, bus2);
-       if (err) goto err;
+       if (err)
+               goto err;
 
        err = w1_gpio_custom_add_one(3, bus3);
-       if (err) goto err;
+       if (err)
+               goto err;
 
        if (!nr_devices) {
                printk(KERN_ERR PFX "no bus parameter(s) specified\n");