1. 按笔者前篇日志(http://blog.csdn.net/Matrix_Designer/archive/2010/10/04/5921638.aspx )编译安装内核
2. gedit arch/arm/mach-s3c2410/mach-smdk2410.c &
添加以下内容:
#include <asm/arch/regs-lcd.h>
#include <asm/arch-s3c2410/fb.h>
static struct s3c2410fb_mach_info s3c2410_lcd_info __initdata = {
.fixed_syncs = 0,
.type = S3C2410_LCDCON1_TFT,
.regs = {
.lcdcon1 = S3C2410_LCDCON1_TFT16BPP |
S3C2410_LCDCON1_TFT |
// S3C2410_LCDCON1_ENVID |
S3C2410_LCDCON1_CLKVAL(6),
.lcdcon2 = S3C2410_LCDCON2_VBPD(0) |
S3C2410_LCDCON2_LINEVAL(239) |
S3C2410_LCDCON2_VFPD(10) |
S3C2410_LCDCON2_VSPW(1),
.lcdcon3 = S3C2410_LCDCON3_HBPD(6) |
S3C2410_LCDCON3_HOZVAL(319) |
S3C2410_LCDCON3_HFPD(15),
.lcdcon4 = S3C2410_LCDCON4_MVAL(13) |
S3C2410_LCDCON4_HSPW(28),
.lcdcon5 = S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVLINE |
// S3C2410_LCDCON5_INVVCLK |
S3C2410_LCDCON5_INVVFRAME |
// S3C2410_LCDCON5_INVLEND|
S3C2410_LCDCON5_PWREN |
S3C2410_LCDCON5_HWSWP,
},
.lpcsel = 0,// ((0xCE6) & ~7) | 1<<4,
.gpccon= 0xaaaaaaaa,
.gpccon_mask= 0xffffffff,
.gpcup= 0xffffffff,
.gpcup_mask= 0xffffffff,
.gpdcon= 0xaaaaaaaa,
.gpdup = 0xFFFFFFFF,
.gpdup_mask= 0xffffffff,
.width = 320,
.height = 240,
.yres = {
.min = 240,
.max = 240,
.defval = 240,
},
.xres = {
.min = 320,
.max = 320,
.defval = 320,
},
.bpp = {
.min = 16,
.max = 16,
.defval = 16,
},
};
static void __init smdk2410_lcd_init(void)
{
s3c24xx_fb_set_platdata(&s3c2410_lcd_info);
}
最后在MACHINE_START与MACHINE_END中修改init_machine,代码如下:
.init_machine = smdk2410_lcd_init,
3. make menuconfig
选中Device Driver->Graphics support->S3C2410 LCD framebuffer support
选中Device Driver->Graphics support->Logo configuration->Bootup logo
4. make
编译成功的内核就加上了LCD驱动。注意:
.type = S3C2410_LCDCON1_TFT,
这一句是重点,2.6.14的内核没这句可以执行,但是2.6.20的内核必须加上这一句。
SkyEye必须以超用户权限运行,启动后会出现以下错误信息:
ERROR: s3c2410x_io_write_word(0x4d000060) = 0x00000000
ERROR: s3c2410x_io_write_word(0x4d000050) = 0x00000000
In skyeye_find_lcd_dma, probably not finished porting.
这个不妨碍使用,由最后一句可见,SkyEye 1.3.1目前对s3c2410的LCD的移植工作还没有彻底完成,可能还会出现问题。