MIPI CSI interface support for interfacing Image Sensor


#1

Without MIPI-CSI support, including Linux drivers and examples of how to interface Camera/Image sensors with the DragonBoard 410c, the board is useless and cannot be used for developing anything related to robotics, Image processing, drones, etc. Many other platforms provide Linux drivers and examples how to interface a camera module/image sensor with the platform. When will this be available for this board as well as other 96 boards? Is this a priority, and if not why not make it a priority?


#2

The initial goal is to demonstrate a pipeline by end of March with one sensor (currently 0V5645, but possibility of changing soon). When that works, it will validate the pipeline, and more sensor drivers can be written. There is only plan to support ‘smart sensors’ that deliver YUV, not raw RGB sensors.


#3

Thank you for the quick reply to the question, I am looking forward for the added support. I am currently working on a project which would utilize one or more image sensor, and have read the previous threads about the MIPI-CSI support. After reading the previous threads I was considering using USB 2.0 as the camera interface. But after much consideration, I came to the realization that this route really would not work. USB cameras are great if size, weight, and the physical geometry is not a issue, but for custom solution it just does not work. This answer gives me new hope for using the 96 boards spec for the project I am working on.


#4

Is there any progress on this topic? There are lots of people waiting to be able to hook up a non USB camera to this DragonBoard 410c.


#5

As I stated before, is there an accurate timeline for adding MIPI CSI2 CMOS image sensor support? While I understand that it can be a very complicated and time consuming process to write drivers for various CMOS image sensor, it would be nice to see an accurate status update every once in a while. The Raspberry pi already has a OmniVision 5MP camera module out with fully functional drivers, as well as Sony IMX219 8MP module which was just released(drivers will be available next release of Raspbian). I am not saying that the Raspberry pi is the perfect platform or that it is ahead, but they are adapting quickly. From what it looks like they just released the Pi3, presumably in response to the lack of integrated wifi and processors ability, which competing platforms like DragonBoard 410c, did have. This seems like a good way to stay relevant. It would be nice to see a committed and accurate timeline for CMOS image sensor support. As well, a complete list of what sensors will be supported. This way it will show, that yes 96 boards platform will be relevant to projects that do need a camera and the 96boards platform is adapting as quickly as possible. Thank you for your response and support ahead of time.


#6

3A (AE/AF/AWB) should use Bayer-RGB input.
Maybe Qualcomm can provide their ISP API library for porting different CMOS sensor.


#7

We need a couple more weeks to tie up some loose ends internally, and then we are planning to make a ’preview’ release of what we have which is ’functional’ with 1 sensor, and we are planning to integrate Camera feature in our June release.


#8

Dear Vchong.
Thanks for the update on the Dragonboard Camera Interface for Linux release. Looking forward to test it.

Does the timing for the release in june remain the same?

On the other hand, even if the plan is only to support YUV/RGB formats for OV5645 sensor? would the example help us at least accesing RAW Image data from other sensors (by passing the ISP)?

Some applications in Robotics and Machine vision could still work using these RAW images…


#9

Hello Cloudbreak,

Yes, the camera interface driver will support Bayer Raw image data dump to memory. You will be able to use this if you have a raw camera sensor.

The support will be added in the next release (the one after June release). If you need this functionality earlier you can request this in the forum and we can share a patch earlier.


#10

Hi Todor,

I would be very interested in that functionality. Would it be possible to share the patch?

Thanks,

Andrew


#11

Hi,
I am interesting in getting the RAW data from the Bayer sensor. Can you please share a patch?
Thanks.


#12

Hello Andrew, Leonid,

We are glad to see such interest in the camera support.
We will share the patch in a week. It will include functionality to configure the format (raw or yuv) and frame size on the camera interface as per V4L2 specification.


#13

Hello Andrew, Leonid, and all others interested in the camera support.

We have prepared an update which includes functionality to configure the format as per V4L2 specification. This includes data format (UYVY, MIPI RAW8, RAW10, RAW12) and frame size.

You can find the relevant changes (based over 16.06 release) here:
https://git.linaro.org/people/todor.tomov/linux.git/shortlog/refs/heads/release/qcomlt-4.4-camss-demo3

