THIS POST IS NOW OUTDATED! The instructions below only apply to kernel version <= 3.10.17, starting with kernel 3.10.53 and above, kernel command line parameters are not used any more as explained in the display support section of the 3.10.53 kernel post.One of the first hurdles to a great out-of-the-box-experience we have on i.MX6 at the moment is configuration of screen resolutions. We're aiming to support four different displays on the Nitrogen6X and Sabre Lite:
- Freescale's LVDS1 display, commonly used on the i.MX53 Quick Start Board,
- Ezurio (formerly Boundary Devices) 7" 800x480 RGB display with 4-wire resistive touch screen,
- Ezurio (formerly Boundary Devices) 7" 1024x600 LVDS display with 5-point capactive touch, and
- Arbitrary HDMI monitor at 720P and USB mouse
Unfortunately, our set of tools doesn't yet support automatic detection of the displays, so we've been using a number of work arounds. In this post, we'll describe the general state of affairs and hopefully let you know how to set things up for your use.
U-Boot
To begin with, the U-Boot versions we're shipping don't yet support displays. Fabio Estevan published some patches that allow Sabre Lite to support the Freescale panel and we have some patches gathering dust that support the RGB display and our 1024x600 panel, but we haven't yet released this into our shipments.
This is yet another reason for us to make the transition to main-line U-Boot.
Linux
The Linux kernels we're shipping do contain support for all four displays listed above. You can configure them through the kernel command line (bootargs
in U-Boot).
In the various releases, this is either done by a generic boot script which expects you to set and save a persistent bootargs
or bootargs_base
variable, or has a set of boot scripts with various settings hard-coded in the boot script.
Kernel parameters
The kernel parameter values for the displays are:
Display | Setting |
---|---|
7" 800x480 resistive touch | mxcfb0:dev=lcd,CLAA-WVGA,if=RGB666 |
7" 1024x600 capacitive multi-touch | mxcfb0:dev=ldb,1024x600M@60,if=RGB666 |
Freescale's LVDS1 | mxcfb0:dev=ldb,LDB-XGA,if=RGB666 |
HDMI at 720P | mxcfb0:dev=hdmi,1280x720M@60,if=RGB24 |
Note that there are four components to the video=
clause:
mxcfbN: | This display specifier defines the ordering of display devices under Linux. Note that there is not a 1:1 correspondence with /dev/fbN because /dev/fb1 and /dev/fb3 will be automatically configured as overlay devices for /dev/fb0 and /dev/fb2 . |
dev=X | This clause specifies the output interface used for the display. Options are lcd for the parallel RGB interface, ldb for the LVDS interface and hdmi for the HDMI transmitter. |
displayname or resolution | This clause can either define a named panel such as LDB-XGA or CLAA-WVGA or a resolution in VESA Coordinated Video Timings format. Named panels are defined in a board-specific file. |
if=depth | This clause defines the output format at the transmitter. Options include RGB666 for 18-bit panels and RGB24 for 24-bit displays. Note that this does not define the in memory bit depth of the frame buffer. That's done with the bpp= kernel command-line parameter. |
Distribution-specific notes
Android
Our Android image contains support for four different display resolutions through separate boot scripts:
-rwxr-xr-x 1 root root 887 2012-05-21 12:24 6q_bootscript -rwxr-xr-x 1 root root 466 2012-04-15 20:57 6q_bootscript.1080p -rwxr-xr-x 1 root root 342 2012-04-03 19:04 6q_bootscript.7inresistive -rwxr-xr-x 1 root root 382 2012-04-03 19:05 6q_bootscript.dual_hdmi_hannstar -rwxr-xr-x 1 root root 338 2012-04-03 19:01 6q_bootscript.hannstar
The default boot script will attempt to determine whether HDMI is supported using the hdmidet
command. In order for this to function, a Ezurio (formerly Boundary Devices) U-Boot image newer than April 12, 2012 must be running. If present, a 720P
HDMI display will be configured as the primary display and a WVGA
display will be configured as a secondary (or vice versa).
Support for the 1024x600 LVDS panel was added after the Android image was built. Please note the notes in the comment section for a description of how to add support for this panel.
Timesys
Timesys images generally expect you to define the bootargs
variable to contain a display reference:
U-Boot> setenv bootargs mxcfb0:dev=hdmi,1280x720M@60,if=RGB24 U-Boot> saveenv U-Boot> run bootcmd
Windows CE
Windows Embedded Compact 7 from Adeneo contains two support for HDMI and the Freescale LVDS1 panel in the form of two separate O/S images (NK*.bin
).
QNX
At the time of this writing, only the 7" Parallel RGB display is supported in QNX.
Known issues
There is a known bug in the HDMI driver which causes display corruption if an HDMI monitor is either disconnected and reconnected or powered down and back up during operation.