Merge tag 'dm-pull-6feb20' of https://gitlab.denx.de/u-boot/custodians/u-boot-dm
[oweals/u-boot.git] / test / dm / test-fdt.c
index f54db759b65c74872bc417b5b43bde9d0724fe9f..75ae08081cdc997355c522bdf55d4396d0d97c45 100644 (file)
@@ -449,6 +449,27 @@ static int dm_test_first_next_device(struct unit_test_state *uts)
 }
 DM_TEST(dm_test_first_next_device, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
 
+/* Test iteration through devices in a uclass */
+static int dm_test_uclass_foreach(struct unit_test_state *uts)
+{
+       struct udevice *dev;
+       struct uclass *uc;
+       int count;
+
+       count = 0;
+       uclass_id_foreach_dev(UCLASS_TEST_FDT, dev, uc)
+               count++;
+       ut_asserteq(8, count);
+
+       count = 0;
+       uclass_foreach_dev(dev, uc)
+               count++;
+       ut_asserteq(8, count);
+
+       return 0;
+}
+DM_TEST(dm_test_uclass_foreach, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
 /**
  * check_devices() - Check return values and pointers
  *
@@ -874,6 +895,27 @@ static int dm_test_read_int(struct unit_test_state *uts)
 }
 DM_TEST(dm_test_read_int, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
 
+/* Test iteration through devices by drvdata */
+static int dm_test_uclass_drvdata(struct unit_test_state *uts)
+{
+       struct udevice *dev;
+
+       ut_assertok(uclass_first_device_drvdata(UCLASS_TEST_FDT,
+                                               DM_TEST_TYPE_FIRST, &dev));
+       ut_asserteq_str("a-test", dev->name);
+
+       ut_assertok(uclass_first_device_drvdata(UCLASS_TEST_FDT,
+                                               DM_TEST_TYPE_SECOND, &dev));
+       ut_asserteq_str("d-test", dev->name);
+
+       ut_asserteq(-ENODEV, uclass_first_device_drvdata(UCLASS_TEST_FDT,
+                                                        DM_TEST_TYPE_COUNT,
+                                                        &dev));
+
+       return 0;
+}
+DM_TEST(dm_test_uclass_drvdata, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
 /* Test device_first_child_ofdata_err(), etc. */
 static int dm_test_child_ofdata(struct unit_test_state *uts)
 {