Driver model is a core part of U-Boot. We don't really need to have a
separate test structure for the driver model tests and it makes it harder
to write a test if you have to think about which type of test it is.

Subsume the fields from struct dm_test_state into struct unit_test_state
and delete the former.

Signed-off-by: Simon Glass <s...@chromium.org>
---

(no changes since v1)

 include/dm/test.h     | 17 ----------------
 include/test/test.h   | 10 +++++++--
 test/dm/core.c        | 47 +++++++++++++++++--------------------------
 test/dm/test-dm.c     | 10 ++++-----
 test/dm/test-driver.c |  4 +---
 test/dm/test-uclass.c |  3 +--
 6 files changed, 34 insertions(+), 57 deletions(-)

diff --git a/include/dm/test.h b/include/dm/test.h
index c0b463cc0f1..fe1cc2e278c 100644
--- a/include/dm/test.h
+++ b/include/dm/test.h
@@ -125,23 +125,6 @@ extern int dm_testdrv_op_count[DM_TEST_OP_COUNT];
 
 extern struct unit_test_state global_dm_test_state;
 
-/*
- * struct dm_test_state - Entire state of dm test system
- *
- * This is often abreviated to dms.
- *
- * @root: Root device
- * @testdev: Test device
- * @force_fail_alloc: Force all memory allocs to fail
- * @skip_post_probe: Skip uclass post-probe processing
- */
-struct dm_test_state {
-       struct udevice *root;
-       struct udevice *testdev;
-       int force_fail_alloc;
-       int skip_post_probe;
-};
-
 /* Declare a new driver model test */
 #define DM_TEST(_name, _flags) \
        UNIT_TEST(_name, UT_TESTF_DM | UT_TESTF_CONSOLE_REC | (_flags), dm_test)
diff --git a/include/test/test.h b/include/test/test.h
index 6997568cc07..5eeec35f525 100644
--- a/include/test/test.h
+++ b/include/test/test.h
@@ -14,18 +14,24 @@
  *
  * @fail_count: Number of tests that failed
  * @start: Store the starting mallinfo when doing leak test
- * @priv: A pointer to some other info some suites want to track
  * @of_live: true to use livetree if available, false to use flattree
  * @of_root: Record of the livetree root node (used for setting up tests)
+ * @root: Root device
+ * @testdev: Test device
+ * @force_fail_alloc: Force all memory allocs to fail
+ * @skip_post_probe: Skip uclass post-probe processing
  * @expect_str: Temporary string used to hold expected string value
  * @actual_str: Temporary string used to hold actual string value
  */
 struct unit_test_state {
        int fail_count;
        struct mallinfo start;
-       void *priv;
        struct device_node *of_root;
        bool of_live;
+       struct udevice *root;
+       struct udevice *testdev;
+       int force_fail_alloc;
+       int skip_post_probe;
        char expect_str[256];
        char actual_str[256];
 };
