基于S3C2410平台的LCD for Linux 2.6 驱动移植

来源:互联网 发布:大淘客cms怎么样 编辑:程序博客网 时间:2024/05/16 06:40
基于S3C2410平台的LCD for Linux 2.6 驱动移植
Ø        参考资料
S3C2410X User Manual
作用:参考LCD各寄存器的地址、置位等信息
LCD技术手册
作用:参看LCD的技术指标
(由于本人使用的是Uptech 2410-s开发板,所以使用的液晶屏是Sharp LQ080V3DG01)
Ø        初始化LCD
由于Linux 2.6.14内核已经包含了该驱动,所以只要在平台初始化文件中对LCD进行设置、初始化即可。
#vi $KERNEL/arch/arm/mach-s3c2410/mach-smdk2410.c
添加头文件:
#include <asm/arch/regs-lcd.h>
#include <asm/arch-s3c2410/fb.h>
添加LCD初始化代码:
static struct s3c2410fb_mach_info s3c2410_lcd_info __initdata = {
              .fixed_syncs = 0,
              .regs = {
              //对于寄存器的设置是关键,可参考S3C2410X的手册
              //和LCD技术手册中对于LCD技术指标的描述来进行设置。
              //其中,寄存器值的宏定义在regs-lcd.h文件中。
                     .lcdcon1 = S3C2410_LCDCON1_TFT16BPP
| S3C2410_LCDCON1_TFT | S3C2410_LCDCON1_CLKVAL(1),
                     .lcdcon2 = S3C2410_LCDCON2_VBPD(32)
| S3C2410_LCDCON2_VFPD(9) | S3C2410_LCDCON2_VSPW(1),
                     .lcdcon3 = S3C2410_LCDCON3_HBPD(47)
| S3C2410_LCDCON3_HFPD(15),
                     .lcdcon4 = S3C2410_LCDCON4_MVAL(13)
| S3C2410_LCDCON4_HSPW(95),
                     .lcdcon5 = S3C2410_LCDCON5_FRM565
| S3C2410_LCDCON5_INVVLINE | S3C2410_LCDCON5_HWSWP
| S3C2410_LCDCON5_PWREN | S3C2410_LCDCON5_INVVFRAME,
              },
              .lpcsel = 0x0,
              .gpccon = 0xaaaaaaaa,
              .gpccon_mask = 0xffffffff,
              .gpcup = 0xffffffff,
              .gpcup_mask = 0xffffffff,
              .gpdcon = 0xaaaaaaaa,
              .gpdcon_mask = 0x0,
              .gpdup = 0xffffffff,
              .gpdup_mask = 0xffffffff,
              .width = 640,
              .height = 480,
              .xres = {640,640,640},
              .yres = {480,480,480},
              .bpp = {16,16,16},
};
static void __init smdk2410_lcd_init(void)
{
              set_s3c2410fb_info(&s3c2410_lcd_info);
}
最后在MACHINE_START与MACHINE_END中添加如下代码:
              .init_machine = smdk2410_lcd_init,