歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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 驅動依賴文件。

Copyright © Linux教程網 All Rights Reserved