diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2009-04-24 17:58:35 +0200 |
---|---|---|
committer | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2009-04-24 17:58:35 +0200 |
commit | 157f8eb764c03a0d74db15db98790bca85d5f9dd (patch) | |
tree | 1fa8e2c0b34cba6677a868ed21ac5e5ac35b8c99 /linux/Documentation/video4linux | |
parent | c3cc042608813e24ef6a3510cdae6d0924c1be09 (diff) | |
download | mediapointer-dvb-s2-157f8eb764c03a0d74db15db98790bca85d5f9dd.tar.gz mediapointer-dvb-s2-157f8eb764c03a0d74db15db98790bca85d5f9dd.tar.bz2 |
pxa_camera: Documentation of the FSM
From: Robert Jarzmik <robert.jarzmik@free.fr>
After DMA redesign, the pxa_camera dynamic behaviour should
be documented so that future contributors understand how it
works, and improve it.
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
Documentation/video4linux/pxa_camera.txt | 49 ++++++++++++++++++++++++++++++
1 files changed, 49 insertions(+), 0 deletions(-)
Diffstat (limited to 'linux/Documentation/video4linux')
-rw-r--r-- | linux/Documentation/video4linux/pxa_camera.txt | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/linux/Documentation/video4linux/pxa_camera.txt b/linux/Documentation/video4linux/pxa_camera.txt index b1137f9a5..4f6d0ca01 100644 --- a/linux/Documentation/video4linux/pxa_camera.txt +++ b/linux/Documentation/video4linux/pxa_camera.txt @@ -26,6 +26,55 @@ Global video workflow Once the last buffer is filled in, the QCI interface stops. + c) Capture global finite state machine schema + + +----+ +---+ +----+ + | DQ | | Q | | DQ | + | v | v | v + +-----------+ +------------------------+ + | STOP | | Wait for capture start | + +-----------+ Q +------------------------+ ++-> | QCI: stop | ------------------> | QCI: run | <------------+ +| | DMA: stop | | DMA: stop | | +| +-----------+ +-----> +------------------------+ | +| / | | +| / +---+ +----+ | | +|capture list empty / | Q | | DQ | | QCI Irq EOF | +| / | v | v v | +| +--------------------+ +----------------------+ | +| | DMA hotlink missed | | Capture running | | +| +--------------------+ +----------------------+ | +| | QCI: run | +-----> | QCI: run | <-+ | +| | DMA: stop | / | DMA: run | | | +| +--------------------+ / +----------------------+ | Other | +| ^ /DMA still | | channels | +| | capture list / running | DMA Irq End | not | +| | not empty / | | finished | +| | / v | yet | +| +----------------------+ +----------------------+ | | +| | Videobuf released | | Channel completed | | | +| +----------------------+ +----------------------+ | | ++-- | QCI: run | | QCI: run | --+ | + | DMA: run | | DMA: run | | + +----------------------+ +----------------------+ | + ^ / | | + | no overrun / | overrun | + | / v | + +--------------------+ / +----------------------+ | + | Frame completed | / | Frame overran | | + +--------------------+ <-----+ +----------------------+ restart frame | + | QCI: run | | QCI: stop | --------------+ + | DMA: run | | DMA: stop | + +--------------------+ +----------------------+ + + Legend: - each box is a FSM state + - each arrow is the condition to transition to another state + - an arrow with a comment is a mandatory transition (no condition) + - arrow "Q" means : a buffer was enqueued + - arrow "DQ" means : a buffer was dequeued + - "QCI: stop" means the QCI interface is not enabled + - "DMA: stop" means all 3 DMA channels are stopped + - "DMA: run" means at least 1 DMA channel is still running DMA usage --------- |