Grabbing single stills on MX31 - Re: Solved? - Re: soc-camera: timing out during capture - Re: Testing latest mx3_camera.c

2009-05-11 Thread Agustin

On Thu, 7 May 2009, Guennadi Liakhovetski wrote:

 
 On Thu, 7 May 2009, Agustin Ferrin Pozuelo wrote:
  ...
  I thought about the fact that I was only queuing one buffer, and that 
  this might be a corner case as sample code uses a lot of them. And that 
  in the older code that funny things could happen in the handler if we 
  ran out of buffers, though they didn't happen.
  
  So I have queued an extra buffer and voila, got it working.
  
  So thanks again!
  
  However, this could be a bug in ipu_idmac (or some other point), as 
  using a single buffer is very plausible, specially when grabbing huge 
  stills.
 
 Great, thanks for testing and debugging! Ok, so, I will have to test this 
 case some time...

Guennadi,

This workaround (queuing 2 buffers when needing only one) is having the side 
effect of greatly increasing the time taken.

I did several tests playing with camera vertical blanking and looking at 
capture times:

Vblank / real / user / sys time:
 0 / real0m 0.90s / user0m 0.00s / sys 0m 0.34s
  1 frame / real0m 1.04s / user0m 0.00s / sys 0m 0.34s
2 frames / real0m 1.18s / user0m 0.00s / sys 0m 0.33s
2.5 (max)/ real0m 1.23s / user0m 0.00s / sys 0m 0.35s

I think the second frame is being captured altogether, and its dma transfer is 
not allowing any other process to run meanwhile. (VIDIOC_STREAMOFF is being 
called as soon as the first buffer is ready.)

Do you think it will be too hard to fix?

Regards,
--Agustín.

--
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


Re: soc-camera: timing out during capture - Re: Testing latest mx3_camera.c

2009-05-07 Thread Agustin

On Tue, 5 May 2009, Guennadi Liakhovetski wrote:

 
 On Tue, 5 May 2009, Agustin wrote:
 
  No, as there is no driver_match_device() in 2.6.29 nor in my patched 
  version. How important is that?
 
 No, sorry, forget it, that's not your problem.
 
  Meanwhile I noticed that IRQ 176 is being triggered, then discarded as 
  unhandled by ipu_idmac, who gives the message IRQ on active buffer on 
  channel 7, active 0, ready 0, 0, current 0! below...
 
 Yes, and this is not good. If you look in drivers/dma/ipu/ipu_idmac.c 
 idmac_interrupt() you'll see, that this message is printed when IDMAC 
 produces an interrupt for a DMA buffer, but at the same time it says, that 
 the buffer, that should have completed is still in use... I've seen a few 
 of such inconsistencies, and up to now always managed to get rid of them 
 in one or another way. But that should not be related to the conversion. 
 Maybe your formats on the sensor and on the SoC do not match, verify that.

Thanks for the tip but I am still out of luck. I enabled DEBUG in ipu_idmac.c 
just to see that frame start and end are happening more or less when they 
should:

   [...]
   camera 0-0: mx3_camera: Submitted cookie 2 DMA 0x8640
   Got SOF IRQ 177 on Channel 7
   Got EOF IRQ 178 on Channel 7
   dma dma0chan7: ipu_idmac: IDMAC irq 176, buf 0
   dma dma0chan7: ipu_idmac: IRQ on active buffer on channel 7, active 0, ready 
0, 0, current 0!
   Select timeout.
   [...]

I also configured everything to the simplest mode I can have: 8-bit bus, sample 
falling.

So I am now looking at IDMAC, trying to guess what could be wrong, but I feel 
quite lost at the moment. I am starting to fear that I introduced some subtle 
bug while merging your stack into Sascha's... Where can I check mx3_camera.c, 
ipu_idmac.c, soc_camera.c prior to the subdev changes? I would like them to 
check that my edited patches lead to the same sources as the originals.

Thanks  regards,
--Agustín.

 
I am not sure where to look for the problem, so here is a debug dump in 
 case 
   you can
point me in the right direction...


r...@sixcam:~ insmod sixcam.ko 
sixcam_mod_init(): ok
Sixcam TRIGGER on Sixcam board: ATA_CS0~MCU3_26
sixcam_i2c_probe(): ok
camera 0-0: mx3_camera: Set SENS_CONF to f00, rate 19523897
sixcam_init(): initialized camera.
camera 0-0: MX3 Camera driver attached to camera 0
sixcam_video_probe(): probed camera.
mx3-camera mx3-camera.0: soc_camera: Allocated video_device c6080a00
sixcam_release(): ok
camera 0-0: MX3 Camera driver detached from camera 0

