testing soc_camera with mt9m001 on pxa270
Hello,
I'm testing at the moment the capture interface with the soc-camera and mt9m001 driver.
I fixed all I2C routines to test without any connected camera like mt9m001, because we want to use another camera hardware as mt9m001.
To read out the capture buffer I use the example project capture.c from V4L2-API with mmap(). The ioctl (fd, VIDIOC_REQBUFS, &req) at the beginning of initialization fails. I have debuged the most important parts of the driver (pxa_camera, soc_camera and mt9m001) but I can't find the mistake.
Any Idea?
Here is a short log, which functions were called:
[@Linux /opt]#./capture -m soc_camera_open()pxa_camera_add_device() !!!
camera 0-0: PXA Camera driver attached to camera 0 pxa_camera_activate() !!!mt9m001_init() !pxa_camera_add_device() ret !!! pxa_camera_init_videobuf() !!! soc_camera_querycap() soc_camera_querycap() ret 0 soc_camera_cropcap()soc_camera_s_crop()mt9m001_set_fmt_cap() ! mt9m001_set_fmt_cap() ! ret 0 soc_camera_s_crop() ret 0 soc_camera_s_fmt_vid_cap() soc_camera_try_fmt_vid_cap() pxa_camera_try_bus_param() !!!
test_platform_param() !!!
buswidth 8 flags 3133
buswidth 8 flags 3197mt9m001_query_bus_param() !bus_switch_possible() !width_flag 455soc_camera_bus_param_compatible() ret 1109 !!!mt9m001_try_fmt_cap() !try_fmt__cap() ret 0soc_camera_try_fmt_vid_cap() ret 0mt9m001_set_fmt_cap() !mt9m001_set_fmt_cap() ! ret 0pxa_camera_set_bus_param()!!!
test_platform_param() !!!
buswidth 8 flags 3133
buswidth 8 flags 3197mt9m001_query_bus_param()! bus_switch_possible()!width_flag 455mt9m001_set_bus_param()!
flags 1109 datawidth 8 width_flags 64 pxa_camera_set_bus_param() ret 0 !!! soc_camera_s_fmt_vid_cap() ret 0/dev/video does not support memory mapping soc_camera_close()
camera 0-0: PXA Camera driver detached from camera 0 mt9m001_release() !
greets
Maik
Signature · 7 lines
Sensationsangebot nur bis 30.11: GMX FreeDSL - Telefonanschluss + DSL für nur 16,37 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K11308T4569a -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
Quoted 8 lines · Maik Steuer
Hello,
I'm testing at the moment the capture interface with the soc-camera and mt9m001 driver.
I fixed all I2C routines to test without any connected camera like mt9m001, because we want to use another camera hardware as mt9m001.
Quoted 7 lines
To read out the capture buffer I use the example project
capture.cfrom V4L2-API withmmap(). The ioctl (fd,VIDIOC_REQBUFS, &req) at the beginning of initialization fails. I have debuged the most important parts of the driver (pxa_camera,soc_cameraand mt9m001) but I can't find the mistake.Any Idea?
Sorry, no. Without knowing what kernel version you're using, without seeing your "fixes to all I2C routines" I don't think anyone would be able to tell you what the problem is. And anyway you wouldn't get too far without a real camera - at best when the pxa will start capturing, it will timeout waiting for sync signals. Maybe you would be able to do this if you switch to the slave mode, but beware, that this mode hasn't been tested.
I would suggest you tell us what camera you are going to use, maybe someone is already working on a driver for it. If not - you write a driver yourself and start working with a real hardware.
Thanks
Guennadi
Quoted 51 lines
Here is a short log, which functions were called:
[@Linux /opt]#./capture -m
soc_camera_open()pxa_camera_add_device()!!!
camera 0-0: PXA Camera driver attached to camera 0pxa_camera_activate()!!!mt9m001_init()!pxa_camera_add_device()ret !!!pxa_camera_init_videobuf()!!!soc_camera_querycap()soc_camera_querycap()ret 0soc_camera_cropcap()soc_camera_s_crop()mt9m001_set_fmt_cap()!mt9m001_set_fmt_cap()! ret 0soc_camera_s_crop()ret 0soc_camera_s_fmt_vid_cap()soc_camera_try_fmt_vid_cap()pxa_camera_try_bus_param()!!!test_platform_param() !!!buswidth 8 flags 3133
buswidth 8 flags 3197mt9m001_query_bus_param()!bus_switch_possible()!width_flag455soc_camera_bus_param_compatible()ret 1109 !!!mt9m001_try_fmt_cap()!try_fmt__cap()ret 0soc_camera_try_fmt_vid_cap()ret 0mt9m001_set_fmt_cap()!mt9m001_set_fmt_cap()! ret 0pxa_camera_set_bus_param()!!!test_platform_param() !!!buswidth 8 flags 3133
buswidth 8 flags 3197mt9m001_query_bus_param()!bus_switch_possible()!width_flag455mt9m001_set_bus_param()!
flags 1109 datawidth 8width_flags64pxa_camera_set_bus_param()ret 0 !!!soc_camera_s_fmt_vid_cap()ret 0/dev/videodoes not support memory mappingsoc_camera_close()
camera 0-0: PXA Camera driver detached from camera 0mt9m001_release()!
Quoted 7 lines
greets
Maik
Signature · 2 lines
Sensationsangebot nur bis 30.11: GMX FreeDSL - Telefonanschluss + DSL für nur 16,37 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K11308T4569a
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
video4linux-list mailing list
Unsubscribe mailto:[email protected]?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
-------- Original-Nachricht --------
Quoted 22 lines
Datum: Fri, 28 Nov 2008 16:16:48 +0100 (CET)
Von: Guennadi Liakhovetski <[email protected]>
An: Maik Steuer <[email protected]>
CC: [email protected], [email protected]
Betreff: Re: testingsoc_camerawith mt9m001 on pxa270Quoted 14 lines · Maik Steuer
Hello,
I'm testing at the moment the capture interface with the soc-camera and mt9m001 driver.
I fixed all I2C routines to test without any connected camera like mt9m001, because we want to use another camera hardware as mt9m001.
To read out the capture buffer I use the example project
capture.cfrom V4L2-API withmmap(). The ioctl (fd,VIDIOC_REQBUFS, &req) at the beginning of initialization fails. I have debuged the most important parts of the driver (pxa_camera,soc_cameraand mt9m001) but I can't find the mistake.
Quoted 5 lines
Quoted 1 line
Any Idea?
Sorry, no. Without knowing what kernel version you're using, without seeing your "fixes to all I2C routines" I don't think anyone would be able to tell you what the problem is.
I'm using 2.6.27.7. The fixes are easy. The two functions reg_read() and reg_write() in mt9m001.c returns always with 0 and the included i2c_smbus_read_word_data() and i2c_smbus_write_word_data() were commented out. I set the MT9M001_CHIP_VERSION to 0x8431 and set the default data_width to 8. That's all. In the V4L2-API capture example I set the right color space (in this case V4L2_PIX_FMT_GREY).
Quoted 6 lines
And anyway you wouldn't get too far
without a real camera - at best when the pxa will start capturing, it will timeout waiting for sync signals. Maybe you would be able to do this if you switch to the slave mode, but beware, that this mode hasn't been tested.
The pxa doesn't start capturing. That's my target to test the capture interface. I don't know if there is an easier way to start capturing as with the capture example from V4L2-API.
Quoted 4 lines
I would suggest you tell us what camera you are going to use, maybe someone is already working on a driver for it. If not - you write a driver yourself and start working with a real hardware.
At the moment the camera is only a FPGA which sends 8 Bit dummy data with hsync, vsync and pixclock. So I can change all necessary parameters for pxa requirements.
I throught that the ioctl (fd, VIDIOC_REQBUFS, &req) starts soc_camera_reqbufs() but it isn't so.
greets
Maik
Quoted 65 lines
Thanks
GuennadiQuoted 51 lines
Here is a short log, which functions were called:
[@Linux /opt]#./capture -m
soc_camera_open()pxa_camera_add_device()!!!
camera 0-0: PXA Camera driver attached to camera 0pxa_camera_activate()!!!mt9m001_init()!pxa_camera_add_device()ret !!!pxa_camera_init_videobuf()!!!soc_camera_querycap()soc_camera_querycap()ret 0soc_camera_cropcap()soc_camera_s_crop()mt9m001_set_fmt_cap()!mt9m001_set_fmt_cap()! ret 0soc_camera_s_crop()ret 0soc_camera_s_fmt_vid_cap()soc_camera_try_fmt_vid_cap()pxa_camera_try_bus_param()!!!test_platform_param() !!!buswidth 8 flags 3133
buswidth 8 flags 3197mt9m001_query_bus_param()!bus_switch_possible()!width_flag455soc_camera_bus_param_compatible()ret 1109 !!!mt9m001_try_fmt_cap()!try_fmt__cap()ret 0soc_camera_try_fmt_vid_cap()ret 0mt9m001_set_fmt_cap()!mt9m001_set_fmt_cap()! ret 0pxa_camera_set_bus_param()!!!test_platform_param() !!!buswidth 8 flags 3133
buswidth 8 flags 3197mt9m001_query_bus_param()!bus_switch_possible()!width_flag455mt9m001_set_bus_param()!
flags 1109 datawidth 8width_flags64pxa_camera_set_bus_param()ret 0 !!!soc_camera_s_fmt_vid_cap()ret 0/dev/videodoes not support memory mappingsoc_camera_close()
camera 0-0: PXA Camera driver detached from camera 0mt9m001_release()!Quoted 7 lines
greets
Maik
Signature · 2 lines
Sensationsangebot nur bis 30.11: GMX FreeDSL - Telefonanschluss + DSL für nur 16,37 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K11308T4569a---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
Signature · 6 lines
Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
Quoted 10 lines · Maik Steuer
Quoted 3 lines
I would suggest you tell us what camera you are going to use, maybe someone is already working on a driver for it. If not - you write a driver yourself and start working with a real hardware.
At the moment the camera is only a FPGA which sends 8 Bit dummy data with hsync, vsync and pixclock. So I can change all necessary parameters for pxa requirements.
I throught that the ioctl (fd,
VIDIOC_REQBUFS, &req) startssoc_camera_reqbufs()but it isn't so.
Yes, this is indeed what should happen: see __video_do_ioctl() and around it. You're saying, that VIDIOC_REQBUFS is the first failing ioctl? Then just check what error code it returns, activate the
dev_dbg(&icd->dev, "%s: %d\n", __func__, p->memory);
in soc_camera.c::soc_camera_reqbufs(), etc.
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
video4linux-list mailing list
Unsubscribe mailto:[email protected]?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
-------- Original-Nachricht --------
Quoted 17 lines
Datum: Fri, 28 Nov 2008 18:00:47 +0100 (CET)
Von: Guennadi Liakhovetski <[email protected]>
An: Maik Steuer <[email protected]>
CC: [email protected], [email protected]
Betreff: Re: testingsoc_camerawith mt9m001 on pxa270Quoted 2 lines · Maik Steuer
Quoted 2 lines
I would suggest you tell us what camera you are going to use, maybe someone is already working on a driver for it. If not - you write a
driver
Quoted 6 lines
Quoted 1 line
yourself and start working with a real hardware.
At the moment the camera is only a FPGA which sends 8 Bit dummy data with hsync, vsync and pixclock. So I can change all necessary parameters for pxa requirements.
Quoted 5 lines
Quoted 2 lines
I throught that the ioctl (fd,
VIDIOC_REQBUFS, &req) startssoc_camera_reqbufs()but it isn't so.Yes, this is indeed what should happen: see
__video_do_ioctl()and around it. You're saying, thatVIDIOC_REQBUFSis the first failing ioctl? Then
Yes, VIDIOC_REQBUFS is the first failling. The right case construction wasn't called. I printed out the commited ioctl cmd and the unsigned integer value for VIDIOC_REQBUFS:
<7>pxa27x-camera: VIDIOC_REQBUFS
<7>switch(c0105608) VIDIOC_REQBUFS = c0145608
They are different! That's the problem. The capture.c example use #include <linux/videodev2.h> but the v4l2-ioctl.c use declarations in #include <media/v4l2-ioctl.h> for the VIDIOC_REQBUF define macro.
Is there a known version conflict?
Quoted 11 lines
just check what error code it returns, activate the
dev_dbg(&icd->dev, "%s: %d\n", __func__, p->memory);in
soc_camera.c::soc_camera_reqbufs(), etc.Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
greets
Maik
Signature · 7 lines
Sensationsangebot verlängert: GMX FreeDSL - Telefonanschluss + DSL für nur 16,37 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K1308T4569a -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
Quoted 28 lines · Maik Steuer
-------- Original-Nachricht --------
Quoted 17 lines
Datum: Fri, 28 Nov 2008 18:00:47 +0100 (CET)
Von: Guennadi Liakhovetski <[email protected]>
An: Maik Steuer <[email protected]>
CC: [email protected], [email protected]
Betreff: Re: testingsoc_camerawith mt9m001 on pxa270Quoted 2 lines · Maik Steuer
Quoted 2 lines
I would suggest you tell us what camera you are going to use, maybe someone is already working on a driver for it. If not - you write a
driver
Quoted 6 lines
Quoted 1 line
yourself and start working with a real hardware.
At the moment the camera is only a FPGA which sends 8 Bit dummy data with hsync, vsync and pixclock. So I can change all necessary parameters for pxa requirements.
Quoted 5 lines
Quoted 2 lines
I throught that the ioctl (fd,
VIDIOC_REQBUFS, &req) startssoc_camera_reqbufs()but it isn't so.Yes, this is indeed what should happen: see
__video_do_ioctl()and around it. You're saying, thatVIDIOC_REQBUFSis the first failing ioctl? ThenYes,
VIDIOC_REQBUFSis the first failling. The right case construction wasn't called. I printed out the commited ioctl cmd and the unsigned integer value forVIDIOC_REQBUFS:
Quoted 8 lines
<7>pxa27x-camera:
VIDIOC_REQBUFS
<7>switch(c0105608)VIDIOC_REQBUFS=c0145608They are different! That's the problem. The
capture.cexample use #include <linux/videodev2.h> but thev4l2-ioctl.cuse declarations in #include <media/v4l2-ioctl.h> for theVIDIOC_REQBUFdefine macro.Is there a known version conflict?
Oops, not to me. Mauro?
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
video4linux-list mailing list
Unsubscribe mailto:[email protected]?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
Quoted 33 lines · On Mon, 1 Dec 2008 11:43:04 +0100 (CET) Guennadi Liakhovetski…
Quoted 31 lines · Maik Steuer
-------- Original-Nachricht --------
Quoted 17 lines
Datum: Fri, 28 Nov 2008 18:00:47 +0100 (CET)
Von: Guennadi Liakhovetski <[email protected]>
An: Maik Steuer <[email protected]>
CC: [email protected], [email protected]
Betreff: Re: testingsoc_camerawith mt9m001 on pxa270Quoted 2 lines · Maik Steuer
Quoted 2 lines
I would suggest you tell us what camera you are going to use, maybe someone is already working on a driver for it. If not - you write a
driver
Quoted 6 lines
Quoted 1 line
yourself and start working with a real hardware.
At the moment the camera is only a FPGA which sends 8 Bit dummy data with hsync, vsync and pixclock. So I can change all necessary parameters for pxa requirements.
Quoted 5 lines
Quoted 2 lines
I throught that the ioctl (fd,
VIDIOC_REQBUFS, &req) startssoc_camera_reqbufs()but it isn't so.Yes, this is indeed what should happen: see
__video_do_ioctl()and around it. You're saying, thatVIDIOC_REQBUFSis the first failing ioctl? ThenYes,
VIDIOC_REQBUFSis the first failling. The right case construction wasn't called. I printed out the commited ioctl cmd and the unsigned integer value forVIDIOC_REQBUFS:<7>pxa27x-camera:
VIDIOC_REQBUFS
<7>switch(c0105608)VIDIOC_REQBUFS=c0145608
Quoted 7 lines
Quoted 5 lines
They are different! That's the problem. The
capture.cexample use #include <linux/videodev2.h> but thev4l2-ioctl.cuse declarations in #include <media/v4l2-ioctl.h> for theVIDIOC_REQBUFdefine macro.Is there a known version conflict?
Oops, not to me. Mauro?
v4l2-ioctl.h doesn't define VIDIOC_REQBUF. It just includes linux/videodev2.h, as:
linux/include/linux/videodev2.h:#define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers)
Can you double check what #define are you using with the driver and with the userspace?
Maybe the macro is wrongly evaluated or you're linking against a broken version of the file.
There's another possibility:
the 3rd argument of the macro is used to determine the size of the parameter. The size of the struct may vary (depending on how the struct is defined), depending on the architecture.
In the case of this macro, it is defined as:
struct v4l2_requestbuffers {
__u32 count;
enum v4l2_buf_type type;
enum v4l2_memory memory;
__u32 reserved[2];
};On most architectures, enum is evaluated as a 32 bits data. So, the size of the struct is 16. However, on a few architectures, like arm, enum is generally evaluated as 8 bits. You can see some discussions about this at [1]. The fix on ARM is to pass an additional compilation parameter on ARM [2]. Probably, something like this is needed also when compiling v4l utils.
[1] http://threebit.net/mail-archive/video4linux/msg01880.html
[2] http://threebit.net/mail-archive/video4linux/msg02037.html
Cheers,
Mauro
--
video4linux-list mailing list
Unsubscribe mailto:[email protected]?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list