On 2012-01-19 06:28, Laurent Pinchart wrote:
Hi Gary,
On Thursday 19 January 2012 14:13:53 Gary Thomas wrote:
On 2012-01-19 05:50, Laurent Pinchart wrote:
On Thursday 19 January 2012 13:41:57 Gary Thomas wrote:
On 2012-01-17 08:33, Laurent Pinchart wrote:
<snip>
I already had a couple of YUV support patches in my OMAP3 ISP tree at
git.kernel.org. I've rebased them on top of the lastest V4L/DVB tree
and pushed them to
http://git.linuxtv.org/pinchartl/media.git/shortlog/refs/heads/omap3isp
- omap3isp-yuv. Could you please try them, and see if they're usable
with your sensor ?
I just tried this kernel with my board. The media control
infrastructure comes up and all of the devices are created, but I can't
access them.
From the bootup log:
Linux media interface: v0.10
Linux video capture interface: v2.00
Any message from the omap3isp driver and from the sensor driver ?
No, it doesn't appear that the sensor was probed (or maybe it failed but
no messages). I'll check into this.
Is the omap3-isp driver compiled as a module ? If so, make sure iommu2.ko is
loaded first. 'rmmod omap3-isp&& modprobe iommu2&& modprobe omap3-isp' is a
quick way to test it.
I have everything compiled in - no modules.
My camera init code is attached. In the previous kernel, the I2C bus was
probed implicitly when I initialized the OMAP3ISP. I thought I remembered
some discussion about how that worked (maybe changing), so this is probably
where the problem starts.
If you have an example, I can check my setup against it.
Has the way of adding the sensors on the i2c bus changed? I have my
TVP5150 on a i2c-2 all by itself and with the 3.0+ kernel, it was being
added when I initialized the camera subsystem.
Do you have an example driver (like the BeagleBoard one that was in
your omap3isp-sensors-next branch previously)?
When I try to access the devices:
root@cobra3530p73:~# media-ctl -p
Opening media device /dev/media0
media_open_debug: Can't open media device /dev/media0
Failed to open /dev/media0
Could you please strace that ?
Attached. Looks like it blows up immediately.
Note: my media-ctl program was built from SRCREV
7266b1b5433b5644a06f05edf61c36864ab11683
The devices look OK to me:
root@cobra3530p73:~# ls -l /dev/v* /dev/med*
crw------- 1 root root 252, 0 Nov 8 10:44 /dev/media0
crw-rw---- 1 root video 81, 7 Nov 8 10:44 /dev/v4l-subdev0
crw-rw---- 1 root video 81, 8 Nov 8 10:44 /dev/v4l-subdev1
crw-rw---- 1 root video 81, 9 Nov 8 10:44 /dev/v4l-subdev2
crw-rw---- 1 root video 81, 10 Nov 8 10:44 /dev/v4l-subdev3
crw-rw---- 1 root video 81, 11 Nov 8 10:44 /dev/v4l-subdev4
crw-rw---- 1 root video 81, 12 Nov 8 10:44 /dev/v4l-subdev5
crw-rw---- 1 root video 81, 13 Nov 8 10:44 /dev/v4l-subdev6
crw-rw---- 1 root video 81, 14 Nov 8 10:44 /dev/v4l-subdev7
crw-rw---- 1 root video 81, 15 Nov 8 10:44 /dev/v4l-subdev8
crw-rw---- 1 root tty 7, 0 Nov 8 10:44 /dev/vcs
crw-rw---- 1 root tty 7, 1 Nov 8 10:44 /dev/vcs1
crw-rw---- 1 root tty 7, 128 Nov 8 10:44 /dev/vcsa
crw-rw---- 1 root tty 7, 129 Nov 8 10:44 /dev/vcsa1
crw-rw---- 1 root video 81, 0 Nov 8 10:44 /dev/video0
crw-rw---- 1 root video 81, 1 Nov 8 10:44 /dev/video1
crw-rw---- 1 root video 81, 2 Nov 8 10:44 /dev/video2
crw-rw---- 1 root video 81, 3 Nov 8 10:44 /dev/video3
crw-rw---- 1 root video 81, 4 Nov 8 10:44 /dev/video4
crw-rw---- 1 root video 81, 5 Nov 8 10:44 /dev/video5
crw-rw---- 1 root video 81, 6 Nov 8 10:44 /dev/video6
Have the device nodes have been created manually ?
No, automatically created by udev.
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------
#include <media/tvp5150.h>
#define TVP5150_I2C_ADDR 0x5C
static struct i2c_board_info cobra3530p73_i2c2_sensor_info[] = {
{
I2C_BOARD_INFO("tvp5150", TVP5150_I2C_ADDR),
},
};
static struct isp_subdev_i2c_board_info tvp5150_camera_subdevs[] = {
{
.board_info = cobra3530p73_i2c2_sensor_info,
.i2c_adapter_id = 2,
},
{ NULL, 0, },
};
static struct isp_v4l2_subdevs_group cobra3530p73_camera_subdevs[] = {
{
.subdevs = tvp5150_camera_subdevs,
.interface = ISP_INTERFACE_PARALLEL,
.bus = {
.parallel = {
.data_lane_shift = 0,
.clk_pol = 0,
.bt656 = 1,
}
},
},
{ },
};
static struct isp_platform_data cobra3530p73_isp_platform_data = {
.subdevs = cobra3530p73_camera_subdevs,
};
static int __init cobra3530p73_camera_init(void)
{
int res;
res = gpio_request(CAM_RESET, "CAM RESET");
if (res) {
printk(KERN_ERR "failed to get CAM RESET GPIO\n");
return -EINVAL;
}
gpio_direction_output(CAM_RESET, 0); // Assert RESETn
udelay(100);
gpio_direction_output(CAM_RESET, 1); // Drop RESETn
omap_register_i2c_bus(cobra3530p73_isp_platform_data.subdevs->subdevs[0].i2c_adapter_id, 400, NULL, 0);
omap3_init_camera(&cobra3530p73_isp_platform_data);
return 0;
}
late_initcall(cobra3530p73_camera_init);