We recently started offering a couple of new 1280×800 LCD panels with capacitive touch and have been behind in describing how to integrate them with our Nitrogen6X, Nitrogen6X-SOM, and BD-SL-i.MX6 (formerly SABRE Lite) boards.
The displays both have a resolution of 1280×800 and a 2-point capacitive multi-touch sensor (Focaltech FT5X06):
|Product||Resolution||Brightness (cd/m**2)||Contrast||Screen size|
If you’ve read our post on auto-configuration of displays, you’ll know that we automatically detect the display connected to our boards by detecting the touch controller through an i2c probe.
Because the touch controllers on these new displays share the same touch controller used on our older 7-inch 1024×600 display, this scheme doesn’t work directly, and needs some assistance from you. Both U-Boot and the Linux kernel need information about these displays, and depending on your userspace, you may need additional updates.
Because both of these panels support the same video timings and display format, the U-Boot source code names both of these panels LDB-WXGA, and auto-detection is disabled. To choose these displays, you can set the panel environment variable as follows:
U-Boot > setenv panel LDB-WXGA U-Boot > saveenv U-Boot > reset
This is enough to get U-Boot to support the new display, and if you re-boot with no SD card or SATA drive connected, you’ll see the proper video output.
The entry for this resolution was in June of 2013, so if you have a really old U-Boot, you’ll need to upgrade.
As discussed in this post about screen configuration, the key to display output selection in Linux is the video= clause(s) on the kernel command-line, which are specified in-directly through U-Boot’s bootargs variable.
For each of these displays, the proper setting is:
In English, this says that the panel is connected via the LVDS Display Bridge (ldb), has a resolution of 1280×800 pixels using the Coordinated Video Timing standard with reduced margins (MR), and has an 18 bit-per-pixel interface (RGB666).
To make things easy, we’ve also added support for this to our standard boot script. This support changes a test for the FT5x06 touch controller into a test for ft5x06 touch controller and panel==LDB-WXGA.
In other words, if you have an updated boot script, the setting change you made in U-Boot should be all you need.
This updated boot script (or a version of it) is present in both the Timesys and Android images we’re shipping, and is also present in the Yocto, Timesys, and Android source repositories. Other userspaces may need tweaks.
Touch screen settings
If you look closely at the boot script, you’ll also see that another kernel command-line parameter is added when the FocalTech touch controller is found.
As with most capacitive touch controllers, calibration isn’t needed in the normal case, but the FT5x06 touch controllers on each of these displays return the pixel location of each touch. Since our device driver for the touch controller used to always advertise a 1024×600 range of values, we updated the driver to allow this to be a command-line parameter.
This updated driver has been in our boundary-imx_3.0.35_4.1.0 and boundary-jb4.3_1.0.0-ga branches since October of 2013. If you’re using a kernel older than that, you’ll either need to upgrade or back-port the patches.
Contact us if you need this. We’ll be happy to help.
Finally, you may also note that there’s a calibration setting in U-Boot. As mentioned earlier, these touch screens do not require calibration, but the driver supports calibration. This is used in applications where the panels are operated in portrait mode instead of their native landscape mode.
We didn’t set out to make this complicated, but in our search to find the best displays for use with our boards, these two stood out.
They have high resolution, great brightness and contrast, are well supported by the display manufacturers, and can be very economical in production (when no plexiglass stand and daughter board is needed).
Contact us for volume pricing.