提交 d92878aa 编写于 作者: B Bin Meng 提交者: Simon Glass

test: dm: core: Add test case for uclass driver's child_post_probe()

Add test case to cover uclass driver's child_post_probe() method.
Signed-off-by: NBin Meng <bmeng.cn@gmail.com>
Reviewed-by: NSimon Glass <sjg@chromium.org>
上级 651d0c01
......@@ -69,6 +69,7 @@ struct dm_test_priv {
int op_count[DM_TEST_OP_COUNT];
int uclass_flag;
int uclass_total;
int uclass_postp;
};
/**
......
......@@ -63,6 +63,15 @@ static int testbus_child_pre_probe_uclass(struct udevice *dev)
return 0;
}
static int testbus_child_post_probe_uclass(struct udevice *dev)
{
struct dm_test_priv *priv = dev_get_priv(dev);
priv->uclass_postp++;
return 0;
}
static int testbus_child_post_remove(struct udevice *dev)
{
struct dm_test_parent_data *parent_data = dev_get_parent_priv(dev);
......@@ -102,6 +111,7 @@ UCLASS_DRIVER(testbus) = {
.id = UCLASS_TEST_BUS,
.flags = DM_UC_FLAG_SEQ_ALIAS,
.child_pre_probe = testbus_child_pre_probe_uclass,
.child_post_probe = testbus_child_post_probe_uclass,
};
/* Test that we can probe for children */
......@@ -547,3 +557,38 @@ static int dm_test_bus_child_pre_probe_uclass(struct unit_test_state *uts)
}
DM_TEST(dm_test_bus_child_pre_probe_uclass,
DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
/*
* Test that the bus' uclass' child_post_probe() is called after the
* device's probe() method
*/
static int dm_test_bus_child_post_probe_uclass(struct unit_test_state *uts)
{
struct udevice *bus, *dev;
int child_count;
/*
* See testfdt_drv_probe() which effectively initializes that
* the uclass postp flag is set to a value
*/
ut_assertok(uclass_get_device(UCLASS_TEST_BUS, 0, &bus));
for (device_find_first_child(bus, &dev), child_count = 0;
dev;
device_find_next_child(&dev)) {
struct dm_test_priv *priv = dev_get_priv(dev);
/* Check that things happened in the right order */
ut_asserteq_ptr(NULL, priv);
ut_assertok(device_probe(dev));
priv = dev_get_priv(dev);
ut_assert(priv != NULL);
ut_asserteq(0, priv->uclass_postp);
child_count++;
}
ut_asserteq(3, child_count);
return 0;
}
DM_TEST(dm_test_bus_child_post_probe_uclass,
DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
......@@ -55,10 +55,13 @@ static int testfdt_drv_probe(struct udevice *dev)
/*
* If this device is on a bus, the uclass_flag will be set before
* calling this function. This is used by
* dm_test_bus_child_pre_probe_uclass().
* calling this function. In the meantime the uclass_postp is
* initlized to a value -1. These are used respectively by
* dm_test_bus_child_pre_probe_uclass() and
* dm_test_bus_child_post_probe_uclass().
*/
priv->uclass_total += priv->uclass_flag;
priv->uclass_postp = -1;
return 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册