FL2440移植LINUX-3.4.2 (七)--驱动移植LCD(移植自己写的和移植内核自带的)

 移植;
1.编译
2.解决错误
    2.1头文件不对:去掉或更改
    2.2宏不对:改名,使用新宏
    2.3 函数没有了:改名使用新函数

(一):移植自己写的LCD驱动:

修改内核配置:

│   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> Graphics support                                                                                                               │  
  │         -> Support for frame buffer devices (FB [=y])

 │                               <M>   S3C2410 LCD framebuffer support

一定选上这个:

  │     -> Device Drivers                                                                                                                   │  
  │       -> Graphics support                                                                                                               │  
  │         -> Console display driver support

         <*> Framebuffer Console support 

make zImage

make modules

 

 使用最新的根文件系统

cd linux-3.4.2/drivers/video

 

拷贝这三个模块到网络文件系统下:

cfbcopyarea.ko  cfbfillrect.ko  cfbimgblt.ko

启动新系统:

/ # insmod cfbcopyarea.ko                                                                                                                             
/ # insmod cfbimgblt.ko                                                         
/ # insmod cfbfillrect.ko                                                       
/ # insmod lcd.ko 

 

lcd移植成功。

 

(二)下面把内核自带的Lcd驱动编译到内核里面:

修改内核mach-smdk2440.c文件:

 

 1 /* LCD driver info */
 2 
 3 static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {
 4 
 5     .lcdcon5    = S3C2410_LCDCON5_FRM565 |
 6               S3C2410_LCDCON5_INVVLINE |
 7               S3C2410_LCDCON5_INVVFRAME |
 8               S3C2410_LCDCON5_PWREN |
 9               S3C2410_LCDCON5_HWSWP,
10 
11     .type        = S3C2410_LCDCON1_TFT,
12 
13     .width        = 480,    /* by zhutao */
14     .height        = 272,    /* by zhutao */
15     
16  /*Set value from LCD datasheet, pixclock set refer to 
17 *document linux-3.0/Documentation/fb/framebuffer.txt */
18 #if 0
19     .pixclock    = 166667, // HCLK 60 MHz, divisor 10
20     .xres        = 240,
21     .yres        = 320,
22     .bpp        = 16,
23     .left_margin    = 20,
24     .right_margin    = 8,
25     .hsync_len    = 4,
26     .upper_margin    = 8,
27     .lower_margin    = 7,
28     .vsync_len    = 4,
29 #endif
30     /* by zhutao */
31     .pixclock    = 111111, /* Dclk-Period          =>1000000/Dclk=1000000/9*/
32     .xres        = 480,    /* Hsync Display Period =>Thd  480*/
33     .yres        = 272,    /* Vsync Display Period =>Tvd  272*/
34     .bpp        = 16,    /* 16 bpp*/
35     .left_margin    = 2,    /* Hsync Front-Porch    =>Thf 2*/
36     .right_margin    = 2,    /* Hsync Back-Porch     =>Thb 2*/
37     .hsync_len    = 40,        /* Hsync Pulse Width    =>Thp 41*/
38     .upper_margin    = 2,    /* Vsync Front-Porch      =>Tvf 2*/
39     .lower_margin    = 2,    /* Vsync Back-Porch      =>Tvb 2*/
40     .vsync_len    = 10,        /* Vsync Pulse Width      =>Tvp 10*/
41     /* by zhutao */
42 };
43 
44 static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {
45     .displays    = &smdk2440_lcd_cfg,
46     .num_displays    = 1,
47     .default_display = 0,
48 
49 #if 0
50     /* currently setup by downloader */
51     .gpccon        = 0xaa940659,
52     .gpccon_mask    = 0xffffffff,
53     .gpcup        = 0x0000ffff,
54     .gpcup_mask    = 0xffffffff,
55     .gpdcon        = 0xaa84aaa0,
56     .gpdcon_mask    = 0xffffffff,
57     .gpdup        = 0x0000faff,
58     .gpdup_mask    = 0xffffffff,
59 #endif
60 
61 //    .lpcsel        = ((0xCE6) & ~7) | 1<<4,    /* by zhutao */
62     .lpcsel        = ((0xCE6) & ~7) | 1<<1,    /* by zhutao */

 

修改内核配置:

│   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> Graphics support                                                                                                               │  
  │         -> Support for frame buffer devices (FB [=y])

 │                               <*>   S3C2410 LCD framebuffer support

 

 

 

如果选上这个将会在lcd上显示linux的LOGO:

   Location:                                                                                                                             │  
  │     -> Device Drivers                                                                                                                   │  
  │       -> Graphics support 

 │           [*] Bootup logo  --->

编译内核,启动,就有小企鹅了。

posted @ 2014-10-11 17:27  chrispauls  阅读(447)  评论(0编辑  收藏  举报