Using MCIMX-LVDS1 10.1" display with the QSB

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

Using MCIMX-LVDS1 10.1" display with the QSB

4,201 Views
PaulMcGregor
Contributor I

I am trying to get the MCIMX-LVDS1 working with the QSB ultimately I would need to get it working with Android, but for now I would be happy to see it working with the Linux BSP.

 

I was able to get the MCIMX-LVDS1 to display the video however I have not got the touch interface working.  If anyone has please let me know.

Labels (1)
0 Kudos
23 Replies

2,328 Views
gianlucarenzi71
Contributor II

Hey people! I am in trouble trying to connect a custom LVDS display made by SAMSUNG to imx53qsb on the J9 (LVDS) connector (LCD Model: LT101NT02):

Here is my steps:

- Configuring a WSVGA resolution on mx53_loco.c as (watch the last entry of the array):

static struct fb_videomode video_modes[] = {
    {
     /* NTSC TV output */
     "TV-NTSC", 60, 720, 480, 74074,
     122, 15,
     18, 26,
     1, 1,
     FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
     FB_VMODE_INTERLACED,
     0,},
    {
     /* PAL TV output */
     "TV-PAL", 50, 720, 576, 74074,
     132, 11,
     22, 26,
     1, 1,
     FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
     FB_VMODE_INTERLACED | FB_VMODE_ODD_FLD_FIRST,
     0,},
    {
     /* 1080i50 TV output */
     "1080I50", 50, 1920, 1080, 13468,
     192, 527,
     20, 24,
     1, 1,
     FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
     FB_VMODE_INTERLACED | FB_VMODE_ODD_FLD_FIRST,
     0,},
    {
     /* 1080i60 TV output */
     "1080I60", 60, 1920, 1080, 13468,
     192, 87,
     20, 24,
     1, 1,
     FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
     FB_VMODE_INTERLACED | FB_VMODE_ODD_FLD_FIRST,
     0,},
    {
     /* 800x480 @ 57 Hz , pixel clk @ 27MHz */
     "CLAA-WVGA", 57, 800, 480, 37037, 40, 60, 10, 10, 20, 10,
     FB_SYNC_CLK_LAT_FALL,
     FB_VMODE_NONINTERLACED,
     0,},
    {
     /* 800x480 @ 60 Hz , pixel clk @ 32MHz */
     "SEIKO-WVGA", 60, 800, 480, 29850, 89, 164, 23, 10, 10, 10,
     FB_SYNC_CLK_LAT_FALL,
     FB_VMODE_NONINTERLACED,
     0,},
    {
     "XGA", 60, 1024, 768, 15385,
     220, 40,
     21, 7,
     60, 10,
     0,
     FB_VMODE_NONINTERLACED,
     0,},
    {
     /* 720p30 TV output */
     "720P30", 30, 1280, 720, 13468,
     260, 1759,
     25, 4,
     1, 1,
     FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
     FB_VMODE_NONINTERLACED,
     0,},
    {
     "720P60", 60, 1280, 720, 13468,
     260, 109,
     25, 4,
     1, 1,
     FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
     FB_VMODE_NONINTERLACED,
     0,},
    {
    /* VGA 1280x1024 108M pixel clk output */
    "SXGA", 60, 1280, 1024, 9259,
    48, 248,
    1, 38,
    112, 3,
    0,
    FB_VMODE_NONINTERLACED,
    0,},
    {
    /* 1600x1200 @ 60 Hz 162M pixel clk*/
    "UXGA", 60, 1600, 1200, 6172,
    304, 64,
    1, 46,
    192, 3,
    FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
    FB_VMODE_NONINTERLACED,
    0,},
    {
     /* 1080p24 TV output */
     "1080P24", 24, 1920, 1080, 13468,
     192, 637,
     38, 6,
     1, 1,
     FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
     FB_VMODE_NONINTERLACED,
     0,},
    {
     /* 1080p25 TV output */
     "1080P25", 25, 1920, 1080, 13468,
     192, 527,
     38, 6,
     1, 1,
     FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
     FB_VMODE_NONINTERLACED,
     0,},
    {
     /* 1080p30 TV output */
     "1080P30", 30, 1920, 1080, 13468,
     192, 87,
     38, 6,
     1, 1,
     FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
     FB_VMODE_NONINTERLACED,
     0,},
    {
     "1080P60", 60, 1920, 1080, 7692,
     100, 40,
     30, 3,
     10, 2,
     0,
     FB_VMODE_NONINTERLACED,
     0,},
    {
        /* 1024x600 WSVGA @ 60 Hz, running @ 54.2Mhz pixclock
         * Vertical Total: BackPorch + VSYNC + DATA + FrontPorch =
         * 6 + 30 + 600 + 37 ----> 673
         * Horizontal Total: BackPorch + HSYNC + DATA + FrontPorch =
         * 125 + 126 + 1024 + 125 ----> 1400 */
     .name = "WSVGA",
     .refresh = 60,
     .xres = 1024,
     .yres = 600,
     .pixclock = 18450,
     .left_margin = 125,
     .right_margin = 125,
     .upper_margin = 6,
     .lower_margin = 37,
     .hsync_len = 126,
     .vsync_len = 30,
     .sync = 0,
     .vmode = FB_VMODE_NONINTERLACED,
     .flag = 0,
    },
};

