Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94f1e9f3 authored by Ben Dooks's avatar Ben Dooks Committed by Wim Van Sebroeck
Browse files

[WATCHDOG] s3c2410 watchdog - replace reboot notifier



Patch from Dimitry Andric <dimitry.andric@tomtom.com>

Change to using platfrom driver's .shutdown method instead
of an reboot notifier

Signed-off-by: default avatarDimitry Andric <dimitry.andric@tomtom.com>
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent af4bb822
Loading
Loading
Loading
Loading
+7 −29
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@
 *	11-Jan-2005	BJD	Fixed divide-by-2 in timeout code
 *	11-Jan-2005	BJD	Fixed divide-by-2 in timeout code
 *
 *
 *	25-Jan-2005	DA	Added suspend/resume support
 *	25-Jan-2005	DA	Added suspend/resume support
 *				Replaced reboot notifier with .shutdown method
 *
 *
 *	10-Mar-2005	LCVR	Changed S3C2410_VA to S3C24XX_VA
 *	10-Mar-2005	LCVR	Changed S3C2410_VA to S3C24XX_VA
*/
*/
@@ -42,8 +43,6 @@
#include <linux/miscdevice.h>
#include <linux/miscdevice.h>
#include <linux/watchdog.h>
#include <linux/watchdog.h>
#include <linux/fs.h>
#include <linux/fs.h>
#include <linux/notifier.h>
#include <linux/reboot.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/device.h>
#include <linux/interrupt.h>
#include <linux/interrupt.h>
@@ -319,20 +318,6 @@ static int s3c2410wdt_ioctl(struct inode *inode, struct file *file,
	}
	}
}
}


/*
 *	Notifier for system down
 */

static int s3c2410wdt_notify_sys(struct notifier_block *this, unsigned long code,
			      void *unused)
{
	if(code==SYS_DOWN || code==SYS_HALT) {
		/* Turn the WDT off */
		s3c2410wdt_stop();
	}
	return NOTIFY_DONE;
}

/* kernel interface */
/* kernel interface */


static struct file_operations s3c2410wdt_fops = {
static struct file_operations s3c2410wdt_fops = {
@@ -350,10 +335,6 @@ static struct miscdevice s3c2410wdt_miscdev = {
	.fops		= &s3c2410wdt_fops,
	.fops		= &s3c2410wdt_fops,
};
};


static struct notifier_block s3c2410wdt_notifier = {
	.notifier_call	= s3c2410wdt_notify_sys,
};

/* interrupt handler code */
/* interrupt handler code */


static irqreturn_t s3c2410wdt_irq(int irqno, void *param,
static irqreturn_t s3c2410wdt_irq(int irqno, void *param,
@@ -434,18 +415,10 @@ static int s3c2410wdt_probe(struct device *dev)
		}
		}
	}
	}


	ret = register_reboot_notifier(&s3c2410wdt_notifier);
	if (ret) {
		printk (KERN_ERR PFX "cannot register reboot notifier (%d)\n",
			ret);
		return ret;
	}

	ret = misc_register(&s3c2410wdt_miscdev);
	ret = misc_register(&s3c2410wdt_miscdev);
	if (ret) {
	if (ret) {
		printk (KERN_ERR PFX "cannot register miscdev on minor=%d (%d)\n",
		printk (KERN_ERR PFX "cannot register miscdev on minor=%d (%d)\n",
			WATCHDOG_MINOR, ret);
			WATCHDOG_MINOR, ret);
		unregister_reboot_notifier(&s3c2410wdt_notifier);
		return ret;
		return ret;
	}
	}


@@ -481,6 +454,11 @@ static int s3c2410wdt_remove(struct device *dev)
	return 0;
	return 0;
}
}


static void s3c2410wdt_shutdown(struct device *dev)
{
	s3c2410wdt_stop();	
}

#ifdef CONFIG_PM
#ifdef CONFIG_PM


static unsigned long wtcon_save;
static unsigned long wtcon_save;
@@ -527,6 +505,7 @@ static struct device_driver s3c2410wdt_driver = {
	.bus		= &platform_bus_type,
	.bus		= &platform_bus_type,
	.probe		= s3c2410wdt_probe,
	.probe		= s3c2410wdt_probe,
	.remove		= s3c2410wdt_remove,
	.remove		= s3c2410wdt_remove,
	.shutdown	= s3c2410wdt_shutdown,
	.suspend	= s3c2410wdt_suspend,
	.suspend	= s3c2410wdt_suspend,
	.resume		= s3c2410wdt_resume,
	.resume		= s3c2410wdt_resume,
};
};
@@ -543,7 +522,6 @@ static int __init watchdog_init(void)
static void __exit watchdog_exit(void)
static void __exit watchdog_exit(void)
{
{
	driver_unregister(&s3c2410wdt_driver);
	driver_unregister(&s3c2410wdt_driver);
	unregister_reboot_notifier(&s3c2410wdt_notifier);
}
}


module_init(watchdog_init);
module_init(watchdog_init);