]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/hwmon/sch56xx-common.c
usb: host: ehci-msm: Fix register initialization
[karo-tx-linux.git] / drivers / hwmon / sch56xx-common.c
index 7386819832842f867ead2c0a4e13fc4487038d7e..68c350c704fba85ff517f0d5f726ed53d367e45d 100644 (file)
@@ -30,7 +30,6 @@
 #include <linux/watchdog.h>
 #include <linux/miscdevice.h>
 #include <linux/uaccess.h>
-#include <linux/kref.h>
 #include <linux/slab.h>
 #include "sch56xx-common.h"
 
@@ -67,7 +66,6 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
 struct sch56xx_watchdog_data {
        u16 addr;
        struct mutex *io_lock;
-       struct kref kref;
        struct watchdog_info wdinfo;
        struct watchdog_device wddev;
        u8 watchdog_preset;
@@ -258,15 +256,6 @@ EXPORT_SYMBOL(sch56xx_read_virtual_reg12);
  * Watchdog routines
  */
 
-/* Release our data struct when we're unregistered *and*
-   all references to our watchdog device are released */
-static void watchdog_release_resources(struct kref *r)
-{
-       struct sch56xx_watchdog_data *data =
-               container_of(r, struct sch56xx_watchdog_data, kref);
-       kfree(data);
-}
-
 static int watchdog_set_timeout(struct watchdog_device *wddev,
                                unsigned int timeout)
 {
@@ -395,28 +384,12 @@ static int watchdog_stop(struct watchdog_device *wddev)
        return 0;
 }
 
-static void watchdog_ref(struct watchdog_device *wddev)
-{
-       struct sch56xx_watchdog_data *data = watchdog_get_drvdata(wddev);
-
-       kref_get(&data->kref);
-}
-
-static void watchdog_unref(struct watchdog_device *wddev)
-{
-       struct sch56xx_watchdog_data *data = watchdog_get_drvdata(wddev);
-
-       kref_put(&data->kref, watchdog_release_resources);
-}
-
 static const struct watchdog_ops watchdog_ops = {
        .owner          = THIS_MODULE,
        .start          = watchdog_start,
        .stop           = watchdog_stop,
        .ping           = watchdog_trigger,
        .set_timeout    = watchdog_set_timeout,
-       .ref            = watchdog_ref,
-       .unref          = watchdog_unref,
 };
 
 struct sch56xx_watchdog_data *sch56xx_watchdog_register(struct device *parent,
@@ -448,7 +421,6 @@ struct sch56xx_watchdog_data *sch56xx_watchdog_register(struct device *parent,
 
        data->addr = addr;
        data->io_lock = io_lock;
-       kref_init(&data->kref);
 
        strlcpy(data->wdinfo.identity, "sch56xx watchdog",
                sizeof(data->wdinfo.identity));
@@ -494,8 +466,7 @@ EXPORT_SYMBOL(sch56xx_watchdog_register);
 void sch56xx_watchdog_unregister(struct sch56xx_watchdog_data *data)
 {
        watchdog_unregister_device(&data->wddev);
-       kref_put(&data->kref, watchdog_release_resources);
-       /* Don't touch data after this it may have been free-ed! */
+       kfree(data);
 }
 EXPORT_SYMBOL(sch56xx_watchdog_unregister);