基于linux-2.6.33的液晶驱动之lcd

一、修改/arch/arm/mach-s3c2410/mach-smdk2410.c文件

1、添加头文件

#include <mach/fb.h>
#include <mach/regs-lcd.h>
2、添加初始化s3c2410的LCD控制器时所需的参数(copy from /arch/arm/mach-s3c2410/mach-qt2410.c,稍作修改)。

static struct s3c2410fb_display qt2410_lcd_cfg[] __initdata = {
        {
                /* Configuration for 640x480 SHARP LQ080V3DG01 */
                .lcdcon5 = S3C2410_LCDCON5_FRM565 |
                           S3C2410_LCDCON5_INVVLINE |
                           S3C2410_LCDCON5_INVVFRAME |
                           S3C2410_LCDCON5_PWREN |
                           S3C2410_LCDCON5_HWSWP,
                                                                                                              
                .type           = S3C2410_LCDCON1_TFT,
                .width          = 320,
                .height         = 240,
                                                                                                              
                .pixclock       = 100000, /* HCLK/4 */
                .xres           = 320,
                .yres           = 240,
                .bpp            = 16,
                .left_margin    = 13,
                .right_margin   = 8,
                .hsync_len      = 4,
                .upper_margin   = 2,
                .lower_margin   = 7,
                .vsync_len      = 4,
        },
 };
static struct s3c2410fb_mach_info qt2410_fb_info __initdata = {
        .displays       = qt2410_lcd_cfg,
        .num_displays   = ARRAY_SIZE(qt2410_lcd_cfg),
        .default_display = 0,
                                                                                                              
        .lpcsel         = ((0xCE6) & ~7) | 1<<4,
};
3、添加LCD控制器的寄存器参数设置函数
static void __init smdk2410_init(void)
{
        s3c24xx_fb_set_platdata(&qt2410_fb_info);//加入液晶的配置文件
        set_s3c2410ts_info(&MY2410_ts_cfg);//加入触摸屏的配置文件
        s3c_i2c0_set_platdata(NULL);
        platform_add_devices(smdk2410_devices, ARRAY_SIZE(smdk2410_devices));
        smdk_machine_init();
}
4、打开LCD的初始化。(我以前将它屏蔽了)
static struct platform_device *smdk2410_devices[] __initdata = {
    &s3c_device_usb,
    &s3c_device_lcd,
    &s3c_device_wdt,
    &s3c_device_i2c,
    &s3c_device_iis,
};
5、去除10分钟左右自动关闭显示的程序(实验时可以这么做,我猜应该是节能作用,并未深究。)。

copy from《2410 lcd(ltv350)驱动在2.6.14下的移植经历》:

“按seigpao大侠的做法,注释掉drivers/char/vt.c的blank_screen_t(unsigned long dummy)的函数内容,否则,lcd会在10分钟左右关掉显示。“
6、二、配置内核
Device Drivers  ---> 
    Graphics support  --->
        Display device support  --->
            <*> Display panel/monitor support
        <*> Support for frame buffer devices
        <*> S3C2410 LCD framebuffer support 
        Console display driver support  --->
            <*> Framebuffer Console support
            [*]   Framebuffer Console Rotation
            [*] Select compiled-in fonts
            [*]   VGA 8x8 font
            [*]   VGA 8x16 font
            [*]   Mini 4x6 font
            [*] Sparc console 8x16 font          
        [*] Bootup logo  --->
            --- Bootup logo
            [*]   Standard 224-color Linux logo  

7、开机画面的选择

首先把要开机Logo图片(png格式)放在linux2.6.30.5文件中的 drivers/video/logo中,终端选择进入drivers/video/logo目录,进行以下操作:

(假设开机图片名为linux.png)

# pngtopnm  linux.png  >  linuxlogo.pnm

# pnmquant 224 linuxlogo.pnm  >  linuxlogo224.pnm

# pnmtoplainpnm  linuxlogo224.pnm  >  linuxlogo224.ppm

# mv  linuxlogo224.ppm  logo_linux_clut224.ppm  //替换原来的启动文件

注意事项:备份原来的

原创文章 13 获赞 5 访问量 1万+

猜你喜欢

转载自blog.csdn.net/cgq081616/article/details/5369975