基于mini2440的Linux-3.18.108下LCD驱动移植
程序员文章站
2022-06-05 17:29:31
...
基于mini2440的Linux-3.18.108下LCD驱动移植
其实原生的Linux-3.18.108本身就支持mini2440的LCD,只需修改一下配置信息就好了。
-
本人使用的是统宝的3.5寸LCD(T35),所以只需要根据Linux-2.6.32下T35的配置修改一下就好了。
-
进入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,后面再解决。。。