参考: http://www.cnitblog.com/zouzheng/articles/14578.html
linux2.6.14 已经包含了 lcd 的驱动程序,驱动程序位于 /linux-2.6.14/drivers/video/ 目录下,文件名是 s3c2410fb.c, 头文件是
s3c2410fb.h. 在这里可以不研究这个文件。只要对 lcd 进行以下初始化就可以了。
打开 /linux-2.6.14/arch/arm/mach-s3c2410/mach-smdk2410.c, 在这个文件里增加包含文件:
#include fb.h
然后增加 LCD 初始化的代码,
static struct s3c2410fb_mach_info hfrk_lcdcfg __initdata = {
.fixed_syncs= 0,
.regs={
.lcdcon1= S3C2410_LCDCON1_TFT16BPP | /
S3C2410_LCDCON1_TFT | /
S3C2410_LCDCON1_CLKVAL(6),
.lcdcon2= S3C2410_LCDCON2_VBPD(2) | /
S3C2410_LCDCON2_LINEVAL(319) | /
S3C2410_LCDCON2_VFPD(0) | /
S3C2410_LCDCON2_VSPW(4),
.lcdcon3= S3C2410_LCDCON3_HBPD(47) | /
S3C2410_LCDCON3_HOZVAL(239) | /
S3C2410_LCDCON3_HFPD(15),
.lcdcon4= S3C2410_LCDCON4_MVAL(1) | /
S3C2410_LCDCON4_HSPW(31),
.lcdcon5= S3C2410_LCDCON5_FRM565 | /
S3C2410_LCDCON5_INVVLINE | /
S3C2410_LCDCON5_HWSWP,
},
.lpcsel= 0x0,
.gpccon= 0xaaaaaaaa,
.gpccon_mask= 0xffffffff,
.gpcup= 0xffffffff,
.gpcup_mask= 0xffffffff,
.gpdcon= 0xaaaaaaaa,
.gpdcon_mask= 0x0,
.gpdup= 0xffffffff,
.gpdup_mask= 0xffffffff,
.width= 240,
.height= 320,
.xres= {240,240,240},
.yres= {320,320,320},
.bpp= {16,16,16},
};
static void __init sdmk2410_init(void)
{
set_s3c2410fb_info(&hfrk_lcdcfg);
}
在系统初始化中增加对 lcd 的初始化。
MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch
* to SMDK2410 */
/* Maintainer: Jonas Dietsche */
……
.map_io = smdk2410_map_io,
.init_irq = smdk2410_init_irq,
.init_machine = sdmk2410_init, /* 这一句是新增加的*/
.timer = &s3c24xx_timer,
MACHINE_END
重新保存这个文件,现在需要重新进入配置菜单,检查一下 LCD 的相关选项是否选上, [Device Drivers->Graphics support->] 这
个配置菜单下面是相关 LCD 的配置。回到根目录下,输入 make 编译内核,重现烧写内核到开发板,再次启动 linxu2.6.14 以后就可以在
lcd 上看到一个小的企鹅。我们的 lcd 驱动已经移植完成了。