基于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,