使用Linux3.2.81内核
4.3寸LCD
- 修改arch/arm/mach-s3c2440/mach-smdk2440.c
staticstruct s3c2410fb_display smdk2440_lcd_cfg __initdata = {
.lcdcon5 =S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVLINE |
S3C2410_LCDCON5_INVVFRAME |
S3C2410_LCDCON5_PWREN |
S3C2410_LCDCON5_HWSWP,
.type =S3C2410_LCDCON1_TFT,
//根据LCD数据手册
.width = 480,
.height = 272,
.pixclock = 101111,
.xres = 480,
.yres = 272,
.bpp = 16,
.left_margin = 2, /* for HFPD*/
.right_margin = 2, /* for HBPD*/
.hsync_len = 42, /*for HSPW*/
.upper_margin = 2, /* for VFPD*/
.lower_margin = 2, /* for VBPD*/
.vsync_len = 10, /*for VSPW*/
};
pixclock的计算:
DOTCLK = fframe × (X + HBP + HFP+HSPW) × (Y +VBP + VFP+VSPW) //fframe是屏幕刷新频率(本开发板60HZ)
staticstruct s3c2410fb_mach_info smdk2440_fb_info __initdata = {
.displays =&smdk2440_lcd_cfg,
.num_displays =1,
.default_display = 0,
//#if 0
/* currently setup bydownloader */
.gpccon = 0xaaaaaaaa,
.gpccon_mask = 0xffffffff,
.gpcup = 0xffffffff,
.gpcup_mask = 0xffffffff,
.gpdcon = 0xaaaaaaaa,
.gpdcon_mask = 0xffffffff,
.gpdup = 0xffffffff,
.gpdup_mask = 0xffffffff,
//#endif
//.lpcsel = ((0xCE6) & ~7) | 1<<4, //这是三星的LCD才会使用到的
};
staticvoid __init smdk2440_machine_init(void)
{
s3c24xx_fb_set_platdata(&smdk2440_fb_info);
s3c_i2c0_set_platdata(NULL);
//添加下面三行
writel((readl(S3C2410_GPBCON)& ~(3)) | 1, S3C2410_GPBCON);
writel((readl(S3C2410_GPBDAT)| 1), S3C2410_GPBDAT); //背光控制
writel((readl(S3C2410_GPGCON)| (3<<8)), S3C2410_GPGCON); //电源控制
platform_add_devices(smdk2440_devices,ARRAY_SIZE(smdk2440_devices));
smdk_machine_init();
}
并且添加#include <asm/io.h>头文件
- 执行make menuconfig
Device Driversà
Graphicssupportà
<*>Support for frame buffer devicesà
[*] Enable firmware EDID
-*- Enable Video Mode Handling Helpers
<*> S3C24X0 LCD framebuffer support
Consoledisplay driver supportà
<*>Framebuffer Console support
[*]Select compiled-in fonts
[*] VGA 8x8 font
[*] VGA 8x16 font
[*]Bootup logoà
[*] Standard 224-color Linux logo
3、编译重新下载
注意:屏幕没显示是因为没有初始化电源控制脚和背光控制脚。