linux-3.8.0 S5PV210 LCD显示屏驱动移植

前言

近期在学习linux驱动移植,记录下学习过程,供自己参考和有需要的网友参考。

一、材料准备

1)核心板:TINY210v2 的核心板

2)LCD屏:TINY210v2自带的7寸电容触摸屏(S70,驱动器是AT070TN92)

3)linux环境:VMware10 + Fedora15 + arm-linux-gcc-4.5.1

4)linux内核:linux-3.8.0

5)bootloader:u-boot


二、移植步骤

1、修改arch/arm/mach-s5pv210/mach-smdkv210.c  文件

第一步:修改结构体struct fb_videomode smdkv210_lcd_timing ( 211行左右),
命令: vim arch/arm/mach-s5pv210/mach-smdkv210.c, 修改后的代码如下:
 static struct fb_videomode smdkv210_lcd_timing = {
     .left_margin    = 25,
     .right_margin   = 209,
     .upper_margin   = 13,
     .lower_margin   = 21,
     .hsync_len  = 19,
     .vsync_len  = 9,
     .xres       = 800,
     .yres       = 480,
 };
设置LCD的各个参数。

第二步:修改 struct s3c_fb_platdatasmdkv210_lcd0_pdata (222行左右),
修改后的代码如下:
static struct s3c_fb_platdata smdkv210_lcd0_pdata __initdata = {
     .win[0]     = &smdkv210_fb_win0,
     .vtiming    = &smdkv210_lcd_timing,
     //.vidcon0  = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
     //.vidcon1  = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
     .vidcon0    = (5<<6) | (1<<4) | (1<<1) | (1<<0),
     .vidcon1    = (1<<6) | (1<<5),
     .setup_gpio = s5pv210_fb_gpio_setup_24bpp,
 };

设置使能,由LCD的手册(AT070TN92)得HSYNC和VSYNC极性须反转。


第三步:修改函数void smdkv210_lte480wv_set_power()  (165行左右)
修改后的代码如下:
static void smdkv210_lte480wv_set_power(struct plat_lcd_data *pd,
                     unsigned int power)
 {
     if (power) {
 #if !defined(CONFIG_BACKLIGHT_PWM)
         gpio_request_one(S5PV210_GPD0(1), GPIOF_OUT_INIT_HIGH, "GPD0");
         gpio_free(S5PV210_GPD0(1));
 #endif
 #if 0
         /* fire nRESET on power up */
         gpio_request_one(S5PV210_GPH0(6), GPIOF_OUT_INIT_HIGH, "GPH0");
 
         gpio_set_value(S5PV210_GPH0(6), 0);
         mdelay(10);
 
         gpio_set_value(S5PV210_GPH0(6), 1);
         mdelay(10);
 
         gpio_free(S5PV210_GPH0(6));
 #endif
     } else {
 #if !defined(CONFIG_BACKLIGHT_PWM)
         gpio_request_one(S5PV210_GPD0(1), GPIOF_OUT_INIT_LOW, "GPD0");
         gpio_free(S5PV210_GPD0(1));
 #endif
     }
 }

设置背光,我们使用的LCD-S70的背光由PWM1(GPD0_1控制),所以要修改。同时不需要复位设置,所以使用 #if 0 和#endif注释掉。

2、修改drivers/video/Makefile

命令:vim drivers/video/Makefile
第四步:确认包含 s3c-fb.o  (126行)
obj-$(CONFIG_FB_S3C)          += s3c-fb.o

3、配置内核

命令:make menuconfig

linux-3.8.0 S5PV210 LCD显示屏驱动移植_第1张图片

4、编译下载

开机后就会看到logo了,是linux的小企鹅。

5、显示:hello world!

在调试终端输入:echo hello world!>/dev/tty0

6、结果验证

附最后的图片一张:
linux-3.8.0 S5PV210 LCD显示屏驱动移植_第2张图片
(只照了半边)

三、参考资料

整个移植过程中我参考了:《嵌入式Linux学习笔记(基于S5PV210、TQ210).pdf》 (P146)
对它的原作者表示感谢!!!

你可能感兴趣的:(Linux驱动学习)