MW_ACK_DONE syncpoint time out error in R24.2

Hello guys,

I’m updating my ov13850 driver from R23 to R24.2. The whole system including the hardware and the driver just works normally while in R23.

However, I’m troubled in R24.2 since there’s an error prompt “video4linux video0: MW_ACK_DONE syncpoint time out!0”.

After modifying the device tree and the ov13850 driver, I can see the sysfs entry in “/dev/video0”. But when I try to capture one frame of image by yavta with the following command, the error prompt “video4linux video0: MW_ACK_DONE syncpoint time out!0” occurs.

./yavta /dev/video0 –c1

The modification of the device tree arch/arm64/boot/dts/tegra210-platform/ tegra210-camera-e3326-a00.dtsi is as follows since the hardware topology of the sensor is CSI port A, 4 lanes and I2C bus 6, address 0x10

/ {
    host1x {
        vi {
            num-channels = <1>;
            ports {
                #address-cells = <1>;
                #size-cells = <0>;
    
                port@0 { /* CSI A */
                    status = "okay";
                    reg = <0>;
                    e3326_vi_in0: endpoint {
                        csi-port = <0>;
                        bus-width = <4>;
                        remote-endpoint = <&e3326_ov13850_out0>;
                    };  
                };  
            };  
        };  

        i2c@546c0000 {  /* adapter 6 */
            status = "okay";
            #address-cells = <1>;
            #size-cells = <0>;

            ov13850_a@10 {
                compatible = "nvidia,ov13850";
                reg = <0x10>;
                sensor_model ="ov13850";

                avdd-reg = "vana";
                iovdd-reg = "vif";
                devnode="video0";

                /* post_crop_frame_drop = "0"; */
                ports {
                    #address-cells = <1>;
                    #size-cells = <0>;

                    port@0 {
                        reg = <0>;
                        e3326_ov13850_out0: endpoint {
                            csi-port = <0>;
                            bus-width = <4>;
                            remote-endpoint = <&e3326_vi_in0>;
                        };
                    };
                };
            };

        };
    };
};

As for the ov13850 driver, I modified the driver referring to ov5693 driver in driver/media/i2c/ov5693.c

The error prompt is as follows
http://7xqm99.com1.z0.glb.clouddn.com/1.png

Besides, I tried to capture consecutive 10 frames by yavta, and I got the printing
http://7xqm99.com1.z0.glb.clouddn.com/2.png

I got the file ov.raw and transformed the image format from raw to bmp. The content of the bmp file is as follows

http://7xqm99.com1.z0.glb.clouddn.com/3.png

Furthermore, I tried to upgrade the kernel of the TX1 reference board to R24.2. I used the default device tree (arch/arm64/boot/dts/tegra210-platform/ tegra210-camera-e3326-a00.dtsi) and sensor driver (drivers/media/i2c/ov5693.c). I tested with yavta and got the same error prompt.

So what’s the problem and I would appreciate it if anyone could share some ideas on that.

Hi Freffy
Did you mean the origin camera sensor board OV5693 didn’t working either after upgrate the kernel to R24.2?
Could you tell the detail about how you upgrade the kernel?

Thanks @ShaneCCC

I downloaded the latest driver package for Tegra Tegra210_Linux_R24.2.0_aarch64 and sample root filesystem Tegra210_Linux_Sample_Root_Filesystem_R24.2.0_aarch64.

Then I flashed the latest root filesystem into the reference board with command

./flash.sh jetson-tx1 mmcblk0p1

The kernel image used is the original one in the driver package. Since the ov5693 is disabled in the original device tree, I only enabled ov5693, while the remaining part of device tree not modified at all. Then I replaced the dtb file with the modified one.

I tested with yavta with command

./yavta /dev/video0 -c1

and the prompt showed that the video format is RG10, which is strange because the default format defined in ov5693.c is SRGGB10. While I want to set the format as SRGGB10 with command

./yavta /dev/video0 -fSRGGB10

, it returned with error “Unsupported video format”

http://7xqm99.com1.z0.glb.clouddn.com/0.PNG

Is there some problem with the application yavta since I see the latest testing tool used is gstreamer.

Besides, when I tested ov13850 driver, the application returned with correct format, that is SRGGB10 3840x2160, which is just the format defined in the sensor driver.

The yavta is for the kind of older version soc_camera v4l2, and after r24.2 the V4L2 was upgrade to media controller base. You can reference to below topic to use below command to get the raw data. And check the v4l2 compliance test by "v4l2-compliance -d /dev/video0 "

https://devtalk.nvidia.com/default/topic/968475
https://devtalk.nvidia.com/default/topic/968767

v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=1 --stream-to=ov1080.raw

Thanks @ ShaneCCC
After switching to the new test tool v4l2-ctl, the new kernel just works normally in reference board. However there’s still some problem with my ov13850 driver. There’re two resolution definitions in ov13850 driver, 3840x2160 and 1920x1080. Everything goes on well when the driver works in 1920x1080 mode, while the timeout error “MW_ACK_DONE syncpoint time out!0” occurs again when the driver works in 3840x2160 mode.

Try to increase the pix_clk_hz for this mode in the device tree. If still not working you may need to check this sensor mode i2c setting.