Commit f664684a authored by Sylwester Nawrocki's avatar Sylwester Nawrocki Committed by Mauro Carvalho Chehab

[media] s5p-fimc: Prevent lock up caused by incomplete H/W initialization

The following ioctl sequence causes fimc_dma_run() to start processing without
complete scaler and DMA initialization which causes missing interrupt and
blocking on DQBUF:
S_FMT, STREAMON, QBUF, DQBUF, STREAMOFF, STREAMON, QBUF, DQBUF.

Fix this regression caused by moving pm_runtime* calls to start/stop_streaming
callback by making sure the fimc_m2m_resume() is always invoked when expected.
Reported-by: default avatarTomasz Stanislawski <t.stanislaws@samsung.com>
Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent f1d99f39
...@@ -1784,9 +1784,8 @@ static int fimc_runtime_resume(struct device *dev) ...@@ -1784,9 +1784,8 @@ static int fimc_runtime_resume(struct device *dev)
/* Resume the capture or mem-to-mem device */ /* Resume the capture or mem-to-mem device */
if (fimc_capture_busy(fimc)) if (fimc_capture_busy(fimc))
return fimc_capture_resume(fimc); return fimc_capture_resume(fimc);
else if (fimc_m2m_pending(fimc))
return fimc_m2m_resume(fimc); return fimc_m2m_resume(fimc);
return 0;
} }
static int fimc_runtime_suspend(struct device *dev) static int fimc_runtime_suspend(struct device *dev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment