diff options
| author | Mark Brown <broonie@linaro.org> | 2013-08-29 13:59:05 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@linaro.org> | 2013-08-29 13:59:05 +0100 |
| commit | b5f9a9d5113efe11a3b9dad600a6f833274da595 (patch) | |
| tree | 6db5fb34a2d590086e25f7f682fecb5f43e6b283 /drivers/misc/mei/hw-me.c | |
| parent | a1216394e620d0dfbb03c712ae3210e7b77c9e11 (diff) | |
| parent | 8d4d08ce8319ae26227c4dd558405963c14c2037 (diff) | |
| download | talos-op-linux-b5f9a9d5113efe11a3b9dad600a6f833274da595.tar.gz talos-op-linux-b5f9a9d5113efe11a3b9dad600a6f833274da595.zip | |
Merge remote-tracking branch 'spi/topic/rspi' into spi-pdata
Conflicts:
drivers/spi/spi-rspi.c
Diffstat (limited to 'drivers/misc/mei/hw-me.c')
| -rw-r--r-- | drivers/misc/mei/hw-me.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c index e4f8dec4dc3c..b22c7e247225 100644 --- a/drivers/misc/mei/hw-me.c +++ b/drivers/misc/mei/hw-me.c @@ -239,14 +239,18 @@ static int mei_me_hw_ready_wait(struct mei_device *dev) if (mei_me_hw_is_ready(dev)) return 0; + dev->recvd_hw_ready = false; mutex_unlock(&dev->device_lock); err = wait_event_interruptible_timeout(dev->wait_hw_ready, - dev->recvd_hw_ready, MEI_INTEROP_TIMEOUT); + dev->recvd_hw_ready, + mei_secs_to_jiffies(MEI_INTEROP_TIMEOUT)); mutex_lock(&dev->device_lock); if (!err && !dev->recvd_hw_ready) { + if (!err) + err = -ETIMEDOUT; dev_err(&dev->pdev->dev, - "wait hw ready failed. status = 0x%x\n", err); - return -ETIMEDOUT; + "wait hw ready failed. status = %d\n", err); + return err; } dev->recvd_hw_ready = false; @@ -483,7 +487,9 @@ irqreturn_t mei_me_irq_thread_handler(int irq, void *dev_id) /* check if ME wants a reset */ if (!mei_hw_is_ready(dev) && dev->dev_state != MEI_DEV_RESETTING && - dev->dev_state != MEI_DEV_INITIALIZING) { + dev->dev_state != MEI_DEV_INITIALIZING && + dev->dev_state != MEI_DEV_POWER_DOWN && + dev->dev_state != MEI_DEV_POWER_UP) { dev_dbg(&dev->pdev->dev, "FW not ready.\n"); mei_reset(dev, 1); mutex_unlock(&dev->device_lock); |

