溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PCI 設(shè)備枚舉流程

發(fā)布時(shí)間:2020-07-28 11:06:02 來(lái)源:網(wǎng)絡(luò) 閱讀:303 作者:昵稱(chēng)真難改 欄目:系統(tǒng)運(yùn)維
//0、pci子系統(tǒng)首先注冊(cè)pci?bus
struct?bus_type?pci_bus_type?=?{
	.name		=?"pci",
	.match		=?pci_bus_match,
	.uevent		=?pci_uevent,
	.probe		=?pci_device_probe,
	.remove		=?pci_device_remove,
	.shutdown	=?pci_device_shutdown,
	.dev_groups	=?pci_dev_groups,
	.bus_groups	=?pci_bus_groups,
	.drv_groups	=?pci_drv_groups,
	.pm		=?PCI_PM_OPS_PTR,
	.num_vf		=?pci_bus_num_vf,
};
EXPORT_SYMBOL(pci_bus_type);

static?int?__init?pci_driver_init(void)
{
	return?bus_register(&pci_bus_type);
}
postcore_initcall(pci_driver_init);/*?將初始化函數(shù)放到內(nèi)核代碼特殊段,內(nèi)核啟動(dòng)將會(huì)自動(dòng)調(diào)用初始化函數(shù)?*/

/*?設(shè)備的枚舉流程和設(shè)備的驅(qū)動(dòng)的調(diào)用過(guò)程?*/
//1、pci控制器?設(shè)備樹(shù)節(jié)點(diǎn)將會(huì)配轉(zhuǎn)換成platform?device
????	pcie@3400000?{
			compatible?=?"fsl,ls1021a-pcie",?"snps,dw-pcie";
			....
		?????}		
//2、pci控制器匹配platform?driver
static?const?struct?of_device_id?ls_pcie_of_match[]?=?{
	{?.compatible?=?"fsl,ls1021a-pcie",?.data?=?&ls1021_drvdata?},
	..
	}
static?struct?platform_driver?ls_pcie_driver?=?{
	.driver?=?{
		.name?=?"layerscape-pcie",
		.of_match_table?=?ls_pcie_of_match,
		.suppress_bind_attrs?=?true,
	},
};
builtin_platform_driver_probe(ls_pcie_driver,?ls_pcie_probe);
//3、執(zhí)行pci控制器驅(qū)動(dòng)函數(shù)ls_pcie_probe函數(shù)將被調(diào)用,直到pci_bus_type.pci_device_probe被調(diào)用
????????ls_add_pcie_port
????????????pci_bus_add_devices
????????????????pci_bus_add_device
????????????????????device_attach
????????????????????????__device_attach
????????????????????????????__device_attach_driver
????????????????????????????????driver_probe_device
????????????????????????????????????really_probe
????????????????????????????????????????dev->bus->probe//將調(diào)用pci_bus_type.pci_device_probe
//4、枚舉pci設(shè)備調(diào)用設(shè)備驅(qū)動(dòng)
????pci_device_probe
????????__pci_device_probe
????????????pci_call_probe
???????????????local_pci_probe
???????????????????pci_drv->probe//設(shè)備的驅(qū)動(dòng)的probe將被調(diào)用。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI