Can I use i.MX6 DDC and common I2C2 simultaneously?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Can I use i.MX6 DDC and common I2C2 simultaneously?

Jump to solution
2,336 Views
satoshishimoda
Senior Contributor I

Hi community,

I want to confirm about usage of i.MX6 HDMI & I2C.

I understand I can use common I2C for HDMI and I can use all I2C channel for HDMI (e.g. I2C1) if I don't use HDCP

But I should use DDC signal instead of common I2C if I use HDCP.

Then, I want to confirm whether I can use DDC signal and common I2C simultaneously.

I think I can use DDC signal for HDMI and I2C2 for other function (e.g. connection for PMIC) simultaneously as below because DDC signal is generated by HDMI module, not by common I2C module.

Is my understanding correct?

HDMI_TX_DDC_SDA -> EIM_D16 port (ALT4)

HDMI_TX_DDC_SCL -> EIM_EB2 (ALT4)

I2C2_SDA -> KEY_ROW3 (ALT4)

I2C2_SCL -> KEY_COL3 (ALT4)

Best Regards,

Satoshi Shimoda

Labels (4)
Tags (1)
0 Kudos
Reply
1 Solution
1,076 Views
Yuri
NXP Employee
NXP Employee

Your understanding is correct.

View solution in original post

0 Kudos
Reply
2 Replies
1,076 Views
jean-michelh_
Contributor I

Hello,

I am having the same configuration. My board is connected to DDC signals, but I can't get it working.

Here is what I get in my dmesg :

