drivers/video/makefile中的約束條件,比如我的makefile是obj-$(config_fb_s3c) += s3c-fb.o
核心根目錄下的.config是否配置了config_fb_s3c這個巨集,比如我的.config是
接下來開始我們的**跟讀。
以下是檢視.config得到的資訊,關於lcd一些巨集的定義
config_fb_s5p_lms501kf03 is not set
config_fb_s3c is not set
config_fb_s5p_trace_underrun is not set
config_fb_s5p_virtual is not set
config_fb_s5p_lcd_init=y
config_fb_s5p=y
config_arch_exynos4=y
config_fb_s5p_default_window=0
config_fb_s5p_nr_buffers=2
config_has_wakelock=y
config_fb_s5p_nr_buffers=2
這是我們的啟動檔案
smdk4x12_machine_init
|#ifdef config_fb_s5p_lms501kf03 //這個巨集沒定義
spi_register_board_info(spi_board_info, array_size(spi_board_info));
s3cfb_set_platdata(&lms501kf03_data);
#else
s3cfb_set_platdata(null); //真正執行的函式,下一節分析
|platform_add_devices(smdk4x12_devices, array_size(smdk4x12_devices));
|smdk4412_devices
|#ifdef config_fb_s5p(這個巨集有定義,看第一節config)
&s3c_device_fb,
總結:會執行s3cfb_set_platdata(null)這個函式,註冊s3c_device_fb這個裝置
1.如下,註冊裝置,名字、資源、dma
struct platform_device s3c_device_fb =
};2.在看s3cfb_set_platdata函式前先了解乙個結構體,這個結構體主要定義了關於lcd的一系列操作函式,如背光開啟,設定引腳狀態,開時鐘。
struct s3c_platform_fb ;
接下來定義了乙個結構體變數default_fb_data ,對那些引數進行賦值。
static struct s3c_platform_fb default_fb_data __initdata = ;
最後主角來了,s3cfb_set_platdata函式,這個函式主要用來將上面s3c_platform_fb 結構體的值賦值到dev.platform_data(私有資料中去),這樣在驅動中,我們也能呼叫這些資料。
void __init s3cfb_set_platdata(struct s3c_platform_fb *pd)
}總結:所以說在啟動的時候核心會自動呼叫s3cfb_set_platdata函式,這個函式主要內容是硬體初始化,然後把這些資料賦值到dev.platform_data,以便於後續再pdrv中使用。
這是乙個全域性變數s3cfb_global 。
struct s3cfb_global ;
這個結構體中包括解析度、時鐘、極性等
struct s3cfb_lcd
void s3cfb_set_lcd_info(struct s3cfb_global *ctrl)
這樣pdev的內容就講完了,主要講了硬體引數是包裝在什麼結構體之中,是如何傳遞給驅動的。
Exynos4412 系統移植
移植要點 1 環境搭建 2 boot配置 移植 編譯及燒寫 3 kernel配置 移植 燒寫及除錯 4 根檔案系統的製作gcc編譯流程 預處理 編譯彙編 鏈結核心子系統 程序管理 記憶體管理 檔案系統 裝置管理 網路交叉編譯工具鏈安裝步驟 1 解壓gcc 4.6.4.tar.gz到 toolchai...
Exynos4412啟動過程分析
學習exynos4412啟動流程前,我們先看看三星4412晶元啟動框圖 我們從圖中可以看到4412內部有64k的rom和256k sram,在rom中已經固化好了一段 當硬體上電後首先執行的就是這段 這段 三星起名為blo irom boot 其作用是初始化sram,並將emmc中256k 拷貝到s...
exynos4412中斷程式設計
我們知道,arm核能處理的異常有7種,但僅僅區分異常的種類顯然不能夠滿足需求。拿手機來說,觸控螢幕和按下音量鍵可能都是irq異常,但是arm並不能將他們區分開,而事實的情況是針對這兩種中斷,我們的處理方式顯然不同,為此就需要在soc中整合中斷控制器 generic interupt controll...