Unable to load edid via kernel args

Following the instructions here: Display Output, Resolution and Timings (Linux) | Toradex Developer Center

I’m getting an error (which I believe is ENOENT)

apalis-imx6-10924932 login: [   38.245401] [drm:drm_load_edid_firmware] *ERROR* Requesting EDID firmware "edid/zl084.bin" failed (err=-2)
[   38.465834] [drm:drm_load_edid_firmware] *ERROR* Requesting EDID firmware "edid/zl084.bin" failed (err=-2)

apalis-imx6-10924932 login: torizon
Password:
torizon@apalis-imx6-10924932:~$ ls -la /lib/firmware/edid/zl034.bin
-rw-r--r-- 1 root root 256 Feb  9 16:48 /lib/firmware/edid/zl034.bin

Using stock torizoncore 5.4 build, KCONFIG is correct, a edid is verified on several other computers.

Any suggestions or work arounds?

Greetings @ed-bear,

Your error message says “zl084.bin”, but in the filesystem you find “zl034.bin”. Perhaps it’s just a type with the filenames?

Best Regards,
Jeremias

Oooo, I wish that was it, but this output was actually just from a demo I mocked up to post information here. The typo in the first post is real, but so is the issue I’m having:

[   42.823839] [drm:drm_load_edid_firmware] *ERROR* Requesting EDID firmware "edid/ZL034.bin" failed (err=-2)
[   43.046546] [drm:drm_load_edid_firmware] *ERROR* Requesting EDID firmware "edid/ZL034.bin" failed (err=-2)
torizon@apalis-imx6-10924932:~$ ls -la /lib/firmware/
LICENCE.Marvell               imx/                          rtlwifi/
LICENCE.rtlwifi_firmware.txt  mrvl/                         vpu/
LICENSE.sdma_firmware         regulatory.db
edid/                         regulatory.db.p7s
torizon@apalis-imx6-10924932:~$ ls -la /lib/firmware/edid/ZL034.bin
-rw-r--r-- 1 root root 256 Jan  1  1970 /lib/firmware/edid/ZL034.bin

Ah okay, well so much for an easy solution.

Okay, so starting from the beginning then. I have some initial questions/suggestions to make sure I understand everything.

First of all I assume you’re trying to load this custom edid binary because the default edid from your HDMI display doesn’t work or something similiar, correct?

Did you create this edid binary yourself or did you get it from somewhere? I assume you then manually wrote the binary to /lib/firmware/edid/ correct?

As for a suggestion, we admittedly haven’t tested this edid loading functionality too much in TorizonCore. If it’s not too much trouble could you flash our reference image instead and try the edid loading functionality there.

It would help us to narrow down whether the issue is with the lower-level BSP or with the upper-level TorizonCore.

Best Regards,
Jeremias

Hi @ed-bear , you have to put ZL034.bin into the weston container instead of /lib/firmware/edid/ on TorizonCore. For example, ZL034.bin is placed at /home/torizon/firmware and /home/torizon/firmware will be mounted to /home/torizon/firmware in a weston container e.g. torizon/weston-vivante:2. This is a docker-compose example. Meanwhile, add parameter to kernel command line. fw_setenv tdxargs drm.edid_firmware=ZL034.bin

  weston:
    cap_add:
    - CAP_SYS_TTY_CONFIG
    device_cgroup_rules:
    - c 4:0 rmw
    - c 4:7 rmw
    - c 13:* rmw
    - c 199:* rmw
    - c 226:* rmw
    environment:
    - ACCEPT_FSL_EULA=1
#    image: benjaminhu/weston-vivante-1080p:1
    image: torizon/weston-vivante:2
    network_mode: host
    volumes:
    - source: /tmp
      target: /tmp
      type: bind
    - source: /dev
      target: /dev
      type: bind
    - source: /run/udev
      target: /run/udev
      type: bind
    - source: /home/torizon/firmware
      target: /lib/firmware
      type: bind