欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于mini2440的Linux-3.18.108下LCD驱动移植

程序员文章站 2022-06-05 17:29:31
...

基于mini2440的Linux-3.18.108下LCD驱动移植


其实原生的Linux-3.18.108本身就支持mini2440的LCD,只需修改一下配置信息就好了。

  1. 本人使用的是统宝的3.5寸LCD(T35),所以只需要根据Linux-2.6.32下T35的配置修改一下就好了。

  2. 进入Linux-3.18.108源码根目录,输入如下命令,编辑配置文件:

vi arch/arm/mach-s3c24xx/mach-mini2440.c

在开头出加入如下宏定义:

#define LCD_WIDTH 240
#define LCD_HEIGHT 320
#define LCD_PIXCLOCK 170000
#define LCD_RIGHT_MARGIN 25
#define LCD_LEFT_MARGIN 0
#define LCD_HSYNC_LEN 4
#define LCD_UPPER_MARGIN 1
#define LCD_LOWER_MARGIN 4
#define LCD_VSYNC_LEN 1
#define LCD_CON5 (S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_INVVDEN \
		      | S3C2410_LCDCON5_INVVFRAME |S3C2410_LCDCON5_INVVLINE \
			  |S3C2410_LCDCON5_INVVCLK 

找到static struct s3c2410fb_display mini2440_lcd_cfg[n],修改成如下,我们这里只需支持一种屏就好了:

static struct s3c2410fb_display mini2440_lcd_cfg[1] __initdata = {
		/* mini2440 + 3.5" TFT + touchscreen */
	{
		.width = LCD_WIDTH, 
        .xres = LCD_WIDTH, 
        .height = LCD_HEIGHT,
        .yres = LCD_HEIGHT,
        .left_margin    = LCD_LEFT_MARGIN + 1,
        .right_margin   = LCD_RIGHT_MARGIN + 1,
        .upper_margin   = LCD_UPPER_MARGIN + 1,
        .lower_margin   = LCD_LOWER_MARGIN + 1,
        .hsync_len      = LCD_HSYNC_LEN + 1,
        .vsync_len      = LCD_VSYNC_LEN + 1,
        .pixclock       = LCD_PIXCLOCK,
        .bpp            = 16,
        .type           = S3C2410_LCDCON1_TFT,
	
		.lcdcon5	= LCD_CON5
	},
};

如果我们需要加入其他类型屏的支持,我们只需加大上面的数组大小,并加入相应配置信息就可以啦!LCD驱动就移植完成了。。。是不是太简单了?嗯,好像还有花屏的BUG,后面再解决。。。

相关标签: 驱动