Am 03.12.2010 21:07, schrieb Guennadi Liakhovetski:
On Fri, 3 Dec 2010, Markus Niebel wrote:
Hello,
thank you for your answer. I think there is a problem, but I did not describe
it correctly. See my comments
On Thu, 2 Dec 2010, Markus Niebel wrote:
Hello,
we're working with a special cameraboard (CCD + Analog Frontend IC). Using
the
soc_camera stack on the i.MX35 (mx3_camera) the following problem arises:
VIDIOC_STREAMON calls soc_camera_streamon which calls videobuf_streamon -
when
iterating the buffers in the queue the function mx3_videobuf_queue is
called
for every buffer. This sends the buffers to the omage DMA (IDMAC) using
the
tx_submit method. The function ipu_init_channel_buffer (DMA driver
ipu_core)
gets only one buffer from the scatterlist, this leads to a single buffer
capture.
What I wanted to say was, that tx_submit (in case of ipu_core
idmac_tx_submit) calls ipu_init_channel_buffer if channel status is<
IPU_CHANNEL_READY. Since only one buffer is submitted (mx3_videobuf_queue is
called in a loop for every single buffer in the videobuf_queue) in the
IPU_CHA_DB_MODE_SEL register double buffering will not be enabled for the
channel. When I put a debug message in ipu_init_channel_buffer I saw that
phyaddr_1 is set to NULL.
Correct, but then, when the second buffer is queued,
ipu_update_channel_buffer() shall be called and then IPU_CHA_DB_MODE_SEL
shall be set. Isn't this happening?
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
Hello,
sorry for the __very__ long timeout. The doublebuffering is indeed
enabled when the second buffer is queued - my fault, should have read
the code more carfully.
But in this way a new question arises:
in soc_camera.c, function soc_camera_streamon the subdev's s_stream
handler is called first before videobuf_streamon gets called. This way
the videosource is producing data which could produce a race condition
with the idmac. Maybe I'm wrong but in some cases (especially whith
enabled dev_dbg in ipu_idmac.c) we fail to get frames from the driver.
Thanks
Markus
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html