mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
media: rcar-vin: Use user provided buffers when starting
When adding an internal scratch buffer to improve buffer handling when stopping it was also erroneously used when syncing at capture start. This led to that the first three buffers captured were always dropped as they were captured in the scratch buffer instead of in a buffer provided by the user. Allow the hardware to be given user provided buffers when preparing for capture in the stopped state. This still allows the driver to sync with the hardware and always completes the buffers to user-space in the correct order as no buffers are completed before the sync is complete. This change improves the driver as buffers are completed and given to the user three frames earlier than before. The change also fixes a warning produced by v4l2-compliance, warn: v4l2-test-buffers.cpp(448): got sequence number 3, expected 0 [hverkuil: fixed some typos in the Subject and the log message] Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
1c43c1ecd6
commit
a5991c4e94
@ -906,7 +906,8 @@ static void rvin_fill_hw_slot(struct rvin_dev *vin, int slot)
|
||||
vin->format.sizeimage / 2;
|
||||
break;
|
||||
}
|
||||
} else if (vin->state != RUNNING || list_empty(&vin->buf_list)) {
|
||||
} else if ((vin->state != STOPPED && vin->state != RUNNING) ||
|
||||
list_empty(&vin->buf_list)) {
|
||||
vin->buf_hw[slot].buffer = NULL;
|
||||
vin->buf_hw[slot].type = FULL;
|
||||
phys_addr = vin->scratch_phys;
|
||||
|
Loading…
Reference in New Issue
Block a user