aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/mei/interrupt.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/misc/mei/interrupt.c')
-rw-r--r--drivers/misc/mei/interrupt.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/misc/mei/interrupt.c b/drivers/misc/mei/interrupt.c
index 0f25cee6ab85..0900a711badd 100644
--- a/drivers/misc/mei/interrupt.c
+++ b/drivers/misc/mei/interrupt.c
@@ -1224,10 +1224,9 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,
1224 } 1224 }
1225 } 1225 }
1226 1226
1227 if (dev->stop && !dev->wd_pending) { 1227 if (dev->wd_state == MEI_WD_STOPPING) {
1228 dev->wd_stopped = true; 1228 dev->wd_state = MEI_WD_IDLE;
1229 wake_up_interruptible(&dev->wait_stop_wd); 1229 wake_up_interruptible(&dev->wait_stop_wd);
1230 return 0;
1231 } 1230 }
1232 1231
1233 if (dev->extra_write_index) { 1232 if (dev->extra_write_index) {
@@ -1250,14 +1249,12 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,
1250 1249
1251 dev->wd_pending = false; 1250 dev->wd_pending = false;
1252 1251
1253 if (dev->wd_timeout) 1252 if (dev->wd_state == MEI_WD_RUNNING)
1254 *slots -= mei_data2slots(MEI_WD_START_MSG_SIZE); 1253 *slots -= mei_data2slots(MEI_WD_START_MSG_SIZE);
1255 else 1254 else
1256 *slots -= mei_data2slots(MEI_WD_STOP_MSG_SIZE); 1255 *slots -= mei_data2slots(MEI_WD_STOP_MSG_SIZE);
1257 } 1256 }
1258 } 1257 }
1259 if (dev->stop)
1260 return -ENODEV;
1261 1258
1262 /* complete control write list CB */ 1259 /* complete control write list CB */
1263 dev_dbg(&dev->pdev->dev, "complete control write list cb.\n"); 1260 dev_dbg(&dev->pdev->dev, "complete control write list cb.\n");