Any feedback on using this is welcome :slight_smile:


#14

Hi,where is the documentation of the camera which is mipi imterface.I can only find clock about camera in Hardware Register Description.I ready write a camera driver base on imx224,so I refer to ov5645 driver in kernel,but I can’t debug my driver.Most problem is I not have document of camera.About ov5645’s driver of kernel,do you sure it can run accurately.My sensor driver is ok,but it can’t enter this funcation :camss->notifier.bound = camss_subdev_notifier_bound;it can’t create /dev/subdev6.Could you give me some suggestion.
And my revamp of device tree about imx224 camera at msm8916.dtsi is :
camss@0 {

ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
csiphy0_ep: endpoint {
clock-lanes = <1>;
data-lanes = <0 2 3 4>;
qcom,settle-cnt = <0xe>;
remote-endpoint = <&imx224_ep>;
};
};
};
};


blsp_i2c4: i2c@78b8000 {
camera@1a {
compatible = “sony,imx224”;
reg = <0x1a>;
clocks = <&gcc GCC_CAMSS_MCLK0_CLK>;
clock-names = “xclk”;

    vdddo-supply = &lt;&amp;camera_vdddo_1v8&gt;;
    vdda-supply = &lt;&amp;camera_vdda_3v3&gt;;
    vddd-supply = &lt;&amp;camera_vddd_1v2&gt;;
    port {
    imx224_ep: endpoint {
      clock-lanes = &lt;1&gt;;
      data-lanes = &lt;0 2 3 4&gt;;
      remote-endpoint = &lt;&amp;csiphy0_ep&gt;;
    };
  };
  };
};

And my I2C port is successful.Other details in camss@0,I don’t konw how to revamp,because I don’t have dacument.Please help me,thank you!


#15

Hello liuhui,

Yes, the OV5645 driver works.

I don’t know about any publicly available document about OV5645. There is however a document about OV5640 which is circulating around the internet - both camera sensors are similar, but not the same. You can use this at your own risk.

If you don’t enter “camss_subdev_notifier_bound()”, this means that the sensor driver didn’t probe successfully or didn’t register with “v4l2_async_register_subdev()”. You can check “Documentation/video4linux/v4l2-framework.txt” about usage of “v4l2_async_register_subdev()” and “v4l2_async_notifier_register()” or just follow the OV5645 driver implementation - this mechanism works there.


#16

Hello,My sensor driver is ok,It’s I2c is successful and I test it’s output of csi use the oscilloscope,it’s data rate and clock rate are right.I know the reason about can’t enter “camss_subdev_notifier_bound()” is “a subdevice driver has failed probed one of subdevices” in v4l2-framework.txt.But my sensor driver has no error really.My sensor is different from ov5645 is that no integration ISP.So,If you release code of camss don’t support this sensor.Or,some of register setting of 410c has a big difference.But I don’t have these datasheet of csi.The datasheet of the official only has clock setting.Could you share me your datasheet?thank you!In addition,My I2c of sensor driver use blsp_i2c4,but yours use cci,I don’t understand you use cci for communication
,but why do you make your sensor port in blsp_i2c6.please help me ,thanks!thanks!
thanks!


#17

Hello:
My sensor use four lanes output and no integration ISP,dose the following content need to modify?

            qcom,msm-bus,name = "msm_camera_isp";
		qcom,msm-bus,num-cases = &lt;3&gt;;
		qcom,msm-bus,num-paths = &lt;1&gt;;
		qcom,msm-bus,vectors-KBps =
				&lt;29 512 0 0&gt;,
				&lt;29 512 450000 900000&gt;,
				&lt;29 512 11000 11000&gt;;

#18

Hello Todor Tomov:
I have solved my problem,In /dev,I see the v4l-subdev0-6 node.But when I test it use app,the kernel shutdown immediately.What’s reason do you know? Thank you!


#19

Hello, How to set the settle-cnt in .dtsi?


#20

Hello,
In code of csi:
u8 vc = 0; /* TODO: How to get this from sensor? */
What’s it means?
How to get this(vc)?