This is just a quick note regarding something we found in the Linux kernel last week.
After swapping monitors to an LG W2361VG (a 23″ monitor with a DVI input port), I noticed that the screen resolution kept coming up at 640×480, even though the bootargs was specifying 720P resolution.
After much digging through the kernel drivers, I found that most of the modes reported by the monitor over EDID were being rejected by a piece of code in drivers/video/mxc_hdmi.c which was looking up the resolution in an embedded table in drivers/video/mxc/mxc_edid.c.
Tracing through the ramifications, it doesn’t appear that this restriction is necessary, and in fact, removing the requirement seems to work just fine, so we pushed a patch to both of our active kernel branches:
If you’re experiencing similar things, you might want to pull in this patch, or upgrade to our latest.
Hi, someone could help me to add hdmi 1920×1200 resolution? which parameters have I to use to add it in mxc_edid.c source? thank you for the attention,
regards
Andrea
Hi Andrea,
Is the EDID of your device correct? Do you have the allow_noncea variable set in U-Boot?
U-Boot> setenv allow_noncea
When this variable is set, you should be able to see the resolutions your display supports in sysfs:
# cat /sys/class/graphics/fb0/modes
Then you should be able to change the resolution you should be able to use the exact timings provided in the EDID by issuing: > /sys/class/graphics/fb0/mode
# echo
If you want this resolution to be used at every bootup, the best is to modify the device tree and set the desired resolution.
Regards,
Gary
Hello Garry
Does boundary support the auto-configuration of HDMI display
based on the data collected from the connected display
Regards
Himanshu
Hi,
Yes, the imx HDMI driver allows to provide a default mode via the device tree. If the EDID data has a matching mode_str this mode will be used, if not, the lowest available and working resolution will be used.
https://github.com/boundarydevices/linux-imx6/blob/boundary-imx_4.1.15_1.0.0_ga/drivers/video/fbdev/core/modedb.c#L865
Anyway, once booted, you can see in the sysfs all the modes that have been provided via the EDID:
# cat /sys/class/graphics/fb0/modes
Then you can select the mode you want. Here is an example for 1080P on my TV:
# echo S:1920x1080p-60 > /sys/class/graphics/fb0/mode
Regards,
Gary
Hi Gary,
I already use this command in u-boot:
setenv allow_noncea
but in the kernel, i can only see this:
root@nitrogen:~# cat /sys/class/graphics/fb0/modes
U:640x480p-59
V:640x480p-60
i think before i run the above u-boot command, i can see longer list of the modes. I am using kernel “4.1.15-21-boundary-12x”, can you please me?
Regards,
llks.
Hi Gary,
can you give an example of how to add our HDMI custom display timing in “modedb.c”?
regards,
llks