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.

AM355x LCD Color Assignment to Support 16, 18 and 24-bit Modes

Other Parts Discussed in Thread: SN75LVDS83B

Reference the section 3.1.1 of the AM355x Silicon Errata 

In order to build a board that is configurable by software to support both RGB565 / RGB888 color modes I am trying to determine the best way to connect the LCD lines.  We are using a AM3558 and a SN75LVDS83B LCD to LVDS converter connected to one of  7", 10.4", and 15" displays.

The board is currently connected per the Errata for RGB888 mode, we have not built the board yet, but want to have the best chance of it working correctly.    

Several questions on this subject:

1. Would it be possible with a board electrically connected in RGB888 mode to configure the AM3558 pins LCD16 - 23 as GPIOs and set them to '0' (low level) this would effectively tie the LSB RGB lines to the SN75LVDS83B low, i.e. 16-bit color mode.  Then run the AM3558 in RGB565 mode. 

2. I realize in the above scenario per the RGB565 Errata the Red and Blue color lines are swapped,  I have been reading in the forum in a couple of places:  e2e.ti.com/.../437138

  and 

https://e2e.ti.com/support/arm/sitara_arm/f/791/p/264290/1053115#1053115

The above links are examples of code changes that swap RGB for BGR (i.e. swapping the Red and Blue bits),  da8xx-fb.c driver is mentioned in a couple of places.   Are there some known Linux code changes that will allow the Red and Blue LCD bits to be swapped?  If so, can this be used to swap the Red and Blue bits on both RGB565 and RGB888 modes?

I am trying to decide the most flexible way to connect the Red and Blue bits between the AM3558 and the SN75LVDS83B to support both RGB565 and RGB888 modes.   I'm assuming that some code is needed to swap RGB to BGR for one of the modes.  Since the native mode for the AM3558 is RGB565 (16-bit) color, it may be best to connect the LCD lines to the SN75LVDS83B to support RGB565 mode and tie the remaining LCD16 - 23 bit inputs to the SN75LVDS83B to a low level by GPIO output  as mentioned in 1. above.  And for RGB888 mode set the pin mux  for LCD16 - 23 bits to LCD (not GPIO) and use code to swap RGB to BGR.

Thanks,

Brian Weir

     

  • Hi Brian,

    Brian Weir said:
    1. Would it be possible with a board electrically connected in RGB888 mode to configure the AM3558 pins LCD16 - 23 as GPIOs and set them to '0' (low level) this would effectively tie the LSB RGB lines to the SN75LVDS83B low, i.e. 16-bit color mode.  Then run the AM3558 in RGB565 mode

    With this type of connection you will get red and blue swapped for 16-bit and 24-bit modes.

    Brian Weir said:
    2. I realize in the above scenario per the RGB565 Errata the Red and Blue color lines are swapped,  I have been reading in the forum in a couple of places:  e2e.ti.com/.../437138 and https://e2e.ti.com/support/arm/sitara_arm/f/791/p/264290/1053115#1053115

    Yes, colors can be swapped in fbdev mode, but that will be additional MPU overhead, as it has to be done in software.

    Here is a very good article on LCD connectivity: http://processors.wiki.ti.com/index.php/LCD_connectivity It's a bit old, but still actual for the AM335X devices. A thing you might consider is always running in RGB888 mode, and grounding the LSB color bits to achieve 18 and 16 bit modes. However this will probably have to be checked against the respective display requirements.

  • Thank you Biser for this and your other answers you have helped me with.

    A couple more LCD questions...

    1. Does running in native RGB888 mode vs. native RGB565 mode use more MPU overhead (I'm not talking about software color swapping)?

    2. I'm still considering connecting the AM3558 pins for LCD16-23 to the SN75LVDS83B and either set the pin mux to GPIO (and pull the LVDS input lines down) or as LCD outputs. Question: is it possible to pin mux some of the 8 pins to LCD output and and some as GPIOs? This way in native RGB988 mode I could set all 8 as GPIO for 16-bit, set 2 as LCD and 6 as GPIO for 18-bit, and set all 8 as LCD for 24-bit.

    Regards,
    Brian
  • 1. If there is any difference, it will be insignificant.
    2. Yes, it's possible to mix pinmuxing, but you must ensure the pins muxed to GPIO are disconnected from the LVDS transmitter when used as GPIO.
  • Biser,  Thanks again for your help!

    I believe you gave me the answers that I wanted to hear.

    Reference question 2, some clarity...  My intent is to permanently connect the 8 lines between the ARM and the LVDS chip.   When I run in 24-bit color mode all 8 lines will be configured as LCD color bits, but when I run in 16-bit or18-bit color modes the lines that need to be tied to ground (i.e a logical zero) on the LVDS chip will be set as GPIO's and set to a logical zero.  Does this sound correct?

    Regards,

    Brian Weir

  • Yes, sounds OK to me. You will have to set them before you start the LCD though, otherwise you could get some artefacts on the screen in the first moments.
  • Thanks again Biser, we will give it a try. Might take a while be fore we know the outcome (getting the board done and software written).

    Regards,
    Brian Weir