cancel
Showing results for 
Search instead for 
Did you mean: 

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

hochul yoo
Associate III

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.

1 ACCEPTED SOLUTION

Accepted Solutions
hochul yoo
Associate III

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/

View solution in original post

1 REPLY 1
hochul yoo
Associate III

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/