diff options
author | Guenter Roeck <linux@roeck-us.net> | 2015-12-26 01:01:45 +0100 |
---|---|---|
committer | Wim Van Sebroeck <wim@iguana.be> | 2015-12-29 20:36:04 +0100 |
commit | 3b8d058cfe6a3b14abee324f4c4b33e64bf61aeb (patch) | |
tree | 6b1b2085936ceef771ca8165529de8a321f4b06e /drivers/hwmon/sch56xx-common.c | |
parent | watchdog: da9055_wdt: Drop reference counting (diff) | |
download | linux-3b8d058cfe6a3b14abee324f4c4b33e64bf61aeb.tar.xz linux-3b8d058cfe6a3b14abee324f4c4b33e64bf61aeb.zip |
hwmon: (sch56xx) Drop watchdog driver data reference count callbacks
Reference counting is now implemented in the watchdog core and no longer
required in watchdog drivers.
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers/hwmon/sch56xx-common.c')
-rw-r--r-- | drivers/hwmon/sch56xx-common.c | 31 |
1 files changed, 1 insertions, 30 deletions
diff --git a/drivers/hwmon/sch56xx-common.c b/drivers/hwmon/sch56xx-common.c index 738681983284..68c350c704fb 100644 --- a/drivers/hwmon/sch56xx-common.c +++ b/drivers/hwmon/sch56xx-common.c @@ -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); |