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

Commit 9b901ee0 authored by Wim Van Sebroeck's avatar Wim Van Sebroeck
Browse files

[WATCHDOG] wdt_pci.c: remove #ifdef CONFIG_WDT_501_PCI



Change the wdt_pci.c watchdog driver so that the code is the same for
both the PCI-WDT500 as the PCI-WDT501 card. The selection of the card
is now being done via the module parameter: 'type' instead of the
config option CONFIG_WDT_501_PCI.

Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent 44df7535
Loading
Loading
Loading
Loading
+5 −13
Original line number Diff line number Diff line
@@ -1007,24 +1007,16 @@ config WDTPCI
	---help---
	  If you have a PCI-WDT500/501 watchdog board, say Y here, otherwise N.

	  To compile this driver as a module, choose M here: the
	  module will be called wdt_pci.

config WDT_501_PCI
	bool "PCI-WDT501 features"
	depends on WDTPCI
	help
	  Saying Y here and creating a character special file /dev/temperature
	  with major number 10 and minor number 131 ("man mknod") will give
	  you a thermometer inside your computer: reading from
	  /dev/temperature yields one byte, the temperature in degrees
	  Fahrenheit. This works only if you have a PCI-WDT501 watchdog board
	  installed.
	  If you have a PCI-WDT501 watchdog board then you can enable the
	  temperature sensor by setting the type parameter to 501.

	  If you want to enable the Fan Tachometer on the PCI-WDT501, then you
	  can do this via the tachometer parameter. Only do this if you have a
	  fan tachometer actually set up.

	  To compile this driver as a module, choose M here: the
	  module will be called wdt_pci.

#
# USB-based Watchdog Cards
#
+61 −61
Original line number Diff line number Diff line
@@ -99,14 +99,16 @@ MODULE_PARM_DESC(nowayout,
		"Watchdog cannot be stopped once started (default="
				__MODULE_STRING(WATCHDOG_NOWAYOUT) ")");

#ifdef CONFIG_WDT_501_PCI
/* Support for the Fan Tachometer on the PCI-WDT501 */
static int tachometer;

module_param(tachometer, int, 0);
MODULE_PARM_DESC(tachometer,
		"PCI-WDT501 Fan Tachometer support (0=disable, default=0)");
#endif /* CONFIG_WDT_501_PCI */

static int type = 500;
module_param(type, int, 0);
MODULE_PARM_DESC(type,
		"PCI-WDT501 Card type (500 or 501 , default=500)");

/*
 *	Programming support
@@ -266,7 +268,7 @@ static int wdtpci_get_status(int *status)
		*status |= WDIOF_EXTERN1;
	if (new_status & WDC_SR_ISII1)
		*status |= WDIOF_EXTERN2;
#ifdef CONFIG_WDT_501_PCI
	if (type == 501) {
		if (!(new_status & WDC_SR_TGOOD))
			*status |= WDIOF_OVERHEAT;
		if (!(new_status & WDC_SR_PSUOVER))
@@ -277,11 +279,10 @@ static int wdtpci_get_status(int *status)
			if (!(new_status & WDC_SR_FANGOOD))
				*status |= WDIOF_FANFAULT;
		}
#endif /* CONFIG_WDT_501_PCI */
	}
	return 0;
}

#ifdef CONFIG_WDT_501_PCI
/**
 *	wdtpci_get_temperature:
 *
@@ -300,7 +301,6 @@ static int wdtpci_get_temperature(int *temperature)
	*temperature = (c * 11 / 15) + 7;
	return 0;
}
#endif /* CONFIG_WDT_501_PCI */