diff --git a/test/dm/core.c b/test/dm/core.c
index 1f5ca570dc7..f8e47591a13 100644
--- a/test/dm/core.c
+++ b/test/dm/core.c
@@ -108,14 +108,13 @@ int dm_leak_check_end(struct unit_test_state *uts)
 /* Test that binding with plat occurs correctly */
 static int dm_test_autobind(struct unit_test_state *uts)
 {
-       struct dm_test_state *dms = uts->priv;
        struct udevice *dev;
 
        /*
         * We should have a single class (UCLASS_ROOT) and a single root
         * device with no children.
         */
-       ut_assert(dms->root);
+       ut_assert(uts->root);
        ut_asserteq(1, list_count_items(gd->uclass_root));
        ut_asserteq(0, list_count_items(&gd->dm_root->child_head));
        ut_asserteq(0, dm_testdrv_op_count[DM_TEST_OP_POST_BIND]);
@@ -198,7 +197,6 @@ DM_TEST(dm_test_autobind_uclass_pdata_valid, 
UT_TESTF_SCAN_PDATA);
 /* Test that autoprobe finds all the expected devices */
 static int dm_test_autoprobe(struct unit_test_state *uts)
 {
-       struct dm_test_state *dms = uts->priv;
        int expected_base_add;
        struct udevice *dev;
        struct uclass *uc;
@@ -212,7 +210,7 @@ static int dm_test_autoprobe(struct unit_test_state *uts)
        ut_asserteq(0, dm_testdrv_op_count[DM_TEST_OP_POST_PROBE]);
 
        /* The root device should not be activated until needed */
-       ut_assert(dev_get_flags(dms->root) & DM_FLAG_ACTIVATED);
+       ut_assert(dev_get_flags(uts->root) & DM_FLAG_ACTIVATED);
 
        /*
         * We should be able to find the three test devices, and they should
@@ -232,7 +230,7 @@ static int dm_test_autoprobe(struct unit_test_state *uts)
 
                /* Activating a device should activate the root device */
                if (!i)
-                       ut_assert(dev_get_flags(dms->root) & DM_FLAG_ACTIVATED);
+                       ut_assert(dev_get_flags(uts->root) & DM_FLAG_ACTIVATED);
        }
 
        /*
@@ -284,7 +282,6 @@ DM_TEST(dm_test_plat, UT_TESTF_SCAN_PDATA);
 /* Test that we can bind, probe, remove, unbind a driver */
 static int dm_test_lifecycle(struct unit_test_state *uts)
 {
-       struct dm_test_state *dms = uts->priv;
        int op_count[DM_TEST_OP_COUNT];
        struct udevice *dev, *test_dev;
        int pingret;
@@ -292,7 +289,7 @@ static int dm_test_lifecycle(struct unit_test_state *uts)
 
        memcpy(op_count, dm_testdrv_op_count, sizeof(op_count));
 
-       ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+       ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
                                        &dev));
        ut_assert(dev);
        ut_assert(dm_testdrv_op_count[DM_TEST_OP_BIND]
@@ -300,7 +297,7 @@ static int dm_test_lifecycle(struct unit_test_state *uts)
        ut_assert(!dev_get_priv(dev));
 
        /* Probe the device - it should fail allocating private data */
-       dms->force_fail_alloc = 1;
+       uts->force_fail_alloc = 1;
        ret = device_probe(dev);
        ut_assert(ret == -ENOMEM);
        ut_assert(dm_testdrv_op_count[DM_TEST_OP_PROBE]
@@ -308,7 +305,7 @@ static int dm_test_lifecycle(struct unit_test_state *uts)
        ut_assert(!dev_get_priv(dev));
 
        /* Try again without the alloc failure */
-       dms->force_fail_alloc = 0;
+       uts->force_fail_alloc = 0;
        ut_assertok(device_probe(dev));
        ut_assert(dm_testdrv_op_count[DM_TEST_OP_PROBE]
                        == op_count[DM_TEST_OP_PROBE] + 2);
@@ -340,19 +337,18 @@ DM_TEST(dm_test_lifecycle, UT_TESTF_SCAN_PDATA | 
UT_TESTF_PROBE_TEST);
 /* Test that we can bind/unbind and the lists update correctly */
 static int dm_test_ordering(struct unit_test_state *uts)
 {
-       struct dm_test_state *dms = uts->priv;
        struct udevice *dev, *dev_penultimate, *dev_last, *test_dev;
        int pingret;
 
-       ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+       ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
                                        &dev));
        ut_assert(dev);
 
        /* Bind two new devices (numbers 4 and 5) */
-       ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+       ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
                                        &dev_penultimate));
        ut_assert(dev_penultimate);
-       ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+       ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
                                        &dev_last));
        ut_assert(dev_last);
 
@@ -367,7 +363,7 @@ static int dm_test_ordering(struct unit_test_state *uts)
        ut_assert(dev_last == test_dev);
 
        /* Add back the original device 3, now in position 5 */
