G720 how to enable HDMI RX (RX:it6625)

G720 how to enable HDMI RX (RX:it6625);now it is failed:

the following LOG:

hdmirx_tool
hdmi_get_driver_version, open /dev/hdmirx fail -1
hdmirx tool version: 1.1.0
hdmirx driver version: 0.0.0

  1. enable hdmi 2) disable hdmi
  2. get device info 4) check cable
  3. get video info 6) check video locked
  4. get audio info 8) check audio locked
  5. set test edid
    a) start observing b) stop observing
    h) help q) quit
    1
    getchar=1
    hdmi_enable[1]
    hdmi_enable, open /dev/hdmirx fail -1
    getchar=

Hi @wr.zeng ,

The hdmirx-tool is only supported on the Genio-1200, which features the SoC’s built-in HDMIRX function.
It does not support external HDMIRX converter chipsets (e.g., IT6625).
Please refer to the HDMI-RX documentation below:

Thanks.

HDMI-RX — IoT Yocto documentation only for G1200. so for G720 external HDMI RX ,what can I do

Hi @wr.zeng ,
What issues or situations are you encountering with the Genio-720 + IT6625 HDMI-RX setup?

Hi @wr.zeng ,

Note that hdmirx-tool is designed specifically for the Genio SoC’s built-in HDMI Rx hardware, and does not support the IT6625.

The IT6625 is an HDMI-to-MIPI CSI bridge — it converts HDMI input into a MIPI CSI signal, so the Genio 720 uses it as a MIPI CSI camera device rather than an HDMI Rx source.

so I shall like YUV RAW sensor ?

Now :plugin HDMI .on desktop can display IT6625. can I display or record hdmi stream from G720

root@genio-520-evk:~# export MEDIA_DEV=$(v4l2-ctl -z platform:$(basename find /sys/bus/platform/devices/ -name "*seninf-top") --list-devices | grep media)
root@genio-520-evk:~# echo ${MEDIA_DEV}
/dev/media1
root@genio-520-evk:~# declare -a VIDEO_DEV=($(for i in find /sys/bus/platform/devices/ -name "*camsv*" | sort; do media-ctl -d ${MEDIA_DEV} --entity “`basem” ; done))deo stream
root@genio-520-evk:~# echo ${VIDEO_DEV[*]}
/dev/video5 /dev/video6 /dev/video7 /dev/video8 /dev/video9 /dev/video10

The following is info from  media-ctl -p .if I want display .what can I do ?

Media controller API version 6.6.92

Media device information

driver mtk-seninf
model mtk-seninf
serial
bus info platform:1a004000.seninf-top
hw revision 0x0
driver version 6.6.92

