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.

SK-AM68: Adding a new camera sensor II

Part Number: SK-AM68
Other Parts Discussed in Thread: AM68

The previous thread was unfortunately locked without ever receiving an update from

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1286793/sk-am68-adding-a-new-camera-sensor

We've since tried to use the new release of the SDK (09.01.00.06) but still no luck getting raw image data out of the sensor.

The last comment from Fabiana suggested there may be a sensor resolution limitation however the IMX708 supports capturing at 2304x1296 and 1536x864, both of which we've tried but it still fails to start the stream.

Is there any further information from your imaging team or documentation that could prove useful?

Kind regards,

Dan

  • Hi Dan,

    Apologies for the delay. VISS has a limitation of up to 4096 pixels/line (or 4K x 4K image size) for raw image sensors. From the logs you shared in the previous thread, I see that the width exceeds 4096. Do you see the same messages when trying the smaller resolutions?

    Thank you,

    Fabiana

  • Hi Fabiana,

    We're not even using VISS at this stage, simply trying to get the raw data from the sensor via csi2 using v4l2-ctl.

    Yes, we have the same issue with it failing to start the stream even if we reduce the capture resolution to one of the lower options.

    Kind regards,
    Dan

  • Hi Dan,

    Could you run media-ctl -p and share the output? The topology that was shared from the previous thread seems to be from before the chip id was read. 

    Thank you,

    Fabiana

  • Hi,

    This is the full media-ctl -p output:

    root@am68-sk:~# media-ctl -p
    Media controller API version 6.1.46

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

    Device topology
    - entity 1: 4500000.ticsi2rx (9 pads, 9 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.4504000.csi-bridge":1 [ENABLED,IMMUTABLE]
           pad1: Source
                   [stream:0 fmt:UYVY8_1X16/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:lim-range]
                   -> "4500000.ticsi2rx context 0":0 [ENABLED,IMMUTABLE]
           pad2: Source
                   -> "4500000.ticsi2rx context 1":0 [ENABLED,IMMUTABLE]
           pad3: Source
                   -> "4500000.ticsi2rx context 2":0 [ENABLED,IMMUTABLE]
           pad4: Source
                   -> "4500000.ticsi2rx context 3":0 [ENABLED,IMMUTABLE]
           pad5: Source
                   -> "4500000.ticsi2rx context 4":0 [ENABLED,IMMUTABLE]
           pad6: Source
                   -> "4500000.ticsi2rx context 5":0 [ENABLED,IMMUTABLE]
           pad7: Source
                   -> "4500000.ticsi2rx context 6":0 [ENABLED,IMMUTABLE]
           pad8: Source
                   -> "4500000.ticsi2rx context 7":0 [ENABLED,IMMUTABLE]

    - entity 11: cdns_csi2rx.4504000.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:SRGGB10_1X10/4608x2592 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range]
                   <- "imx708":0 [ENABLED,IMMUTABLE]
           pad1: Source
                   [stream:0 fmt:SRGGB10_1X10/4608x2592 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range]
                   -> "4500000.ticsi2rx":0 [ENABLED,IMMUTABLE]
           pad2: Source
           pad3: Source
           pad4: Source

    - entity 17: imx708 (2 pads, 1 link, 0 route)
                type V4L2 subdev subtype Sensor flags 0
                device node name /dev/v4l-subdev2
           pad0: Source
                   [stream:0 fmt:SRGGB10_1X10/4608x2592 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range
                    crop.bounds:(16,24)/4608x2592
                    crop:(16,24)/4608x2592]
                   -> "cdns_csi2rx.4504000.csi-bridge":0 [ENABLED,IMMUTABLE]
           pad1: Source
                   [stream:0 fmt:unknown/28800x1 field:none
                    crop.bounds:(16,24)/4608x2592
                    crop:(16,24)/4608x2592]

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

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

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

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

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

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

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

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

    And this is the full system log from a failed v4l2-ctl attempt to grab a raw frame:

    Jan 10 12:14:24 am68-sk kernel: cdns-csi2rx 4504000.csi-bridge: Failed to start streams 0x1 on subdev
    Jan 10 12:14:24 am68-sk kernel: cdns-csi2rx 4504000.csi-bridge: Failed to stop stream0
    Jan 10 12:14:24 am68-sk kernel: cdns-csi2rx 4504000.csi-bridge: Failed to stop stream1
    Jan 10 12:14:24 am68-sk kernel: cdns-csi2rx 4504000.csi-bridge: Failed to stop stream2
    Jan 10 12:14:24 am68-sk kernel: cdns-csi2rx 4504000.csi-bridge: Failed to stop stream3
    Jan 10 12:14:24 am68-sk kernel: ------------[ cut here ]------------
    Jan 10 12:14:24 am68-sk kernel: WARNING: CPU: 1 PID: 1074 at drivers/media/common/videobuf2/videobuf2-core.c:1647 vb2_start_streaming+0xd8/0x15c [videobuf2_common]
    Jan 10 12:14:24 am68-sk kernel: Modules linked in: xt_conntrack xt_MASQUERADE iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c xt_addrtype iptable_filter ip_tables x_tables br_netfilter bridge stp llc overlay xhci_plat>
    Jan 10 12:14:24 am68-sk kernel:  drm_panel_orientation_quirks ipv6
    Jan 10 12:14:24 am68-sk kernel: CPU: 1 PID: 1074 Comm: v4l2-ctl Not tainted 6.1.46-dirty #2
    Jan 10 12:14:24 am68-sk kernel: Hardware name: Texas Instruments AM68 SK (DT)
    Jan 10 12:14:24 am68-sk kernel: pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    Jan 10 12:14:24 am68-sk kernel: pc : vb2_start_streaming+0xd8/0x15c [videobuf2_common]
    Jan 10 12:14:24 am68-sk kernel: lr : vb2_start_streaming+0x68/0x15c [videobuf2_common]
    Jan 10 12:14:24 am68-sk kernel: sp : ffff80000bb9bb60
    Jan 10 12:14:24 am68-sk kernel: x29: ffff80000bb9bb60 x28: ffff000801ec8900 x27: ffff000805f214b8
    Jan 10 12:14:24 am68-sk kernel: x26: 0000000000000000 x25: 0000000040045612 x24: 0000000000000000
    Jan 10 12:14:24 am68-sk kernel: x23: ffff80000bb9bcc8 x22: ffff00080723e500 x21: ffff000805f21438
    Jan 10 12:14:24 am68-sk kernel: x20: ffff000805f21450 x19: 00000000ffffffa1 x18: 000000000033d077
    Jan 10 12:14:24 am68-sk kernel: x17: 0000000000000100 x16: fffffc002d40c008 x15: 00000022d89d8624
    Jan 10 12:14:24 am68-sk kernel: x14: 000000000000003c x13: 0000000000000000 x12: 0000000000000000
    Jan 10 12:14:24 am68-sk kernel: x11: 0000000000000000 x10: 00000000000009b0 x9 : ffff80000bb9ba30
    Jan 10 12:14:24 am68-sk kernel: x8 : ffff000801a0c310 x7 : ffff000b45fc6340 x6 : 0000000000000000
    Jan 10 12:14:24 am68-sk kernel: x5 : 00000000410fd080 x4 : 0000000000c0000e x3 : ffff000801da3bc8
    Jan 10 12:14:24 am68-sk kernel: x2 : 0000000000000000 x1 : ffff800000f61000 x0 : ffff00080b3b1df0
    Jan 10 12:14:24 am68-sk kernel: Call trace:
    Jan 10 12:14:24 am68-sk kernel:  vb2_start_streaming+0xd8/0x15c [videobuf2_common]
    Jan 10 12:14:24 am68-sk kernel:  vb2_core_streamon+0x90/0x190 [videobuf2_common]
    Jan 10 12:14:24 am68-sk kernel:  vb2_ioctl_streamon+0x5c/0xb0 [videobuf2_v4l2]
    Jan 10 12:14:24 am68-sk kernel:  v4l_streamon+0x24/0x30 [videodev]
    Jan 10 12:14:24 am68-sk kernel:  __video_do_ioctl+0x18c/0x3dc [videodev]
    Jan 10 12:14:24 am68-sk kernel:  video_usercopy+0x21c/0x6d0 [videodev]
    Jan 10 12:14:24 am68-sk kernel:  video_ioctl2+0x18/0x30 [videodev]
    Jan 10 12:14:24 am68-sk kernel:  v4l2_ioctl+0x40/0x60 [videodev]
    Jan 10 12:14:24 am68-sk kernel:  __arm64_sys_ioctl+0xa8/0xf0
    Jan 10 12:14:24 am68-sk kernel:  invoke_syscall+0x48/0x114
    Jan 10 12:14:24 am68-sk kernel:  el0_svc_common.constprop.0+0xd4/0xfc
    Jan 10 12:14:24 am68-sk kernel:  do_el0_svc+0x30/0xd0
    Jan 10 12:14:24 am68-sk kernel:  el0_svc+0x2c/0x84
    Jan 10 12:14:24 am68-sk kernel:  el0t_64_sync_handler+0xbc/0x140
    Jan 10 12:14:24 am68-sk kernel:  el0t_64_sync+0x18c/0x190
    Jan 10 12:14:24 am68-sk kernel: ---[ end trace 0000000000000000 ]---

    Kind regards,

    Dan

  • Hi Dan,

    I see that the resolution that the sensor is set to exceeds 4k resolution limit. Use the media-ctl --set-v4l2 command that is outlined here to set the sensor to a smaller resolution. When attempting to grab a raw frame, ensure that the format and resolution matches what you have set.

    Thank you,

    Fabiana

  • Hi Fabiana,

    As mentioned before, I've tried lower resolutions but that has been unsuccessful. I've rerun the tests and here are the outputs:

    # media-ctl -d 0 --set-v4l2 '"imx708":0 [fmt:SRGGB10_1X10/2304x1296]'

    # media-ctl -d 0 --set-v4l2 '"4500000.ticsi2rx":0 [fmt:SRGGB10_1X10/2304x1296]'

    # media-ctl -p
    Media controller API version 6.1.46

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

    Device topology
    - entity 1: 4500000.ticsi2rx (9 pads, 9 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:SRGGB10_1X10/2304x1296]
                   <- "cdns_csi2rx.4504000.csi-bridge":1 [ENABLED,IMMUTABLE]
           pad1: Source
                   [stream:0 fmt:SRGGB10_1X10/2304x1296]
                   -> "4500000.ticsi2rx context 0":0 [ENABLED,IMMUTABLE]
           pad2: Source
                   -> "4500000.ticsi2rx context 1":0 [ENABLED,IMMUTABLE]
           pad3: Source
                   -> "4500000.ticsi2rx context 2":0 [ENABLED,IMMUTABLE]
           pad4: Source
                   -> "4500000.ticsi2rx context 3":0 [ENABLED,IMMUTABLE]
           pad5: Source
                   -> "4500000.ticsi2rx context 4":0 [ENABLED,IMMUTABLE]
           pad6: Source
                   -> "4500000.ticsi2rx context 5":0 [ENABLED,IMMUTABLE]
           pad7: Source
                   -> "4500000.ticsi2rx context 6":0 [ENABLED,IMMUTABLE]
           pad8: Source
                   -> "4500000.ticsi2rx context 7":0 [ENABLED,IMMUTABLE]

    - entity 11: cdns_csi2rx.4504000.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:SRGGB10_1X10/2304x1296 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range]
                   <- "imx708":0 [ENABLED,IMMUTABLE]
           pad1: Source
                   [stream:0 fmt:SRGGB10_1X10/2304x1296 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range]
                   -> "4500000.ticsi2rx":0 [ENABLED,IMMUTABLE]
           pad2: Source
           pad3: Source
           pad4: Source

    - entity 17: imx708 (2 pads, 1 link, 0 route)
                type V4L2 subdev subtype Sensor flags 0
                device node name /dev/v4l-subdev2
           pad0: Source
                   [stream:0 fmt:SRGGB10_1X10/2304x1296 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range
                    crop.bounds:(16,24)/4608x2592
                    crop:(16,24)/4608x2592]
                   -> "cdns_csi2rx.4504000.csi-bridge":0 [ENABLED,IMMUTABLE]
           pad1: Source
                   [stream:0 fmt:unknown/28800x1 field:none
                    crop.bounds:(16,24)/4608x2592
                    crop:(16,24)/4608x2592]

    # v4l2-ctl --verbose --device /dev/video-rpi-cam0  --set-fmt-video=width=2304,height=1296 --stream-mmap --stream-to=test-frame.raw --stream-count=1
    VIDIOC_QUERYCAP: ok
    VIDIOC_G_FMT: ok
    VIDIOC_S_FMT: ok
    Format Video Capture:
           Width/Height      : 2304/1296
           Pixel Format      : 'UYVY' (UYVY 4:2:2)
           Field             : None
           Bytes per Line    : 4608
           Size Image        : 5971968
           Colorspace        : sRGB
           Transfer Function : Default (maps to sRGB)
           YCbCr/HSV Encoding: Default (maps to ITU-R 601)
           Quantization      : Default (maps to Limited Range)
           Flags             :  
                   VIDIOC_REQBUFS returned 0 (Success)
                   VIDIOC_QUERYBUF returned 0 (Success)
                   VIDIOC_QUERYBUF returned 0 (Success)
                   VIDIOC_QUERYBUF returned 0 (Success)
                   VIDIOC_QUERYBUF returned 0 (Success)
                   VIDIOC_QBUF returned 0 (Success)
                   VIDIOC_QBUF returned 0 (Success)
                   VIDIOC_QBUF returned 0 (Success)
                   VIDIOC_QBUF returned 0 (Success)
                   VIDIOC_STREAMON returned -1 (Operation not supported)

    Kind regards,

    Dan

  • Hi Dan,

    Please allow me some time to run some tests on a similar sensor. I will get back to you as soon.

    Thank you,

    Fabiana

  • Hi Fabiana,

    I've managed to make some progress, although there are still issues.

    I tracked the failure starting the stream to a point inside the csi2rx module (drivers/media/platform/cadence/cdns-csi2rx.c). In `csi2rx_enable_streams()` it calls out to `v4l2_subdev_enable_streams` which was returning an error code. I modified the source so that the printed message included the error code and found that was returning -95 which in this case is the "-EOPNOTSUPP" value. The v4l2 documentation describes this as "Falling back to the legacy .s_stream() operation is impossible because the subdev has multiple source pads".

    In the case of the imx708 module from the raspberrypi project it only implements the .s_stream() operation and it has multiple source pads (the second of which you can see in the mediactl -p data from before and apparently contains metadata although I'm not sure what it's used for).

    I modified the imx708 source to only present a single pad and now the csi2rx module is able to start the stream. However, the imx708 implementation has some other issues on this platform:

    • Under certain conditions (such as trying to set a ctrl parameter for the sensor) it crashes the kernel on the next attempt to grab a frame.
    • The raw frame data I receive is of the correct size for given resolution but contains all zeroes - so no real sensor data.

    Kind regards,

    Dan

  • Hi again,

    An update: I believe that the sensor was being switched off inadvertently when attempting to stream hence why it was sometimes crashing the kernel. I've modified the DTSO to instead use the reset line (similar to what the ov5640 implementation does) and only register one of the csi2 ports. I've attached it here along with the hacked imx708 driver code to hide the second pad and print a few debug messages:

    am68-imx708.zip

    So whilst it no longer appears to be crashing and we seem to be able to modify sensor parameters, we're still getting blank raw data when capturing with v4l2-ctl.

    Kind regards,

    Dan

  • Hi Dan,

    Apologies for my silence on this issue. Due to bandwidth, I cannot assess your question at this time. Please expect an update from me next week. Thank you for your patience.

    -Fabiana

  • Hi Dan,

    Have you tested using GStreamer after making these changes? Could you share what you see when running v4l2-compliance test?

    Thank you,

    Fabiana

  • Hi Fabiana,

    If I try to use gstreamer to output sensor data to file (single or multiple frames) it appears to work but I just get files containing all \0.

    root@am68-sk:~# gst-launch-1.0 -v v4l2src device=/dev/video-rpi-cam0 num-buffers=1 ! video/x-raw, width=4608, height=2592, framerate=10/1 ! filesink location=test-gst.raw
    Setting pipeline to PAUSED ...
    Pipeline is live and does not need PREROLL ...
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw, width=(int)4608, height=(int)2592, framerate=(fraction)10/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)bt709
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, width=(int)4608, height=(int)2592, framerate=(fraction)10/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)bt709
    /GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = video/x-raw, width=(int)4608, height=(int)2592, framerate=(fraction)10/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)bt709
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, width=(int)4608, height=(int)2592, framerate=(fraction)10/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)bt709
    Redistribute latency...
    Got EOS from element "pipeline0".
    Execution ended after 0:00:00.141197989
    Setting pipeline to NULL ...
    Freeing pipeline ...

    The output from v4l2-compliance reports the following:

    root@am68-sk:~# v4l2-compliance -d /dev/v4l-subdev2
    v4l2-compliance 1.24.1, 64 bits, 64-bit time_t

    Compliance test for device /dev/v4l-subdev2:

    Driver Info:
    Driver version : 6.1.46
    Capabilities : 0x00000000

    Required ioctls:
    test VIDIOC_SUDBEV_QUERYCAP: OK
    test invalid ioctls: OK

    Allow for multiple opens:
    test second /dev/v4l-subdev2 open: OK
    test VIDIOC_SUBDEV_QUERYCAP: OK
    test for unlimited opens: OK

    Debug ioctls:
    test VIDIOC_LOG_STATUS: OK (Not Supported)

    Input ioctls:
    test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
    test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
    test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
    test VIDIOC_ENUMAUDIO: OK (Not Supported)
    test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
    test VIDIOC_G/S_AUDIO: OK (Not Supported)
    Inputs: 0 Audio Inputs: 0 Tuners: 0

    Output ioctls:
    test VIDIOC_G/S_MODULATOR: OK (Not Supported)
    test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
    test VIDIOC_ENUMAUDOUT: OK (Not Supported)
    test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
    test VIDIOC_G/S_AUDOUT: OK (Not Supported)
    Outputs: 0 Audio Outputs: 0 Modulators: 0

    Input/Output configuration ioctls:
    test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
    test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
    test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
    test VIDIOC_G/S_EDID: OK (Not Supported)

    Control ioctls:
    test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
    test VIDIOC_QUERYCTRL: OK
    fail: ../../../v4l-utils-1.24.1/utils/v4l2-compliance/v4l2-test-controls.cpp(413): returned control value out of range
    fail: ../../../v4l-utils-1.24.1/utils/v4l2-compliance/v4l2-test-controls.cpp(509): invalid control 009e0901
    test VIDIOC_G/S_CTRL: FAIL
    fail: ../../../v4l-utils-1.24.1/utils/v4l2-compliance/v4l2-test-controls.cpp(615): returned control value out of range
    fail: ../../../v4l-utils-1.24.1/utils/v4l2-compliance/v4l2-test-controls.cpp(930): invalid control 009e0901
    test VIDIOC_G/S/TRY_EXT_CTRLS: FAIL
    test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
    test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
    Standard Controls: 21 Private Controls: 0
    Standard Compound Controls: 1 Private Compound Controls: 0

    Format ioctls:
    test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported)
    test VIDIOC_G/S_PARM: OK (Not Supported)
    test VIDIOC_G_FBUF: OK (Not Supported)
    test VIDIOC_G_FMT: OK (Not Supported)
    test VIDIOC_TRY_FMT: OK (Not Supported)
    test VIDIOC_S_FMT: OK (Not Supported)
    test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
    test Cropping: OK (Not Supported)
    test Composing: OK (Not Supported)
    test Scaling: OK (Not Supported)

    Codec ioctls:
    test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
    test VIDIOC_G_ENC_INDEX: OK (Not Supported)
    test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)

    Buffer ioctls:
    test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
    test VIDIOC_EXPBUF: OK (Not Supported)
    test Requests: OK (Not Supported)

    Total for device /dev/v4l-subdev2: 43, Succeeded: 41, Failed: 2, Warnings: 0

    If I run it again it shows everything as passed.

    Kind regards,

    Dan

  • Hi Dan,

    Could you also share the output for "dmesg | grep -i imx708" and "dmesg | grep -i cdns"?

    Thank you,

    Fabiana

  • Hi Fabiana,

    So immediately after booting:

    root@am68-sk:~# dmesg | grep -i imx708
    [ 5.028908] imx708 4-001a: supply vana1 not found, using dummy regulator
    [ 5.094575] imx708 4-001a: supply vana2 not found, using dummy regulator
    [ 5.118186] imx708 4-001a: supply vdig not found, using dummy regulator
    [ 5.204187] imx708 4-001a: supply vddl not found, using dummy regulator
    [ 5.256513] imx708 4-001a: camera module ID 0x0301
    [ 6.880082] imx708 4-001a: Consider updating driver imx708 to match on endpoints

    root@am68-sk:~# dmesg | grep -i cdns
    [ 6.967169] cdns-csi2rx 4504000.csi-bridge: Probed CSI2RX with 2/4 lanes, 4 streams, external D-PHY
    [ 7.055415] cdns-csi2rx: probe of 4514000.csi-bridge failed with error -22

    After an attempt at capture you can see some of the logging I added:

    root@am68-sk:~# v4l2-ctl --verbose --device /dev/video-rpi-cam0 --set-fmt-video=width=4608,height=2592 --stream-mmap --stream-to=test-frame.raw --stream-count=1
    VIDIOC_QUERYCAP: ok
    VIDIOC_G_FMT: ok
    VIDIOC_S_FMT: ok
    Format Video Capture:
    Width/Height : 4608/2592
    Pixel Format : 'UYVY' (UYVY 4:2:2)
    Field : None
    Bytes per Line : 9216
    Size Image : 23887872
    Colorspace : sRGB
    Transfer Function : Default (maps to sRGB)
    YCbCr/HSV Encoding: Default (maps to ITU-R 601)
    Quantization : Default (maps to Limited Range)
    Flags :
    VIDIOC_REQBUFS returned 0 (Success)
    VIDIOC_QUERYBUF returned 0 (Success)
    VIDIOC_QUERYBUF returned 0 (Success)
    VIDIOC_QUERYBUF returned 0 (Success)
    VIDIOC_QUERYBUF returned 0 (Success)
    VIDIOC_QBUF returned 0 (Success)
    VIDIOC_QBUF returned 0 (Success)
    VIDIOC_QBUF returned 0 (Success)
    VIDIOC_QBUF returned 0 (Success)
    VIDIOC_STREAMON returned 0 (Success)
    cap dqbuf: 0 seq: 0 bytesused: 23887872 ts: 122.189081 (ts-monotonic, ts-src-eof)

    root@am68-sk:~# dmesg | grep -i imx708
    [ 122.340959] imx708 4-001a: set_stream entered - enabled = 1
    [ 122.355749] imx708 4-001a: imx708_start_streaming called - djp
    [ 122.450780] imx708 4-001a: set_stream entered - enabled = 0

    Kind regards,

    Dan

  • Hi Dan,

    Have you been in contact with the sensor manufacturer or vendor to see if unmatched pinouts are the cause of this issue? I recommend looking further into potential hardware issues as we have had one with a missing crystal oscillator on another sensor we were bringing up.

    Thank you,

    Fabiana

  • Hi Fabiana,

    Today I spent some time dismantling one of our bench tools so that I could extract the Rasberry Pi 4 from it. The IMX708 is an rpi camera module (v3) and so I connected it to the rpi, booted a standard rpi image and the camera just worked. Therefore there's nothing wrong with the sensor module.

    It can't be missing the oscillator since it's working with an rpi (and I can see the oscillator chip on the module).

    The AM68 dev kit is supposed to have a MIPI pinout that's compatible with the range of rpi cameras since the v2 camera module is supposed to work out of the box with it. I've also looked over the MIPI pin configurations for the dev kit and the module and they appear to match.

    So either something is wrong with the CSI2 module or wiring on the dev kit, or the IMX708 i2c kernel module from the rpi project is not compatible with the AM68 hardware for some reason, or I've missed something fundamental in the device tree configuration.

    Kind regards,

    Dan

  • Hi Dan,

    Could you try adding the following line to your driver: #define IMX708_DEFAULT_LINK_FREQ    450000000

    Does the sensor still get detected if you change lines 60-62 of your dtso file to the following:

    imx708_0: imx708_0@10 {
    				compatible = "sony,imx708";
    				reg = <0x10>;

    Have you tried swapping CSI ports and changing your overlay file to support the swap in the case that there is an issue with one of the pins?

    Thank you,

    Fabiana

  • Hi Fabiana,

    Apologies I was away last week and so was unable to run further tests.

    I don't understand what adding the #define would do since nothing in the driver source would use that value. The default link frequency for the imx708 is already 450MHz.

    I tried changing the i2c address as you suggested and the sensor board stopped responding altogether:

    root@am68-sk:~# dmesg | grep -i imx708
    [ 4.759489] imx708 4-0010: supply vana1 not found, using dummy regulator
    [ 4.775455] imx708 4-0010: supply vana2 not found, using dummy regulator
    [ 4.794855] imx708 4-0010: supply vdig not found, using dummy regulator
    [ 4.805708] imx708 4-0010: supply vddl not found, using dummy regulator
    [ 4.827282] imx708 4-0010: failed to read chip id 708, with error -5
    [ 4.855267] imx708: probe of 4-0010 failed with error -5

    As far as I'm aware the i2c address of the imx708 is fixed at 0x1a.

    I've also tried reconfiguring to make use of the alternative CSI port but with the same result - a completely blank raw capture.

    Kind regards,

    Dan

  • Hi Dan,

    Could you try adding imx708 to the setup_cameras script as such:

    setup_imx708(){
        IMX708_CAM_FMT='[fmt:SRGGB10_1X10/2304x1296]'
        count=0
        for media_id in {0..1}; do
        for name in `media-ctl -d $media_id -p | grep entity | grep imx708 | cut -d ' ' -f 5`; do
            CAM_SUBDEV=`media-ctl -d $media_id -p -e "imx708 $name" | grep v4l-subdev | awk '{print $4}'`
            media-ctl -d $media_id --set-v4l2 ''"\"imx708 $name\""':0 '$IMX708_CAM_FMT''
    
            CSI_BRIDGE_NAME=`media-ctl -d $media_id -p -e "imx708 $name" | grep csi-bridge | cut -d "\"" -f 2`
            CSI2RX_NAME=`media-ctl -d $media_id -p -e "$CSI_BRIDGE_NAME" | grep "ticsi2rx\"" | cut -d "\"" -f 2`
            CSI2RX_CONTEXT_NAME="$CSI2RX_NAME context 0"
    
            CAM_DEV=`media-ctl -d $media_id -p -e "$CSI2RX_CONTEXT_NAME" | grep video | awk '{print $4}'`
            CAM_DEV_NAME=/dev/video-rpi-cam$count
    
            CAM_SUBDEV_NAME=/dev/v4l-rpi-subdev$count
    
            ln -snf $CAM_DEV $CAM_DEV_NAME
            ln -snf $CAM_SUBDEV $CAM_SUBDEV_NAME
    
            echo -e "${GREEN}CSI Camera $media_id detected${NOCOLOR}"
            echo "    device = $CAM_DEV_NAME"
            echo "    name = imx708"
            echo "    format = $IMX708_CAM_FMT"
            echo "    subdev_id = $CAM_SUBDEV_NAME"
            echo "    isp_required = yes"
            count=$(($count + 1))
        done
        done
    }
    
    setup_imx708

    Run the script and if the sensor is detected by the script, try capturing a frame using v4l2-ctl --verbose -d /dev/video-rpi-cam0 --set-fmt-video=width=2304,height=1296,pixelformat=RGGB --stream-mmap command.

    Thanks,

    Fabiana

  • Hi Fabiana,

    I'm already using something similar - that script as is doesn't work because the imx708 doesn't have any other identifiers following it, so the for loop on line 5 sets an invalid name.

    Mine looks something like this and instead of that loop it simply checks if an imx708 is available on that media ID.

    setup_imx708(){
    #    RESOLUTION="4608x2592"
        RESOLUTION="2304x1296"
    #     RESOLUTION="1536x864"
        IMX708_CAM_FMT="[fmt:SRGGB10_1X10/$RESOLUTION]"
        count=0
        for media_id in {0..1}; do
        if media-ctl -d $media_id -p | grep entity | grep -q imx708; then
            CAM_SUBDEV=`media-ctl -d $media_id -p -e "imx708" | grep v4l-subdev | awk '{print $4}'`
            media-ctl -d $media_id --set-v4l2 ''"\"imx708\""':0 '$IMX708_CAM_FMT''
    
            CSI_BRIDGE_NAME=`media-ctl -d $media_id -p -e "imx708" | grep csi-bridge | cut -d "\"" -f 2`
            CSI2RX_NAME=`media-ctl -d $media_id -p -e "$CSI_BRIDGE_NAME" | grep "ticsi2rx\"" | cut -d "\"" -f 2`
            CSI2RX_CONTEXT_NAME="$CSI2RX_NAME context 0"
    
            CAM_DEV=`media-ctl -d $media_id -p -e "$CSI2RX_CONTEXT_NAME" | grep video | awk '{print $4}'`
            CAM_DEV_NAME=/dev/video-rpi-cam$count
            CAM_SUBDEV_NAME=/dev/v4l-rpi-subdev$count
    
            ln -snf $CAM_DEV $CAM_DEV_NAME
            ln -snf $CAM_SUBDEV $CAM_SUBDEV_NAME
    
            echo -e "${GREEN}CSI Camera $media_id detected${NOCOLOR}"
            echo "    device = $CAM_DEV_NAME"
            echo "    name = imx708"
            echo "    format = $IMX708_CAM_FMT"
            echo "    subdev_id = $CAM_SUBDEV_NAME"
            echo "    isp_required = yes"
            count=$(($count + 1))
    
            media-ctl -d $media_id --set-v4l2 '"4500000.ticsi2rx":0 [fmt:SRGGB10_1X10/'$RESOLUTION' field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range]'
       fi
       done
    }

    This results in the following output:

    root@am68-sk:~# ./setup_cameras.sh
    CSI Camera 0 detected
        device = /dev/video-rpi-cam0
        name = imx708
        format = [fmt:SRGGB10_1X10/2304x1296]
        subdev_id = /dev/v4l-rpi-subdev0
        isp_required = yes
        

    Which configures things as:

    root@am68-sk:~# media-ctl -p
    Media controller API version 6.1.46
    
    Media device information
    ------------------------
    driver          j721e-csi2rx
    model           TI-CSI2RX
    serial
    bus info        platform:4500000.ticsi2rx
    hw revision     0x1
    driver version  6.1.46
    
    Device topology
    - entity 1: 4500000.ticsi2rx (9 pads, 9 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:SRGGB10_1X10/2304x1296 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range]
                    <- "cdns_csi2rx.4504000.csi-bridge":1 [ENABLED,IMMUTABLE]
            pad1: Source
                    [stream:0 fmt:SRGGB10_1X10/2304x1296 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range]
                    -> "4500000.ticsi2rx context 0":0 [ENABLED,IMMUTABLE]
            pad2: Source
                    -> "4500000.ticsi2rx context 1":0 [ENABLED,IMMUTABLE]
            pad3: Source
                    -> "4500000.ticsi2rx context 2":0 [ENABLED,IMMUTABLE]
            pad4: Source
                    -> "4500000.ticsi2rx context 3":0 [ENABLED,IMMUTABLE]
            pad5: Source
                    -> "4500000.ticsi2rx context 4":0 [ENABLED,IMMUTABLE]
            pad6: Source
                    -> "4500000.ticsi2rx context 5":0 [ENABLED,IMMUTABLE]
            pad7: Source
                    -> "4500000.ticsi2rx context 6":0 [ENABLED,IMMUTABLE]
            pad8: Source
                    -> "4500000.ticsi2rx context 7":0 [ENABLED,IMMUTABLE]
    
    - entity 11: cdns_csi2rx.4504000.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:SRGGB10_1X10/2304x1296 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range]
                    <- "imx708":0 [ENABLED,IMMUTABLE]
            pad1: Source
                    [stream:0 fmt:SRGGB10_1X10/2304x1296 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range]
                    -> "4500000.ticsi2rx":0 [ENABLED,IMMUTABLE]
            pad2: Source
            pad3: Source
            pad4: Source
    
    - entity 17: imx708 (1 pad, 1 link, 0 route)
                 type V4L2 subdev subtype Sensor flags 0
                 device node name /dev/v4l-subdev2
            pad0: Source
                    [stream:0 fmt:SRGGB10_1X10/2304x1296 field:none colorspace:raw xfer:none ycbcr:601 quantization:full-range
                     crop.bounds:(16,24)/4608x2592
                     crop:(16,24)/4608x2592]
                    -> "cdns_csi2rx.4504000.csi-bridge":0 [ENABLED,IMMUTABLE]
    
    

    And results in the following if I try to capture multiple frames using v4l2-ctl:

    root@am68-sk:~# v4l2-ctl --verbose --device /dev/video-rpi-cam0  --set-fmt-video=width=2304,height=1296,pixelformat=RGGB --stream-mmap --stream-to=test-frame.raw --stream-count=16
    VIDIOC_QUERYCAP: ok
    VIDIOC_G_FMT: ok
    VIDIOC_S_FMT: ok
    Format Video Capture:
            Width/Height      : 2304/1296
            Pixel Format      : 'RGGB' (8-bit Bayer RGRG/GBGB)
            Field             : None
            Bytes per Line    : 2304
            Size Image        : 2985984
            Colorspace        : sRGB
            Transfer Function : Rec. 709
            YCbCr/HSV Encoding: Rec. 709
            Quantization      : Limited Range
            Flags             :
                    VIDIOC_REQBUFS returned 0 (Success)
                    VIDIOC_QUERYBUF returned 0 (Success)
                    VIDIOC_QUERYBUF returned 0 (Success)
                    VIDIOC_QUERYBUF returned 0 (Success)
                    VIDIOC_QUERYBUF returned 0 (Success)
                    VIDIOC_QBUF returned 0 (Success)
                    VIDIOC_QBUF returned 0 (Success)
                    VIDIOC_QBUF returned 0 (Success)
                    VIDIOC_QBUF returned 0 (Success)
                    VIDIOC_STREAMON returned 0 (Success)
    cap dqbuf: 0 seq:      0 bytesused: 2985984 ts: 1723.955726 (ts-monotonic, ts-src-eof)
    cap dqbuf: 1 seq:      1 bytesused: 2985984 ts: 1723.955770 delta: 0.044 ms (ts-monotonic, ts-src-eof)
    cap dqbuf: 2 seq:      2 bytesused: 2985984 ts: 1723.955781 delta: 0.011 ms (ts-monotonic, ts-src-eof)
    cap dqbuf: 3 seq:      3 bytesused: 2985984 ts: 1723.955792 delta: 0.011 ms (ts-monotonic, ts-src-eof)
    cap dqbuf: 0 seq:      4 bytesused: 2985984 ts: 1724.006168 delta: 50.376 ms fps: 79.30 (ts-monotonic, ts-src-eof)
    cap dqbuf: 1 seq:      5 bytesused: 2985984 ts: 1724.022995 delta: 16.827 ms fps: 74.33 (ts-monotonic, ts-src-eof)
    cap dqbuf: 2 seq:      6 bytesused: 2985984 ts: 1724.040135 delta: 17.140 ms fps: 71.08 (ts-monotonic, ts-src-eof)
    cap dqbuf: 3 seq:      7 bytesused: 2985984 ts: 1724.056820 delta: 16.685 ms fps: 69.24 (ts-monotonic, ts-src-eof)
    cap dqbuf: 0 seq:      8 bytesused: 2985984 ts: 1724.073479 delta: 16.659 ms fps: 67.94 (ts-monotonic, ts-src-eof)
    cap dqbuf: 1 seq:      9 bytesused: 2985984 ts: 1724.090047 delta: 16.568 ms fps: 67.00 (ts-monotonic, ts-src-eof)
    cap dqbuf: 2 seq:     10 bytesused: 2985984 ts: 1724.106532 delta: 16.485 ms fps: 66.31 (ts-monotonic, ts-src-eof)
    cap dqbuf: 3 seq:     11 bytesused: 2985984 ts: 1724.122380 delta: 15.848 ms fps: 66.01 (ts-monotonic, ts-src-eof)
    cap dqbuf: 0 seq:     12 bytesused: 2985984 ts: 1724.138288 delta: 15.908 ms fps: 65.73 (ts-monotonic, ts-src-eof)
    cap dqbuf: 1 seq:     13 bytesused: 2985984 ts: 1724.154101 delta: 15.813 ms fps: 65.53 (ts-monotonic, ts-src-eof)
    cap dqbuf: 2 seq:     14 bytesused: 2985984 ts: 1724.170103 delta: 16.002 ms fps: 65.31 (ts-monotonic, ts-src-eof)
    cap dqbuf: 3 seq:     15 bytesused: 2985984 ts: 1724.186041 delta: 15.938 ms fps: 65.13 (ts-monotonic, ts-src-eof)
    

    But the output "test-frame.raw" still contains nothing but \0 values.

    Kind regards,

    Dan

  • Hi Dan,

    Could you try using this dtso file? This should work for the type of sensor you have. If this doesn't work, the issue is likely with the driver or the link frequencies defined in the device tree.

    /dts-v1/;
    /plugin/;
    
    #include <dt-bindings/gpio/gpio.h>
    #include "k3-pinctrl.h"
    
    &{/} {
    	clk_imx708_fixed: imx708-inclk {
    		compatible = "fixed-clock";
    		#clock-cells = <0>;
    		clock-frequency = <24000000>;
    		status = "okay";
    	};
    };
    
    &exp3 {
    	p01-hog {
    		/* CSI_MUX_SEL_2 */
    		gpio-hog;
    		gpios = <1 GPIO_ACTIVE_HIGH>;
    		output-high;
    		line-name = "CSI_MUX_SEL_2";
    	};
    };
    
    &main_i2c1 {
    	status = "okay";
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	i2c-switch@70 {
    		compatible = "nxp,pca9543";
    		#address-cells = <1>;
    		#size-cells = <0>;
    		reg = <0x70>;
    
    		/* CAM0 I2C */
    		cam0_i2c: i2c@0 {
    			#address-cells = <1>;
    			#size-cells = <0>;
    			reg = <0>;
    
    			imx708_0: imx708_0@1a {
    				compatible = "sony,imx708";
    				reg = <0x1a>;
    
    				clocks = <&clk_imx708_fixed>;
    				clock-names = "inclk";
    
    				/* IO_EXP_CSI2_EXP_RSTz */
    				reset-gpios = <&exp3 3 GPIO_ACTIVE_HIGH>;
    
    				port {
    					csi2_cam0: endpoint {
    						remote-endpoint = <&csi2rx0_in_sensor>;
    						link-frequencies = /bits/ 64 <450000000>;
    						clock-lanes = <0>;
    						data-lanes = <1 2 3 4>;
    					};
    				};
    			};
    		};
    	};
    };
    
    &csi0_port0 {
    	status = "okay";
    
    	csi2rx0_in_sensor: endpoint {
    		remote-endpoint = <&csi2_cam0>;
    		bus-type = <4>; /* CSI2 DPHY. */
    		clock-lanes = <0>;
    		data-lanes = <1 2 3 4>;
    	};
    };

    Thanks,

    Fabiana

  • Hi Fabiana,

    The proposed dtso file switches from 2 lanes to 4 lanes over CSI2. The schematics of the raspberry pi camera v3 https://datasheets.raspberrypi.com/camera/camera-module-3-schematics.pdf show that only 2 lanes are connected, so I don't think this will work.

    If I try to configure it that way then the driver reports:

    [    4.821363] imx708 4-001a: only 2 data lanes are currently supported
    [    4.851480] imx708: probe of 4-001a failed with error -22

    Since the rpi cam v3 is a flex connected sensor (unlike the older imx219 which uses the 40-pin expansion header) then the "CSI_MUX_SEL_2" section near the top should be output-low since the documentation for the AM68 states:

    CSI I2C MUX select
    ‘0’ – Camera/Flex Selected (default)
    ‘1’ – 40-pin Camera Expansion Selected

    And, unless I'm mistaken, the "IO_EXP_CSI2_EXP_RSTz" should be pin 2 on &exp3 and not pin 3:

    P2  IO_EXP_CSI2_EXP_RSTz    CSI Expansion Signal (RESETz)   ‘0’ – CSI Board is Reset (Default)
                                                                ‘1’ – CSI Board is NOT Reset

    The following is the latest dtso I'm using:

    // SPDX-License-Identifier: GPL-2.0
    /**
     * DT Overlay for RPi Camera V3 (Sony IMX708) interfaced with CSI2 on AM68-SK board - copied and adjusted from the IMX219 version by Dan
     * https://datasheets.raspberrypi.com/camera/camera-module-3-schematics.pdf
     */
    
    /dts-v1/;
    /plugin/;
    
    #include <dt-bindings/gpio/gpio.h>
    #include "k3-pinctrl.h"
    
    &{/} {
    	clk_imx708_fixed: imx708-inclk {
    		compatible = "fixed-clock";
    		#clock-cells = <0>;
    		clock-frequency = <24000000>;
    		status = "okay";
    	};
    };
    
    &exp3 {
    	p01-hog {
    		/* CSI_MUX_SEL_2 */
    		gpio-hog;
    		gpios = <1 GPIO_ACTIVE_HIGH>;
    		output-low;
    		line-name = "CSI_MUX_SEL_2";
    	};
    };
    
    
    &main_i2c1 {
    	status = "okay";
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	i2c-switch@70 {
    		compatible = "nxp,pca9543";
    		#address-cells = <1>;
    		#size-cells = <0>;
    		reg = <0x70>;
    
    		// i2c-alias-pool = /bits/ 16 <0x10 0x11>;
    
    		/* CAM0 I2C */
    		cam0_i2c: i2c@0 {
    			#address-cells = <1>;
    			#size-cells = <0>;
    			reg = <0>;
    
    			imx708_0: imx708_0@1a {
    				compatible = "sony,imx708";
    				reg = <0x1a>;
    
    				clocks = <&clk_imx708_fixed>;
    				clock-names = "inclk";
    
    				rotation = <180>;
    				orientation = <2>;
    
    				/* IO_EXP_CSI2_EXP_RSTz */
    				reset-gpios = <&exp3 2 GPIO_ACTIVE_LOW>;
    
    				port {
    					csi2_cam0: endpoint {
    						remote-endpoint = <&csi2rx0_in_sensor>;
    						link-frequencies = /bits/ 64 <450000000>;
    						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>;
    	};
    };

    Kind regards,

    Dan

  • Hi Dan,

    I have gotten approval to purchase this sensor to test on my end. I will update once I receive the sensor.

    Thank you,

    Fabiana