This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM625: Camera porting to TI-AM625 09_02_01_10 SDK

Part Number: AM625

Tool/software:

Hi Team,

We have a working ar1335 camera module integrated on TI-AM625 Starter Kit with processor SDK Version: 08.06.00.42. Now we have ported the camera driver to processor SDK Version: 09.02.01.10.

I have done the following changes in the dtso file and camera driver.

DTSO:

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>

&{/} {
    clk_ar1335_fixed: ar1335-xclk {
        compatible = "fixed-clock";
        #clock-cells = <0>;
        clock-frequency = <24000000>;
    };
};

&main_i2c2 {
    #address-cells = <1>;
    #size-cells = <0>;
    status = "okay";

    i2c-switch@71 {
        compatible = "nxp,pca9543";
        #address-cells = <1>;
        #size-cells = <0>;
        reg = <0x71>;

        /* CAM port */
        i2c@1 {
            #address-cells = <1>;
            #size-cells = <0>;
            reg = <1>;

            ar1335: camera@42 {
                compatible = "aptina,ar1335";
                reg = <0x42>;

                clocks = <&clk_ar1335_fixed>;
                clock-names = "xclk";

                port {
                    csi2_cam0: endpoint {
                        remote-endpoint = <&csi2rx0_in_sensor>;
                        link-frequencies = /bits/ 64 <500000000>;
                        clock-lanes = <0>;
                        data-lanes = <1 2>;
                    };
                };
            };
        };
    };
};

&csi0_port0 {
    status = "okay";

    csi2rx0_in_sensor: endpoint {
        remote-endpoint = <&csi2_cam0>;
        bus-type = <4>; /* CSI2 DPHY. */
        clock-lanes = <0>;
        data-lanes = <1 2>;
    };
};


Driver:

-  static int ar1335_remove(struct i2c_client *client)
+ static void ar1335_remove(struct i2c_client *client)


The driver loaded successfully and created the video nodes. But I could get the streaming.

root@am62xx-evm:~# v4l2-ctl --list-devices
j721e-csi2rx (platform:30102000.ticsi2rx):
    /dev/video0
    /dev/video1
    /dev/video2
    /dev/video3
    /dev/media0


Media controller API version 6.1.83

Media device information
------------------------
driver          j721e-csi2rx
model           TI-CSI2RX
serial          
bus info        platform:30102000.ticsi2rx
hw revision     0x1
driver version  6.1.83

