This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Changing stock display settings on OMAP3 EVM

We're using a Mistral RevG OMAP3 EVM and connecting an external LCD through the expansion connectors. The external LCD connections require 18BPP mode (LSB justified) and landscape (640x480) orientation. We would like to do a quick check of these connections without having to re-build the kernel or reflash the boards. These are the S/W versions on the boards: (U-Boot 2008.10 (Sep 14 2009 - 13:40:58)) and (Linux version 2.6.29-rc3-omap1).
 
Is it possible to do the following in either stock uboot or kernel command lines, or through bootarg changes on the stock kernel?
 
1) Rotate the LCD output to landscape
 
2) Set the DSS in 18-BPP mode
 
3) Display a landscape JPEG from the file system onto the LCD
 
I'm thinking all of these are possible, but am not sure how to do them. Specific command examples are greatly appreciated.
 
If not possible to do from uboot or kernel command lines or through bootargs, then I'll need help reconfiguring the kernel appropriately.
 
-Ruben
  • Ruben,

    You can set rotation through command line arguments to the kernel. I tried a quick experiment with PSP linux-02.01.03.11 which is the same version you mentioned. You can add the command line args: omapfb.rotate=1 omapfb.vrfb=y.  In this case omapfb.rotate=1 rotates the image 90 degrees.  You can find more information in the User Guide in the kernel release.

    Also if you are using the PSP release File system there is a demo included in /usr/tests that displays images. It displays both portrait and landscape, but I believe it is 565 format.

    Regards,

    Jeff Lance

  • Ruben,

    We need to be careful when we talk about rotation since the term is often used when really the issue is more like aspect ratio.

    What I mean here is that if you have an LCD with a natural resolution of 480x640 and you display an image without rotation then it will appear as a portrait display.

    Now, if you have an LCD with a natural resolution of 640x480 and you display an image without rotation then it will appear as a landscape display.

    The key point here is that the natural orientations of the two displays is different, hence the requirement for or not for rotation.

    What is the natural resolution (hence orientation) of your display? 640x480 or 480x640?

    Regarding the 24/18 bit connectivity to the LCD my personal recommendation is to leave the DSS configured as 24 bit but only connect the upper 6 bits of each color output channel to the upper 6 bits of the LCD display. What this means is that if you ever want to upgrade to a higher dynamic range display you will not need to make any software changes at all, and in fact would be able to support both 24 bit and 18 bit displays with exactly the same software.It also allows you to drive multiple displays of different color depths (but the same resolution/timing and content) such as an analog VGA output displaying the same as your LCD.

    Simply discarding the 2 LSBs from each color channel is perfectly fine.

    If you truly need to configure the output for 18 bit, then this can be achieved by setting a hardware register setting, which can be performed through your application using sysfs entries for memory accesses. I personally do not know how to do this through the kernel or through ioctls, sorry.

    BR,

    Steve

  • Thanks for the clarification. Yes, the aspect ratio of the LCD is what we need to change. The external LCD has a native resolution of 640x480.

    Also, thanks for the info on how to connect the data lines. The current version of the H/W connects the LCD to the lower 6 bits of the color outputs (requiring 18BPP mode), but based on your suggestion and the wiki article on this, I think the H/W will be changed to connect he upper 6bits instead and then just use 24BPP mode.

    -Ruben 

    Steve Clynes said:

    We need to be careful when we talk about rotation since the term is often used when really the issue is more like aspect ratio.

    What I mean here is that if you have an LCD with a natural resolution of 480x640 and you display an image without rotation then it will appear as a portrait display.

    Now, if you have an LCD with a natural resolution of 640x480 and you display an image without rotation then it will appear as a landscape display.

    The key point here is that the natural orientations of the two displays is different, hence the requirement for or not for rotation.

    What is the natural resolution (hence orientation) of your display? 640x480 or 480x640?

    Regarding the 24/18 bit connectivity to the LCD my personal recommendation is to leave the DSS configured as 24 bit but only connect the upper 6 bits of each color output channel to the upper 6 bits of the LCD display. What this means is that if you ever want to upgrade to a higher dynamic range display you will not need to make any software changes at all, and in fact would be able to support both 24 bit and 18 bit displays with exactly the same software.It also allows you to drive multiple displays of different color depths (but the same resolution/timing and content) such as an analog VGA output displaying the same as your LCD.

    Simply discarding the 2 LSBs from each color channel is perfectly fine.

    If you truly need to configure the output for 18 bit, then this can be achieved by setting a hardware register setting, which can be performed through your application using sysfs entries for memory accesses. I personally do not know how to do this through the kernel or through ioctls, sorry.

  • Ruben,

    Glad this helped.

    As a side note, connecting the display to the lower 6 bits of each color channel would be incorrect and not the correct way to use the 18 bit mode. For 18 bit mode the lower 18 bits of the 24 bit bus would need to be used, not the lower 6 bits of each color channel.

    I just wanted to clarify this just in case you need to use the 18 bit interface at any time.

    BR,

    Steve