r...@sixcam:~ capture --bpp 8 --size 1536x1024
mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
mx3-camera.0: mx3_camera: requested bus width 15 bit: 0
mx3-camera.0: mx3_camera: requested bus width 10 bit: 0
camera 0-0: soc_camera: Found 0 supported formats.
mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
mx3-camera.0: mx3_camera: Providing format Monochrome 8 bit in 
 pass-through 
   mode
mx3-camera.0: mx3_camera: requested bus width 15 bit: 0
mx3-camera.0: mx3_camera: Providing format Monochrome 16 bit in 
 pass-through 
   mode
mx3-camera.0: mx3_camera: requested bus width 10 bit: 0
mx3-camera.0: mx3_camera: Providing format Sixcam 10-bit in 
pass-through 
 mode
camera 0-0: mx3_camera: Set SENS_CONF to f00, rate 19523897
sixcam_init(): initialized camera.
camera 0-0: MX3 Camera driver attached to camera 0
camera 0-0: soc_camera: camera device open
sixcam_set_fmt(): 640x480+0+0
sixcam_try_fmt(): icd-width=640 icd-height=480 fmt.pix.width=1536 
   fmt.pix.height=1024.
-- fmt.pix.width=1536 fmt.pix.height=1024.
ipu-core: ipu_idmac: timeout = 0 * 10ms
ipu-core: ipu_idmac: init channel = 7
ipu-core: ipu_idmac: IDMAC_CONF 0x70, IC_CONF 0x0, IDMAC_CHA_EN 0x0, 
   IDMAC_CHA_PRI 0x80, IDMAC_CHA_BUSY 0x0
ipu-core: ipu_idmac: BUF0_RDY 0x0, BUF1_RDY 0x0, CUR_BUF 0x0, DB_MODE 
0x0, 
 
   TASKS_STAT 0x3
dma dma0chan7: ipu_idmac: Found channel 0x7, irq 176
sixcam_set_fmt(): 1536x1024+0+0
camera 0-0: soc_camera: set width: 1536 height: 1024
mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
mx3-camera.0: mx3_camera: Flags cam: 0x2695 host: 0xf0fd common: 0x2095
sixcam_set_bus_param(): 0x2095
mx3-camera.0: mx3_camera: Set SENS_CONF to 708
VIDIOC_S_FMT: width 1536, heightcamera 0-0: soc_camera: 
 soc_camera_reqbufs: 1
 1024, pixelformat = 'GREY'
mx3-camera.0: videobuf_dma_contig: __videobuf_mmap_free
camera 0-0: soc_camera: mmap called, vma=0xc4f886e0
mx3-camera.0: videobuf_dma_contig: __videobuf_mmap_mapper
mx3-camera.0: videobuf_dma_contig: dma_alloc_coherent data is at addr 
 c900 
   (size 1572864)
mx3-camera.0: videobuf_dma_contig: mmap c4fafec0: q=c8b63004 
 40147000-402c7000 
   (18) pgoff 00084000 buf 0
mx3-camera.0: videobuf_dma_contig: vm_open c4fafec0 
   

Solved? - Re: soc-camera: timing out during capture - Re: Testing latest mx3_camera.c

2009-05-07 Thread Agustin Ferrin Pozuelo

Holy cow...


On Tue, 5 May 2009, Agustin wrote:
 On Tue, 5 May 2009, Guennadi Liakhovetski wrote:
  On Tue, 5 May 2009, Agustin wrote:
  
   No, as there is no driver_match_device() in 2.6.29 nor in my patched 
   version. How important is that?
  
  No, sorry, forget it, that's not your problem.
  
   Meanwhile I noticed that IRQ 176 is being triggered, then discarded as 
   unhandled by ipu_idmac, who gives the message IRQ on active buffer on 
   channel 7, active 0, ready 0, 0, current 0! below...
  
  Yes, and this is not good. If you look in drivers/dma/ipu/ipu_idmac.c 
  idmac_interrupt() you'll see, that this message is printed when IDMAC 
  produces an interrupt for a DMA buffer, but at the same time it says, that 
  the buffer, that should have completed is still in use... I've seen a few 
  of such inconsistencies, and up to now always managed to get rid of them 
  in one or another way. But that should not be related to the conversion. 
  Maybe your formats on the sensor and on the SoC do not match, verify that.
 
 Thanks for the tip but I am still out of luck. I enabled DEBUG in ipu_idmac.c 
 just to see that frame start and end are happening more or less when they 
 should:
 
[...]
camera 0-0: mx3_camera: Submitted cookie 2 DMA 0x8640
Got SOF IRQ 177 on Channel 7
Got EOF IRQ 178 on Channel 7
dma dma0chan7: ipu_idmac: IDMAC irq 176, buf 0
dma dma0chan7: ipu_idmac: IRQ on active buffer on channel 7, active 0, 
 ready 
 0, 0, current 0!
Select timeout.
[...]
 
 I also configured everything to the simplest mode I can have: 8-bit bus, 
 sample 
 falling.
 
 So I am now looking at IDMAC, trying to guess what could be wrong... [snip]

After checking out every single bit in CSI and IDMAC to be correct according to 
reference and the same I had in the previous/working version...

I thought about the fact that I was only queuing one buffer, and that this 
might be a corner case as sample code uses a lot of them. And that in the older 
code that funny things could happen in the handler if we ran out of buffers, 
though they didn't happen.

So I have queued an extra buffer and voila, got it working.

So thanks again!

However, this could be a bug in ipu_idmac (or some other point), as using a 
single buffer is very plausible, specially when grabbing huge stills.

--Agustín.

[snip!]

--
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


Re: Solved? - Re: soc-camera: timing out during capture - Re: Testing latest mx3_camera.c

2009-05-07 Thread Guennadi Liakhovetski
On Thu, 7 May 2009, Agustin Ferrin Pozuelo wrote:

 Holy cow...

mu-u-u-u-u-u?:-)

 After checking out every single bit in CSI and IDMAC to be correct 
 according to reference and the same I had in the previous/working 
 version...
 
 I thought about the fact that I was only queuing one buffer, and that 
 this might be a corner case as sample code uses a lot of them. And that 
 in the older code that funny things could happen in the handler if we 
 ran out of buffers, though they didn't happen.
 
 So I have queued an extra buffer and voila, got it working.
 
 So thanks again!
 
 However, this could be a bug in ipu_idmac (or some other point), as 
 using a single buffer is very plausible, specially when grabbing huge 
 stills.

Great, thanks for testing and debugging! Ok, so, I will have to test this 
case some time...

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
--
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


soc-camera: timing out during capture - Re: Testing latest mx3_camera.c

2009-05-05 Thread Agustin

Hi Guennadi,

--- Guennadi Liakhovetski g.liakhovet...@gmx.de wrote:
 On Mon, 13 Apr 2009, Agustin wrote:
 
  Which patchset should one use today to have latest and most stable 
  mx3_camera driver in 2.6.29?
  
  [snip]
 
 Please, use http://marc.info/?l=linux-arm-kernelm=123866462620240w=2 
 also notice, which patches it needs. As a basis you can take linux-next or 
 a suitable branch from git://git.pengutronix.de/git/imx/linux-2.6.git

I managed to merge your patch stack of 20090415 on top of Sascha's stack for 
2.6.29.
I think that is just before the v4l-subdev work. Then I adapted my code to 
work pretty
much as your mt9p031 driver.

Now I get a timeout when trying to capture a single image, with the same 
hardware
configuration that is working fine with 2.6.28-next.
I can see my Sixcam camera dumping a few frames before the timeout.

I am not sure where to look for the problem, so here is a debug dump in case 
you can
point me in the right direction...


r...@sixcam:~ insmod sixcam.ko 
sixcam_mod_init(): ok
Sixcam TRIGGER on Sixcam board: ATA_CS0~MCU3_26
sixcam_i2c_probe(): ok
camera 0-0: mx3_camera: Set SENS_CONF to f00, rate 19523897
sixcam_init(): initialized camera.
camera 0-0: MX3 Camera driver attached to camera 0
sixcam_video_probe(): probed camera.
mx3-camera mx3-camera.0: soc_camera: Allocated video_device c6080a00
sixcam_release(): ok
camera 0-0: MX3 Camera driver detached from camera 0

