CSID Test Generator

Hi,
This Query is related to the CSID Test Generator.

I am using the Dragonboard 410c with Debian OS on it. want to capture the image using CSID Test Generator.

I am following steps from the article “using CSI Camera With a Dragonboard-410c” - > " using CSID Test Generator".

i am not seeing /dev/v4l-subdev* Which is very much required to enable Test Generator.

Please let me know, how to Generate Test Pattern and configure the pipeline for above case where i don’t have wither sensor or Mezzanine Board?

Please guide me on this.

Regards,
-Mallikarjuna Patil

By default the MIPI-CSI ports are disabled in the device tree. you need to rebuild the device tree and enable them. Hope this helps.

Full Disclosure: I am an employee of Qualcomm Canada, any opinions I may have expressed in this or any other post may not reflect the opinions of my employer.

Hi ljking,

As per your suggestion i did the following modification in device tree (arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi) and recopiled it but still not able to resolve the issue.

camss {
status = “ok”;

ports {
	#address-cells = <1>;
	#size-cells = <0>;
	port@0 {
		reg = <0>;
		csiphy0_ep: endpoint {
			clock-lanes = <1>;
			data-lanes = <0 2>;
			remote-endpoint = <&ov5645_ep>;
			status = "okay";
		};
	};
	port@1 {
		reg = <1>;
		csiphy1_ep: endpoint {
			clock-lanes = <1>;
			data-lanes = <0 2>;
			remote-endpoint = <&ov5645_2_ep>;
			status = "okay";
		};
	};
};

};

Please let me know if any other things need to be taken care as i am not able to Generate Test Pattern and configure the pipeline when we don’t have either sensor or Mezzanine Board?

Thanks in advance.

Regards,
-Mallik

Hello,

For this you will also need to:

  • enable any of the camera nodes in device tree (camera_rear or camera_front);
  • have a camera sensor physically present (and on the same node that you have enabled).

Otherwise the subdev and video nodes will not be registered again.

To enable registering of the subdev and video nodes if you don’t have any camera sensor present you can revert the second hunk of this commit:
https://git.linaro.org/landing-teams/working/qualcomm/kernel.git/commit/?h=release/qcomlt-4.9&id=e26ff7d95d411fd324593e279e67bd991b62b0f6

Hi todortomov,
I have followed steps mentioned and still not able to register subdev and video nodes.
i.e /dev/ doesn’t have any vl4-subdevX or media1

Please help me whether i am missing anything here.

