Using LI-VI365 (tvp5146x chip) with Beagleboard xmC

I am trying to use the LI-VI365 board with my beagleboard xmC. After
several failed attempts, I have come here hoping for a push in the
right direction.

Attempt 1: Prebuilt images.

I tried several prebuilt images (angstrom, ubuntu maverick, ubuntu
natty), but none had the TVP514x module built by default.

Attempt 2: Build My Own Kernel

In Angstrom( http://www.angstrom-distribution.org/building-angstrom):
I ran bitbake virtual/kernel -c menuconfig. Built TVP514x into
kernel. I believe the v4l2 support is built into the kernel as well.
On boot I see "Linux video capture interface: v2.00", but no output
from the tvp514x driver. No /dev/video

Ubuntu build (http://www.elinux.org/BeagleBoard_Ubuntu_
%26_DSP_From_Sources): i built the tvp514x as a module. V42L is
built as a module by default. The modprobe command loaded the
v4l2_common and videodev modules. dmesg reported ("Linux video
capture interface: v2.00". No /dev/video. No output from the tvp514x
driver.

Attempt 3: Modifying the kernel source.

Compared to the Ubuntu kernel source, the Angstrom kernel source
appears to have more camera support in the board-omap3beagle.c file.
Angstrom also has a file board-omap3beagle-camera.c that does not
exist in the ubuntu kernel source. So I started from the angstrom
kernel source (in the work directory), and tried to add support for
the tvp514x driver.

In board-omap3beagle.c, I added some include statements (~ Line 80)

#if defined(CONFIG_VIDEO_TVP514X) ||
defined(CONFIG_VIDEO_TVP514X_MODULE)
#include <media/v4l2-int-device.h>
#include <media/tvp514x.h>
extern struct tvp514x_platform_data tvp514x_pdata;
#endif

I added a struct (~Line 765):

static struct i2c_board_info __initdata
beagle_tvp514x_i2c2_boardinfo[] = {
#if defined(CONFIG_VIDEO_TVP514X) ||
defined(CONFIG_VIDEO_TVP514X_MODULE)
  {
    I2C_BOARD_INFO("tvp5146", 0x5d),
    .platform_data = &tvp514x_pdata,
  },
#endif
};

And I added an else if clause to static int __init
omap3_beagle_i2c_init(void) method :

} else if (!strcmp(cameraboard_name, "tvp514x")) {
  printk(KERN_INFO "Beagle cameraboard:"
      " registering i2c2 bus for tvp514x\n");
  omap_register_i2c_bus(2, 400, beagle_tvp514x_i2c2_boardinfo,
      ARRAY_SIZE(beagle_tvp514x_i2c2_boardinfo));
} else {

Then the kernel build failed to link, so I added this to board-
omap3beagle-camera.c (~ Line 208):

#if defined(CONFIG_VIDEO_TVP514X) ||
defined(CONFIG_VIDEO_TVP514X_MODULE)
#include <media/tvp514x.h>
struct tvp514x_platform_data tvp514x_pdata;
#endif

At this point I could build and run the kernel. It was last week, so
I hope I didn't forget something. Now, when I boot, in dmesg I see the
"Beagle cameraboard:registering i2c2 bus for tvp514x", and the output
from tvp514x.c method tvp514x_probe() that says ""decoder driver
registered !!\n". But still no /dev/video.

That's where I'm at now. My goal is write a simple audio / video
capture application for the beagleboard, grabbing video from the
composite input on the LI-VI365 board. I really do not care which
linux I use, or which drivers. I just need anything that will get
video frames from this device. Eventually I'll need audio playback /
capture, but for now I'll be happy with video.

Where do I go from here?

1. Am I on the right path (Angstrom distro, modify board-
omap3beagle.c)? What else do I need to do to get /dev/video to
appear.

2. Should I try a newer kernel? If Yes, do I build
DISTRO=angstrom-2010.x, or add these two lines to sources/openembedded/
conf/distro/angstrom-2008.1.conf?

PREFERRED_PROVIDER_virtual/kernel_beagleboard = "linux-omap"
PREFERRED_VERSION_linux-omap_beagleboard = "2.6.37"

I found those in a previous post(
http://groups.google.com/group/beagleboard/browse_thread/thread/16da182bc8637f25
). I am not sure why the poster changed linux-omap-psp to linux-omap.

3. Should I be using source found here (http://gitorious.org/
omap3camera/) and something called media-ctl? I have seen a few
references to the media controller framework (heres one,
http://www.mail-archive.com/linux-media@vger.kernel.org/msg19229.html
), but I do not fully understand how it fits into the V4L2 device ,
sub device, setup. Or what is obsolete, and what is not. What
exactly does the chain of drivers I need to link look like? V4L2 -

?? -> tvp514x

I apologize for all the questions and the lengthy write up. As you
can tell, I'm quite confused about how all these parts come together
to form one working video capture device. Any help would be greatly
appreciated. Thank you in advance for any help.

Joe

In case anyone else reads this, the LI_VI365 is not pin compatible
with the Beagleboard-XM camera port. Thank you to garagoth in the
#beagle chat for pointing that out. Best guess, a converter is
necessary to disconnect 8 signals, and reroute 12 others. However
this has not been tested.

Hi Joe,
I am looking to setup this same configuration. I noticed that 4 of the wires from the LI-VI365 are either grounded or powered on the beagleboard. I planned on lifting and terminating these with 1M resistors to open them up. I haven’t looked througouly through the DVP5146 datasheet yet, but I’m assuming that the MSBs can just be hooked up. The rest of the pins look right. I would like to see where you have gotten on this, and if perhaps we could share resources to get this working (if you are still working on it.)
Thanks,
Jeff

Sorry to report, I moved on to something new. I never got the LI-VI365 working with the Beagleboard-XM. I did write some capture software using the board with a Leopard DM365, but that might not be powerful enough for your needs.

Joe