diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2009-03-31 08:44:21 +0200 |
---|---|---|
committer | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2009-03-31 08:44:21 +0200 |
commit | 25c1a20a39b9a75aaef1dc3b2bcbf3276856d915 (patch) | |
tree | bc8b50129d02cacb5ff1447895cc7a400edf6429 /v4l2-apps/libv4l2util/v4l2_driver.c | |
parent | 953d03eaa6a48726291126a512da56846b71f3ec (diff) | |
download | mediapointer-dvb-s2-25c1a20a39b9a75aaef1dc3b2bcbf3276856d915.tar.gz mediapointer-dvb-s2-25c1a20a39b9a75aaef1dc3b2bcbf3276856d915.tar.bz2 |
pxa_camera: Redesign DMA handling
From: Robert Jarzmik <robert.jarzmik@free.fr>
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.
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
Documentation/video4linux/pxa_camera.txt | 125 ++++++++++++
drivers/media/video/pxa_camera.c | 319 ++++++++++++++++++------------
2 files changed, 316 insertions(+), 128 deletions(-)
create mode 100644 Documentation/video4linux/pxa_camera.txt
Diffstat (limited to 'v4l2-apps/libv4l2util/v4l2_driver.c')
0 files changed, 0 insertions, 0 deletions