r...@sixcam:~ capture --bpp 8 --size 1536x1024
mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
mx3-camera.0: mx3_camera: requested bus width 15 bit: 0
mx3-camera.0: mx3_camera: requested bus width 10 bit: 0
camera 0-0: soc_camera: Found 0 supported formats.
mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
mx3-camera.0: mx3_camera: Providing format Monochrome 8 bit in pass-through mode
mx3-camera.0: mx3_camera: requested bus width 15 bit: 0
mx3-camera.0: mx3_camera: Providing format Monochrome 16 bit in pass-through 
mode
mx3-camera.0: mx3_camera: requested bus width 10 bit: 0
mx3-camera.0: mx3_camera: Providing format Sixcam 10-bit in pass-through mode
camera 0-0: mx3_camera: Set SENS_CONF to f00, rate 19523897
sixcam_init(): initialized camera.
camera 0-0: MX3 Camera driver attached to camera 0
camera 0-0: soc_camera: camera device open
sixcam_set_fmt(): 640x480+0+0
sixcam_try_fmt(): icd-width=640 icd-height=480 fmt.pix.width=1536 
fmt.pix.height=1024.
-- fmt.pix.width=1536 fmt.pix.height=1024.
ipu-core: ipu_idmac: timeout = 0 * 10ms
ipu-core: ipu_idmac: init channel = 7
ipu-core: ipu_idmac: IDMAC_CONF 0x70, IC_CONF 0x0, IDMAC_CHA_EN 0x0, 
IDMAC_CHA_PRI 0x80, IDMAC_CHA_BUSY 0x0
ipu-core: ipu_idmac: BUF0_RDY 0x0, BUF1_RDY 0x0, CUR_BUF 0x0, DB_MODE 0x0, 
TASKS_STAT 0x3
dma dma0chan7: ipu_idmac: Found channel 0x7, irq 176
sixcam_set_fmt(): 1536x1024+0+0
camera 0-0: soc_camera: set width: 1536 height: 1024
mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
mx3-camera.0: mx3_camera: Flags cam: 0x2695 host: 0xf0fd common: 0x2095
sixcam_set_bus_param(): 0x2095
mx3-camera.0: mx3_camera: Set SENS_CONF to 708
VIDIOC_S_FMT: width 1536, heightcamera 0-0: soc_camera: soc_camera_reqbufs: 1
 1024, pixelformat = 'GREY'
mx3-camera.0: videobuf_dma_contig: __videobuf_mmap_free
camera 0-0: soc_camera: mmap called, vma=0xc4f886e0
mx3-camera.0: videobuf_dma_contig: __videobuf_mmap_mapper
mx3-camera.0: videobuf_dma_contig: dma_alloc_coherent data is at addr c900 
(size 1572864)
mx3-camera.0: videobuf_dma_contig: mmap c4fafec0: q=c8b63004 40147000-402c7000 
(18) pgoff 00084000 buf 0
mx3-camera.0: videobuf_dma_contig: vm_open c4fafec0 
[count=0,vma=40147000-402c7000]
camera 0-0: soc_camera: vma start=0x40147000, size=1572864, ret=0
mx3-camera.0: videobuf_dma_contig: __videobuf_iolock memory method MMAP
camera 0-0: soc_camera: soc_camera_streamon
sixcam_start_capture(): trigger on!
ipu-core: ipu_idmac: write param mem - addr = 0x00010070, data = 0x
ipu-core: ipu_idmac: write param mem - addr = 0x00010071, data = 0x4000
ipu-core: ipu_idmac: write param mem - addr = 0x00010072, data = 0x
ipu-core: ipu_idmac: write param mem - addr = 0x00010073, data = 0xFF5FF000
ipu-core: ipu_idmac: write param mem - addr = 0x00010074, data = 0x0003
ipu-core: ipu_idmac: write param mem - addr = 0x00010078, data = 0x8400
ipu-core: ipu_idmac: write param mem - addr = 0x00010079, data = 0x
ipu-core: ipu_idmac: write param mem - addr = 0x0001007A, data = 0x3E0E2FFB
ipu-core: ipu_idmac: write param mem - addr = 0x0001007B, data = 0x0002
ipu-core: ipu_idmac: write param mem - addr = 0x0001007C, data = 0x
dma dma0chan7: ipu_idmac: Submitting sg c4e0772c
dma dma0chan7: ipu_idmac: Updated sg c4e0772c on channel 0x7 buffer 0
ipu-core: ipu_idmac: IDMAC_CONF 0x70, IC_CONF 0x0, IDMAC_CHA_EN 0x0, 
IDMAC_CHA_PRI 0x80, IDMAC_CHA_BUSY 0x0
ipu-core: ipu_idmac: BUF0_RDY 0x80, BUF1_RDY 0x0, CUR_BUF 0x0, DB_MODE 0x0, 
TASKS_STAT 0x3
ipu-core: ipu_idmac: IDMAC_CONF 0x70, IC_CONF 0x4001, 

Re: soc-camera: timing out during capture - Re: Testing latest mx3_camera.c

2009-05-05 Thread Guennadi Liakhovetski
On Tue, 5 May 2009, Agustin wrote:

 
 Hi Guennadi,
 
 --- Guennadi Liakhovetski g.liakhovet...@gmx.de wrote:
  On Mon, 13 Apr 2009, Agustin wrote:
  
   Which patchset should one use today to have latest and most stable 
   mx3_camera driver in 2.6.29?
   
   [snip]
  
  Please, use http://marc.info/?l=linux-arm-kernelm=123866462620240w=2 
  also notice, which patches it needs. As a basis you can take linux-next or 
  a suitable branch from git://git.pengutronix.de/git/imx/linux-2.6.git
 
 I managed to merge your patch stack of 20090415 on top of Sascha's stack for 
 2.6.29.
 I think that is just before the v4l-subdev work. Then I adapted my code to 
 work pretty
 much as your mt9p031 driver.
 
 Now I get a timeout when trying to capture a single image, with the same 
 hardware
 configuration that is working fine with 2.6.28-next.
 I can see my Sixcam camera dumping a few frames before the timeout.

