diff options
-rw-r--r-- | drivers/base/core.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c index 84c569726d75..55310c97a8b7 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -2526,7 +2526,6 @@ int device_add(struct device *dev) struct class_interface *class_intf; int error = -EINVAL; struct kobject *glue_dir = NULL; - bool is_fwnode_dev = false; dev = get_device(dev); if (!dev) @@ -2624,11 +2623,6 @@ int device_add(struct device *dev) kobject_uevent(&dev->kobj, KOBJ_ADD); - if (dev->fwnode && !dev->fwnode->dev) { - dev->fwnode->dev = dev; - is_fwnode_dev = true; - } - /* * Check if any of the other devices (consumers) have been waiting for * this device (supplier) to be added so that they can create a device @@ -2637,12 +2631,14 @@ int device_add(struct device *dev) * This needs to happen after device_pm_add() because device_link_add() * requires the supplier be registered before it's called. * - * But this also needs to happe before bus_probe_device() to make sure + * But this also needs to happen before bus_probe_device() to make sure * waiting consumers can link to it before the driver is bound to the * device and the driver sync_state callback is called for this device. */ - if (is_fwnode_dev) + if (dev->fwnode && !dev->fwnode->dev) { + dev->fwnode->dev = dev; fw_devlink_link_device(dev); + } bus_probe_device(dev); if (parent) |