Device topology

  • entity 1: seninf-1 (5 pads, 25 links, 4 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev0
    routes:
    0/0 → 1/0 [ACTIVE]
    0/0 → 2/0 [ACTIVE]
    0/0 → 3/0 [ACTIVE]
    0/0 → 4/0 [ACTIVE]
    pad0: Sink
    [stream:0 fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb]
    ← “it6625 8-0059”:0
    pad1: Source
    [stream:0 fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb]
    → “1a092000.camsv2”:0
    → “1a093000.camsv3”:0
    → “1a094000.camsv4”:0
    → “1a095000.camsv5”:0
    → “1a096000.camsv6”:0
    → “1a097000.camsv7”:0
    pad2: Source
    [stream:0 fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb]
    → “1a092000.camsv2”:0
    → “1a093000.camsv3”:0
    → “1a094000.camsv4”:0
    → “1a095000.camsv5”:0
    → “1a096000.camsv6”:0
    → “1a097000.camsv7”:0
    pad3: Source
    [stream:0 fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb]
    → “1a092000.camsv2”:0
    → “1a093000.camsv3”:0
    → “1a094000.camsv4”:0
    → “1a095000.camsv5”:0
    → “1a096000.camsv6”:0
    → “1a097000.camsv7”:0
    pad4: Source
    [stream:0 fmt:SBGGR10_1X10/1600x1200 field:none colorspace:srgb]
    → “1a092000.camsv2”:0
    → “1a093000.camsv3”:0
    → “1a094000.camsv4”:0
    → “1a095000.camsv5”:0
    → “1a096000.camsv6”:0
    → “1a097000.camsv7”:0

  • entity 7: it6625 8-0059 (1 pad, 1 link, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev1
    pad0: Source
    [stream:0 fmt:RGB888_1X24/1920x1080 field:none colorspace:rec709]
    [dv.caps:BT.656/1120 min:1x1@0 max:10000x10000@600000000 stds:CEA-861,DMT,CVT,GTF caps:interlaced,progressive,reduced-blanking,custom]
    [dv.query:out-of-range]
    [dv.current:BT.656/1120 1920x1080p60 (2200x1125) stds:CEA-861,DMT flags:can-reduce-fps,CE-video,has-cea861-vic]
    → “seninf-1”:0

  • entity 15: 1a092000.camsv2 (2 pads, 5 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev2
    pad0: Sink
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    ← “seninf-1”:1
    ← “seninf-1”:2
    ← “seninf-1”:3
    ← “seninf-1”:4
    pad1: Source
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    → “1a092000.camsv2 video stream”:0 [ENABLED,IMMUTABLE]

  • entity 18: 1a092000.camsv2 video stream (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video4
    pad0: Sink
    ← “1a092000.camsv2”:1 [ENABLED,IMMUTABLE]

  • entity 34: 1a093000.camsv3 (2 pads, 5 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev3
    pad0: Sink
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    ← “seninf-1”:1
    ← “seninf-1”:2
    ← “seninf-1”:3
    ← “seninf-1”:4
    pad1: Source
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    → “1a093000.camsv3 video stream”:0 [ENABLED,IMMUTABLE]

  • entity 37: 1a093000.camsv3 video stream (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video6
    pad0: Sink
    ← “1a093000.camsv3”:1 [ENABLED,IMMUTABLE]

  • entity 53: 1a094000.camsv4 (2 pads, 5 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev4
    pad0: Sink
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    ← “seninf-1”:1
    ← “seninf-1”:2
    ← “seninf-1”:3
    ← “seninf-1”:4
    pad1: Source
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    → “1a094000.camsv4 video stream”:0 [ENABLED,IMMUTABLE]

  • entity 56: 1a094000.camsv4 video stream (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video7
    pad0: Sink
    ← “1a094000.camsv4”:1 [ENABLED,IMMUTABLE]

  • entity 72: 1a095000.camsv5 (2 pads, 5 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev5
    pad0: Sink
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    ← “seninf-1”:1
    ← “seninf-1”:2
    ← “seninf-1”:3
    ← “seninf-1”:4
    pad1: Source
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    → “1a095000.camsv5 video stream”:0 [ENABLED,IMMUTABLE]

  • entity 75: 1a095000.camsv5 video stream (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video8
    pad0: Sink
    ← “1a095000.camsv5”:1 [ENABLED,IMMUTABLE]

  • entity 91: 1a096000.camsv6 (2 pads, 5 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev6
    pad0: Sink
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    ← “seninf-1”:1
    ← “seninf-1”:2
    ← “seninf-1”:3
    ← “seninf-1”:4
    pad1: Source
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    → “1a096000.camsv6 video stream”:0 [ENABLED,IMMUTABLE]

  • entity 94: 1a096000.camsv6 video stream (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video9
    pad0: Sink
    ← “1a096000.camsv6”:1 [ENABLED,IMMUTABLE]

  • entity 110: 1a097000.camsv7 (2 pads, 5 links, 0 routes)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev7
    pad0: Sink
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    ← “seninf-1”:1
    ← “seninf-1”:2
    ← “seninf-1”:3
    ← “seninf-1”:4
    pad1: Source
    [stream:0 fmt:SGRBG10_1X10/1920x1080 field:none colorspace:srgb quantization:full-range]
    → “1a097000.camsv7 video stream”:0 [ENABLED,IMMUTABLE]

  • entity 113: 1a097000.camsv7 video stream (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video10
    pad0: Sink
    ← “1a097000.camsv7”:1 [ENABLED,IMMUTABLE]

Hi @wr.zeng ,

Once the IT6625 board is connected to the Genio 720 EVK, you can enable the stream using the commands below (for example, using FHD@30). The flow is similar to using a regular YUV sensor on the Genio 720 — the only difference is that you’ll need to configure the DV timing for the IT6625 first.

# Set IT6625 v4l2 sub-device and media graph
export MEDIA_DEV=$(v4l2-ctl -z platform:$(basename `find /sys/bus/platform/devices/ -name "*seninf-top"`) --list-devices | grep media)
echo ${MEDIA_DEV}

declare -a VIDEO_DEV=($(for i in `find /sys/bus/platform/devices/ -name "*camsv*" | sort`; do media-ctl -d ${MEDIA_DEV} --entity "`basename $i` video stream" ; done))
echo ${VIDEO_DEV[*]}

IT6625_SUBDEV=/dev/$(basename `find /sys -name v4l-subdev* | grep 8-0059`)
echo ${IT6625_SUBDEV}

v4l2-ctl -d ${IT6625_SUBDEV} --set-dv-bt-timing index=12   # FHD@30
media-ctl -d ${MEDIA_DEV} -l "'it6625 8-0059':0 -> 'seninf-1':0 [1]"
media-ctl -d ${MEDIA_DEV} -l "'seninf-1':1 -> '1a092000.camsv2':0 [1]"
media-ctl -d ${MEDIA_DEV} -V "'it6625 8-0059':0 [fmt:UYVY8_1X16/1920x1080 field:none]"
media-ctl -d ${MEDIA_DEV} -V "'seninf-1':0 [fmt:UYVY8_1X16/1920x1080 field:none]"
media-ctl -d ${MEDIA_DEV} -V "'1a092000.camsv2':0 [fmt:UYVY8_1X16/1920x1080 field:none]"

# Use v4l2-ctl
v4l2-ctl -v width=1920,height=1080,pixelformat=UYVY --stream-mmap -d ${VIDEO_DEV[0]} --verbose --stream-show-delta-now

# Use gstreamer
gst-launch-1.0 v4l2src device=${VIDEO_DEV[0]} ! video/x-raw,width=1920,height=1080,format=UYVY ! v4l2convert output-io-mode=dmabuf-import ! waylandsink sync=false

we burnin firmware into IT6625. it is not need drivers. exec cmd:v4l2-ctl -d
${IT6625_SUBDEV} --set-dv-bt-timing index=12 it is display error VIDIOC_ENUM_DV_TIMINGS: failed: Inappropriate ioctl for device
VIDIOC_S_DV_TIMINGS: failed: Inappropriate ioctl for device 。 for Android Tv .we do the same. it can display picture when Use Camera App

media-ctl -p :display entity 7: it6625 8-0059 (1 pad, 1 link, 0 routes)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev1
pad0: Source
[stream:0 fmt:RGB888_1X24/1920x1080 field:none colorspace:rec709]
[dv.caps:BT.656/1120 min:1x1@0 max:10000x10000@600000000 stds:CEA-861,DMT,CVT,GTF caps:interlaced,progressive,reduced-blanking,custom]
[dv.query:out-of-range]
[dv.current:BT.656/1120 1920x1080p60 (2200x1125) stds:CEA-861,DMT flags:can-reduce-fps,CE-video,has-cea861-vic]
→ “seninf-1”:0 。 it is means MIPI CSI Signal be detected ?

Hi,@wr.zeng

Thank you for sharing your work with the IT6625 on Genio EVK.

I understand that your setup is working and the IT6625 is recognized as a CSI camera device.

May I ask what kind of HDMI-to-CSI board you are using for IT6625?

Is it based on an ITE reference board or a third-party/custom design?

Also, I would really appreciate if you could share how you obtained the IT6625 evaluation board that can be connected to the EVK (e.g., via vendor support, distributor, or other channels).

I am currently trying to evaluate a similar configuration with Genio EVK, so any hints on the evaluation path would be very helpful.

Thank you in advance.

Hi Satoshi_Tobe:

it is base on custom design.

Hi wr.zeng,

Thank you for your reply.
I understand that it is based on a custom design rather than an off-the-shelf evaluation board.

Thank you.

Do you have any advice ? Thanks

Hi @wr.zeng ,

Could you confirm whether you are using the IT6625 driver located in IoT Yocto GitLab — drivers/media/i2c/it6625 (mtk-v6.6 branch), or a different implementation?

You have already configured the format and resolution on the SoC Rx side (SENINF and CAMSV). The next step is to ensure end-to-end consistency:

  1. Hardware side — The IT6625 must be configured actually to generate a signal with the matching format and resolution.
  2. Driver side — The IT6625 driver must report the same format/resolution through its get_fmt callback, no matter whether the format is from bridge detection or DV timings.

If either side is inconsistent, the V4L2 subdev pipeline validation will fail with a format mismatch error.

In addition, in the topology you pasted, the link between IT6625 and SENINF is not enabled.

- entity 7: it6625 8-0059 (1 pad, 1 link, 0 routes)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev1
        pad0: Source
                ...
                -> "seninf-1":0 []

It should be ENABLED indicating IT6625 and SENINF are connected.

- entity 7: it6625 8-0059 (1 pad, 1 link, 0 routes)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev1
        pad0: Source
                ...
                -> "seninf-1":0 [ENABLED]

BTW, When pasting code snippets or logs, it’s better to wrap them with backticks — use ` for inline code, or triple backticks ``` for multi-line blocks. It makes the content much easier to read and helps us spot the issue faster.

Thanks!

Hi @andy.hsieh

    The driver is embedded inside the IT6625 chip(android aosp system also do the same). output timing is 1080P YUV(link with G729 MIPI CSI)

Hi @wr.zeng ,

Yes, most of the control logic is embedded in firmware and flashed into the IT6625.
But you still need a Linux Kernel Driver to control the stream on/off registers, receive events, and register the IT6625 as a V4L2 subdevice.

it is ok .Thanks