LCD not working on custom i.mx6q board

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

LCD not working on custom i.mx6q board

5,853 Views
jiaoka010
Contributor I

Hi, I'm a newbie in Linux kernel. Recently I try to port a working kernel (3.0.68) to mainline kernel (3.12), but somehow the LCD is not working. By not working I mean the LCD doesn't display meaningful output but the backlight is on and I can see some artifacts on the screen. The LCD model is PM070WL4. I modified the dtsi files from Sabre SD dtsi because from what I understand, they use the same connection, so I just modify the LCD parameters in my dtsi. Is this correct? my I attach the old board.h and board.c files along with the dts and dtsi files.

Original Attachment has been moved to: board-mx6q_smx6.h.zip

Original Attachment has been moved to: board-smx6.c.zip

Original Attachment has been moved to: imx6q-smx6.dts.zip

Original Attachment has been moved to: imx6q-smx6.dtsi.zip

Labels (3)
Tags (4)
0 Kudos
2 Replies

760 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

Hi Jiaoka,

Have you solved your problem?

Best Regards

Dan

0 Kudos

760 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello, Jiaoka,

   I don't have your schematic, So  I don't know which port your LCD is connected to , Let me assume you use one of the following ports:

(1)DISP0

----adding your LCD timing to "linux_top/drivers/video/mxc/mxc_lcdif.c" (static struct fb_videomode lcdif_modedb[] =)
If I add a LCD with 1440x900, I should add the timing :

static struct fb_videomode lcdif_modedb[] = {

{

/* 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,},

{/* According to the datasheet of your LCD, collect it's timing and fill it here */

/* VGA 1440x900 106.5M pixel clk output */

"1440x900", 60, 1440, 900, 9389,

232, 80,

25, 3,

152, 6,

0,

FB_VMODE_NONINTERLACED,

FB_MODE_IS_DETAILED,},

}

(2)Using LVDS port

Open  "linux_top/drivers/video/mxc/ldb.c", and replace original one with yours :

static struct fb_videomode ldb_modedb[] = {

{/* No.1 member is added by me and validated. */

  "LDB-WXGA", 60, 1280, 800, 13812,

  60, 60,

  20, 15,

  40, 3,

  0,

  FB_VMODE_NONINTERLACED,

  FB_MODE_IS_DETAILED,},

{

  "LDB-XGA", 60, 1024, 768, 15385,

  220, 40,

  21, 7,

  60, 10,

  0,

  FB_VMODE_NONINTERLACED,

  FB_MODE_IS_DETAILED,},

{

  "LDB-1080P60", 60, 1920, 1080, 7692,

  100, 40,

  30, 3,

  10, 2,

  0,

  FB_VMODE_NONINTERLACED,

  FB_MODE_IS_DETAILED,},

};

(3) Adjust BSP File

static struct ipuv3_fb_platform_data qcorein_fb_data[] = {

{/*fb0*/

.disp_dev = "ldb",

.interface_pix_fmt = IPU_PIX_FMT_RGB666,

.mode_str = "LDB-WXGA",

.default_bpp = 16,

.int_clk = false,

.late_init = false,

},

{

.disp_dev = "hdmi",

.interface_pix_fmt = IPU_PIX_FMT_RGB24,

.mode_str = "1920x1080M@60",

.default_bpp = 32,

.int_clk = false,

.late_init = false,

},

{

.disp_dev = "lcd",

.interface_pix_fmt = IPU_PIX_FMT_RGB24,

.mode_str = "1440x900",

.default_bpp = 32,

.int_clk = false,

},

};

(4)Distrabuting IPU display source

static struct fsl_mxc_hdmi_core_platform_data hdmi_core_data = {

.ipu_id = 1,

.disp_id = 0,

};

static struct fsl_mxc_lcd_platform_data lcdif_data = {

.ipu_id = 0,

.disp_id = 0,

.default_ifmt = IPU_PIX_FMT_RGB24,

};

static struct fsl_mxc_ldb_platform_data ldb_data = {

.ipu_id = 0,

.disp_id = 1,

.ext_ref = 1,

.mode = LDB_SEP1, /*Using LVDS1 Port*/

.sec_ipu_id = 0,

.sec_disp_id = 0,

};

(5)Setting u-boot environment (starting from NFS)

#setenv ipaddr 192.168.1.103

#setenv serverip 192.168.1.102

#setenv gateway 192.168.1.1

#setenv ethaddr 00:04:9f:00:ea:d3

#setenv nfsroot /opt/nfsroot

#setenv bootargs_base 'setenv bootargs console=ttymxc0,115200'

#setenv bootargs_android 'setenv bootargs ${bootargs} init=/init androidboot.console=ttymxc0 androidboot.hardware=freescale'

#setenv bootargs_nfs 'setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gateway}:${netmask}::eth0 off root=/dev/nfs nfsroot=${serverip}:${nfsroot}'

#setenv bootargs_disp 'setenv bootargs ${bootargs} video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 video=mxcfb2:dev=lcd,1440x900,bpp=32 fbmem=32M vmalloc=400M'

#setenv bootcmd_net 'run bootargs_base bootargs_android bootargs_nfs bootargs_disp;tftpboot ${loadaddr} uImage;bootm'

#run bootcmd_net

    I tested this porting on a customized board, It is OK ! Please try above steps !

Regards,

Weidong

0 Kudos