Toradex SMARC IMX95: IT6263 LVDS - HDMI Converter issue

Hi,

We are working with the SMARC i.MX95 EVK. On this EVK, we are using an LVDS display along with the IT6263 LVDS-to-HDMI converter. We have a few queries regarding this setup:

  1. Could you confirm the exact LVDS I2C bank that connects to the i.MX95 SoC?

  2. Since we are using the Toradex SMARC carrier board, are there any specific jumper settings required for the LVDS I2C to connect with the i.MX95 SoC?

  3. Could you please share the required DTS entries for integrating the IT6263 LVDS-to-HDMI converter?

  4. As we are using the IT6263 LVDS-to-HDMI converter in our design, could you also suggest any alternative LVDS-to-HDMI converter ICs that are compatible with the Toradex SMARC SOM?
    Kindly support this issue at the earliest. Thanks in advance.

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


SMARC iMX95 LVDS Display Support

Based on the SMARC iMX95 datasheet, I can provide the following information regarding LVDS display support:

LVDS Interface Availability

The SMARC iMX95 supports LVDS displays through the following configuration(1):

  • LVDS0: 18/24 bit single channel - Yes
  • LVDS1: 24 bit single channel - Yes (Assembly Option)

Display Adapter Solutions

For SMARC carrier boards, Toradex provides dedicated display adapters(2)(3):

HDMI Considerations

According to the interface overview, the SMARC iMX95 has specific limitations(1):

  • HDMI Display interface: Not Available
  • DP on HDMI Pins: Not Available
  • DP++: DisplayPort++ - Yes (HDMI not available. Regular DP available on DP0. There is a DSI to DP converter on the SoM - Assembly Option)

Specific Query Limitations

I don’t have detailed information in the available sources about:

  1. The exact LVDS I2C bank connections to the i.MX95 SoC
  2. Specific jumper settings for SMARC carrier boards
  3. DTS entries for the IT6263 LVDS-to-HDMI converter
  4. Alternative LVDS-to-HDMI converter IC recommendations

For these specific technical details, I recommend checking the SMARC iMX95 hardware integration manual or the carrier board documentation, as the preliminary datasheet doesn’t include these implementation details.

Alternative Approach

Given that the SMARC iMX95 has native DisplayPort support with an optional DSI to DP converter(1), you might consider using the Toradex DSI to HDMI Adapter(2) instead of a custom LVDS-to-HDMI solution, which would provide better integration with Toradex’s ecosystem.

Best regards, Toradex AI Assistant.

Hey @Govind1807,

I assume you are using the SMARC Development Board? If so, then:

  1. The I2C bank for the LVDS consists of the I2C_LVDS_3V3_SDA and I2C_LVDS_3V3_SCL signals, which connect to the pins 36 and 38 of the LVDS connector on the board.
  2. For using the LVDS1 interface, jumper header J95 must be disconnected
  3. Do you mean a Device Tree Overlay? We do not have ready-to-use overlays for the IT6263. However, there is documentation on the kernel on how to write a DTS node for the converter, so you can write your own. If you’re not sure how to write Device Tree Overlays, you can refer to our introduction to device tree overlays and documentation on how to write them for Toradex SoMs.
  4. Presumably, any converter with a supported driver in our downstream linux kernel should work with the SMARC iMX95 (for instance, the one for the IT6263 is at drivers/gpu/drm/bridge/it6263.c). For suggestions on alternative approaches for your project, we recommend checking out our list of partners. They can help you evaluate the best alternative

The information regarding your 1 and 2 questions is at the SMARC iMX95 and the SMARC Development Board datasheets, you can refer to them for any other information regarding the hardware. Also feel free to ask further here if you’re not sure about something.

Best regards,

Hi @leonardo.costa.tx Thanks for your Response.

Regarding the I2C bank for LVDS:
I understand that the signals are routed to pins 36 (SDA) and 38 (SCL) on the LVDS connector, but I would like to know the I2C bus number (e.g., i2c1, i2c2, etc.) that corresponds to this connection on the i.MX95 SoM.

Regarding the Device Tree Overlay for the IT6263 LVDS to HDMI bridge:

While referencing the imx8qm and imx8xp device tree source files. When adding support for the IT6263 chip, is it necessary to include an HDMI node and configure a reset-gpios property? Could you confirm which properties are required for proper integration?

Hey @Kabil,

About the I2C bus, see the snippet below from our imx95-toradex-smarc.dtsi include file:

	/* SMARC I2C_LCD */
	pinctrl_lpi2c5: lpi2c5grp {
		fsl,pins = <IMX95_PAD_GPIO_IO22__LPI2C5_SDA	0x40001b9e>, /* SMARC S140 - I2C_LCD_DAT */
			   <IMX95_PAD_GPIO_IO23__LPI2C5_SCL	0x40001b9e>; /* SMARC S139 - I2C_LCD_CK  */
	};

The interface’s node is thus lpi2c5. However, the bus number as it appears in the device files is defined at runtime.

			lpi2c5: i2c@426b0000 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "fsl,imx95-lpi2c", "fsl,imx7ulp-lpi2c";
				reg = <0x426b0000 0x10000>;
				...
			};

Go into your board and run the command below. You can compare the bus addresses from the symlinks with the address of the lpi2c5 node (426b0000) to find out which is the correct one.

ls -l /sys/dev/char/ | grep i2c

Regarding the HDMI, I’m not sure if it’s not necessary, but I believe writing the overlay according to the kernel documentation should work. According to it, the only required property (besides compatible and reg) is a video input, for which it uses lvds0_out as an example endpoint.

