]> git.sur5r.net Git - u-boot/blobdiff - test/dm/usb.c
Merge branch 'master' of git://git.denx.de/u-boot-uniphier
[u-boot] / test / dm / usb.c
index fb193e80c263b6d142b86fa5e0c6e5ea743ef385..b46ae6060207b53022b0679949eaf59687db7653 100644 (file)
@@ -10,6 +10,7 @@
 #include <usb.h>
 #include <asm/io.h>
 #include <asm/state.h>
+#include <asm/test.h>
 #include <dm/device-internal.h>
 #include <dm/test.h>
 #include <dm/uclass-internal.h>
@@ -38,19 +39,20 @@ DM_TEST(dm_test_usb_base, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
 static int dm_test_usb_flash(struct unit_test_state *uts)
 {
        struct udevice *dev;
-       block_dev_desc_t *dev_desc;
+       struct blk_desc *dev_desc;
        char cmp[1024];
 
        state_set_skip_delays(true);
        ut_assertok(usb_init());
        ut_assertok(uclass_get_device(UCLASS_MASS_STORAGE, 0, &dev));
-       ut_assertok(get_device("usb", "0", &dev_desc));
+       ut_assertok(blk_get_device_by_str("usb", "0", &dev_desc));
 
        /* Read a few blocks and look for the string we expect */
        ut_asserteq(512, dev_desc->blksz);
        memset(cmp, '\0', sizeof(cmp));
-       ut_asserteq(2, dev_desc->block_read(dev_desc->dev, 0, 2, cmp));
+       ut_asserteq(2, blk_dread(dev_desc, 0, 2, cmp));
        ut_assertok(strcmp(cmp, "this is a test"));
+       ut_assertok(usb_stop());
 
        return 0;
 }
@@ -66,6 +68,7 @@ static int dm_test_usb_multi(struct unit_test_state *uts)
        ut_assertok(uclass_get_device(UCLASS_MASS_STORAGE, 0, &dev));
        ut_assertok(uclass_get_device(UCLASS_MASS_STORAGE, 1, &dev));
        ut_assertok(uclass_get_device(UCLASS_MASS_STORAGE, 2, &dev));
+       ut_assertok(usb_stop());
 
        return 0;
 }
@@ -107,9 +110,9 @@ static int dm_test_usb_remove(struct unit_test_state *uts)
        ut_assertok(uclass_get_device(UCLASS_MASS_STORAGE, 0, &dev));
        ut_assertok(uclass_get_device(UCLASS_MASS_STORAGE, 1, &dev));
        ut_assertok(uclass_get_device(UCLASS_MASS_STORAGE, 2, &dev));
-       ut_asserteq(5, count_usb_devices());
+       ut_asserteq(6, count_usb_devices());
        ut_assertok(usb_stop());
-       ut_asserteq(5, count_usb_devices());
+       ut_asserteq(6, count_usb_devices());
 
        /* Remove the second emulation device */
        ut_assertok(uclass_find_device_by_name(UCLASS_USB_EMUL, "flash-stick@1",
@@ -127,9 +130,9 @@ static int dm_test_usb_remove(struct unit_test_state *uts)
 
        ut_asserteq(-ENODEV, uclass_get_device(UCLASS_MASS_STORAGE, 2, &dev));
 
-       ut_asserteq(4, count_usb_devices());
+       ut_asserteq(5, count_usb_devices());
        ut_assertok(usb_stop());
-       ut_asserteq(4, count_usb_devices());
+       ut_asserteq(5, count_usb_devices());
 
        return 0;
 }
@@ -146,7 +149,10 @@ const char usb_tree_base[] =
 "  |    sandbox flash flash-stick@1\n"
 "  |  \n"
 "  |\b+-4  Mass Storage (12 Mb/s, 100mA)\n"
-"       sandbox flash flash-stick@2\n"
+"  |    sandbox flash flash-stick@2\n"
+"  |  \n"
+"  |\b+-5  Human Interface (12 Mb/s, 100mA)\n"
+"       sandbox keyboard keyb@3\n"
 "     \n";
 
 /* test that the 'usb tree' command output looks correct */
@@ -177,7 +183,10 @@ const char usb_tree_remove[] =
 "  |    sandbox flash flash-stick@0\n"
 "  |  \n"
 "  |\b+-3  Mass Storage (12 Mb/s, 100mA)\n"
-"       sandbox flash flash-stick@2\n"
+"  |    sandbox flash flash-stick@2\n"
+"  |  \n"
+"  |\b+-4  Human Interface (12 Mb/s, 100mA)\n"
+"       sandbox keyboard keyb@3\n"
 "     \n";
 
 /*
@@ -219,7 +228,10 @@ const char usb_tree_reorder[] =
 "  |\b+-3  Mass Storage (12 Mb/s, 100mA)\n"
 "  |    sandbox flash flash-stick@2\n"
 "  |  \n"
-"  |\b+-4  Mass Storage (12 Mb/s, 100mA)\n"
+"  |\b+-4  Human Interface (12 Mb/s, 100mA)\n"
+"  |    sandbox keyboard keyb@3\n"
+"  |  \n"
+"  |\b+-5  Mass Storage (12 Mb/s, 100mA)\n"
 "       sandbox flash flash-stick@1\n"
 "     \n";
 
@@ -258,3 +270,33 @@ static int dm_test_usb_tree_reorder(struct unit_test_state *uts)
        return 0;
 }
 DM_TEST(dm_test_usb_tree_reorder, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
+
+static int dm_test_usb_keyb(struct unit_test_state *uts)
+{
+       struct udevice *dev;
+
+       state_set_skip_delays(true);
+       ut_assertok(usb_init());
+
+       /* Initially there should be no characters */
+       ut_asserteq(0, tstc());
+
+       ut_assertok(uclass_get_device_by_name(UCLASS_USB_EMUL, "keyb",
+                                             &dev));
+
+       /*
+        * Add a string to the USB keyboard buffer - it should appear in
+        * stdin
+        */
+       ut_assertok(sandbox_usb_keyb_add_string(dev, "ab"));
+       ut_asserteq(1, tstc());
+       ut_asserteq('a', getc());
+       ut_asserteq(1, tstc());
+       ut_asserteq('b', getc());
+       ut_asserteq(0, tstc());
+
+       ut_assertok(usb_stop());
+
+       return 0;
+}
+DM_TEST(dm_test_usb_keyb, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);