Have you applied this patch:

Author: Ming Lei tom.leim...@gmail.com
Date:   Fri Mar 27 21:50:00 2009 +0800

driver core: fix driver_match_device

This patch fixes a bug introduced in commit
49b420a13ff95b449947181190b08367348e3e1b.

If a instance of bus_type doesn't have  .match method,
all .probe of drivers in the bus should be called, or else
the .probe have not a chance to be called.

Signed-off-by: Ming Lei tom.leim...@gmail.com
Reported-by: Guennadi Liakhovetski g.liakhovet...@gmx.de
Signed-off-by: Greg Kroah-Hartman gre...@suse.de

?

Thanks
Guennadi

 
 I am not sure where to look for the problem, so here is a debug dump in case 
 you can
 point me in the right direction...
 
 
 r...@sixcam:~ insmod sixcam.ko 
 sixcam_mod_init(): ok
 Sixcam TRIGGER on Sixcam board: ATA_CS0~MCU3_26
 sixcam_i2c_probe(): ok
 camera 0-0: mx3_camera: Set SENS_CONF to f00, rate 19523897
 sixcam_init(): initialized camera.
 camera 0-0: MX3 Camera driver attached to camera 0
 sixcam_video_probe(): probed camera.
 mx3-camera mx3-camera.0: soc_camera: Allocated video_device c6080a00
 sixcam_release(): ok
 camera 0-0: MX3 Camera driver detached from camera 0
 
 r...@sixcam:~ capture --bpp 8 --size 1536x1024
 mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
 mx3-camera.0: mx3_camera: requested bus width 15 bit: 0
 mx3-camera.0: mx3_camera: requested bus width 10 bit: 0
 camera 0-0: soc_camera: Found 0 supported formats.
 mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
 mx3-camera.0: mx3_camera: Providing format Monochrome 8 bit in pass-through 
 mode
 mx3-camera.0: mx3_camera: requested bus width 15 bit: 0
 mx3-camera.0: mx3_camera: Providing format Monochrome 16 bit in pass-through 
 mode
 mx3-camera.0: mx3_camera: requested bus width 10 bit: 0
 mx3-camera.0: mx3_camera: Providing format Sixcam 10-bit in pass-through mode
 camera 0-0: mx3_camera: Set SENS_CONF to f00, rate 19523897
 sixcam_init(): initialized camera.
 camera 0-0: MX3 Camera driver attached to camera 0
 camera 0-0: soc_camera: camera device open
 sixcam_set_fmt(): 640x480+0+0
 sixcam_try_fmt(): icd-width=640 icd-height=480 fmt.pix.width=1536 
 fmt.pix.height=1024.
 -- fmt.pix.width=1536 fmt.pix.height=1024.
 ipu-core: ipu_idmac: timeout = 0 * 10ms
 ipu-core: ipu_idmac: init channel = 7
 ipu-core: ipu_idmac: IDMAC_CONF 0x70, IC_CONF 0x0, IDMAC_CHA_EN 0x0, 
 IDMAC_CHA_PRI 0x80, IDMAC_CHA_BUSY 0x0
 ipu-core: ipu_idmac: BUF0_RDY 0x0, BUF1_RDY 0x0, CUR_BUF 0x0, DB_MODE 0x0, 
 TASKS_STAT 0x3
 dma dma0chan7: ipu_idmac: Found channel 0x7, irq 176
 sixcam_set_fmt(): 1536x1024+0+0
 camera 0-0: soc_camera: set width: 1536 height: 1024
 mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
 mx3-camera.0: mx3_camera: Flags cam: 0x2695 host: 0xf0fd common: 0x2095
 sixcam_set_bus_param(): 0x2095
 mx3-camera.0: mx3_camera: Set SENS_CONF to 708
 VIDIOC_S_FMT: width 1536, heightcamera 0-0: soc_camera: soc_camera_reqbufs: 1
  1024, pixelformat = 'GREY'
 mx3-camera.0: videobuf_dma_contig: __videobuf_mmap_free
 camera 0-0: soc_camera: mmap called, vma=0xc4f886e0
 mx3-camera.0: videobuf_dma_contig: __videobuf_mmap_mapper
 mx3-camera.0: videobuf_dma_contig: dma_alloc_coherent data is at addr 
 c900 (size 1572864)
 mx3-camera.0: videobuf_dma_contig: mmap c4fafec0: q=c8b63004 
 40147000-402c7000 (18) pgoff 00084000 buf 0
 mx3-camera.0: videobuf_dma_contig: vm_open c4fafec0 
 [count=0,vma=40147000-402c7000]
 camera 0-0: soc_camera: vma start=0x40147000, size=1572864, ret=0
 mx3-camera.0: videobuf_dma_contig: __videobuf_iolock memory method MMAP
 camera 0-0: soc_camera: soc_camera_streamon
 sixcam_start_capture(): trigger on!
 ipu-core: ipu_idmac: write param mem - addr = 0x00010070, data = 0x
 ipu-core: ipu_idmac: write param mem - addr = 0x00010071, data = 0x4000
 ipu-core: ipu_idmac: write param mem - addr = 0x00010072, data = 0x
 ipu-core: ipu_idmac: write param mem - addr = 0x00010073, data = 0xFF5FF000
 ipu-core: ipu_idmac: write param mem - addr = 0x00010074, data = 0x0003
 ipu-core: ipu_idmac: 

