really_probe()

really_probe()

platform_device_register

platform_device_add

device_add

bus_probe_device

device_initial_probe

__device_attach

__device_attach_driver

driver_probe_device

really_probe

static int really_probe(struct device *dev, struct device_driver *drv)

dev->driver = drv; //dev is device, dev->driver is device_driver, drv is device_driver

if (dev->bus->probe) {

ret = dev->bus->probe(dev);

if (ret)

goto probe_failed;

} else if (drv->probe) {

ret = drv->probe(dev);

if (ret)

goto probe_failed;

}

driver_bound(dev);

ret = 1;

pr_debug("bus: '%s': %s: bound device %s to driver %s ",

drv->bus->name, __func__, dev_name(dev), drv->name);

goto done;

原文地址:https://www.cnblogs.com/aspirs/p/14772580.html