diff --git a/drivers/media/platform/qcom/camss-8x16/camss.c b/drivers/media/platform/qcom/camss-8x16/camss.c
index 20a08b0…435c576 100644
— a/drivers/media/platform/qcom/camss-8x16/camss.c
+++ b/drivers/media/platform/qcom/camss-8x16/camss.c
@@ -199,7 +199,8 @@ static int camss_of_parse_ports(struct device *dev,
int ret;

while ((node = of_graph_get_next_endpoint(dev->of_node, node)))
  •   notifier->num_subdevs++;
    
  •   if (of_device_is_available(node))
    
  •   	notifier->num_subdevs++;
    

    size = sizeof(*notifier->subdevs) * notifier->num_subdevs;
    notifier->subdevs = devm_kzalloc(dev, size, GFP_KERNEL);
    @@ -512,6 +513,8 @@ static int camss_probe(struct platform_device *pdev)
    ret = camss_of_parse_ports(dev, &camss->notifier);
    if (ret < 0)
    return ret;

  • else if (ret == 0)

  •   return -ENODEV;
    

    ret = camss_init_subdevices(camss);
    if (ret < 0)

Hi,

It is not very easy to share a patch in the forum.
What you need to do is to just apply the diff below, don’t make any other changes:

I’d strongly recommend using a pastebin or a github gist and sharing the patches as links. The forum works well with links (especially so if they are on a line on their own).

For me there isn’t anything below!

Thanks.

mpatils97379, please apply this diff only:

Sorry for delay reply.

Thanks for suggestion. it is working fine now.

Hi Todortomov,
I am having one more Issue,

Followed followings
Method1: This works fine
enable the test generator:
./yavta --no-query -w ‘0x009f0903 1’ /dev/v4l-subdev2

Then, configure the pipeline:
sudo media-ctl -d /dev/media1 -l ‘“msm_csid0”:1->“msm_ispif0”:0[1],“msm_ispif0”:1->“msm_vfe0_rdi0”:0[1]’
sudo media-ctl -d /dev/media1 -V ‘“msm_csid0”:1[fmt:UYVY8_2X8/1920x1080 field:none],“msm_ispif0”:0[fmt:UYVY8_2X8/1920x1080 field:none],“msm_vfe0_rdi0”:0[fmt:UYVY8_2X8/1920x1080 field:none]’

Capture JPEG Picture:
gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=1 ! ‘video/x-raw,format=UYVY,width=1920,height=1080’ ! jpegenc ! filesink location=image01.jpg

It is able show proper Test Pattern.
++++++++++++++++++

Method 2 : This has some Issue

enable the test generator:
./yavta --no-query -w ‘0x009f0903 1’ /dev/v4l-subdev2

Then, configure the pipeline:
sudo media-ctl -d /dev/media1 -l ‘“msm_csid0”:1->“msm_ispif0”:0[1],“msm_ispif0”:1->“msm_vfe0_rdi0”:0[1]’

Format: configured higher resolution 4088x3081
sudo media-ctl -d /dev/media1 -V ‘“msm_csid0”:1[fmt:UYVY8_2X8/4088x3081 field:none],“msm_ispif0”:0[fmt:UYVY8_2X8/4088x3081field:none],“msm_vfe0_rdi0”:0[fmt:UYVY8_2X8/4088x3081 field:none]’

Capture JPEG Picture:
gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=1 ! ‘video/x-raw,format=UYVY,width=4088,height=3081’ ! jpegenc ! filesink location=image01.jpg

Now the TP is angled 180 Degree and looks messy.

Please can you help me how to configure for higher resolutions…

Regards,

Hi,

When you configure the test generator to output incrementing pattern, it outputs an incrementing pattern from 0x00 to 0xff so it is 256 bytes long. When the line length of the frame is a multiple of 256 (for UYVY 1920 the line length is 3840) the frame will contain a vertical pattern. When the line length is not a multiple of 256 the frame will contain a diagonal pattern. From your description it seems that everything is as expected. You can also capture a UYVY frame (with yavta) and examine it with a hex editor, it can help to understand what happens.

Best regards,
Todor Tomov

Hi Todortomov,

Thanks a lot, now i understood what happening :slight_smile:

I am able to capture Vertical Pattern UYVY 3968 the line length was 7936 which is multiple of 256.

Only Question i have is, When i tried to capture UYVY 4096 the line length was 8192 which is multiple of 256.

Pipeline is not able to capture the image and hangs with following messages

Setting Pipeline to PAUSED …
Using mplane plugin for capture
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New Cock: GstSystemClock

it will not go through the full captue :frowning:

Please can you guide me on this… is not possible to capture the UYVY 4096.

Regards,

Hi,

The line length is set in a 13bit cell so 8191 is the largest supported value.

Hi
2.1 BUILD AND RUN IMAGES
A. Package Description
The binaries and source directories are packaged into the tarball called:
IFC6309_Debian_Linux_BSP_880531_V2.6
Meta-Binaries Directory:
This package contains the meta-binaries from Linaro’s 18.01 release.

So my question is how can we get source, binaries and meta-binaries directories??.
I tried to get all these. But I didn’t get.

I don’t think Inforce make their docs and downloads publicly available (only for their customers) making it hard to know exactly what you are doing here. You should probably share questions specific to Inforce products with Inforce themselves. We help with problems that are common between Snapdragon 410E as a courtesy but we don’t usually do much about Inforce specific matters.

linaro debian 18.01 I loaded on both inforce6309 and dragon410 c board. I got v4l subdev and I could generate test pattern also on inforce but not on dragon. why?

When I loaded linaro debian 16.09 on both the boards, I am unable to generate the test pattern, and I couldn’t find the v4l-subdev also. why?

Theses two cases : without connecting a camera sensor physically.

Please read comments above (CSID Test Generator - #7 by danielt), you will need to apply the patch and regenerate the module. I think it would be interesting to have a module parameter (e.g. test_mode) to force camss to initialize successfully even without physical sensor.

This is an old release and camera subsystem does not seem to be a supported feature according to the release note.

Thank you all for your great support…
Hi I already applied all patches what are all mentioned in the page which you shared. But still it is not happening with the dragon board.
My doubt is that, I am able to get the v4l-subdev on inforce board but not on dragon board (without any physical sensor), and the thing is, I am using same version (linaro release 18.01) on both the boards.

Is there any difference between these two boards related to this camera, v4l…??