This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LogicPD DM3730 Torpedo camera support

Other Parts Discussed in Thread: DM3730

The release notes for the LogicPD Linux BSP for the Torpedo say that it has no camera support, which is required for my application. I don't understand this since there are drivers for a number of CPI devices in other kernel versions for the DM3730 (including the DVSDK), so why would they be missing from this kernel? I see at least some of the code for these drivers in the LogicPD kernel source and if I try to use one of them (e.g. modprobe mt9v022), the module loads but doesn't appear to do anything (no kernel messages). I know from what I've read that there are other pieces needed to make the driver work (bridge driver, CCDC driver, u-boot parameters) - the details are not clear at all to me yet - and I assume that some of these are disabled or missing.

What if I were to try to use the DVSDK instead of the LogicPD BSP? Would it work with the Torpedo?

Any comments or insights would be appreciated.

Thanks,
Mike

  • I've taken the approach of patching the Logic 2.6.32 kernel for the Aptina sensor. The main piece I am missing is the file in arch/arm/mach-omap2 for the camera interface (aka the bridge driver?) that sets up the ISP for the Torpedo. I attempted to create that file and it runs and registers, however the master clock for the camera (XCLKA) is not turning on. This is one place (among others) where my nascent understanding of the driver architecture fails me. I set up i2c_board_info with a pointer to the function that powers up the camera, which is where I initialize the ISP and enable XCLKA. Now, what do I need to do so that function gets called? I would be very glad for any help.

  • Here is (I hope) a clearer phrasing of my question... I am setting up my i2c_board_info for the imager with a pointer to the platform_data structure. I defined a few function pointers in my platform_data structure including one to set_power(), which initializes the ISP subsystem and sets up XCLKA. I call i2c_register_board_info(2, &my_i2c_board_info, 1) and it succeeds. I intend for set_power() to get called at some point to initialize the camera board, but where is it supposed to be called from? It must be from code I need to add myself someplace since the platform_data structure is my own definition. Or am misunderstanding how this all works?

  • Made a bit of progress and the set_power() function is now being called when the sensor driver is installed. The roadblock now is where I call isp_configure_interface(), which seg faults because the isp pointer is invalid. I get the pointer from the v4l2_int_device pointer, s... vdev = s->u.slave->master->priv, then vdev->cam->isp. As best I can tell, these pointers are set up for me when I call v4l2_i2c_subdev_init(), but it would seem something is not working correctly. I tried calling isp_get() as an experiment and it returns null. Is there some configuration step I am missing?

  • The 3.0 kernel is now available so I've switched over to it and it is working much better. The problem now is that XCLK_A is not turning on. The call to isp>platform_cb.set_xclk() returns good status, but nothing on the pin. Is this a pin setup problem? Does anyone know what to do?

  • Fixed the XCLK_A problem - the driver is now initializing, turning on the master clock, communicating to the imager properly. Trouble now is there is no useable /dev/video device. Even without the driver installed, /dev/video[0-6] are present, but none of these appear to useful. If I install the vivi driver, it is accessible via /dev/video0. So questions are (1) why are 7 video devices always present and (2) why is there no video device for my driver?