作者
QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118
u-boot
u-boot,调用pci enum
,
UCLASS_DRIVER(pci) = {
.id = UCLASS_PCI,
.name = "pci",
.flags = DM_UC_FLAG_SEQ_ALIAS,
.post_bind = dm_scan_fdt_dev,
.pre_probe = pci_uclass_pre_probe,
.post_probe = pci_uclass_post_probe,
.child_post_bind = pci_uclass_child_post_bind,
.per_device_auto_alloc_size = sizeof(struct pci_controller),
.per_child_platdata_auto_alloc_size =
sizeof(struct pci_child_platdata),
};
void pci_init(void)
{
struct udevice *bus;
/*
* Enumerate all known controller devices. Enumeration has the side-
* effect of probing them, so PCIe devices will be enumerated too.
*/
for (uclass_first_device(UCLASS_PCI, &bus);
bus;
uclass_next_device(&bus)) {
;
}
}
u-boot下uclass
相关接口,
uclass_first_device
uclass_find_first_device
uclass_get_device_tail
device_probe
device_probe(dev->parent);
uclass_resolve_seq
uclass_pre_probe_device
dev->uclass->uc_drv->pre_probe(dev)
dev->parent->uclass->uc_drv->child_pre_probe(dev)
dev->parent->driver->child_pre_probe(dev)
drv->ofdata_to_platdata(dev);
drv->probe(dev)
uclass_post_probe_device
uc_drv->post_probe(dev)
uclass_next_device
uclass_find_next_device
uclass_get_device_tail
测试
老版本的u-boot支持PCIE_SCAN_SHOW
,新版不支持,手动打印,
ZynqMP> pci enum
PCIe Link is UP
00:00.0 - 10ee:9138 - Bridge device
01:00.0 - 10b5:8724 - Bridge device
02:00.0 - 10b5:8724 - Bridge device
02:01.0 - 10b5:8724 - Bridge device
02:02.0 - 10b5:8724 - Bridge device
02:03.0 - 10b5:8724 - Bridge device
02:08.0 - 10b5:8724 - Bridge device
03:00.0 - 10b5:87b1 - Bridge device
05:00.0 - 144d:a804 - Mass storage controller