• Robert Jarzmik's avatar
    V4L/DVB (11321): pxa_camera: Redesign DMA handling · 256b0233
    Robert Jarzmik authored
    The DMA transfers in pxa_camera showed some weaknesses in
    multiple queued buffers context :
     - poll/select problem
       The bug shows up with capture_example tool from v4l2 hg
       tree. The process just "stalls" on a "select timeout".
    
     - multiple buffers DMA starting
       When multiple buffers were queued, the DMA channels were
       always started right away. This is not optimal, as a
       special case appears when the first EOF was not yet
       reached, and the DMA channels were prematurely started.
    
     - Maintainability
       DMA code was a bit obfuscated. Rationalize the code to be
       easily maintainable by anyone.
    
     - DMA hot chaining
       DMA is not stopped anymore to queue a buffer, the buffer
       is queued with DMA running. As a tribute, a corner case
       exists where chaining happens while DMA finishes the
       chain, and the capture is restarted to deal with the
       missed link buffer.
    
    This patch attemps to address these issues / improvements.
    
     create mode 100644 Documentation/video4linux/pxa_camera.txt
    Signed-off-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    256b0233
pxa_camera.c 47.9 KB