Issues when connecting a Innolux-LCD to DISP0/LCD on a SabreSD board.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Issues when connecting a Innolux-LCD to DISP0/LCD on a SabreSD board.

2,683 Views
hansrönnbäck
Contributor I

We are trying to connect a Innolux LCD to the DISP0/LCD port on a SabreSD board, but when booting Android a few issues are present:

  • On "cold boot" only the blue channel is active on the port (no data is present on red and green channels).
    When booted and Android is running, if we put Android into sleep mode and come back, the colors work as they should.
  • The screen is offset to the "left". Using a oscilloscope we can see that RGB-data is zeroed for the last 56 clock cycles when DRDY/DE is high.
    Its as if the pixel data is unaligned with the DRDY/DE-signal (but not present when DRDY/DE is low).


Has anyone else seen the same behavior or have a clue on what can be wrong?

We have modified mxc_lcdif.c and defined a our Innolux-LCD with correct values (according to the display datasheet). We have also defined fb3 as our LCD in board-mx6q_sabresd.c

And we have verified that the timing is correct using a oscilloscope.

Labels (4)
0 Kudos
Reply
4 Replies

2,126 Views
alejandrolozan1
NXP Employee
NXP Employee

Hi,

Sorry for the delay. Would you be nice enough to share your SW changes, HW connections and datasheet of the LCD you are using?

Best Regards,

Alejandro

0 Kudos
Reply

2,126 Views
hansrönnbäck
Contributor I

SW changes are very few. In "mxc_lcdif.c" I've added a third entry to the lcdif_modedb[] array and called it "INNOLUX", like this;

static struct fb_videomode lcdif_modedb[] {

  ....

  {

  "INNOLUX", 80, 800, 480, 22727,

  26, 154, 20, 47, 20, 3,

  FB_SYNC_CLK_LAT_FALL,

  FB_VMODE_NONINTERLACED,

  0,},

};

Then I've replaced the fb0 entry in "board-mx6q_sabresd.c" with:

.disp_dev = "lcd",

.interface_pix_fmt = IPU_PIX_FMT_BGR24,

.mode_str = "INNOLUX",

.default_bpp = 32,

.int_clk = false,

.late_init = false

The third and last change is to the boot parameters to use the lcd/INNOLUX values instead of the default value.

The LCD datasheet can be found here: http://www.displayalliance.com/storage/1-spec-sheets/EJ070NA-03A.pdf

The timings might seem odd, but I've tried using the values from the "typical" column and it gives the same result. The values mentioned above are from measurements from another device that use the same LCD (for another platform), but were we dont have the source code changes. I've also tried different clock speeds and refresh-rates without any success (the view is always offset to the left about the same amount)

When we measure the output from the LCD pinns on DISP0/LCD connector we can see that the output is correct according to the LCD-datasheet. However the color channels goes quiet for the last ~56 pixels for each line and the resulting image on the LCD is offset but roughly the same amount of pixels (drawn somewhat outside the view to the left of the LCD). Almost every reboot causes all channels but the blue one to output nothing at all. Once Android is running and goes to sleep and comes back, the red and green channels "wake up". Changing the pixel format to _RGB24 causes all colors to "work" (directly from boot) without the sleep/wake.

As for how the LCD is connected to the DISP0/LCD-connector refer to the attached document.

Best Regards,
Hans Rönnbäck

0 Kudos
Reply

2,126 Views
alejandrolozan1
NXP Employee
NXP Employee

Ok,

Let me delve into this. I will work with one of my peers who is the expert.

I will get back to you as soon as possible.

Best Regards,

Alejandro

0 Kudos
Reply

2,126 Views
hansrönnbäck
Contributor I

Something else I did just notice is that the video output is not only offset to the left, but also seem to be stretched in the Y axis. Making the system ui "buttons" disappear below the bottom of the screen.

I've also edited the file "display_mode_fb0.conf" so that is only contains the resolution supported by our LCD (800x480)

0 Kudos
Reply