Best regards,

Hi @leonardo.costa.tx ,

We are working on validating the LVDS-to-HDMI bridge (IT6263) on the Toradex i.MX95 EVK. However, the driver fails to probe during boot.

root@toradex-smarc-imx95-12593654:~# dmesg | grep it6263
[ 2.308281] it6263: probe of 4-004c failed with error -5

Device Tree entries added:

&lpi2c5 {
    status = "okay";
    it6263: lvds-to-hdmi-bridge@4c {
        compatible = "ite,it6263";
        reg = <0x4c>;
        reset-gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
        status = "okay";

        port {
            it6263_0_in: endpoint {
                remote-endpoint = <&lvds0_out>;
            };
        };
    };
};

/* LVDS Display Bridge (LDB) */
&ldb {
    status = "okay";

    channel@0 {
        reg = <0>;
        fsl,data-mapping = "jeida";
        fsl,data-width = <24>;
        phys = <&ldb0_phy1>;
        phy-names = "lvds_phy";
        status = "okay";

        /* Keep existing port@0 (input from DPU) */
        port@1 {
            reg = <1>;
            lvds0_out: endpoint {
                remote-endpoint = <&it6263_in>;
            };
        };
    };
};

&ldb0_phy {
    status = "okay";
};
``` 

I2C bus check:

root@toradex-smarc-imx95-12593654:/sys/bus/i2c/devices/4-0070# ls -l /sys/dev/char/ | grep i2c lrwxrwxrwx 1 root root 0 Sep 15 07:23 252:0 -> ../../devices/platform/soc/42000000.bus/42540000.i2c/i2c-3/3-0032/rtc/rtc0 lrwxrwxrwx 1 root root 0 Sep 15 07:23 254:5 -> ../../devices/platform/soc/42000000.bus/42540000.i2c/i2c-3/3-0020/gpiochip5 lrwxrwxrwx 1 root root 0 Sep 15 07:23 254:6 -> ../../devices/platform/soc/42000000.bus/42540000.i2c/i2c-3/3-0021/gpiochip6 lrwxrwxrwx 1 root root 0 Sep 15 07:23 254:7 -> ../../devices/platform/soc/42000000.bus/42540000.i2c/i2c-3/3-0029/gpiochip7 lrwxrwxrwx 1 root root 0 Sep 15 07:23 89:1 -> ../../devices/platform/soc/44000000.bus/44350000.i2c/i2c-1/i2c-dev/i2c-1 lrwxrwxrwx 1 root root 0 Sep 15 07:23 89:2 -> ../../devices/platform/soc/42000000.bus/42530000.i2c/i2c-2/i2c-dev/i2c-2 lrwxrwxrwx 1 root root 0 Sep 15 07:23 89:3 -> ../../devices/platform/soc/42000000.bus/42540000.i2c/i2c-3/i2c-dev/i2c-3 lrwxrwxrwx 1 root root 0 Sep 15 07:23 89:4 -> ../../devices/platform/soc/42000000.bus/426b0000.i2c/i2c-4/i2c-dev/i2c-4 lrwxrwxrwx 1 root root 0 Sep 15 07:23 89:6 -> ../../devices/platform/soc/42000000.bus/426d0000.i2c/i2c-6/i2c-dev/i2c-6 ```


My understanding so far:
1.The IT6263 is connected to i2c-4 based on the sysfs entries.

2.The driver probe fails with -EIO (error -5), which likely points to an I²C communication issue or incorrect DT configuration.

Query:

1.Can you confirm if the IT6263 bridge on the i.MX95 EVK is indeed on i2c-4?

2.Are the DTS bindings above correct for IT6263 (reset GPIO, ports, endpoints)?

3.Is there any known patch or additional configuration required in the BSP for IT6263 support?

Thank you for your support…!

Hey @Kabil,

From the logs you provided on the /sys/bus directory, the i2c-4 interface does correspond to the LPI2C5, which should be connected to your converter.

Your configuration conceptually looks okay to me, but it’s difficult to investigate the issue further, since we do not work with the IT6263 converter, and do not have it here available for testing. The upstream kernel has further documentation on the driver, you can also try comparing yours with the specifications and example there.

To help solving issues with the converter and developing your application, I once again suggest checking out our list of partners. Let me know if you want help finding a suitable partner for your specific situation, we can point one out for you.

Best regards,

Hi @leonardo.costa.tx ,

The previously mentioned I2C probe error has been resolved. Now, we are facing another issue — the i.MX95 Toradex and the IT6263 LVDS-to-HDMI chip are communicating properly over I2C. The card0-HDMI-A node is created under /sys/class/drm/, and we are able to read the EDID and monitor status.

However, the modes entry is still empty. I have raised a related query at the link attached below.

Could you please check and let me know if you have any insights or suggestions regarding this issue?

Hi, @Kabil,

As I said before, we do not work with the IT6263 converter, and do not have it here available for testing. Since I don’t know the details of how the controller works, I’m not sure what could be causing the issue.

The warning about fixed dependency cycle is because your LVDS and IT6263 reference each other, which could cause problems when initializing these entries. Since I don’t know how the driver works, I don’t know what you should do to configure its device tree properly, and I don’t know if this is the reason for the CRTC error or the i2cdetect issue.

Once again, if you are having issues with hardware and firmware outside of our domain, I recommend checking our list of partners and look for one that can help you develop your application.

Best regards,