Blog Sturntech

Changing Live Video Modes with OMAPDSS

with one comment

The OMAP documentation has plenty of information on how to configure a desired video mode at boot by way of kernel boot parameters. See http://gitorious.org/linux-omap-dss2/linux/blobs/master/Documentation/arm/OMAP/DSS

Recently I was tasked with implementing a method of dynamically changing video mode timings without rebooting the system. Additionally the system is very bare-bones, consisting of essentially sysvinit, sysfs and Qt/Embedded. Size requirements dictated the absence of fbset and other nice applications in the rootfs, so a more direct route to changing the video timings was needed.

The embedded system uses a TFT LCD screen that requires a particular timing video pattern. These timings are non-VESA, meaning that while the video stream will be properly parsed by the TFT’s processor, there can be no expectation for the video stream to be parsed by any other VGA device.

The timings required for the TFT (640x480M-32@60) are:
23750,640/80/16/64,480/3/13/4

The timings for VESA compliance (640×480-32@60) are:
25175,640/40/24/96,480/32/11/2

These timings are relatively close, but different enough that distortion would appear on the opposite device. The TFT screen will show scattered lines and garbling when using the VESA-compliant timings. VGA devices would show an assortment of results when using the TFT timings, including fully functional, entirely non-functional, screen clipping, screen shifting, and distortion.

My solution was to allow our sales staff a key sequence to directly modify the timings held in the display0 entry found at /sys/devices/platform/omapdss/display0 entry. The device would boot with the TFT timings, and on a key-press, would switch to the VESA-timings. The idea is that the sales staff can switch to “projector” mode when training, allowing the audience to see a clean image at the cost of slight distortion on the handheld display.

The basic approach was the following:

# Change to TFT timings
echo “23750,640/80/16/64,480/3/13/4” > /sys/devices/platform/omapdss/display0/timings

# Change to VESA timings
echo “25175,640/40/24/96,480/32/11/2” > /sys/devices/platform/omapdss/display0/timings

Written by sturnfie

January 19th, 2012 at 3:27 pm

One Response to 'Changing Live Video Modes with OMAPDSS'

Subscribe to comments with RSS or TrackBack to 'Changing Live Video Modes with OMAPDSS'.

  1. Hi,
    As you have mentioned above, VGA devices show an screen clipping. Can you please let me know what timings did you use for VGA display(640-480 at 60 hz).

    I tried with multiple values for VGA, but i still see some clipping on the LCD monitor.
    OMAP 37xx–24 bit RGB connection to VGA controller, which is connector LCD monitor.
    Thanks,
    learnom.

    learnom

    2 Jul 12 at 2:53 PM

Leave a Reply