We have developed a custom iMX8M based board to integrate SONY FCB-EV9500M MIPI camera. we want to receive the video data from SONY FCB-EV9500M MIPI camera so how can i integrate SONY FCB-EV9500M MIPI camera with custom iMX8M based board kindly help us.
here i have attached our camera module datasheet please find it for the reference
Thanks for your reply. As you told, in our camera we have tc358743 bridge chipset to convert HDMI signals to MIPI-CSI2 signals. and a driver for tc358743 is also available in our imx platform OS but the driver is completely based on I2C. and in our camera we don't have I2C, in that case how can we use this I2C based tc358743 driver to get the video frames. please advise me how to approach this driver.
As you mentioned in your reply,
"The good thing is that you will not need to control it via I2C as there's an MCU that handle this communication with the bridge which will simplify your work alot."
if so, how to populate /dev/video*?
Hi @Manikandan ,
You can inspire from below driver but remove any I2C access via i2c_rd8, i2c_rd16, i2c_rd32, i2c_wr8, i2c_wr16, i2c_wr32 or i2c_transfer ... :
The most important thing to populate /dev/video* in the tc358743_probe() function at following lines :
sd = &state->sd; v4l2_i2c_subdev_init(sd, client, &tc358743_ops); sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS;
sd->dev = &client->dev; err = v4l2_async_register_subdev(sd);
More resource :
Thanks for the help. As you suggested i have approached in the same way but instead of using tc358743 driver i have used ov5645 driver (because both are similar and going to give us mipi data and in both cases we are not going to use i2c).
1. Removed i2c related stuff from the driver
Debug done, as you told the below functions passed
v4l2_i2c_subdev_init(sd, client, &tc358743_ops);
2. Linked with DTS file kept only one entry
3. tried getting frames by using
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=10 --stream-to=aaa.raw
but not getting anything. i'm not getting any error even to proceed
but if i give the same command with different pixelformat (NV12) or resolution ( 1280 x720 ) i'm getting only one frame and stucked there only.
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=NV12 --stream-mmap --stream-count=10 --stream-to=aaa.raw
can you help me how can i proceed further
Here i'm attaching my modified driver
HI @Manikandan ,
You can :
1. Use an oscilloscope to measure the waveform of MIPI-CSI2 clock lane and data lanes to make sure that there's output from the FCB camera (the tc358743 more precisely).
2. You can enable the MIPI-CSI2 registers' dumping to see if there's any events (including errors such as FIFO overflow, etc).
Your Sony FCB-EV9500M camera has a Toshiba tc358743 bridge chipset to convert HDMI signals to MIPI-CSI2 signals. Then you will need a driver for that bridge. The good thing is that you will not need to control it via I2C as there's an MCU that handle this communication with the bridge which will simplify your work alot. You will only need to register the driver so that /dev/videoX is populated and read the video data via that /dev/videoX.
From my experience with this FCB camera, following is the driver of tc358743 for Nvidia Jetson for your reference : https://gist.github.com/olesia-kochergina/c2af863c250c748c3c58dbb7acfe84bf