OK6410 LCD驱动移植


今天完成了 OK6410 的LCD 驱动移植,那么直接进入正题,我的操作环境是:

主机: XP系统, VMware Ubuntu 10.10  虚拟机。   开发板:OK6410,A板,256M+2G 。   LCD :飞凌4.3 寸TFT ,WXCAT43, 480*272

Uboot: 飞凌体统的Uboot。        移植内核版本:Linux1.6.36.2。        参考内核: 飞凌提供的 Linux2.6.36.2

如果你是参考这篇博文来移植的话,我还是要强调一下上面的 开发板环境 和 移植内核的版本,这很重要,因为不同的硬件有不同的要求和

说明,而不同的内核版本之间又有着不同的差异性。 当然这些也并不是绝对的。其他的环境也可以参考这篇博文。

我先来讲讲对于飞凌的OK6410 开发板 LCD 驱动移植的操作步骤,再来分析这些操作步骤和网上 LCD 驱动移植在方法和效果不同的地方。

LCD 驱动移植所依赖的文件有:

arch/arm/mach-s3c64xx/mach-smdk6410.c                    drivers/videl/samsung/s3cfb.c

drivers/videl/samsung/s3cfb_spi.c                                     drivers/videl/samsung/WXCAT43.c

arch/arm/mach-s3c64xx/include/mach/regs-lcd.h

1、 修改 arch/arm/mach-s3c64xx/mach-smdk6410.c

注释掉 smdk6410_machine_init(void) 中的

  1. //  gpio_request(S3C64XX_GPN(5), "LCD power");  // cancel by acanoe   
  2. //  gpio_request(S3C64XX_GPF(13), "LCD power");   
  3. //  gpio_request(S3C64XX_GPF(15), "LCD power");  

在 sruct map_desc smdk6410_iodesc[]  中添加 LCD support

  1. static struct map_desc smdk6410_iodesc[] = {  
  2. /**************** add by acanoe *****************************/  
  3.     {  
  4.         /* LCD support */  
  5.         .virtual    = (unsigned long)S3C_VA_LCD,  
  6.         .pfn        = __phys_to_pfn(S3C_PA_FB),  
  7.         .length     = SZ_16K,  
  8.         .type       = MT_DEVICE,  
  9.     }  
  10. /**************** add by acanoe *****************************/  
  11. };  

操作说明:这里不用奇怪为什么仅仅这有这么少的修改, 因为飞凌的一贯作风就好似宁可少改,套用,仿照。 也不愿去建立自己的目录项。

就像它将 smdk6410 作为它的开发板目录,而不去创建一个OK6410 的开发板基准目录一样。 在这里飞凌依旧沿用了他的这种作风,你可

以查看一下 在smdk6410.c 中是否已经有过 lcd 的一些结构体 和函数体, 飞凌就是利用了这些已经存在了的,而没有自己建立,学习飞凌

的开发板,你要学会适应这些。呵呵!

2、添加 drivers/video/samsung 目录。

我从linux.org 下载的基础内核没有 drivers/video/samsung 这个目录,所以需要添加。你可以 copy 飞凌2.6.36 源码下的 samsung 到你的

内核目录,这个目录下的文件主要是 Makefile, Kconfig ,s3cfb.c s3cfb_spi.c   WXCAT43.c  这些就是你的LCD 驱动依赖文件。

  • 1
  • 2
  • 3
  • 下一页

相关内容