Got my problem solved. Bastian had me peek at his code, result is another forehead slap. For the record: This error message while modprobing the omap3-isp driver (-EBUSY): >>> root@overo:~# modprobe omap3-isp >>> Linux media interface: v0.10 >>> Linux video capture interface: v2.00 >>> omap3isp omap3isp: Revision 2.0 found >>> [...] >>> i2c i2c-3: Failed to register i2c client mt9t001 at 0x5d (-16) was due to me registering my mt9t001 i2c device twice in the boardfile: Once while registering the corresponding i2c bus like this: omap_register_i2c_bus(3, 400, overo_i2c_boardinfo_3, ARRAY_SIZE(overo_i2c_boardinfo_3)); where the overo_i2c_boardinfo_3 structure had the mt9t001 device, then again as a subdev of the omap3isp_device. Removing the first occurrence removed my problem. Thank you very much, Bastian! Onwards to frame capturing (which "just works" now using yavta, nice). Stefan. On Wed, Dec 1, 2010 at 1:33 PM, Stefan Steuerwald <salsasepp@xxxxxxxxxxxxxx> wrote: > Hi Bastian, > > thank you, that'll be great. > > I have a clock oscillator soldered on my board feeding the CLKIN of > the MT9T001, so I have no issue with I2C not working. The sensor > responds and does i2c writes and reads just fine. Just the v4l2_subdev > isn't created when I load the omap3-isp module, so I guess I have > messed up some configuration somewhere. > > Best wishes, > ÂStefan. > > > On Wed, Dec 1, 2010 at 12:50 PM, Bastian Hecht <hechtb@xxxxxxxxxxxxxx> wrote: >> Hello Stefan, >> >> I can send you my code tomorrow. Meanwhile a short hint, that may help >> you: The mt9p031 needs a not only the i2c clock to work but also the >> cam_clk signals. >> >> Right now this is hacked into the isp-driver in my setup but I want to >> do it like the nokia code (pass a clock-setup function defined in the >> board-code to the sensor driver, so that the driver can setup the >> clock itself before i2c-checking is done). >> >> best greetings, >> >> Bastian >> >> >> 2010/12/1 Stefan Steuerwald <salsasepp@xxxxxxxxxxxxxx>: >>> Hi, >>> >>> may I please have your help with the following: >>> >>> I have adapted the MT9T001 driver from Laurent's tree at >>> Âhttp://git.linuxtv.org/pinchartl/media.git?a=shortlog;h=refs/heads/media-mt9t001 >>> to the current state of the media-framework in this kernel tree (devel branch): >>> Âhttp://meego.gitorious.org/maemo-multimedia/omap3isp-rx51 >>> to run this on a gumstix overo (OMAP3) board. >>> (Duplicating Bastian's recent work, I know, but he's on hoilday...). >>> >>> The mt9t001 driver module loads and probes ok, however, the creation >>> of a v4l2 subdev >>> for the sensor fails (i2c says -EBUSY, see below). It seems to choke >>> on the fact that the >>> sensor's I2C address of 0x5D is already in use after loading the >>> mt9t001 module, >>> which I think is fine: >>> >>> root@overo:~# modprobe iommu2 >>> omap-iommu omap-iommu.0: isp registered >>> >>> root@overo:~# modprobe omap3-isp >>> Linux media interface: v0.10 >>> Linux video capture interface: v2.00 >>> omap3isp omap3isp: Revision 2.0 found >>> omap-iommu omap-iommu.0: isp: version 1.1 >>> isp_register_subdev_group: i2c_adapter_id 3, type mt9t001, i2c_addr 93 >>> mt9t001 3-005d: mt9t001_probe() >>> mt9t001 3-005d: mt9t001_video_probe() >>> mt9t001 3-005d: MT9T001 detected >>> v4l2_i2c_new_subdev_board: info->addr=0x5d, probe_addrs=(null) >>> i2c i2c-3: Failed to register i2c client mt9t001 at 0x5d (-16) >>> isp_register_subdev_group: Unable to register subdev mt9t001 >>> >>> This creates these subdevs: >>> root@overo:~# cat /sys/class/video4linux/v4l-subdev*/name >>> OMAP3 ISP CCP2 >>> OMAP3 ISP CSI2a >>> OMAP3 ISP CCDC >>> OMAP3 ISP preview >>> OMAP3 ISP resizer >>> OMAP3 ISP AEWB >>> OMAP3 ISP AF >>> OMAP3 ISP histogram >>> which has the sensor missing, I believe. >>> >>> I am using platform_device_register() in my >>> arch/arm/mach-omap2/board-overo.c file >>> to register my iof_isp_platform_data as follows: >>> >>> static struct i2c_board_info overo_i2c_boardinfo_3[] = { >>>    Â{ >>>        ÂI2C_BOARD_INFO("mt9t001", 0x5d), >>>    Â}, >>> }; >>> >>> static struct v4l2_subdev_i2c_board_info iof_camera_mt9t001[] = { >>>    Â{ >>>        Â.board_info = &overo_i2c_boardinfo_3[0], >>>        Â.i2c_adapter_id = 3, >>>    Â}, >>>    Â{ NULL, 0, }, >>> }; >>> >>> static struct isp_v4l2_subdevs_group iof_camera_subdevs[] = { >>>    Â{ >>>        Â.subdevs = iof_camera_mt9t001, >>>        Â.interface = ISP_INTERFACE_PARALLEL, >>>        Â.bus = { .parallel = { >>>            Â.data_lane_shift    Â= 0, >>>            Â.clk_pol        Â= 1, >>>            Â.bridge         = ISPCTRL_PAR_BRIDGE_DISABLE, >>>        Â} }, >>>    Â}, >>>    Â{ NULL, 0, }, >>> }; >>> >>> static struct isp_platform_data iof_isp_platform_data = { >>>    Â.subdevs = iof_camera_subdevs, >>> }; >>> >>> I have followed the recent conversation between Bastian, Laurent and >>> others on the >>> similar Âsubject of a mt9p031 driver used with omap3-isp. >>> Any pointers on what to check are greatly appreciated. >>> >>> Thank you, >>> ÂStefan. >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-media" in >>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>> More majordomo info at Âhttp://vger.kernel.org/majordomo-info.html >>> >> > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html