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
Solved! Go to Solution.
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 = <®_pu>; /* use pu_dummy if VDDSOC share with VDDPU */
};
&gpu {
pu-supply = <®_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 = <®_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
Your understanding is correct.