u boot下的DM驅動模型

2021-09-29 19:28:43 字數 2359 閱讀 2721

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...