Re: soc-camera: timing out during capture - Re: Testing latest mx3_camera.c

2009-05-05 Thread Agustin

On Tue, 5 May 2009, Guennadi Liakhovetski g.liakhovet...@gmx.de wrote:
 
 On Tue, 5 May 2009, Agustin wrote:
 
  
  Hi Guennadi,
  
  --- Guennadi Liakhovetski wrote:
   On Mon, 13 Apr 2009, Agustin wrote:
   
Which patchset should one use today to have latest and most stable 
mx3_camera driver in 2.6.29?

[snip]
   
   Please, use http://marc.info/?l=linux-arm-kernelm=123866462620240w=2 
   also notice, which patches it needs. As a basis you can take linux-next 
   or 
   a suitable branch from git://git.pengutronix.de/git/imx/linux-2.6.git
  
  I managed to merge your patch stack of 20090415 on top of Sascha's stack 
  for 
 2.6.29.
  I think that is just before the v4l-subdev work. Then I adapted my code 
  to 
 work pretty
  much as your mt9p031 driver.
  
  Now I get a timeout when trying to capture a single image, with the same 
 hardware
  configuration that is working fine with 2.6.28-next.
  I can see my Sixcam camera dumping a few frames before the timeout.
 
 Have you applied this patch:
 
 Author: Ming Lei 
 Date:   Fri Mar 27 21:50:00 2009 +0800
 
 driver core: fix driver_match_device
 
 This patch fixes a bug introduced in commit
 49b420a13ff95b449947181190b08367348e3e1b.
 
 If a instance of bus_type doesn't have  .match method,
 all .probe of drivers in the bus should be called, or else
 the .probe have not a chance to be called.
 
 Signed-off-by: Ming Lei 
 Reported-by: Guennadi Liakhovetski 
 Signed-off-by: Greg Kroah-Hartman 
 
 ?

No, as there is no driver_match_device() in 2.6.29 nor in my patched version. 
How important is that?