/**
 *	wdtpci_interrupt:
@@ -327,10 +327,10 @@ static irqreturn_t wdtpci_interrupt(int irq, void *dev_id)

	printk(KERN_CRIT PFX "status %d\n", status);

#ifdef CONFIG_WDT_501_PCI
	if (type == 501) {
		if (!(status & WDC_SR_TGOOD)) {
		u8 alarm = inb(WDT_RT);
		printk(KERN_CRIT PFX "Overheat alarm.(%d)\n", alarm);
			printk(KERN_CRIT PFX "Overheat alarm.(%d)\n",
								inb(WDT_RT));
			udelay(8);
		}
		if (!(status & WDC_SR_PSUOVER))
@@ -341,7 +341,7 @@ static irqreturn_t wdtpci_interrupt(int irq, void *dev_id)
			if (!(status & WDC_SR_FANGOOD))
				printk(KERN_CRIT PFX "Possible fan fault.\n");
		}
#endif /* CONFIG_WDT_501_PCI */
	}
	if (!(status & WDC_SR_WCCR)) {
#ifdef SOFTWARE_REBOOT
#ifdef ONLY_TESTING
@@ -377,6 +377,7 @@ static ssize_t wdtpci_write(struct file *file, const char __user *buf,
		if (!nowayout) {
			size_t i;

			/* In case it was set long ago */
			expect_close = 0;

			for (i = 0; i != count; i++) {
@@ -406,10 +407,10 @@ static ssize_t wdtpci_write(struct file *file, const char __user *buf,
static long wdtpci_ioctl(struct file *file, unsigned int cmd,
							unsigned long arg)
{
	int new_heartbeat;
	int status;
	void __user *argp = (void __user *)arg;
	int __user *p = argp;
	int new_heartbeat;
	int status;

	static struct watchdog_info ident = {
		.options =		WDIOF_SETTIMEOUT|
@@ -421,11 +422,12 @@ static long wdtpci_ioctl(struct file *file, unsigned int cmd,

	/* Add options according to the card we have */
	ident.options |= (WDIOF_EXTERN1|WDIOF_EXTERN2);
#ifdef CONFIG_WDT_501_PCI
	ident.options |= (WDIOF_OVERHEAT|WDIOF_POWERUNDER|WDIOF_POWEROVER);
	if (type == 501) {
		ident.options |= (WDIOF_OVERHEAT|WDIOF_POWERUNDER|
							WDIOF_POWEROVER);
		if (tachometer)
			ident.options |= WDIOF_FANFAULT;
#endif /* CONFIG_WDT_501_PCI */
	}

	switch (cmd) {
	case WDIOC_GETSUPPORT:
@@ -503,7 +505,6 @@ static int wdtpci_release(struct inode *inode, struct file *file)
	return 0;
}

#ifdef CONFIG_WDT_501_PCI
/**
 *	wdtpci_temp_read:
 *	@file: file handle to the watchdog board
@@ -554,7 +555,6 @@ static int wdtpci_temp_release(struct inode *inode, struct file *file)
{
	return 0;
}
#endif /* CONFIG_WDT_501_PCI */

/**
 *	notify_sys:
@@ -596,7 +596,6 @@ static struct miscdevice wdtpci_miscdev = {
	.fops	= &wdtpci_fops,
};

#ifdef CONFIG_WDT_501_PCI
static const struct file_operations wdtpci_temp_fops = {
	.owner		= THIS_MODULE,
	.llseek		= no_llseek,
@@ -610,7 +609,6 @@ static struct miscdevice temp_miscdev = {
	.name	= "temperature",
	.fops	= &wdtpci_temp_fops,
};
#endif /* CONFIG_WDT_501_PCI */

/*
 *	The WDT card needs to learn about soft shutdowns in order to
@@ -633,6 +631,11 @@ static int __devinit wdtpci_init_one(struct pci_dev *dev,
		return -ENODEV;
	}

	if (type != 500 && type != 501) {
		printk(KERN_ERR PFX "unknown card type '%d'.\n", type);
		return -ENODEV;
	}

	if (pci_enable_device(dev)) {
		printk(KERN_ERR PFX "Not possible to enable PCI Device\n");
		return -ENODEV;
@@ -678,7 +681,7 @@ static int __devinit wdtpci_init_one(struct pci_dev *dev,
		goto out_irq;
	}

#ifdef CONFIG_WDT_501_PCI
	if (type == 501) {
		ret = misc_register(&temp_miscdev);
		if (ret) {
			printk(KERN_ERR PFX
@@ -686,7 +689,7 @@ static int __devinit wdtpci_init_one(struct pci_dev *dev,
							TEMP_MINOR, ret);
			goto out_rbt;
		}
#endif /* CONFIG_WDT_501_PCI */
	}

	ret = misc_register(&wdtpci_miscdev);
	if (ret) {
@@ -698,20 +701,18 @@ static int __devinit wdtpci_init_one(struct pci_dev *dev,

	printk(KERN_INFO PFX "initialized. heartbeat=%d sec (nowayout=%d)\n",
		heartbeat, nowayout);
#ifdef CONFIG_WDT_501_PCI
	if (type == 501)
		printk(KERN_INFO "wdt: Fan Tachometer is %s\n",
				(tachometer ? "Enabled" : "Disabled"));
#endif /* CONFIG_WDT_501_PCI */

	ret = 0;
out:
	return ret;

out_misc:
#ifdef CONFIG_WDT_501_PCI
	if (type == 501)
		misc_deregister(&temp_miscdev);
out_rbt:
#endif /* CONFIG_WDT_501_PCI */
	unregister_reboot_notifier(&wdtpci_notifier);
out_irq:
	free_irq(irq, &wdtpci_miscdev);
@@ -728,9 +729,8 @@ static void __devexit wdtpci_remove_one(struct pci_dev *pdev)
	/* here we assume only one device will ever have
	 * been picked up and registered by probe function */
	misc_deregister(&wdtpci_miscdev);
#ifdef CONFIG_WDT_501_PCI
	if (type == 501)
		misc_deregister(&temp_miscdev);
#endif /* CONFIG_WDT_501_PCI */
	unregister_reboot_notifier(&wdtpci_notifier);
	free_irq(irq, &wdtpci_miscdev);
	release_region(io, 16);