How do I get E-EDID with i.MX8MP?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

How do I get E-EDID with i.MX8MP?

2,343件の閲覧回数
kuwahata
Contributor II

OS:yocto-3.0 Zeus
HW:i.MX8MPLUSLPD4-EVK

E-EDID (E-EDID 2block or later) cannot be obtained correctly with i.MX8MP.
Therefore, if VSDB is defined as the second E-EDID, There are some inconveniences such as not being able to switch to HDMI mode(operating as DVI mode).

How should I obtain all E-EDIDs correctly in the kernel?

0 件の賞賛
返信
6 返答(返信)

1,974件の閲覧回数
thisisausername
Contributor I

Thanks & Regards

0 件の賞賛
返信

1,928件の閲覧回数
kuwahata
Contributor II

@thisisausername 

Hello Vivek Karna,

 

I was able to solve the problem by changing the I2c function from HDMI-only to general-purpose.

I modified the dts file as below.

-----------------------------------------------------------------------

***************
*** 531,536 ****
--- 531,543 ----
*/
};

+ &i2c5 {
+ clock-frequency = <100000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2c5>;
+ status = "okay";
+ };
+
&irqsteer_hdmi {
status = "okay";
};
***************
*** 548,553 ****
--- 555,561 ----
};

&hdmi {
+ ddc-i2c-bus = <&i2c5>;
status = "okay";
};

***************
*** 767,774 ****