Meanwhile I noticed that IRQ 176 is being triggered, then discarded as 
unhandled by ipu_idmac, who gives the message IRQ on active buffer on 
channel 7, active 0, ready 0, 0, current 0! below...

  
  I am not sure where to look for the problem, so here is a debug dump in 
  case 
 you can
  point me in the right direction...
  
  
  r...@sixcam:~ insmod sixcam.ko 
  sixcam_mod_init(): ok
  Sixcam TRIGGER on Sixcam board: ATA_CS0~MCU3_26
  sixcam_i2c_probe(): ok
  camera 0-0: mx3_camera: Set SENS_CONF to f00, rate 19523897
  sixcam_init(): initialized camera.
  camera 0-0: MX3 Camera driver attached to camera 0
  sixcam_video_probe(): probed camera.
  mx3-camera mx3-camera.0: soc_camera: Allocated video_device c6080a00
  sixcam_release(): ok
  camera 0-0: MX3 Camera driver detached from camera 0
  
  r...@sixcam:~ capture --bpp 8 --size 1536x1024
  mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
  mx3-camera.0: mx3_camera: requested bus width 15 bit: 0
  mx3-camera.0: mx3_camera: requested bus width 10 bit: 0
  camera 0-0: soc_camera: Found 0 supported formats.
  mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
  mx3-camera.0: mx3_camera: Providing format Monochrome 8 bit in pass-through 
 mode
  mx3-camera.0: mx3_camera: requested bus width 15 bit: 0
  mx3-camera.0: mx3_camera: Providing format Monochrome 16 bit in 
  pass-through 
 mode
  mx3-camera.0: mx3_camera: requested bus width 10 bit: 0
  mx3-camera.0: mx3_camera: Providing format Sixcam 10-bit in pass-through 
  mode
  camera 0-0: mx3_camera: Set SENS_CONF to f00, rate 19523897
  sixcam_init(): initialized camera.
  camera 0-0: MX3 Camera driver attached to camera 0
  camera 0-0: soc_camera: camera device open
  sixcam_set_fmt(): 640x480+0+0
  sixcam_try_fmt(): icd-width=640 icd-height=480 fmt.pix.width=1536 
 fmt.pix.height=1024.
  -- fmt.pix.width=1536 fmt.pix.height=1024.
  ipu-core: ipu_idmac: timeout = 0 * 10ms
  ipu-core: ipu_idmac: init channel = 7
  ipu-core: ipu_idmac: IDMAC_CONF 0x70, IC_CONF 0x0, IDMAC_CHA_EN 0x0, 
 IDMAC_CHA_PRI 0x80, IDMAC_CHA_BUSY 0x0
  ipu-core: ipu_idmac: BUF0_RDY 0x0, BUF1_RDY 0x0, CUR_BUF 0x0, DB_MODE 0x0, 
 TASKS_STAT 0x3
  dma dma0chan7: ipu_idmac: Found channel 0x7, irq 176
  sixcam_set_fmt(): 1536x1024+0+0
  camera 0-0: soc_camera: set width: 1536 height: 1024
  mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
  mx3-camera.0: mx3_camera: Flags cam: 0x2695 host: 0xf0fd common: 0x2095
  sixcam_set_bus_param(): 0x2095
  mx3-camera.0: mx3_camera: Set SENS_CONF to 708
  VIDIOC_S_FMT: width 1536, heightcamera 0-0: soc_camera: soc_camera_reqbufs: 
  1
   1024, pixelformat = 'GREY'
  mx3-camera.0: videobuf_dma_contig: __videobuf_mmap_free
  camera 0-0: soc_camera: mmap called, vma=0xc4f886e0
  mx3-camera.0: videobuf_dma_contig: __videobuf_mmap_mapper
  mx3-camera.0: videobuf_dma_contig: dma_alloc_coherent data is at addr 
  c900 
 (size 1572864)
  mx3-camera.0: videobuf_dma_contig: mmap c4fafec0: q=c8b63004 
  40147000-402c7000 
 (18) pgoff 00084000 buf 0
  mx3-camera.0: videobuf_dma_contig: vm_open c4fafec0 
 [count=0,vma=40147000-402c7000]
  camera 0-0: soc_camera: vma start=0x40147000, size=1572864, ret=0
  mx3-camera.0: videobuf_dma_contig: __videobuf_iolock memory method MMAP
  camera 0-0: soc_camera: soc_camera_streamon
  sixcam_start_capture(): trigger on!
  ipu-core: ipu_idmac: 

Re: soc-camera: timing out during capture - Re: Testing latest mx3_camera.c

2009-05-05 Thread Guennadi Liakhovetski
On Tue, 5 May 2009, Agustin wrote:

 No, as there is no driver_match_device() in 2.6.29 nor in my patched 
 version. How important is that?

No, sorry, forget it, that's not your problem.

 Meanwhile I noticed that IRQ 176 is being triggered, then discarded as 
 unhandled by ipu_idmac, who gives the message IRQ on active buffer on 
 channel 7, active 0, ready 0, 0, current 0! below...

Yes, and this is not good. If you look in drivers/dma/ipu/ipu_idmac.c 
idmac_interrupt() you'll see, that this message is printed when IDMAC 
produces an interrupt for a DMA buffer, but at the same time it says, that 
the buffer, that should have completed is still in use... I've seen a few 
of such inconsistencies, and up to now always managed to get rid of them 
in one or another way. But that should not be related to the conversion. 
Maybe your formats on the sensor and on the SoC do not match, verify that.

