summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/core/device.c8
-rw-r--r--test/dm/test-uclass.c3
2 files changed, 7 insertions, 4 deletions
diff --git a/drivers/core/device.c b/drivers/core/device.c
index 4fba118..b7ed21c 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -243,6 +243,8 @@ int device_probe_child(struct udevice *dev, void *parent_priv)
}
dev->seq = seq;
+ dev->flags |= DM_FLAG_ACTIVATED;
+
ret = uclass_pre_probe_device(dev);
if (ret)
goto fail;
@@ -269,10 +271,8 @@ int device_probe_child(struct udevice *dev, void *parent_priv)
}
ret = uclass_post_probe_device(dev);
- if (ret) {
- dev->flags &= ~DM_FLAG_ACTIVATED;
+ if (ret)
goto fail_uclass;
- }
return 0;
fail_uclass:
@@ -281,6 +281,8 @@ fail_uclass:
__func__, dev->name);
}
fail:
+ dev->flags &= ~DM_FLAG_ACTIVATED;
+
dev->seq = -1;
device_free(dev);
diff --git a/test/dm/test-uclass.c b/test/dm/test-uclass.c
index be91657..7cb37f7 100644
--- a/test/dm/test-uclass.c
+++ b/test/dm/test-uclass.c
@@ -31,6 +31,7 @@ int test_ping(struct udevice *dev, int pingval, int *pingret)
static int test_post_bind(struct udevice *dev)
{
dm_testdrv_op_count[DM_TEST_OP_POST_BIND]++;
+ ut_assert(!device_active(dev));
return 0;
}
@@ -48,7 +49,7 @@ static int test_pre_probe(struct udevice *dev)
dm_testdrv_op_count[DM_TEST_OP_PRE_PROBE]++;
ut_assert(priv);
- ut_assert(!device_active(dev));
+ ut_assert(device_active(dev));
return 0;
}