aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ipq806x/patches-4.4/009-5-watchdog-Create-watchdog-device-in-watchdog_dev-c.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ipq806x/patches-4.4/009-5-watchdog-Create-watchdog-device-in-watchdog_dev-c.patch')
-rw-r--r--target/linux/ipq806x/patches-4.4/009-5-watchdog-Create-watchdog-device-in-watchdog_dev-c.patch261
1 files changed, 0 insertions, 261 deletions
diff --git a/target/linux/ipq806x/patches-4.4/009-5-watchdog-Create-watchdog-device-in-watchdog_dev-c.patch b/target/linux/ipq806x/patches-4.4/009-5-watchdog-Create-watchdog-device-in-watchdog_dev-c.patch
deleted file mode 100644
index 059ebdd823..0000000000
--- a/target/linux/ipq806x/patches-4.4/009-5-watchdog-Create-watchdog-device-in-watchdog_dev-c.patch
+++ /dev/null
@@ -1,261 +0,0 @@
-From 32ecc6392654a0db34b310e8924b5b2c3b8bf503 Mon Sep 17 00:00:00 2001
-From: Guenter Roeck <linux@roeck-us.net>
-Date: Fri, 25 Dec 2015 16:01:40 -0800
-Subject: watchdog: Create watchdog device in watchdog_dev.c
-
-The watchdog character device is currently created in watchdog_dev.c,
-and the watchdog device in watchdog_core.c. This results in
-cross-dependencies, since device creation needs to know the watchdog
-character device number as well as the watchdog class, both of which
-reside in watchdog_dev.c.
-
-Create the watchdog device in watchdog_dev.c to simplify the code.
-
-Inspired by earlier patch set from Damien Riegel.
-
-Cc: Damien Riegel <damien.riegel@savoirfairelinux.com>
-Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
----
- drivers/watchdog/watchdog_core.c | 33 ++++--------------
- drivers/watchdog/watchdog_core.h | 4 +--
- drivers/watchdog/watchdog_dev.c | 73 +++++++++++++++++++++++++++++++++-------
- 3 files changed, 69 insertions(+), 41 deletions(-)
-
---- a/drivers/watchdog/watchdog_core.c
-+++ b/drivers/watchdog/watchdog_core.c
-@@ -42,7 +42,6 @@
- #include "watchdog_core.h" /* For watchdog_dev_register/... */
-
- static DEFINE_IDA(watchdog_ida);
--static struct class *watchdog_class;
-
- /*
- * Deferred Registration infrastructure.
-@@ -194,7 +193,7 @@ EXPORT_SYMBOL_GPL(watchdog_set_restart_p
-
- static int __watchdog_register_device(struct watchdog_device *wdd)
- {
-- int ret, id = -1, devno;
-+ int ret, id = -1;
-
- if (wdd == NULL || wdd->info == NULL || wdd->ops == NULL)
- return -EINVAL;
-@@ -247,16 +246,6 @@ static int __watchdog_register_device(st
- }
- }
-
-- devno = wdd->cdev.dev;
-- wdd->dev = device_create(watchdog_class, wdd->parent, devno,
-- wdd, "watchdog%d", wdd->id);
-- if (IS_ERR(wdd->dev)) {
-- watchdog_dev_unregister(wdd);
-- ida_simple_remove(&watchdog_ida, id);
-- ret = PTR_ERR(wdd->dev);
-- return ret;
-- }
--
- if (test_bit(WDOG_STOP_ON_REBOOT, &wdd->status)) {
- wdd->reboot_nb.notifier_call = watchdog_reboot_notifier;
-
-@@ -265,9 +254,7 @@ static int __watchdog_register_device(st
- dev_err(wdd->dev, "Cannot register reboot notifier (%d)\n",
- ret);
- watchdog_dev_unregister(wdd);
-- device_destroy(watchdog_class, devno);
- ida_simple_remove(&watchdog_ida, wdd->id);
-- wdd->dev = NULL;
- return ret;
- }
- }
-@@ -311,9 +298,6 @@ EXPORT_SYMBOL_GPL(watchdog_register_devi
-
- static void __watchdog_unregister_device(struct watchdog_device *wdd)
- {
-- int ret;
-- int devno;
--
- if (wdd == NULL)
- return;
-
-@@ -323,13 +307,8 @@ static void __watchdog_unregister_device
- if (test_bit(WDOG_STOP_ON_REBOOT, &wdd->status))
- unregister_reboot_notifier(&wdd->reboot_nb);
-
-- devno = wdd->cdev.dev;
-- ret = watchdog_dev_unregister(wdd);
-- if (ret)
-- pr_err("error unregistering /dev/watchdog (err=%d)\n", ret);
-- device_destroy(watchdog_class, devno);
-+ watchdog_dev_unregister(wdd);
- ida_simple_remove(&watchdog_ida, wdd->id);
-- wdd->dev = NULL;
- }
-
- /**
-@@ -370,9 +349,11 @@ static int __init watchdog_deferred_regi
-
- static int __init watchdog_init(void)
- {
-- watchdog_class = watchdog_dev_init();
-- if (IS_ERR(watchdog_class))
-- return PTR_ERR(watchdog_class);
-+ int err;
-+
-+ err = watchdog_dev_init();
-+ if (err < 0)
-+ return err;
-
- watchdog_deferred_registration();
- return 0;
---- a/drivers/watchdog/watchdog_core.h
-+++ b/drivers/watchdog/watchdog_core.h
-@@ -32,6 +32,6 @@
- * Functions/procedures to be called by the core
- */
- extern int watchdog_dev_register(struct watchdog_device *);
--extern int watchdog_dev_unregister(struct watchdog_device *);
--extern struct class * __init watchdog_dev_init(void);
-+extern void watchdog_dev_unregister(struct watchdog_device *);
-+extern int __init watchdog_dev_init(void);
- extern void __exit watchdog_dev_exit(void);
---- a/drivers/watchdog/watchdog_dev.c
-+++ b/drivers/watchdog/watchdog_dev.c
-@@ -628,17 +628,18 @@ static struct miscdevice watchdog_miscde
- };
-
- /*
-- * watchdog_dev_register: register a watchdog device
-+ * watchdog_cdev_register: register watchdog character device
- * @wdd: watchdog device
-+ * @devno: character device number
- *
-- * Register a watchdog device including handling the legacy
-+ * Register a watchdog character device including handling the legacy
- * /dev/watchdog node. /dev/watchdog is actually a miscdevice and
- * thus we set it up like that.
- */
-
--int watchdog_dev_register(struct watchdog_device *wdd)
-+static int watchdog_cdev_register(struct watchdog_device *wdd, dev_t devno)
- {
-- int err, devno;
-+ int err;
-
- if (wdd->id == 0) {
- old_wdd = wdd;
-@@ -656,7 +657,6 @@ int watchdog_dev_register(struct watchdo
- }
-
- /* Fill in the data structures */
-- devno = MKDEV(MAJOR(watchdog_devt), wdd->id);
- cdev_init(&wdd->cdev, &watchdog_fops);
- wdd->cdev.owner = wdd->ops->owner;
-
-@@ -674,13 +674,14 @@ int watchdog_dev_register(struct watchdo
- }
-
- /*
-- * watchdog_dev_unregister: unregister a watchdog device
-+ * watchdog_cdev_unregister: unregister watchdog character device
- * @watchdog: watchdog device
- *
-- * Unregister the watchdog and if needed the legacy /dev/watchdog device.
-+ * Unregister watchdog character device and if needed the legacy
-+ * /dev/watchdog device.
- */
-
--int watchdog_dev_unregister(struct watchdog_device *wdd)
-+static void watchdog_cdev_unregister(struct watchdog_device *wdd)
- {
- mutex_lock(&wdd->lock);
- set_bit(WDOG_UNREGISTERED, &wdd->status);
-@@ -691,7 +692,6 @@ int watchdog_dev_unregister(struct watch
- misc_deregister(&watchdog_miscdev);
- old_wdd = NULL;
- }
-- return 0;
- }
-
- static struct class watchdog_class = {
-@@ -701,29 +701,76 @@ static struct class watchdog_class = {
- };
-
- /*
-+ * watchdog_dev_register: register a watchdog device
-+ * @wdd: watchdog device
-+ *
-+ * Register a watchdog device including handling the legacy
-+ * /dev/watchdog node. /dev/watchdog is actually a miscdevice and
-+ * thus we set it up like that.
-+ */
-+
-+int watchdog_dev_register(struct watchdog_device *wdd)
-+{
-+ struct device *dev;
-+ dev_t devno;
-+ int ret;
-+
-+ devno = MKDEV(MAJOR(watchdog_devt), wdd->id);
-+
-+ ret = watchdog_cdev_register(wdd, devno);
-+ if (ret)
-+ return ret;
-+
-+ dev = device_create(&watchdog_class, wdd->parent, devno, wdd,
-+ "watchdog%d", wdd->id);
-+ if (IS_ERR(dev)) {
-+ watchdog_cdev_unregister(wdd);
-+ return PTR_ERR(dev);
-+ }
-+ wdd->dev = dev;
-+
-+ return ret;
-+}
-+
-+/*
-+ * watchdog_dev_unregister: unregister a watchdog device
-+ * @watchdog: watchdog device
-+ *
-+ * Unregister watchdog device and if needed the legacy
-+ * /dev/watchdog device.
-+ */
-+
-+void watchdog_dev_unregister(struct watchdog_device *wdd)
-+{
-+ watchdog_cdev_unregister(wdd);
-+ device_destroy(&watchdog_class, wdd->dev->devt);
-+ wdd->dev = NULL;
-+}
-+
-+/*
- * watchdog_dev_init: init dev part of watchdog core
- *
- * Allocate a range of chardev nodes to use for watchdog devices
- */
-
--struct class * __init watchdog_dev_init(void)
-+int __init watchdog_dev_init(void)
- {
- int err;
-
- err = class_register(&watchdog_class);
- if (err < 0) {
- pr_err("couldn't register class\n");
-- return ERR_PTR(err);
-+ return err;
- }
-
- err = alloc_chrdev_region(&watchdog_devt, 0, MAX_DOGS, "watchdog");
- if (err < 0) {
- pr_err("watchdog: unable to allocate char dev region\n");
- class_unregister(&watchdog_class);
-- return ERR_PTR(err);
-+ return err;
- }
-
-- return &watchdog_class;
-+ return 0;
- }
-
- /*