TC358748 parallel to MIPI V4L2 driver

I am using TX1 23.2 + ov5693_v4l2 patch applied. I want to add V4L2 based parallel to MIPI soc_camera driver for Toshiba TC358748.
I have taken reference from https://github.com/antmicro/linux-tk1/blob/YUV_cameras/drivers/media/i2c/soc_camera/tc358743.c this link. There’s TC358743 driver is present.

I have modified the driver for TC358748. Please find driver source code 'TC358748’https://drive.google.com/file/d/0B8d7zQv-G71oQWkyRkQ3aDBSRzg/view?usp=sharing. and also added board info in 'board-t210ref-camera.c’https://drive.google.com/file/d/0B8d7zQv-G71odWl2TnRlV0xfMkk/view?usp=sharing.

I have removed ov5693_V4L2 and SOC_CAMERA_PLATFORM from defconfig. And if i insert TC358748 and tegra_camera driver i can able to get /dev/video0. And i can able to read/write I2C address of TC358748.

But when i start video stream using

gst-launch-1.0 v4l2src device="/dev/video0" ! "video/x-raw, width=1920, height=1080, framerate=30/1, format=(string)UYVY" ! autovideosink

i am getting below error.

ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2865): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming task paused, reason not-negotiated (
[  201.561738] vi vi: CSI 0 syncpt timeout, syncpt = 7, err = -11
-4)
Execution ended after 0:00:05.40701[  201.570932] vi vi: TEGRA_CSI_CSI_CIL_STATUS 0x00000000
8956
Setting pipeline to PAUSED[  201.579329] vi vi: TEGRA_CSI_CSI_CILX_STATUS 0x00000001
 ...
Setting pipeline to READY [  201.587344] vi vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000000
...
[  201.595632] vi vi: TEGRA_VI_CSI_ERROR_STATUS 0x00000000
[  203.549447] vi vi: MW_ACK_DONE syncpoint time out!

And i try to capture using yavta i am getting 4MB file but all values are ‘0’.

So what i am missing?

And i haven’t done any entry in .dtsi file only in board file as per tc358743 reference driver. So is this right? or i need to make driver format same as ov5693_v4l2.c

Hi RiteshPanchal,

   We had created the driver for TC358743 [1] and TC358749, however, they were tested in other platform. First we created the TC358743 driver and then when trying to get the TC358749 more registers had to be configured. We will review your driver and compare it with the TC358749 to see if the problem might be there.

   Also, please recall that the ov5693 gives bayer so likely the VI is configured to receive bayer too. You would need to configure it for YUV. I don't have a board to test it, please send me an email maybe you could give us access to the board?

[1] https://developer.ridgerun.com/wiki/index.php/Toshiba_TC358743_Linux_driver_for_iMX6

Also, did you connect the Toshiba chip to the same pins where the camera was connected? Otherwise you would need to modify the device tree likely and verify the pin muxing

We have use CSI-A and on board ov5693_v4l2 sensor uses CSI-C. Actually we realized this after designing the board.

So can you point out which dtsi or board file needs to be modify for CSI-A?

is there a source for this driver anywhere?
I’m planning to create my own HDMI to CSI2 board and would like to avoid writing my own driver and just modify existing one.

It was created for iMX6 where the V4L2 uses int-device instead of subdevice but in any case the hardest part is always to know the correct set of register’s settings so it could work for you as a reference.

The kernel tarball is called boundary-imx_3.0.35_4.1.0-r2.tar.gz and is located in

http://downloads.ridgerun.com/packages/

tt has the driver on it already, then a customer hire us to add audio support so we created the patches here:

https://github.com/RidgeRun/eval-sdk-imx6/tree/master/bsp/mach-nitrogen6x/patches/linux-3.0.35_rel_imx_4.1.0

Hope this helps, if you want we can help you creating it for tegra X1 too.

Please check the latest reply from
https://devtalk.nvidia.com/default/topic/932750/jetson-tx1/ov5693_v4l2-changing-from-csi_c-to-csi_a-/

You have to set right CSI lane and port number for your sensor first.

Hi everyone.

My name is Hai from Vietnam.
I’m in trouble in getting video 1080p60 from our camera via B102 and J120 carries TX1 from Auvidea.
Firstly, i have successfully getting data from camera via B102. As i analyzed, the raw frame i captured was 1920x1080 RGBA (about 8.3MB per frame) with capture time was 13->14 milliseconds and im sure i can get 60 frame per second. But when i try to show the video capture with gstreamer, the video looks like 15 fps video.

Here are all my code.
https://drive.google.com/open?id=1xU_np06RFsejqpCj66qDEYeuHCO-fPvH
Here is my gstreamer command.
gst-launch-1.0 v4l2src device=/dev/video1 ! ‘video/x-raw,width=1920,height=1080,framerate=60/1,format=RGB’ ! videoconvert ! xvimagesink sync=false

Did i do some thing wrong? Do i need to set another value for CSI config in devive tree or change some thing on driver source? I know that B102 capable of convert RGB data from HDMI to YUV422 and i have try to change it in the driver but only capture a still frame.
Here is my gstramer command.
gst-launch-1.0 v4l2src device=/dev/video1 ! ‘video/x-raw,width=1920,height=1080,framerate=60/1,format=YV12’ ! videoconvert ! xvimagesink sync=false

Please help me.

Please try with v4l2-ctl commands. First you have to make sure the camera is working fine with v4l2-ctl.

Can you please share some info on how you managed for the B102 module to work and get some image form HDMI. I cant make it work on jetson tx2.
Thanks.