Brad Stewart

LCD Interfacing Solutions

Discussion created by Brad Stewart Employee on Sep 6, 2011

Often you cannot use the default display settings for your particular LCD display.

As an example, we needed to interface a Hantronix HDA1040S LVDS LCD display to display port 0 (di0) of an iMX51.


The HDA1040S has 18 bits-per-pixel, 600x800, and a maximum pixel clock of 50MHz.  None of the standard settings suggested in the Linux reference manuals will not work because the bit rate defaults to 66MHz, or the display is too small (CLAA-WVGA for example).


But display types are defined in <ltib-directory>/rpm/BUILD/linux/drivers/video/modedb.c.


If you look at the structure defined as "struct fb_videomode modedb[]", you'll see a long list of options.  I found one here:


 /* 800x600 @ 60 Hz, 37.8 kHz hsync */ NULL, 60, 800, 600, 25000, 88, 40, 23, 1, 128, 4, FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED


Note that it has the correct resolution.  Frame rate is within specifications.  The pixel rate is given by the 5th parameter, which is 25000 pico seconds, or 40MHz. (you can find out what the other numbers mean by looking at the file ltib/rpm/BUILD/linux/include/linux/fb.h)


Then all that was left to do was to modify the u-boot environment variable to pass the kernel command: