• Niklas Söderlund's avatar
    media: rcar-vin: use scratch buffer and always run in continuous mode · dc9aec79
    Niklas Söderlund authored
    Instead of switching capture mode depending on how many buffers are
    available use a scratch buffer and always run in continuous mode. By
    using a scratch buffer the responsiveness of the capture loop is
    increased as it can keep running even if there are no buffers available
    from userspace.
    
    As soon as a userspace queues a buffer it is inserted into the capture
    loop and returned as soon as it is filled. This is a improvement on the
    previous logic where the whole capture loop was stopped and switched to
    single capture mode if userspace did not feed the VIN driver buffers at
    the same time it consumed them. To make matters worse it was difficult
    for the driver to reenter continuous mode if it entered single mode even
    if userspace started to queue buffers faster. This resulted in
    suboptimal performance where if userspace where delayed for a short
    period the ongoing capture would be slowed down and run in single mode
    until the capturing process where restarted.
    
    An additional effect of this change is that the capture logic can be
    made much simple as we know that continuous mode will always be used.
    Signed-off-by: default avatarNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Reviewed-by: default avatarJacopo Mondi <jacopo+renesas@jmondi.org>
    Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    dc9aec79
rcar-dma.c 32.7 KB