dm驅動模型的一般流程bind->ofdata_to_platdata(可選)->probe啟動,bind操作時單獨完成的,主要完成裝置和驅動的繫結,以及node注:node是匹配到驅動的裝置節點之間的連線。ofdata_to_platdata(可選)->probe則是在device_probe函式中完成的。
initf_dm//執行bind操作,初始化乙個dm模型的樹形結構
dm_init_and_scan(true)//初始化根節點裝置,並bind根節點的帶有u-boot,dm-pre-reloc屬性的一級子節點。
dm_init//將根節點繫結到gd->dm_root上,初始化根節點裝置
dm_scan_platdata//搜尋使用巨集u_boot_device定義的裝置進行驅動匹配,也就是bind子節點
dm_extended_scan_fdt//在其他地方(裝置樹)搜尋裝置並進行驅動匹配,然後bind
dm_scan_fdt//在裝置樹種搜尋裝置並進行驅動匹配,然後bind
dm_scan_fdt_node//具體繫結裝置的入口,在該函式中會確定裝置是否具有boot,dm-pre-reloc屬性,如果沒有則不會繫結
lists_bind_fdt//搜尋可以匹配到該裝置的驅動
device_bind_with_driver_data//如果匹配到進行繫結
device_bind_common//匹配裝置和驅動,並將裝置節點和parent節點建立聯絡,也就是建立樹形結構
uclass_bind_device//將該裝置掛在對應的u_class鍊錶上
drv->bind(dev)//裝置驅動的bind介面函式
parent->driver->child_post_bind(dev)//父節點驅動的child_post_bind介面函式
uc->uc_drv->post_bind//裝置所屬類的驅動的post_bind介面函式(具體的裝置節點就是在這個介面下在soc下進行展開的)
gd->dm_root_f = gd->dm_root; gd->dm_root = null;
dm_init_and_scan(false)//初始化根節點裝置,並bind根節點的所有子節點
************省略,見initf_dm函式流程
&fmc ;
bank3: stm32_nand ;
};
root
\soc
\fmc
\stm32_nand
root
\soc
\fmc
dev_for_each_subnode(bank_node, dev)
}
static int stm32_fmc_probe(struct udevice *dev)
}}
int dram_init(void)
uclass_get_device(uclass_ram, 0, &dev)
uclass_find_device(id, index, &dev)
uclass_get_device_tail(dev, ret, devp)
device_probe(dev)
device_probe(dev->parent)//遞迴probe父節點
uclass_resolve_seq//父節點都probe之後,會分配乙個seq給該裝置
dev->flags |= dm_flag_activated//設定該裝置的flag為啟用狀態
pinctrl_select_state(dev, "default")//和引腳相關的初始化設定《需要進一步分析》
dev->parent->driver->child_pre_probe(dev)//執行父節點驅動的child_pre_probe介面函式
drv->ofdata_to_platdata(dev)//執行裝置驅動的ofdata_to_platdata介面函式
clk_set_defaults(dev)//裝置時鐘相關的設定
drv->probe(dev)//呼叫裝置驅動的probe介面函式
uclass_post_probe_device(dev)//呼叫所屬class驅動的post_probe介面函式
linux下的 pci 驅動程式設計模型
一 概述 我這裡pci 裝置是powerpc2020 和fpga 通過pci 匯流排進行相連通訊。二 驅動模型 include include include include include include include define send buf size 8192 define recv ...
資料驅動 模型驅動 模型驅動的雲安全
存檔日期 2019年5月15日 首次發布 2011年2月8日 手動將安全策略轉換為技術實施非常困難,昂貴且容易出錯,尤其是在應用程式層實施時。為了在時間和金錢上的投資方面實現更多的成本節省,雲安全工具需要變得更加自動化。還需要這些工具的自動化,以使雲安全管理成為一項更輕鬆的任務,使雲管理員可以專注於...
DM模型probe的呼叫時機
版本 uboot2019 平台 arm926 背景 最近除錯gpio驅動發現一直沒有進入.probe 已經確認compatible匹配ok,driver和device已經關聯上。但是很艱難才找到呼叫.probe 的位置。在此記錄gpio驅動呼叫.probed 的流程 gpio request gpi...