Rainer
August 1, 2016, 7:16am
1
I tried to enable a 10" Fusion LCD display on the iMX7S. The display is connected to an Iris carrier board.
Unfortunately I was not successful to configure it by setting the video= argument on the kernel command line.
I tried several options from [this page] (Display Output, Resolution and Timings (Linux) | Toradex Developer Center ) but none of them was successful.
What is the correct way to enable the 10" Fusion display on iMX7S?
May i know which Linux Image version are you using ?
More detailed information on software setup is available in this article
Rainer
August 1, 2016, 8:11am
3
I tried using the pre-installed Angstrom image
“Angstrom v2015.12 - Kernel 3.14.52-v2.6a1+g32d17d8, Colibri_iMX7_LinuxImageV2.6_20160315”
and a yocto built image using kernel 4.1.15-v2.6b2+g0ff849d.
VGA output works fine with both.
The article mentioned by you is about setting up the touch driver. Right now I would like to start getting the video to be shown on the display first.
Display configuration from the command line is currently not yet available on Colibri iMX7, sorry! that i forgot to note that earlier. One need to configure the display configurations via device tree.
Replace the default display timings here in device tree to this display timings(TouchRevolution Fusion 10" display timings).
Then please remove the “applicable for imx7” tag from your article:
I was confused by this as well. Tried several vidargs until i’ve seen the 640x480 only entry in the DT.
Thanks for your feedback, just removed it!
EDIT: Fusion LCD has other params. These resolutions are the ones i personally need. Use it as a template for your own timings.
You can patch that during boot as so called “fdt_fixup”. Just copy&paste one of them to u-boot cmd line
u-boot patch for 800x600x24@60 (SVGA)
setenv fdt_fixup_SVGA1 'fdt set /soc/aips-bus@30400000/lcdif/display bits-per-pixel 0x00000018 && fdt rm /soc/aips-bus@30400000/lcdif/display/display-timings/640x480/ && fdt mknode /soc/aips-bus@30400000/lcdif/display/display-timings/ 800x600 && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 clock-frequency <0x02625a00> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 hactive <0x00000320> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 vactive <0x00000258> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 hback-porch <0x00000058> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 hfront-porch <0x00000028>'
setenv fdt_fixup_SVGA2 'fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 vback-porch <0x00000017> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 vfront-porch <0x00000001> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 hsync-len <0x00000080> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 vsync-len <0x00000004> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 de-active <0x00000001> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 hsync-active <0x00000000> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 vsync-active <0x00000000> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/800x600 pixelclk-active <0x00000000>'
setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt resize && run fdt_fixup_SVGA1 && run fdt_fixup_SVGA2'
saveenv
u-boot patch for 1280x1024x24@60 (SXGA)
setenv fdt_fixup_SXGA1 'fdt set /soc/aips-bus@30400000/lcdif/display bits-per-pixel 0x00000018 && fdt rm /soc/aips-bus@30400000/lcdif/display/display-timings/640x480/ && fdt mknode /soc/aips-bus@30400000/lcdif/display/display-timings/ 1280x1024 && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 clock-frequency <0x066ff300> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 hactive <0x00000500> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 vactive <0x00000400> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 hback-porch <0x000000f8> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 hfront-porch <0x00000030>'
setenv fdt_fixup_SXGA2 'fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 vback-porch <0x00000026> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 vfront-porch <0x00000001> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 hsync-len <0x00000070> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 vsync-len <0x00000003> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 de-active <0x00000001> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 hsync-active <0x00000000> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 vsync-active <0x00000000> && fdt set /soc/aips-bus@30400000/lcdif/display/display-timings/1280x1024 pixelclk-active <0x00000000>'
setenv fdt_fixup 'fdt addr ${fdt_addr_r} && fdt resize && run fdt_fixup_SXGA1 && run fdt_fixup_SXGA2'
saveenv
(Tested in a boot2Qt image, but should work in other images)
Thanks for sharing! Note that fixup is usually meant for testing/prototyping. For a final product it is recommended to apply the changes to the device tree directly.