1 在arch/arm/mach-s3c2410/mach-smdk2410.c 中添加
//lcd
#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_STN8BPP | (0<<7) | S3C2410_LCDCON1_STN8 | S3C2410_LCDCON1_CLKVAL(6) | (1<<0),
.lcdcon2 = S3C2410_LCDCON2_VBPD(0) | S3C2410_LCDCON2_LINEVAL(239) | S3C2410_LCDCON2_VFPD(0) | S3C2410_LCDCON2_VSPW(0),
.lcdcon3 = S3C2410_LCDCON3_WDLY(0) | S3C2410_LCDCON3_HOZVAL(320*3/8-1) | S3C2410_LCDCON3_LINEBLANK(16),
.lcdcon4 = S3C2410_LCDCON4_MVAL(13) | S3C2410_LCDCON4_WLH(0),
.lcdcon5 = S3C2410_LCDCON5_BSWP | S3C2410_LCDCON5_PWREN ,
},
.lpcsel = 0x7,
.gpccon = 0xaaaaa9aa,
.gpccon_mask = 0xffffffff,
.gpcup = 0x0000ffef,
.gpcup_mask = 0xffffffff,
.gpdcon = 0xaaaaaaaa,
.gpdcon_mask = 0x0,
.gpdup = 0x0000ffff,
.gpdup_mask = 0xffffffff,
.width = 320,
.height = 240,
.xres = {320,320,320},
.yres = {240,240,240},
.bpp = {8,8,8},
};
static void __init smdk2410_lcd_init(void)
{
set_s3c2410fb_info(&s3c2410_lcd_info);
}
3 在文件最后MACHINE_END 之前添加
.init_machine = smdk2410_lcd_init ,
4. 很重要的一点,就是要修改/drivers/video/s3c2410fb.c文件
由于在2.6.14内核中默认是TFTlcd所以相关驱动程序都是配置TFT的,即使你在 mach-smdk2410.c文件中对相关寄存器赋值,最后在此文件中依旧会把寄存器的值改过来,所以需要在此文件中修改某些特定寄存器的值,另外最重要的是要对红,绿,蓝,三个查询颜色控制寄存器赋相应的值,否则由于颜色于图片颜色不对应,导致白屏或者黑屏。
5 编译内核 , 选中所装驱动
#make menuconfig
Device Drivers >
Graphics support --->
<*> support for frame buffer devices
<*> S3C2410 LCD framebuffer support
Logo configuration ---> // 开机画面的选择,可据个人需要更改
[*]Bootup logo
[*]Standard 224-color linux logo
6 开机画面的选择
首先把要开机Logo 图片(png 格式) 放在linux2.6.14 文件中的 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 // 替换原来的启动文件