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;