Thanks
Guennadi

   I am not sure where to look for the problem, so here is a debug dump in 
   case 
  you can
   point me in the right direction...
   
   
   r...@sixcam:~ insmod sixcam.ko 
   sixcam_mod_init(): ok
   Sixcam TRIGGER on Sixcam board: ATA_CS0~MCU3_26
   sixcam_i2c_probe(): ok
   camera 0-0: mx3_camera: Set SENS_CONF to f00, rate 19523897
   sixcam_init(): initialized camera.
   camera 0-0: MX3 Camera driver attached to camera 0
   sixcam_video_probe(): probed camera.
   mx3-camera mx3-camera.0: soc_camera: Allocated video_device c6080a00
   sixcam_release(): ok
   camera 0-0: MX3 Camera driver detached from camera 0
   
   r...@sixcam:~ capture --bpp 8 --size 1536x1024
   mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
   mx3-camera.0: mx3_camera: requested bus width 15 bit: 0
   mx3-camera.0: mx3_camera: requested bus width 10 bit: 0
   camera 0-0: soc_camera: Found 0 supported formats.
   mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
   mx3-camera.0: mx3_camera: Providing format Monochrome 8 bit in 
   pass-through 
  mode
   mx3-camera.0: mx3_camera: requested bus width 15 bit: 0
   mx3-camera.0: mx3_camera: Providing format Monochrome 16 bit in 
   pass-through 
  mode
   mx3-camera.0: mx3_camera: requested bus width 10 bit: 0
   mx3-camera.0: mx3_camera: Providing format Sixcam 10-bit in pass-through 
   mode
   camera 0-0: mx3_camera: Set SENS_CONF to f00, rate 19523897
   sixcam_init(): initialized camera.
   camera 0-0: MX3 Camera driver attached to camera 0
   camera 0-0: soc_camera: camera device open
   sixcam_set_fmt(): 640x480+0+0
   sixcam_try_fmt(): icd-width=640 icd-height=480 fmt.pix.width=1536 
  fmt.pix.height=1024.
   -- fmt.pix.width=1536 fmt.pix.height=1024.
   ipu-core: ipu_idmac: timeout = 0 * 10ms
   ipu-core: ipu_idmac: init channel = 7
   ipu-core: ipu_idmac: IDMAC_CONF 0x70, IC_CONF 0x0, IDMAC_CHA_EN 0x0, 
  IDMAC_CHA_PRI 0x80, IDMAC_CHA_BUSY 0x0
   ipu-core: ipu_idmac: BUF0_RDY 0x0, BUF1_RDY 0x0, CUR_BUF 0x0, DB_MODE 
   0x0, 
  TASKS_STAT 0x3
   dma dma0chan7: ipu_idmac: Found channel 0x7, irq 176
   sixcam_set_fmt(): 1536x1024+0+0
   camera 0-0: soc_camera: set width: 1536 height: 1024
   mx3-camera.0: mx3_camera: requested bus width 8 bit: 0
   mx3-camera.0: mx3_camera: Flags cam: 0x2695 host: 0xf0fd common: 0x2095
   sixcam_set_bus_param(): 0x2095
   mx3-camera.0: mx3_camera: Set SENS_CONF to 708
   VIDIOC_S_FMT: width 1536, heightcamera 0-0: soc_camera: 
   soc_camera_reqbufs: 1
1024, pixelformat = 'GREY'
   mx3-camera.0: videobuf_dma_contig: __videobuf_mmap_free
   camera 0-0: soc_camera: mmap called, vma=0xc4f886e0
   mx3-camera.0: videobuf_dma_contig: __videobuf_mmap_mapper
   mx3-camera.0: videobuf_dma_contig: dma_alloc_coherent data is at addr 
   c900 
  (size 1572864)
   mx3-camera.0: videobuf_dma_contig: mmap c4fafec0: q=c8b63004 
   40147000-402c7000 
  (18) pgoff 00084000 buf 0
   mx3-camera.0: videobuf_dma_contig: vm_open c4fafec0 
  [count=0,vma=40147000-402c7000]
   camera 0-0: soc_camera: vma start=0x40147000, size=1572864, ret=0
   mx3-camera.0: videobuf_dma_contig: __videobuf_iolock memory method MMAP
   camera 0-0: soc_camera: soc_camera_streamon
   sixcam_start_capture(): trigger on!
   ipu-core: ipu_idmac: write param mem - addr = 0x00010070, data = 
   0x
   ipu-core: ipu_idmac: write param mem - addr = 0x00010071, data = 
   0x4000
   ipu-core: ipu_idmac: write param mem - addr = 0x00010072, data = 
   0x
   ipu-core: ipu_idmac: write param mem - addr = 0x00010073, data = 
   0xFF5FF000
   ipu-core: ipu_idmac: write param mem - addr = 0x00010074, data = 
   0x0003
   ipu-core: ipu_idmac: write param mem - addr = 0x00010078, data = 
   0x8400
   ipu-core: ipu_idmac: write param mem - addr = 0x00010079, data = 
   0x
   ipu-core: ipu_idmac: write param mem - addr = 0x0001007A, data = 
   0x3E0E2FFB
   ipu-core: ipu_idmac: write param mem - addr = 0x0001007B, data = 
   0x0002
   ipu-core: ipu_idmac: write param mem - addr = 0x0001007C, data = 
   0x
   dma dma0chan7: