Skip to main content
Visitor II
September 29, 2022
Solved

The way of specify an EDID data to display dual screen ...

  • September 29, 2022
  • 1 reply
  • 6160 views

Hello everyone ~

Below link is my last question about display quality of dual screen.

Fortunately I solved it but I faced other problem.

https://community.st.com/s/question/0D53W00001mHWaWSAW/stm32mp1-can-i-duplicate-ltdcrgb-signal-for-dual-display

As I mentioned in the above question, I want to implement dual screen that display same contents same time.

My TFT-LCD's resolution is 1280x800 (10.1inch).

so HDMI also has to has 1280x800 same resolution with LCD.

The monitor or TV that support 1280x800 resolution in EDID display well both all.

Below is "modetest" log when work fine.

root@stm32mp15-prox:~# modetest -M stm -c
Connectors:
id encoder status name size (mm) modes encoders
33 32 connected HDMI-A-1 480x270 1 32
 modes:
 index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
 #0 1280x800 59.91 1280 1328 1360 1440 800 803 809 823 71000 flags: phsync, nvsync; type: driver
 props:
 1 EDID:
 flags: immutable blob
 blobs:
 
 value:
 00ffffffffffff001e6db85a01010101
 0118010380301b78ea3135a5554ea126
 0c5054a54b00714f81809500b300a9c0
 810081c09040023a801871382d40582c
 4500e00e1100001e000000fd00384b1e
 530f000a202020202020000000fc004c
 47204950532046554c4c4844000000ff
 000a2020202020202020202020200164
 02031df14a900403011412051f101323
 0907078301000065030c002000023a80
 1871382d40582c4500e00e1100001e01
 1d8018711c1620582c2500e00e110000
 9e011d007251d01e206e285500e00e11
 00001e8c0ad08a20e02d10103e9600e0
 0e110000180000000000000000000000
 0000000000000000000000000000009e
 2 DPMS:
 flags: enum
 enums: On=0 Standby=1 Suspend=2 Off=3
 value: 0
 5 link-status:
 flags: enum
 enums: Good=0 Bad=1
 value: 0
 6 non-desktop:
 flags: immutable range
 values: 0 1
 value: 0
 4 TILE:
 flags: immutable blob
 blobs:
 
 value:
 20 CRTC_ID:
 flags: object
 value: 40
35 0 connected DPI-1 217x136 1 34
 modes:
 index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
 #0 1280x800 60.19 1280 1300 1310 1330 800 804 808 812 65000 flags: ; type: preferred, driver
 props:
 1 EDID:
 flags: immutable blob
 blobs:
 
 value:
 2 DPMS:
 flags: enum
 enums: On=0 Standby=1 Suspend=2 Off=3
 value: 0
 5 link-status:
 flags: enum
 enums: Good=0 Bad=1
 value: 0
 6 non-desktop:
 flags: immutable range
 values: 0 1
 value: 0
 4 TILE:
 flags: immutable blob
 blobs:
 
 value:
 20 CRTC_ID:
 flags: object
 value: 0

However, some TV can not display anything because they doesn't support 1280x800 resolution in EDID.

Therefore, I'm trying to specify the EDID data.

I found DRM_LOAD_EDID_FIRMWARE kernel option.

https://www.96boards.org/documentation/consumer/dragonboard/dragonboard410c/guides/force-display-res.md.html

https://wiki.archlinux.org/title/kernel_mode_setting#Forcing_modes_and_EDID

A. Copy 1280x800.bin to /lib/firmware/edid

B. Enable kernel option.

 -> Device Drivers

 -> Graphics support

 -> Direct Rendering Manager

 -> (*) Allow to specify an EDID data set instead of probing for it

C. Specify edid data on the U-boot

  env set bootargs "drm.edid_firmware=edid/1280x800.bin"

  or

  env set bootargs "drm.edid_firmware=HDMI-A-1:edid/1280x800.bin"

but not working as I expected.

I'm newbie in U-boot.

Is this the correct way to pass kernel parameters?

OpenSTLinux support this feature?

Thanks in advance.

    This topic has been closed for replies.
    Best answer by hochul yoo

    I solved.

    It was problem that I don't know exactly how to pass the kernel command line parameters.

    drm.edid_firmware=edid/1280x800.bin

    I referenced this wiki and succeed to pass the kernel parameter. 

    https://wiki.st.com/stm32mpu/wiki/Dmesg_and_Linux_kernel_log#Default_values

    As a reference, thankfully we can download various possible resolution EDID files.

    https://download.phytec.de/Software/Linux/Driver/

    1 reply

    hochul yooAuthorAnswer
    Visitor II
    September 30, 2022

    I solved.

    It was problem that I don't know exactly how to pass the kernel command line parameters.

    drm.edid_firmware=edid/1280x800.bin

    I referenced this wiki and succeed to pass the kernel parameter. 

    https://wiki.st.com/stm32mpu/wiki/Dmesg_and_Linux_kernel_log#Default_values

    As a reference, thankfully we can download various possible resolution EDID files.

    https://download.phytec.de/Software/Linux/Driver/