media: rcar-vin: sync which hardware buffer to start capture from
authorNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Mon, 28 May 2018 23:26:37 +0000 (19:26 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Thu, 28 Jun 2018 11:24:54 +0000 (07:24 -0400)
commit23689ab1add36964b69b6e4fdb97d52f315119f5
treef8cd76f41eaa9ee848b5ed54bd6ed0feb92bc7dc
parente10cf92ead486b24a3169bb3b3215cf5775225fd
media: rcar-vin: sync which hardware buffer to start capture from

When starting the VIN capture procedure we are not guaranteed that the
first buffer written to is VnMB1 to which we assigned the first buffer
queued. This is problematic for two reasons. Buffers might not be
dequeued in the same order they where queued for capture. Future
features planed for the VIN driver is support for outputting frames in
SEQ_TB/BT format and to do that it's important that capture starts from
the first buffer slot, VnMB1.

We are guaranteed that capturing always happens in sequence (VnMB1 ->
VnMB2 -> VnMB3 -> VnMB1). So drop up to two frames when starting
capturing so that the driver always returns buffers in the same order
they are queued and prepare for SEQ_TB/BT output.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/rcar-vin/rcar-dma.c
drivers/media/platform/rcar-vin/rcar-vin.h