X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fchar%2Fwatchdog%2Fpcwd_usb.c;fp=drivers%2Fchar%2Fwatchdog%2Fpcwd_usb.c;h=1533f56baa42f8304e889b280994510c380cabec;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=b7ae73dcdd0823602e1c75983fdb7455f9a7a824;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/drivers/char/watchdog/pcwd_usb.c b/drivers/char/watchdog/pcwd_usb.c index b7ae73dcd..1533f56ba 100644 --- a/drivers/char/watchdog/pcwd_usb.c +++ b/drivers/char/watchdog/pcwd_usb.c @@ -24,6 +24,7 @@ * http://www.berkprod.com/ or http://www.pcwatchdog.com/ */ +#include #include #include #include @@ -41,7 +42,6 @@ #include #include #include -#include #ifdef CONFIG_USB_DEBUG @@ -143,7 +143,7 @@ struct usb_pcwd_private { static struct usb_pcwd_private *usb_pcwd_device; /* prevent races between open() and disconnect() */ -static DEFINE_MUTEX(disconnect_mutex); +static DECLARE_MUTEX (disconnect_sem); /* local function prototypes */ static int usb_pcwd_probe (struct usb_interface *interface, const struct usb_device_id *id); @@ -316,19 +316,6 @@ static int usb_pcwd_get_temperature(struct usb_pcwd_private *usb_pcwd, int *temp return 0; } -static int usb_pcwd_get_timeleft(struct usb_pcwd_private *usb_pcwd, int *time_left) -{ - unsigned char msb, lsb; - - /* Read the time that's left before rebooting */ - /* Note: if the board is not yet armed then we will read 0xFFFF */ - usb_pcwd_send_command(usb_pcwd, CMD_READ_WATCHDOG_TIMEOUT, &msb, &lsb); - - *time_left = (msb << 8) + lsb; - - return 0; -} - /* * /dev/watchdog handling */ @@ -434,16 +421,6 @@ static int usb_pcwd_ioctl(struct inode *inode, struct file *file, case WDIOC_GETTIMEOUT: return put_user(heartbeat, p); - case WDIOC_GETTIMELEFT: - { - int time_left; - - if (usb_pcwd_get_timeleft(usb_pcwd_device, &time_left)) - return -EFAULT; - - return put_user(time_left, p); - } - default: return -ENOIOCTLCMD; } @@ -523,7 +500,7 @@ static int usb_pcwd_notify_sys(struct notifier_block *this, unsigned long code, * Kernel Interfaces */ -static const struct file_operations usb_pcwd_fops = { +static struct file_operations usb_pcwd_fops = { .owner = THIS_MODULE, .llseek = no_llseek, .write = usb_pcwd_write, @@ -538,7 +515,7 @@ static struct miscdevice usb_pcwd_miscdev = { .fops = &usb_pcwd_fops, }; -static const struct file_operations usb_pcwd_temperature_fops = { +static struct file_operations usb_pcwd_temperature_fops = { .owner = THIS_MODULE, .llseek = no_llseek, .read = usb_pcwd_temperature_read, @@ -727,8 +704,7 @@ err_out_misc_deregister: err_out_unregister_reboot: unregister_reboot_notifier(&usb_pcwd_notifier); error: - if (usb_pcwd) - usb_pcwd_delete(usb_pcwd); + usb_pcwd_delete (usb_pcwd); usb_pcwd_device = NULL; return retval; } @@ -747,7 +723,7 @@ static void usb_pcwd_disconnect(struct usb_interface *interface) struct usb_pcwd_private *usb_pcwd; /* prevent races with open() */ - mutex_lock(&disconnect_mutex); + down (&disconnect_sem); usb_pcwd = usb_get_intfdata (interface); usb_set_intfdata (interface, NULL); @@ -773,7 +749,7 @@ static void usb_pcwd_disconnect(struct usb_interface *interface) cards_found--; - mutex_unlock(&disconnect_mutex); + up (&disconnect_sem); printk(KERN_INFO PFX "USB PC Watchdog disconnected\n"); }