Device topology
- entity 1: 30102000.ticsi2rx (5 pads, 5 links, 1 route)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
    routes:
        0/0 -> 1/0 [ACTIVE]
    pad0: Sink
        [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
        <- "cdns_csi2rx.30101000.csi-bridge":1 [ENABLED,IMMUTABLE]
    pad1: Source
        [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
        -> "30102000.ticsi2rx context 0":0 [ENABLED,IMMUTABLE]
    pad2: Source
        -> "30102000.ticsi2rx context 1":0 [ENABLED,IMMUTABLE]
    pad3: Source
        -> "30102000.ticsi2rx context 2":0 [ENABLED,IMMUTABLE]
    pad4: Source
        -> "30102000.ticsi2rx context 3":0 [ENABLED,IMMUTABLE]

- entity 7: cdns_csi2rx.30101000.csi-bridge (5 pads, 2 links, 1 route)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev1
    routes:
        0/0 -> 1/0 [ACTIVE]
    pad0: Sink
        [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
        <- "ar1335 4-0042":0 [ENABLED,IMMUTABLE]
    pad1: Source
        [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
        -> "30102000.ticsi2rx":0 [ENABLED,IMMUTABLE]
    pad2: Source
    pad3: Source
    pad4: Source

- entity 13: ar1335 4-0042 (1 pad, 1 link, 0 route)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev2
    pad0: Source
        [stream:0 fmt:UYVY8_2X8/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range]
        -> "cdns_csi2rx.30101000.csi-bridge":0 [ENABLED,IMMUTABLE]

- entity 19: 30102000.ticsi2rx context 0 (1 pad, 1 link, 0 route)
             type Node subtype V4L flags 0
             device node name /dev/video0
    pad0: Sink
        <- "30102000.ticsi2rx":1 [ENABLED,IMMUTABLE]

- entity 25: 30102000.ticsi2rx context 1 (1 pad, 1 link, 0 route)
             type Node subtype V4L flags 0
             device node name /dev/video1
    pad0: Sink
        <- "30102000.ticsi2rx":2 [ENABLED,IMMUTABLE]

- entity 31: 30102000.ticsi2rx context 2 (1 pad, 1 link, 0 route)
             type Node subtype V4L flags 0
             device node name /dev/video2
    pad0: Sink
        <- "30102000.ticsi2rx":3 [ENABLED,IMMUTABLE]

- entity 37: 30102000.ticsi2rx context 3 (1 pad, 1 link, 0 route)
             type Node subtype V4L flags 0
             device node name /dev/video3
    pad0: Sink
        <- "30102000.ticsi2rx":4 [ENABLED,IMMUTABLE]

ioctl: VIDIOC_SUBDEV_ENUM_MBUS_CODE (pad=0,stream=0)
    0x2006: MEDIA_BUS_FMT_UYVY8_2X8
ioctl: VIDIOC_SUBDEV_ENUM_FRAME_SIZE (pad=0,stream=0)
    Size Range: 640x480 - 640x480
    Size Range: 1280x720 - 1280x720
    Size Range: 1920x1080 - 1920x1080
    Size Range: 3840x2160 - 3840x2160
    Size Range: 4096x2160 - 4096x2160
    Size Range: 4192x3120 - 4192x3120
ioctl: VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL (pad=0,stream=0)
    Interval: 0.008s (120.000 fps)
ioctl: VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL (pad=0,stream=0)
    Interval: 0.008s (120.000 fps)
Media controller API version 6.1.83

Media device information
------------------------
driver          j721e-csi2rx
model           TI-CSI2RX
serial          
bus info        platform:30102000.ticsi2rx
hw revision     0x1
driver version  6.1.83

Device topology
- entity 1: 30102000.ticsi2rx (5 pads, 5 links, 1 route)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
    routes:
        0/0 -> 1/0 [ACTIVE]
    pad0: Sink
        [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
        <- "cdns_csi2rx.30101000.csi-bridge":1 [ENABLED,IMMUTABLE]
    pad1: Source
        [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
        -> "30102000.ticsi2rx context 0":0 [ENABLED,IMMUTABLE]
    pad2: Source
        -> "30102000.ticsi2rx context 1":0 [ENABLED,IMMUTABLE]
    pad3: Source
        -> "30102000.ticsi2rx context 2":0 [ENABLED,IMMUTABLE]
    pad4: Source
        -> "30102000.ticsi2rx context 3":0 [ENABLED,IMMUTABLE]

- entity 7: cdns_csi2rx.30101000.csi-bridge (5 pads, 2 links, 1 route)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev1
    routes:
        0/0 -> 1/0 [ACTIVE]
    pad0: Sink
        [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
        <- "ar1335 4-0042":0 [ENABLED,IMMUTABLE]
    pad1: Source
        [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
        -> "30102000.ticsi2rx":0 [ENABLED,IMMUTABLE]
    pad2: Source
    pad3: Source
    pad4: Source

- entity 13: ar1335 4-0042 (1 pad, 1 link, 0 route)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev2
    pad0: Source
        [stream:0 fmt:UYVY8_2X8/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range]
        -> "cdns_csi2rx.30101000.csi-bridge":0 [ENABLED,IMMUTABLE]

- entity 19: 30102000.ticsi2rx context 0 (1 pad, 1 link, 0 route)
             type Node subtype V4L flags 0
             device node name /dev/video0
    pad0: Sink
        <- "30102000.ticsi2rx":1 [ENABLED,IMMUTABLE]

- entity 25: 30102000.ticsi2rx context 1 (1 pad, 1 link, 0 route)
             type Node subtype V4L flags 0
             device node name /dev/video1
    pad0: Sink
        <- "30102000.ticsi2rx":2 [ENABLED,IMMUTABLE]

- entity 31: 30102000.ticsi2rx context 2 (1 pad, 1 link, 0 route)
             type Node subtype V4L flags 0
             device node name /dev/video2
    pad0: Sink
        <- "30102000.ticsi2rx":3 [ENABLED,IMMUTABLE]

- entity 37: 30102000.ticsi2rx context 3 (1 pad, 1 link, 0 route)
             type Node subtype V4L flags 0
             device node name /dev/video3
    pad0: Sink
        <- "30102000.ticsi2rx":4 [ENABLED,IMMUTABLE]

root@am62xx-evm:~# gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-raw , width=640, height=480, ! kmssink driver-name=tidss
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Failed to allocate required memory.
Additional debug info:
../gst-plugins-good-1.20.7/sys/v4l2/gstv4l2src.c(777): gst_v4l2src_decide_allocation (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Buffer pool activation failed
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
../gstreamer-1.20.7/libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)

Do I need to change anything in the driver source for the latest processor SDK ?
Could you please provide some pointers to debug this issue.

Regards,
Ajith Kumaresh S.