天天看點

Freescale imx6的android lvds螢幕驅動調試

一、概述

     1、飛思卡爾 imx6的顯示屏驅動架構:

Freescale imx6的android lvds螢幕驅動調試

    2

Freescale imx6的android lvds螢幕驅動調試

、目标:

    因imx6開發闆本身已提供LVDS接口,目标螢幕是LG的LA070WV6,其為RGB接口,imx6和LG屏之間用TW8836晶片來轉接,LG屏的主要參數為:

分辨率:800*480

色彩:32位

時鐘頻率:33.26MHz

Freescale imx6的android lvds螢幕驅動調試

二移植過程

1、首先把螢幕的接口接到開發闆的lvds接口上。開發闆提供的lvds接口如下:

Freescale imx6的android lvds螢幕驅動調試
Freescale imx6的android lvds螢幕驅動調試

如上圖所示,lvds共有20個pin,其中有4組資料線,1組時鐘線,其他還有背光控制、電源、地等接口。

TW8836晶片和LG屏的接口定義我這裡也不做介紹。

2、修改Android的核心源碼。

1)找到drivers/video/mxc/ldb.c的fb_videomode數組變量,它定義了螢幕的相關參數,fb_videomode結構體的定義在include/linux/fb.h中: 

[cpp] view plain copy

1.  struct fb_videomode {  

2.     const char *name;      

3.      u32 refresh;           

4.     u32 xres;            //行像素  

5.      u32 yres;            //列像素  

6.     u32 pixclock;        //時鐘頻率,機關ps,14430  

7.      u32 left_margin;     // HBPD(horizontal back porch):80  

8.     u32 right_margin;    // HFPD(horizontal front porth):48  

9.      u32 upper_margin;    // VBPD(vertical back porch),15  

10.    u32 lower_margin;    // VFBD(vertical front porch),2  

11.     u32 hsync_len;       // HSPW(horizontal sync pulse width):32  

12.    u32 vsync_len;       // VSPW(vertical sync pulse width):47  

13.     u32 sync;  

14.    u32 vmode;  

15.     u32 flag;  

16.};  

2)修改drivers/video/mxc/ldb.c的fb_videomode數組變量,使它的參數适應LA070WV6的螢幕參數。

[cpp] view plain copy

17. static struct fb_videomode ldb_modedb[] = {

18. {

19.     .name       ="LDB-XGA",

20.     .refresh    =60,

21.     .xres       =800,

22.     .yres       =480,

23.      .pixclock   =30066,

24.      .left_margin    =28,

25.      .right_margin   =100,

26.      .upper_margin   =13,

27.      .lower_margin   =30,

28.      .hsync_len  =128,

29.      .vsync_len  =2,

30.     .sync       =0,

31.     .vmode      =FB_VMODE_NONINTERLACED,

32.     .flag       =FB_MODE_IS_DETAILED,

33. }

34. }; 

名稱:LDB-XGA

重新整理頻率:60

分辨率:800*480

時鐘:10^12/33260000 = 30066

sync:0

vmode:FB_VMODE_NONINTERLACED

flag:FB_MODE_IS_DETAILED

3)設定cmdline,重新編譯kernel,生成boot.img,燒錄到開發闆中:

[html] view plain copy

1.  cmdline console=ttymxc3,115200 init=/init video=mxcfb0:dev=ldb,LDB-XGA, if=RGB24,bpp=32 video=mxcfb1:dev=ldb,LDB-XGA, if=RGB24,bpp=32 video=mxcfb2:off fbmem=10M  vmalloc=400Mandroidboot.console=ttymxc3

其中video = mxcfb0:dev=ldb,LDB-XGA表示選用fb0的ldb驅動

if=RGB24,bpp=32表示32位色彩

繼續閱讀