diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/core/device-remove.c | 1 | ||||
| -rw-r--r-- | drivers/core/device.c | 4 |
2 files changed, 4 insertions, 1 deletions
diff --git a/drivers/core/device-remove.c b/drivers/core/device-remove.c index 5c8dc4ad701..444e34b4921 100644 --- a/drivers/core/device-remove.c +++ b/drivers/core/device-remove.c @@ -140,6 +140,7 @@ void device_free(struct udevice *dev) dev->parent_priv = NULL; } } + dev->flags &= ~DM_FLAG_PLATDATA_VALID; devres_release_probe(dev); } diff --git a/drivers/core/device.c b/drivers/core/device.c index 9506c7df8d1..9f39218423e 100644 --- a/drivers/core/device.c +++ b/drivers/core/device.c @@ -320,7 +320,7 @@ int device_ofdata_to_platdata(struct udevice *dev) if (!dev) return -EINVAL; - if (dev->flags & DM_FLAG_ACTIVATED) + if (dev->flags & DM_FLAG_PLATDATA_VALID) return 0; drv = dev->driver; @@ -368,6 +368,8 @@ int device_ofdata_to_platdata(struct udevice *dev) goto fail; } + dev->flags |= DM_FLAG_PLATDATA_VALID; + return 0; fail: device_free(dev); |
