6410 LCD驅動移植

2021-05-24 02:44:39 字數 2087 閱讀 8344

移植工作主要有以下部分(僅僅對未作處理的部分做闡述):

1.在mach-smdk6410.c這個檔案中新增初始化的裝置

&s3c_device_fb,

會根據name 自動關聯執行哪個裝置的probe的探測函式

同時在plat-s3c64xx下面增加dev-fb.c 主要是用來填充platform_fb這個結構體

static struct resource s3cfb_resource = ,

[1] = ,

[2] = ,

};static u64 fb_dma_mask = 0xfffffffful;

struct platform_device s3c_device_fb =

};static struct s3c_platform_fb default_fb_data __initdata = ;

void __init s3cfb_set_platdata(struct s3c_platform_fb *pd)

在machine_init的時候執行s3cfb_set_platdata(null);就已經填充完畢

.clk_name = "lcd", 在填充時候就已經把對應lcd所需的clk指向其具體的clk(cpu.c中有相關的結構體的填充)

所有的時鐘都是在cpu.c中配置的!具體的時鐘實現是在對應平台下的clock.c配置

2)mach-s3c6400/include/mach/memory.h 中增加了

#define consistent_dma_size (sz_8m + sz_4m + sz_2m)

#define __virt_to_bus(x) __virt_to_phys(x)

#define __bus_to_virt(x) __phys_to_virt(x)

如果不定義這個的話預設為2m,會導致dma太小溢位

3)刪除mach-smdk6410.c中設定lcd, gpio_request會導致後面initial時候gpio-request失敗,(重複呼叫)

#if 0   

gpio_request(s3c64xx_gpn(5), "lcd power");

gpio_request(s3c64xx_gpf(13), "lcd power");

gpio_request(s3c64xx_gpf(15), "lcd power");

#endif

以下是刪除設定lcd的型別,以為在probe時候已經配置好了,各版本核心的架構不一樣,所以初始化的位置也就不相同,以後續高版本為準,

#if 0

tmp = __raw_readl(s3c64xx_spcon);

tmp &= ~s3c64xx_spcon_lcd_sel_mask;

tmp |= s3c64xx_spcon_lcd_sel_rgb;

__raw_writel(tmp, s3c64xx_spcon);

tmp = __raw_readl(s3c64xx_modem_mifpcon);

tmp &= ~mifpcon_lcd_bypass;

__raw_writel(tmp, s3c64xx_modem_mifpcon);

#endif 

4)plat-s3c24xx/include/plat/clock.h 增加了clock.h這個檔案,因為24xx和64xx在部分功能和介面是一樣的,函式可以互相呼叫

5)plat-s3c64xx/include/plat/pll.h   regs-gpio.h 定義了時鐘和pin腳相關的巨集以及函式

6)修改asm/fb.h

//static inline int fb_is_primary_device(struct fb_info *info)

//extern int fb_is_primary_device(struct fb_info *info);

fb_is_primary_device 是呼叫s3cfb.c中的函式而不是直接返回0

這一步至關重要,因為在後面framebuffer_register時候會有個判斷,就是是使用那乙個fb裝置作為當前裝置,

大概的移植需要這些步驟,但是有些函式和標頭檔案是直接在原檔案上更改的,標記做的不全,所以也就不詳細的寫了

OK6410 LCD驅動移植

今天完成了 ok6410 的lcd 驅動移植,那麼直接進入正題,我的操作環境是 主機 xp系統,vmware ubuntu 10.10 虛擬機器。開發板 ok6410,a板,256m 2g lcd 飛凌4.3 寸tft wxcat43,480 272 如果你是參考這篇博文來移植的話,我還是要強調一下...

OK6410 LCD驅動移植

今天完成了 ok6410 的lcd 驅動移植,那麼直接進入正題,我的操作環境是 主機 xp系統,vmware ubuntu 10.10 虛擬機器。開發板 ok6410,a板,256m 2g lcd 飛凌4.3 寸tft wxcat43,480 272 如果你是參考這篇博文來移植的話,我還是要強調一下...

LCD驅動程式移植

對lcd的操作可以像串列埠一樣,通過終端裝置層的封裝 dev tty 裝置 來輸出內容,也可以通過frame buffer dev fb 裝置 直接在視訊記憶體上 繪製 影象。tty 終端裝置 和frame buffer驅動程式的框架 下面根據每層的檔案講解一下上圖 1 顯示驅動程式 2 鍵盤驅動程...