pinctrl_hog: hoggrp {
fsl,pins = <
! MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_EARC_SCL 0x000001c4
! MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_EARC_SDA 0x000001c4
MX8MP_IOMUXC_HDMI_HPD__HDMIMIX_EARC_DC_HPD 0x00000012
MX8MP_IOMUXC_HDMI_CEC__HDMIMIX_EARC_CEC 0x00000012
/*MX8MP_IOMUXC_HDMI_DDC_SCL__GPIO3_IO26 0x00000146*/
--- 775,782 ----

pinctrl_hog: hoggrp {
fsl,pins = <
! /*MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_EARC_SCL 0x000001c4*/
! /*MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_EARC_SDA 0x000001c4*/
MX8MP_IOMUXC_HDMI_HPD__HDMIMIX_EARC_DC_HPD 0x00000012
MX8MP_IOMUXC_HDMI_CEC__HDMIMIX_EARC_CEC 0x00000012
/*MX8MP_IOMUXC_HDMI_DDC_SCL__GPIO3_IO26 0x00000146*/
***************
*** 907,912 ****
--- 915,927 ----
>;
};

+ pinctrl_i2c5: i2c5grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_HDMI_DDC_SCL__I2C5_SCL 0x400001C2
+ MX8MP_IOMUXC_HDMI_DDC_SDA__I2C5_SDA 0x400001C2
+ >;
+ };
+
pinctrl_pmic: pmicirq {
fsl,pins = <
MX8MP_IOMUXC_GPIO1_IO03__GPIO1_IO03 0x00000146

-----------------------------------------------------------------------

Thank you,

Kuwahata

 

1,920件の閲覧回数
thisisausername
Contributor I

Thanks & Regards

0 件の賞賛
返信

1,912件の閲覧回数
kuwahata
Contributor II

@thisisausername 

Hello Vivek Karna,

 

I'm sorry.
Please refrain from presenting the file.

 

Thank you,

Kuwahata

0 件の賞賛
返信

2,328件の閲覧回数
Rita_Wang
NXP TechSupport
NXP TechSupport

You can use modetest tool to get edid value.

Please check the driver drivers/gpu/drm/bridge/synopsys/dw-hdmi.c

0 件の賞賛
返信

2,311件の閲覧回数
kuwahata
Contributor II

EDID could not be obtained.

-> Trying to get EDID+E-EDID1-3block(128byte×4).

-------------------------------------------

root@imx8mpevk:~# modetest
trying to open device 'i915'...failed
trying to open device 'amdgpu'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...done
Encoders:
id crtc type possible crtcs possible clones
40 39 TMDS 0x00000004 0x00000000

Connectors:
id encoder status name size (mm) modes encoders
41 40 connected HDMI-A-1 0x0 4 40
modes:
name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
800x600 60 800 840 968 1056 600 601 605 628 40000 flags: phsync, pvsync; type: driver
800x600 56 800 824 896 1024 600 601 603 625 36000 flags: phsync, pvsync; type: driver
848x480 60 848 864 976 1088 480 486 494 517 33750 flags: phsync, pvsync; type: driver
640x480 60 640 656 752 800 480 490 492 525 25175 flags: nhsync, nvsync; type: driver
props:
1 EDID:
flags: immutable blob
blobs:

value:
2 DPMS:

-------------------------------------------

 

 

However, it is known that it will work if you obtain up to 1 block of E-EDID (128 bytes x 2).
Confirm by connecting to a different monitor than the first result.

-------------------------------------------

root@imx8mpevk:~# modetest
trying to open device 'i915'...failed
trying to open device 'amdgpu'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...done
Encoders:
id crtc type possible crtcs possible clones
40 39 TMDS 0x00000004 0x00000000

Connectors:
id encoder status name size (mm) modes encoders
41 40 connected HDMI-A-1 120x90 16 40
modes:
name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
720x480 60 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: preferred, driver
1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
1920x1080 60 1920 2008 2052 2200 1080 1084 1089 1125 148352 flags: phsync, pvsync; type: driver
1920x1080 50 1920 2448 2492 2640 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver
1280x720 60 1280 1390 1430 1650 720 725 730 750 74250 flags: phsync, pvsync; type: driver
1280x720 60 1280 1390 1430 1650 720 725 730 750 74250 flags: phsync, pvsync; type: driver
1280x720 60 1280 1390 1430 1650 720 725 730 750 74176 flags: phsync, pvsync; type: driver
1280x720 50 1280 1720 1760 1980 720 725 730 750 74250 flags: phsync, pvsync; type: driver
1280x720 50 1280 1720 1760 1980 720 725 730 750 74250 flags: phsync, pvsync; type: driver
720x576 50 720 732 796 864 576 581 586 625 27000 flags: nhsync, nvsync; type: driver
720x576 50 720 732 796 864 576 581 586 625 27000 flags: nhsync, nvsync; type: driver
720x480 60 720 736 798 858 480 489 495 525 27027 flags: nhsync, nvsync; type: driver
720x480 60 720 736 798 858 480 489 495 525 27000 flags: nhsync, nvsync; type: driver
640x480 60 640 656 752 800 480 490 492 525 25200 flags: nhsync, nvsync; type: driver
640x480 60 640 656 752 800 480 490 492 525 25175 flags: nhsync, nvsync; type: driver
640x480 60 640 656 752 800 480 490 492 525 25175 flags: nhsync, nvsync; type: driver
props:
1 EDID:
flags: immutable blob
blobs:

value:
00ffffffffffff00068f071101000000
17110103800c09780a1eac9859568528
29525700000001010101010101010101
0101010101018c0ad08a20e02d10103e
9600816000000018011d8018711c1620
582c250081490000009e000000fc0056
412d31383039410a20202020000000fd
00173d0d2e11000a202020202020011c
020320714982050401101114131f260f
1f07097f07834f000066030c00100080
011d007251d01e206e28550081490000
001ed60980a020e02d101060a2008160
000808188c0ad090204031200c405500
816000000018011d80d0721c1620102c
258081490000009e011d00bc52d01e20
b828554081490000001e000000000001
2 DPMS:

-------------------------------------------

 

/sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/edid
There is no change even if you check.

Based on these results, we have concluded that if E-EDID 2block or higher is present, it will not be possible to obtain it correctly.

Therefore, if VSDB is in the 2nd block of E-EDID, the Kernel cannot switch DVI/HDMI mode correctly.

drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
I've been looking into this, but haven't found a solution yet.

@Rita_Wang 

0 件の賞賛
返信