ARM+LINUX移植攻略(十六)Linux驱动移植之LCD
努力成为linux kernel hacker的人李万鹏原创作品,为梦而战。转载请标明出处http://blog.csdn.net/woshixingaaa/archive/2011/05/21/6436681.aspx
LCD屏驱动移植
1.修改arch/arm/mach-s3c2440/mach-smdk2440.c如下程序:修改这里的时序,并把.lpcsel = ((0xCE6) & ~7) | 1<<4,修改为.lpcsel = 0,
static struct 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,.width= 240,.height= 320,.pixclock= 270000, /* HCLK 100 MHz, divisor 10 */.xres= 320,.yres= 240,.bpp= 16,.left_margin= 8,.right_margin= 5,.hsync_len= 63,.upper_margin= 15,.lower_margin= 3,.vsync_len= 5,};static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {.displays= &smdk2440_lcd_cfg,.num_displays= 1,.default_display = 0,#if 0/* currently setup by downloader */.gpccon= 0xaa940659,.gpccon_mask= 0xffffffff,.gpcup= 0x0000ffff,.gpcup_mask= 0xffffffff,.gpdcon= 0xaa84aaa0,.gpdcon_mask= 0xffffffff,.gpdup= 0x0000faff,.gpdup_mask= 0xffffffff,#endif//.lpcsel= ((0xCE6) & ~7) | 1<<4,.lpcsel = 0,};
这里主要介绍一下pixclock的计算方法:
首先看如下两个公式,一个是S3C2440手册里的,一个是drivers/video/s3c2410fb.c中的:
VCLK(Hz)=HCLK/(CLKVAL*2)
int clkdiv = s3c2410fb_calc_pixclk(fbi, var->pixclock) / 2;
(clkdiv+1)*2 = clk*pixclk/10^12;
clkdiv = clk*pixclk/10^12/2-1
这里的clk就是HCLK,然后计算得出pixclk与VCLK的关系
(HCLK/VCLK/2-1) = clk*pixclk/10^12/2-1
1/VCLK = pixclk/10^12
VCLK*pixclk = 10^12
添加开机logo,小企鹅:
Graphics support---> <*> Support for frame buffer devices <*> S3C2410 LCD framebuffer support ,multi support! Console display driver support---> <*> Framebuffer Console support Logo configuration--->
[*] Bootup logo
[*] Standard 224-color Linux logo
显示如下:
http://hi.csdn.net/attachment/201105/21/0_130596963441p5.gif
页:
[1]