[media] s5p-mfc: call wake_up_dev if in suspend mode
If a frame is still decoding when system enters suspend mode, we wait on the device queue for a interrupt condition. This sometimes leads to a timeout because the device queue might not be woken up everytime. Usually, the context queue gets woken up when that context's frame gets decoded. This patch adds a condition to wake up the device queue along with the context queue when the system is in suspend mode. Since the device queue is now woken up, we don't have to check the context's int_cond flag while waiting. Also, we can skip calling try_run after waking up the device queue to ensure that we don't have to wait for more than one frame to be processed. Signed-off-by: Prathyush K <prathyush.k@samsung.com> Signed-off-by: Arun Mankuzhi <arun.m@samsung.com> Signed-off-by: Arun Kumar K <arun.kk@samsung.com> Signed-off-by: Kamil Debski <k.debski@samsung.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
d6950c4721
commit
76a4ddbd52
|
@ -404,6 +404,10 @@ leave_handle_frame:
|
|||
if (test_and_clear_bit(0, &dev->hw_lock) == 0)
|
||||
BUG();
|
||||
s5p_mfc_clock_off();
|
||||
/* if suspending, wake up device and do not try_run again*/
|
||||
if (test_bit(0, &dev->enter_suspend))
|
||||
wake_up_dev(dev, reason, err);
|
||||
else
|
||||
s5p_mfc_hw_call(dev->mfc_ops, try_run, dev);
|
||||
}
|
||||
|
||||
|
@ -1286,9 +1290,7 @@ static int s5p_mfc_suspend(struct device *dev)
|
|||
/* Try and lock the HW */
|
||||
/* Wait on the interrupt waitqueue */
|
||||
ret = wait_event_interruptible_timeout(m_dev->queue,
|
||||
m_dev->int_cond || m_dev->ctx[m_dev->curr_ctx]->int_cond,
|
||||
msecs_to_jiffies(MFC_INT_TIMEOUT));
|
||||
|
||||
m_dev->int_cond, msecs_to_jiffies(MFC_INT_TIMEOUT));
|
||||
if (ret == 0) {
|
||||
mfc_err("Waiting for hardware to finish timed out\n");
|
||||
return -EIO;
|
||||
|
|
Loading…
Reference in a new issue