-       ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+       ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
                                        &dev));
        ut_assert(dev);
 
@@ -559,7 +555,6 @@ static int create_children(struct unit_test_state *uts, 
struct udevice *parent,
 
 static int dm_test_children(struct unit_test_state *uts)
 {
-       struct dm_test_state *dms = uts->priv;
        struct udevice *top[NODE_COUNT];
        struct udevice *child[NODE_COUNT];
        struct udevice *grandchild[NODE_COUNT];
@@ -569,12 +564,12 @@ static int dm_test_children(struct unit_test_state *uts)
        int i;
 
        /* We don't care about the numbering for this test */
-       dms->skip_post_probe = 1;
+       uts->skip_post_probe = 1;
 
        ut_assert(NODE_COUNT > 5);
 
        /* First create 10 top-level children */
-       ut_assertok(create_children(uts, dms->root, NODE_COUNT, 0, top));
+       ut_assertok(create_children(uts, uts->root, NODE_COUNT, 0, top));
 
        /* Now a few have their own children */
        ut_assertok(create_children(uts, top[2], NODE_COUNT, 2, NULL));
@@ -645,7 +640,6 @@ DM_TEST(dm_test_children, 0);
 
 static int dm_test_device_reparent(struct unit_test_state *uts)
 {
-       struct dm_test_state *dms = uts->priv;
        struct udevice *top[NODE_COUNT];
        struct udevice *child[NODE_COUNT];
        struct udevice *grandchild[NODE_COUNT];
@@ -655,12 +649,12 @@ static int dm_test_device_reparent(struct unit_test_state 
*uts)
        int i;
 
        /* We don't care about the numbering for this test */
-       dms->skip_post_probe = 1;
+       uts->skip_post_probe = 1;
 
        ut_assert(NODE_COUNT > 5);
 
        /* First create 10 top-level children */
-       ut_assertok(create_children(uts, dms->root, NODE_COUNT, 0, top));
+       ut_assertok(create_children(uts, uts->root, NODE_COUNT, 0, top));
 
        /* Now a few have their own children */
        ut_assertok(create_children(uts, top[2], NODE_COUNT, 2, NULL));
@@ -806,15 +800,14 @@ DM_TEST(dm_test_device_reparent, 0);
 /* Test that pre-relocation devices work as expected */
 static int dm_test_pre_reloc(struct unit_test_state *uts)
 {
-       struct dm_test_state *dms = uts->priv;
        struct udevice *dev;
 
        /* The normal driver should refuse to bind before relocation */
-       ut_asserteq(-EPERM, device_bind_by_name(dms->root, true,
+       ut_asserteq(-EPERM, device_bind_by_name(uts->root, true,
                                                &driver_info_manual, &dev));
 
        /* But this one is marked pre-reloc */
-       ut_assertok(device_bind_by_name(dms->root, true,
+       ut_assertok(device_bind_by_name(uts->root, true,
                                        &driver_info_pre_reloc, &dev));
 
        return 0;
@@ -827,10 +820,9 @@ DM_TEST(dm_test_pre_reloc, 0);
  */
 static int dm_test_remove_active_dma(struct unit_test_state *uts)
 {
-       struct dm_test_state *dms = uts->priv;
        struct udevice *dev;
 
-       ut_assertok(device_bind_by_name(dms->root, false, &driver_info_act_dma,
+       ut_assertok(device_bind_by_name(uts->root, false, &driver_info_act_dma,
                                        &dev));
        ut_assert(dev);
 
@@ -863,7 +855,7 @@ static int dm_test_remove_active_dma(struct unit_test_state 
*uts)
         * the active DMA remove call
         */
        ut_assertok(device_unbind(dev));
-       ut_assertok(device_bind_by_name(dms->root, false, &driver_info_manual,
+       ut_assertok(device_bind_by_name(uts->root, false, &driver_info_manual,
                                        &dev));
        ut_assert(dev);
 
@@ -1038,11 +1030,10 @@ DM_TEST(dm_test_uclass_names, UT_TESTF_SCAN_PDATA);
 
 static int dm_test_inactive_child(struct unit_test_state *uts)
 {
-       struct dm_test_state *dms = uts->priv;
        struct udevice *parent, *dev1, *dev2;
 
        /* Skip the behaviour in test_post_probe() */
-       dms->skip_post_probe = 1;
+       uts->skip_post_probe = 1;
 
        ut_assertok(uclass_first_device_err(UCLASS_TEST, &parent));
 
diff --git a/test/dm/test-dm.c b/test/dm/test-dm.c
index 88feb6537f1..ad64f5bdcb3 100644
--- a/test/dm/test-dm.c
+++ b/test/dm/test-dm.c
@@ -21,14 +21,15 @@
 DECLARE_GLOBAL_DATA_PTR;
 
 struct unit_test_state global_dm_test_state;
-static struct dm_test_state _global_priv_dm_test_state;
 
 int dm_test_init(struct unit_test_state *uts)
 {
-       struct dm_test_state *dms = uts->priv;
        bool of_live = uts->of_live;
 
-       memset(dms, '\0', sizeof(*dms));
+       uts->root = NULL;
+       uts->testdev = NULL;
+       uts->force_fail_alloc = false;
+       uts->skip_post_probe = false;
        gd->dm_root = NULL;
        if (!CONFIG_IS_ENABLED(OF_PLATDATA))
                memset(dm_testdrv_op_count, '\0', sizeof(dm_testdrv_op_count));
@@ -37,7 +38,7 @@ int dm_test_init(struct unit_test_state *uts)
        /* Determine whether to make the live tree available */
        gd_set_of_root(of_live ? uts->of_root : NULL);
        ut_assertok(dm_init(of_live));
-       dms->root = dm_root();
+       uts->root = dm_root();
 
        return 0;
 }
@@ -123,7 +124,6 @@ int dm_test_run(const char *test_name)
        struct unit_test *test;
        int found;
 
-       uts->priv = &_global_priv_dm_test_state;
        uts->fail_count = 0;
 
        if (!CONFIG_IS_ENABLED(OF_PLATDATA)) {
diff --git a/test/dm/test-driver.c b/test/dm/test-driver.c
index a67f5d3f982..49c1c310963 100644
--- a/test/dm/test-driver.c
+++ b/test/dm/test-driver.c
@@ -116,10 +116,8 @@ static int test_manual_bind(struct udevice *dev)
 
 static int test_manual_probe(struct udevice *dev)
 {
-       struct dm_test_state *dms = uts->priv;
-
        dm_testdrv_op_count[DM_TEST_OP_PROBE]++;
-       if (!dms->force_fail_alloc)
+       if (!uts->force_fail_alloc)
                dev_set_priv(dev, calloc(1, sizeof(struct dm_test_priv)));
        if (!dev_get_priv(dev))
                return -ENOMEM;
diff --git a/test/dm/test-uclass.c b/test/dm/test-uclass.c
index f1b7aaa727f..f4b540c9278 100644
--- a/test/dm/test-uclass.c
+++ b/test/dm/test-uclass.c
@@ -71,13 +71,12 @@ static int test_post_probe(struct udevice *dev)
 
        struct dm_test_uclass_perdev_priv *priv = dev_get_uclass_priv(dev);
        struct uclass *uc = dev->uclass;
-       struct dm_test_state *dms = uts->priv;
 
        dm_testdrv_op_count[DM_TEST_OP_POST_PROBE]++;
        ut_assert(priv);
        ut_assert(device_active(dev));
        priv->base_add = 0;
-       if (dms->skip_post_probe)
+       if (uts->skip_post_probe)
                return 0;
        if (&prev->uclass_node != &uc->dev_head) {
                struct dm_test_uclass_perdev_priv *prev_uc_priv
-- 
2.30.0.365.g02bc693789-goog

Reply via email to