[0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw video=mxcfb0:dev=hdmi,1920x1200M@60,if=RGB24
[0.292025] mxc_mipi_csi2 21dc000.mipi_csi: i.MX MIPI CSI2 driver probed
[0.292037] mxc_mipi_csi2 21dc000.mipi_csi: i.MX MIPI CSI2 dphy version is 0x3130302a
[0.294111] Switching to clocksource mxc_timer1
[0.319839] mxc_sdc_fb fb.19: register mxc display driver hdmi
[0.319850] mxc_sdc_fb fb.19: NO mxc display driver found!
[0.351129] 2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX
[0.942349] console [ttymxc0] enabled
[1.637273] mxc_vdoa 21e4000.vdoa: i.MX Video Data Order Adapter(VDOA) driver probed
[1.644519] mxc_asrc 2034000.asrc: mxc_asrc registered
[1.649044] mxc_vpu 2040000.vpu: VPU initialized

I tried the following in my dts :

#include "imx6q.dtsi"

/ {

    aliases {

        mxcfb0 = &mxcfb1;

    };

    memory {

        reg = <0x10000000 0x40000000>;

    };

    leds {

        compatible = "gpio-leds";

        led0_red {

            gpios = <&gpio6 11 0>;

            default-state = "off";

        };

        led0_green {

            gpios = <&gpio6 14 0>;

            default-state = "on";

        };

        led1_red {

            gpios = <&gpio6 15 0>;

            default-state = "off";

        };

        led1_green {

            gpios = <&gpio6 16 0>;

            default-state = "on";

        };

    };

    mxcfb1: fb@0 {

        compatible = "fsl,mxc_sdc_fb";

        disp_dev = "hdmi";

        interface_pix_fmt = "RGB24";

        mode_str ="1920x1080M@60";

        default_bpp = <24>;

        int_clk = <0>;

        late_init = <0>;

        status = "okay";

    };

    v4l2_out {

        compatible = "fsl,mxc_v4l2_output";

        status = "okay";

    };

};

&cpu0 {

    arm-supply = <&sw1a_reg>;

    soc-supply = <&sw1c_reg>;

    pu-supply = <&reg_pu>; /* use pu_dummy if VDDSOC share with VDDPU */

};

&gpu {

    pu-supply = <&reg_pu>; /* ldo-bypass:use pu_dummy if VDDSOC share with VDDPU */

};

&hdmi_audio {

    status = "okay";

};

&hdmi_core {

    ipu_id = <0>;

    disp_id = <0>;

    status = "okay";

};

&hdmi_cec {

    pinctrl-names = "default";

    pinctrl-0 = <&pinctrl_hdmi_cec_2>;

    status = "okay";

};

&hdmi_video {

    pinctrl-names = "default";

    pinctrl-0 = <&pinctrl_hdmi_hdcp_2>;

    fsl,hdcp;

};

&i2c2 {

    clock-frequency = <100000>;

    pinctrl-names = "default";

    pinctrl-0 = <&pinctrl_i2c2_2>;

    status = "okay";

  pmic: pfuze100@08 {

        compatible = "fsl,pfuze100";

        reg = <0x08>;

        regulators {

            sw1a_reg: sw1ab {

                regulator-min-microvolt = <300000>;

                regulator-max-microvolt = <1875000>;

                regulator-boot-on;

                regulator-always-on;

                regulator-ramp-delay = <6250>;

            };

            sw1c_reg: sw1c {

                regulator-min-microvolt = <300000>;

                regulator-max-microvolt = <1875000>;

                regulator-boot-on;

                regulator-always-on;

                regulator-ramp-delay = <6250>;

            };

            sw2_reg: sw2 {

                regulator-min-microvolt = <800000>;

                regulator-max-microvolt = <3300000>;

                regulator-boot-on;

                regulator-always-on;

            };

            sw3a_reg: sw3a {

                regulator-min-microvolt = <400000>;

                regulator-max-microvolt = <1975000>;

                regulator-boot-on;

                regulator-always-on;

            };

            sw3b_reg: sw3b {

                regulator-min-microvolt = <400000>;

                regulator-max-microvolt = <1975000>;

                regulator-boot-on;

                regulator-always-on;

            };

            sw4_reg: sw4 {

                regulator-min-microvolt = <800000>;

                regulator-max-microvolt = <3300000>;

            };

            swbst_reg: swbst {

                regulator-min-microvolt = <5000000>;

                regulator-max-microvolt = <5150000>;

            };

            snvs_reg: vsnvs {

                regulator-min-microvolt = <1000000>;

                regulator-max-microvolt = <3000000>;

                regulator-boot-on;

                regulator-always-on;

            };

            vref_reg: vrefddr {

                regulator-boot-on;

                regulator-always-on;

            };

            vgen1_reg: vgen1 {

                regulator-min-microvolt = <800000>;

                regulator-max-microvolt = <1550000>;

            };

            vgen2_reg: vgen2 {

                regulator-min-microvolt = <800000>;

                regulator-max-microvolt = <1550000>;

            };

            vgen3_reg: vgen3 {

                regulator-min-microvolt = <1800000>;

                regulator-max-microvolt = <3300000>;

            };

            vgen4_reg: vgen4 {

                regulator-min-microvolt = <1800000>;

                regulator-max-microvolt = <3300000>;

                regulator-always-on;

            };

            vgen5_reg: vgen5 {

                regulator-min-microvolt = <1800000>;

                regulator-max-microvolt = <3300000>;

                regulator-always-on;

            };

            vgen6_reg: vgen6 {

                regulator-min-microvolt = <1800000>;

                regulator-max-microvolt = <3300000>;

                regulator-always-on;

            };

        };

    };

};

&mipi_csi {

    ipu_id = <0>;

    csi_id = <0>;

    v_channel = <0>;

    lanes = <2>;

    status = "okay";

};

&vpu {

    pu-supply = <&reg_pu>; /* ldo-bypass:use pu_dummy if VDDSOC share with VDDPU */

};

If I add a line using i2c1 and connecting the HDMI DDC signals to it, with HDMI cable connected it stops on :

mxc_hdmi 20e0000.hdmi_video: No modes read from edid

mxc_hdmi 20e0000.hdmi_video: create default modelist

If I don't connect HDMI cable when booting, and I plug it in after beeing on my rootfs, then it can work.

What do I miss ?

Thanks,

JM

0 Kudos
Reply
1,077 Views
Yuri
NXP Employee
NXP Employee

Your understanding is correct.

0 Kudos
Reply