summaryrefslogtreecommitdiff
path: root/test/dm/blk.c
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2021-07-22 11:15:52 -0400
committerTom Rini <trini@konsulko.com>2021-07-22 11:15:52 -0400
commita15fa1ba67d7b3c8061b515e7713f733fa328018 (patch)
treef7746e2e7a3410043e9ea3f3f7c0a97e2c5e6dbb /test/dm/blk.c
parent806734f41b25931798fdf667b5a2ae830229c13f (diff)
parent1b098b3e655451572054ce933a87231ee16f7133 (diff)
Merge tag 'dm-pull-21jul21' of https://gitlab.denx.de/u-boot/custodians/u-boot-dm
dtoc improvements to show better warnings minor test build fixes sandbox fixes for SDL2 and running TPL bloblist resize feature binman multithreading
Diffstat (limited to 'test/dm/blk.c')
-rw-r--r--test/dm/blk.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/test/dm/blk.c b/test/dm/blk.c
index b7f4304e9e9..deccf05289b 100644
--- a/test/dm/blk.c
+++ b/test/dm/blk.c
@@ -162,3 +162,58 @@ static int dm_test_blk_get_from_parent(struct unit_test_state *uts)
return 0;
}
DM_TEST(dm_test_blk_get_from_parent, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
+
+/* Test iteration through block devices */
+static int dm_test_blk_iter(struct unit_test_state *uts)
+{
+ struct udevice *dev;
+ int i;
+
+ /*
+ * See sandbox test.dts - it has:
+ *
+ * mmc0 - removable
+ * mmc1 - removable
+ * mmc2 - fixed
+ */
+ ut_assertok(blk_first_device_err(BLKF_FIXED, &dev));
+ ut_asserteq_str("mmc2.blk", dev->name);
+ ut_asserteq(-ENODEV, blk_next_device_err(BLKF_FIXED, &dev));
+
+ ut_assertok(blk_first_device_err(BLKF_REMOVABLE, &dev));
+ ut_asserteq_str("mmc1.blk", dev->name);
+ ut_assertok(blk_next_device_err(BLKF_REMOVABLE, &dev));
+ ut_asserteq_str("mmc0.blk", dev->name);
+ ut_asserteq(-ENODEV, blk_next_device_err(BLKF_REMOVABLE, &dev));
+
+ ut_assertok(blk_first_device_err(BLKF_BOTH, &dev));
+ ut_asserteq_str("mmc2.blk", dev->name);
+ ut_assertok(blk_next_device_err(BLKF_BOTH, &dev));
+ ut_asserteq_str("mmc1.blk", dev->name);
+ ut_assertok(blk_next_device_err(BLKF_BOTH, &dev));
+ ut_asserteq_str("mmc0.blk", dev->name);
+ ut_asserteq(-ENODEV, blk_next_device_err(BLKF_FIXED, &dev));
+
+ ut_asserteq(1, blk_count_devices(BLKF_FIXED));
+ ut_asserteq(2, blk_count_devices(BLKF_REMOVABLE));
+ ut_asserteq(3, blk_count_devices(BLKF_BOTH));
+
+ i = 0;
+ blk_foreach_probe(BLKF_FIXED, dev)
+ ut_asserteq_str((i++, "mmc2.blk"), dev->name);
+ ut_asserteq(1, i);
+
+ i = 0;
+ blk_foreach_probe(BLKF_REMOVABLE, dev)
+ ut_asserteq_str(i++ ? "mmc0.blk" : "mmc1.blk", dev->name);
+ ut_asserteq(2, i);
+
+ i = 0;
+ blk_foreach_probe(BLKF_BOTH, dev)
+ ut_asserteq_str((++i == 1 ? "mmc2.blk" : i == 2 ?
+ "mmc1.blk" : "mmc0.blk"), dev->name);
+ ut_asserteq(3, i);
+
+ return 0;
+}
+DM_TEST(dm_test_blk_iter, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);