歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> OK6410 LCD驅動移植

OK6410 LCD驅動移植

日期:2017/3/1 10:23:43   编辑:Linux編程

今天完成了 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