Integrating iMX8M with SONY FCB Camera

cancel
Showing results for 
Search instead for 
Did you mean: 

Integrating iMX8M with SONY FCB Camera

142 Views
Manikandan
Contributor II

Hi,


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

 

0 Kudos
5 Replies

101 Views
Manikandan
Contributor II

Hi,

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*?

0 Kudos

95 Views
khang_letruong
Senior Contributor II

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 ... :

https://github.com/boundarydevices/linux/blob/boundary-imx_5.4.x_2.3.0/drivers/media/i2c/tc358743.c

https://github.com/boundarydevices/linux/blob/boundary-imx_5.4.x_2.3.0/arch/arm64/boot/dts/freescale...

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;

 

and

 

	sd->dev = &client->dev;
	err = v4l2_async_register_subdev(sd);

 

 

More resource :

https://developer.technexion.com/docs/vizionlink-hdmi-use-guide

https://developer.technexion.com/docs/mipi-csi-periph-wb-edm-g

Regards,

K

0 Kudos

22 Views
Manikandan
Contributor II

hi @khang_letruong 

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);
v4l2_async_register_subdev(sd);

 

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 

Tags (2)
0 Kudos

14 Views
khang_letruong
Senior Contributor II

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).

Regards,

K.

0 Kudos

136 Views
khang_letruong
Senior Contributor II

Hi @Manikandan,

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

Regards,
Khang