summaryrefslogtreecommitdiff
path: root/drivers/misc/mei/main.c
diff options
context:
space:
mode:
authorTomas Winkler <tomas.winkler@intel.com>2012-08-16 16:39:43 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-08-16 16:51:02 (GMT)
commitc216fdeb2e7371554c56ba457c374cce9c77f91a (patch)
tree9d88b3170a5470844e61ac90a30fd923d50df14b /drivers/misc/mei/main.c
parent248ffdf7c95726a8dae76e25fdb037899c5b77fa (diff)
downloadlinux-fsl-qoriq-c216fdeb2e7371554c56ba457c374cce9c77f91a.tar.xz
mei: wd: decouple and revamp watchdog state machine
Before ME watchdog was exported through standard watchdog interface it was closed and started together with the mei device. The major issue is that closing ME watchdog disabled also MEI device, to fix this the watchdog state machine has to be independent from MEI state machine. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/mei/main.c')
-rw-r--r--drivers/misc/mei/main.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/misc/mei/main.c b/drivers/misc/mei/main.c
index 5c557dd..9a59533 100644
--- a/drivers/misc/mei/main.c
+++ b/drivers/misc/mei/main.c
@@ -1060,7 +1060,9 @@ static void __devexit mei_remove(struct pci_dev *pdev)
mutex_lock(&dev->device_lock);
- mei_wd_stop(dev, false);
+ cancel_delayed_work(&dev->timer_work);
+
+ mei_wd_stop(dev);
mei_device = NULL;
@@ -1115,8 +1117,11 @@ static int mei_pci_suspend(struct device *device)
if (!dev)
return -ENODEV;
mutex_lock(&dev->device_lock);
+
+ cancel_delayed_work(&dev->timer_work);
+
/* Stop watchdog if exists */
- err = mei_wd_stop(dev, true);
+ err = mei_wd_stop(dev);
/* Set new mei state */
if (dev->dev_state == MEI_DEV_ENABLED ||
dev->dev_state == MEI_DEV_RECOVERING_FROM_RESET) {