Re: [PATCH] pxa_camera: Documentation of the FSM

2009-04-13 Thread Robert Jarzmik
Guennadi Liakhovetski  writes:

>
> Cool, nice:-) One question though: shouldn't the "capture list empty" 
> transition start from "Videobuf released" state?
Absolutely. Nice catch. I just cross-checked my hand-made schema, and you're
right.

> Or maybe you want to reorginise the "Videobuf released" and "Frame completed"
> states a bit to separate cases
> - capture list empty
> - capture list not empty
>   - DMA still running - hot-linking success
>   - DMA stopped - restart
Well, granted that the transition "capture list empty" was badly put, this is
not needed anymore, is it ?

Cheers.

--
Robert

>From 8f33b15891c8fe8ee317a8d0d7293d05fda3c6e6 Mon Sep 17 00:00:00 2001
From: Robert Jarzmik 
Date: Mon, 13 Apr 2009 18:52:56 +0200
Subject: [PATCH] pxa_camera: Documentation of the FSM

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 
---
 Documentation/video4linux/pxa_camera.txt |   49 ++
 1 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/Documentation/video4linux/pxa_camera.txt 
b/Documentation/video4linux/pxa_camera.txt
index b1137f9..4f6d0ca 100644
--- a/Documentation/video4linux/pxa_camera.txt
+++ b/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 stop

Re: [PATCH] pxa_camera: Documentation of the FSM

2009-04-13 Thread Guennadi Liakhovetski
On Mon, 13 Apr 2009, Robert Jarzmik wrote:

> 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 
> ---
>  Documentation/video4linux/pxa_camera.txt |   49 
> ++
>  1 files changed, 49 insertions(+), 0 deletions(-)
> 
> diff --git a/Documentation/video4linux/pxa_camera.txt 
> b/Documentation/video4linux/pxa_camera.txt
> index b1137f9..b595e94 100644
> --- a/Documentation/video4linux/pxa_camera.txt
> +++ b/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
>  -

Cool, nice:-) One question though: shouldn't the "capture list empty" 
transition start from "Videobuf released" state? Or maybe you want to 
reorginise the "Videobuf released" and "Frame completed" states a bit to 
separate cases

- capture list empty
- capture list not empty
  - DMA still running - hot-linking success
  - DMA stopped - restart

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.or

[PATCH] pxa_camera: Documentation of the FSM

2009-04-13 Thread Robert Jarzmik
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 
---
 Documentation/video4linux/pxa_camera.txt |   49 ++
 1 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/Documentation/video4linux/pxa_camera.txt 
b/Documentation/video4linux/pxa_camera.txt
index b1137f9..b595e94 100644
--- a/Documentation/video4linux/pxa_camera.txt
+++ b/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
 -
-- 
1.6.2.1

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html