mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 03:33:59 +08:00
[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: Tomasz Stanislawski <t.stanislaws@samsung.com> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
f1d99f39fb
commit
f664684a56
@ -1784,9 +1784,8 @@ static int fimc_runtime_resume(struct device *dev)
|
||||
/* Resume the capture or mem-to-mem device */
|
||||
if (fimc_capture_busy(fimc))
|
||||
return fimc_capture_resume(fimc);
|
||||
else if (fimc_m2m_pending(fimc))
|
||||
return fimc_m2m_resume(fimc);
|
||||
return 0;
|
||||
|
||||
return fimc_m2m_resume(fimc);
|
||||
}
|
||||
|
||||
static int fimc_runtime_suspend(struct device *dev)
|
||||
|
Loading…
Reference in New Issue
Block a user