1.本次移植过程选择 linux-2.6.28 lcd驱动为参考移植到 linux-2.6.34 ok6410 开发板上。
2.移植过程
主要以给内核增加驱动的思想,在/driver/video/ 下增加 samsung目录,提取 2.6.28 中驱动相关源代码,将源代码复制到samsung 下。
修改 /driver/video 下的Makefile 文件,增加进入samsung目录编译的编译条目
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
obj-$(CONFIG_FB_S3C) += samsung/
修改 /driver/video 下的Kconfig 文件,增加 /samsung/Kconfig 配置条目
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
comment "Frame buffer hardware drivers" depends on FB config FB_S3C tristate "S3C Framebuffer Support" select FB_CFB_FILLRECT select FB_CFB_COPYAREA select FB_CFB_IMAGEBLIT depends on FB && (ARCH_S3C64XX || ARCH_S5P64XX || ARCH_S5PC1XX) default n ---help--- TBA choice depends on FB_S3C prompt "Select LCD Type" default FB_LIYUTAI_WXCAT35 config FB_WXCAT35 bool "WXCAT35 320x240" ---help--- TBA config FB_WXCAT43 bool "WXCAT43 480x272" ---help--- TBA config FB_AT056 bool "AT056 640x480" ---help--- TBA config FB_AT070 bool "AT070 800x480" ---help--- TBA config FB_AT080 bool "AT080 800x600" ---help--- TBA config FB_S3C_VGA800 bool "VGA800 800x600" ---help--- TBA config FB_S3C_XGA bool "XGA 1024x768" ---help--- TBA endchoice config FB_S3C_BPP tristate "Advanced options for S3C Framebuffer" depends on FB_S3C default n ---help--- TBA choice depends on FB_S3C_BPP prompt "Select BPP(Bits Per Pixel)" default FB_S3C_BPP_16 config FB_S3C_BPP_8 bool "8 BPP" ---help--- TBA config FB_S3C_BPP_16 bool "16 BPP" ---help--- TBA config FB_S3C_BPP_24 bool "24 BPP(XRGB888)" ---help--- TBA config FB_S3C_BPP_28 bool "28 BPP(ARGB4888)" ---help--- TBA config FB_S3C_BPP_32 bool "32 BPP(ARGB8888)" ---help--- TBA endchoice config FB_S3C_NUM int "Number of Framebuffers" depends on FB_S3C_BPP && (ARCH_S3C64XX || ARCH_S5P64XX || ARCH_S5PC1XX) default "1" ---help--- TBA config FB_S3C_VIRTUAL_SCREEN bool "Enable Virtual Screen" depends on FB_S3C_BPP default n ---help--- TBA config FB_S3C_DOUBLE_BUFFERING bool "Enable Double Buffering" depends on FB_S3C_BPP default n ---help--- TBA
3. 增加 platform_device
找到移植系统时增加的板文件 mach-ok6410.c ,增加 lcd device
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/* LCD Controller */ static struct resource s3c_lcd_resource[] = { [0] = { .start = S3C64XX_PA_LCD, .end = S3C64XX_PA_LCD + SZ_1M - 1, .flags = IORESOURCE_MEM, }, [1] = { .start = IRQ_LCD_VSYNC, .end = IRQ_LCD_SYSTEM, .flags = IORESOURCE_IRQ, } }; static u64 s3c_device_lcd_dmamask = 0xffffffffUL; struct platform_device s3c_device_lcd = { .name = "s3c-lcd", .id = -1, .num_resources = ARRAY_SIZE(s3c_lcd_resource), .resource = s3c_lcd_resource, .dev = { .dma_mask = &s3c_device_lcd_dmamask, .coherent_dma_mask = 0xffffffffUL } };
再修改 struct platform_device *ok6410_devices[],增加
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
&s3c_device_lcd,
4.启动时出现小企鹅