1.本次移植過程選擇 linux-2.6.28 lcd驅動為參考移植到 linux-2.6.34 ok6410 開發板上。
2.移植過程
主要以給內核增加驅動的思想,在/driver/video/ 下增加 samsung目錄,提取 2.6.28 中驅動相關源代碼,將源代碼復制到samsung 下。
修改 /driver/video 下的Makefile 文件,增加進入samsung目錄編譯的編譯條目
obj-$(CONFIG_FB_S3C) += samsung/
修改 /driver/video 下的Kconfig 文件,增加 /samsung/Kconfig 配置條目
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
/* 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[],增加
&s3c_device_lcd,
4.啟動時出現小企鵝
上一篇:LINUX 內核移植
下一篇:ok6410如何從sdram中啟動uboot 調試 這是一個猜想還沒有驗證
推薦閱讀最新更新時間:2025-06-17 08:16