- Change the fb_data array as:

static struct mxc_fb_platform_data fb_data[] = {
#if 0
    {
     .interface_pix_fmt = IPU_PIX_FMT_RGB565,
     .mode_str = "CLAA-WVGA",
     .mode = video_modes,
     .num_modes = ARRAY_SIZE(video_modes),
     },
    {
     .interface_pix_fmt = IPU_PIX_FMT_BGR24,
     .mode_str = "XGA",
     .mode = video_modes,
     .num_modes = ARRAY_SIZE(video_modes),
     },
#endif
    {
      .interface_pix_fmt = IPU_PIX_FMT_RGB666,
      .mode_str = "WSVGA",
      .mode = video_modes,
      .num_modes = ARRAY_SIZE(video_modes),
    },
    {
      .interface_pix_fmt = IPU_PIX_FMT_LVDS666,
      .mode_str = "WSVGA",
      .mode = video_modes,
      .num_modes = ARRAY_SIZE(video_modes),
    },
};

So both resolutions are IDENTICAL (I suppose), (note the RGB666 and LVDS666 on the interface_pix_format field...). then recompile the kernel with:

./ltib -p kernel -m scbuild

then changed the cmdline options in the bootloader as:

console=ttymxc0,115200 video=mxcdi0fb:LVDS666,WSVGA di0_primary video=mxcdi1fb:RGB666,WSVGA video=mxcdi2fb:RGB666,WSVGA root=/dev/nfs ip=192.168.143.173 nfsroot=192.168.143.6:/tftpboot/nfs-IMX53
,v3,tcp noinitrd

So the connector J9 (LVDS0 == DI0?) should have valid timings for a such display

Plug the cable on the J9 connector using 3 channels LVDS plus PWM for contrast and LCD_BLT_EN Lines connected tothe LVDS Panel pins named: PWM and LCD_BL.

Powering the backlight VLED unit with the correct Voltage using a Voltage Generator with 2A of MAX CURRENT.

But I do not see anything on the screen. Nothing.

Now here is the logs of fbset:

root@freescale ~$ fbset -fb /dev/fb0

mode "1024x600-58"
        # D: 54.201 MHz, H: 38.715 kHz, V: 57.526 Hz
        geometry 1024 600 1024 1800 16
        timings 18450 125 125 6 37 126 30
        accel false
        rgba 5/11,6/5,5/0,0/0
endmode

root@freescale ~$ fbset -fb /dev/fb1

mode "1024x600-58"
        # D: 54.201 MHz, H: 38.715 kHz, V: 57.526 Hz
        geometry 1024 600 1024 1800 16
        timings 18450 125 125 6 37 126 30
        accel false
        rgba 5/11,6/5,5/0,0/0
endmode

root@freescale ~$ fbset -fb /dev/fb2

mode "240x320-60"
        # D: 4.608 MHz, H: 19.200 kHz, V: 60.000 Hz
        geometry 240 320 240 960 16
        timings 217013 0 0 0 0 0 0
        accel false
        rgba 5/11,6/5,5/0,0/0
endmode

What I am doing wrong?

Best regards,

0 Kudos

2,328 Views
TugrulGuclu
Contributor I

Hi

I verified it also with Freescale support.

Yes it's multi touch and yes LVDS interface cable is shipped with touch screen.

Thanks for your support.

0 Kudos

2,328 Views
Lyven
Contributor II

I think it is mentor embedded inflexion ui that does not support the multitouch...

0 Kudos

2,328 Views
AlanLevy
Contributor I

The 10.1" display (aka Hannstar) has a capacitative touchscreen and does support Multi-touch. You will need to include a driver for the controller (EGalax) in the BSP, see my earlier post on this thread.

0 Kudos

2,328 Views
TugrulGuclu
Contributor I

Has anyone tried MCIMX-LVDS1 10.1'' if it supports multi touch ? HW Reference manual of QSB does not mention capacitive  touch and only mentions about resisitive touch (single touch interface).

BR

Tugrul

0 Kudos

2,327 Views
Lyven
Contributor II

Update: when i type in $cat /dev/input/event1 and i touch the screen I see my console responding. So the touchscreen is working and the driver also. How do I couple the screen to my inflexion ui?

kind regards

Lieven

Lieven said:

Hello

I also have this problem. Upon reading through this topic I can not figure out what I have to do. I'm running the inflexion ui demo on an imx53 start board with the LVDS 10.1 touchscreen. Everything is running ok, only the touch interface is not working. I included the drivers while building my ltib, but I don't know what to do next to solve this. I'm a newbie on this issue so i hope someone is so kind to guid me through the process.

