diff --git a/package/w1-gpio-custom/Makefile b/package/w1-gpio-custom/Makefile
index f15dac94e047ece220da32f3d26c1d958d56f473..bbd9600209a2e07342bd3511bcbb6ae7b4bba1e5 100644
--- a/package/w1-gpio-custom/Makefile
+++ b/package/w1-gpio-custom/Makefile
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2008 OpenWrt.org
+# Copyright (C) 2008-2010 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=w1-gpio-custom
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -18,7 +18,6 @@ define KernelPackage/w1-gpio-custom
   TITLE:=Custom GPIO-based 1-wire device
   DEPENDS:=kmod-w1 +kmod-w1-master-gpio
   FILES:=$(PKG_BUILD_DIR)/w1-gpio-custom.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoLoad,55,w1-gpio-custom)
   KCONFIG:=
 endef
 
diff --git a/package/w1-gpio-custom/src/w1-gpio-custom.c b/package/w1-gpio-custom/src/w1-gpio-custom.c
index 22c0b787f04b8776e17db73d226b7a2f62d9f1b3..8f739d49fd491f48ad54ab088c34486421de63f6 100644
--- a/package/w1-gpio-custom/src/w1-gpio-custom.c
+++ b/package/w1-gpio-custom/src/w1-gpio-custom.c
@@ -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;
 }