thanks in advance

Lieven

0 Kudos

2,329 Views
Lyven
Contributor II

Hello

I also have this problem. Upon reading through this topic I can not figure out what I have to do. I'm running the inflexion ui demo on an imx53 start board with the LVDS 10.1 touchscreen. Everything is running ok, only the touch interface is not working. I included the drivers while building my ltib, but I don't know what to do next to solve this. I'm a newbie on this issue so i hope someone is so kind to guid me through the process.

thanks in advance

Lieven

0 Kudos

2,329 Views
xiachunquan
Contributor I


can i.mx53 support 24-bit lvds ? 746-QQ20111119093756.png

Alan Levy said:

LVDS only supports 18-bit colour (RGB666).
0 Kudos

2,329 Views
marshachang
NXP Employee
NXP Employee
There is also another post here that may help:
 

http://www.imxdev.org/wiki/index.php?title=IMX51_Ubuntu_USB_TS



Alan Levy said:

See my previous answer (above) and read:

 

http://www.imxdev.org/wiki/index.php?title=IMX51_Ubuntu_TS_lucid

 

0 Kudos

2,329 Views
JackyHuang
Contributor III
thank you for your command, i have been distressed about the lvds output before

Paul McGregor said:

I have been able to get the touch screen working in Android using Adeneo's BSP

1: Edit the file i.MX53-QSB-Android-Gingerbread-Release4.0/src/kernel_imx/arch/arm/configs/imx5_android_defconfig change "#CONFIG_TOUCHSCREEN_EGALAX is not set" to "CONFIG_TOUCHSCREEN_EGALAX=y" 

2: Recompile the kernel making sure to remove i.MX53-QSB-Android-Gingerbread-Release4.0/src/kernel/.config

3: Burn the new image

4: using uboot # setenv bootargs_android 'setenv bootargs ${bootargs} init=/init androidboot.console=ttymxc0 video=mxcdi0fb:RGB666,XGA di0_primary ldb=di0'

5: # saveenv

6: reboot

0 Kudos

2,329 Views
AlanLevy
Contributor I
LVDS only supports 18-bit colour (RGB666).
0 Kudos

2,329 Views
YuriRapoport
Contributor I

Hi,

 

Do you know if this display supports true color (rgb24) mode?

 

Thanks,

Yuri

0 Kudos

2,329 Views
AlanLevy
Contributor I
You need the egalax driver - which is included by default in the MX51 BSP.
0 Kudos

2,329 Views
ChenYosfe
Contributor I

Hi Alan,

 

Thanks for the continuous help on this matter.

 

Let me tyy and explain a little bit on what I am trying to do. 

We develop a QT application that should run on a bare bone Linux system, with no X environment, using the 10.1'' LVDS screen. Our QT build is configured to use tslib. Is there a way to use the touch screen without having to install and use Xserver and X environment ?

 

Thanks,

Chen

0 Kudos

2,329 Views
AlanLevy
Contributor I

See my previous answer (above) and read:

 

http://www.imxdev.org/wiki/index.php?title=IMX51_Ubuntu_TS_lucid

0 Kudos

2,329 Views
ChenYosfe
Contributor I

Hi,

 

I understand. However, I didn't find any use of this configuration value within the kernel source that included in L2.6.35_11.01.00_ER_source.tar.gz. Do I have to get the driver from another source ?

 

Thanks,

Chen 

0 Kudos

2,329 Views
SrikanthKotagir
Contributor I

@chen

   I modified the configuration file directly. I did not use the configurator.

0 Kudos

2,329 Views
ChenYosfe
Contributor I

Hi,

 

I am trying to configure the touch screen with 2.6.35 Linux kernel, but it seems that CONFIG_TOUCHSCREEN_EGALAX is not one of the option when I looked in Linux menu config (Device Drivers --> Input device Support -> touchscreen support. 

 

Any idea ?

 

Thanks,

Chen

0 Kudos

2,329 Views
SrikanthKotagir
Contributor I

Yep. It worked for me after following your instructions. Thanks!!!

0 Kudos

2,329 Views
PaulMcGregor
Contributor I

I have been able to get the touch screen working in Android using Adeneo's BSP

1: Edit the file i.MX53-QSB-Android-Gingerbread-Release4.0/src/kernel_imx/arch/arm/configs/imx5_android_defconfig change "#CONFIG_TOUCHSCREEN_EGALAX is not set" to "CONFIG_TOUCHSCREEN_EGALAX=y" 

2: Recompile the kernel making sure to remove i.MX53-QSB-Android-Gingerbread-Release4.0/src/kernel/.config

3: Burn the new image

4: using uboot # setenv bootargs_android 'setenv bootargs ${bootargs} init=/init androidboot.console=ttymxc0 video=mxcdi0fb:RGB666,XGA di0_primary ldb=di0'

5: # saveenv

6: reboot

0 Kudos