summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2015-11-08 23:47:44 -0700
committerSimon Glass <sjg@chromium.org>2015-11-19 20:27:50 -0700
commit3884c98c32cd5fb5b5b42185d5d0575659434bbf (patch)
treee19f19bdea17ed69e35014aed74df9963500bb7f
parent9723563aa821e9c9b881dfe6a082f6301ca69826 (diff)
dm: usb: Avoid time delays in sandbox tests
Currently the USB tests take around two seconds to run. Remove these unnecessary time delays so that the tests run quickly. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--common/usb_hub.c10
-rw-r--r--test/dm/test-main.c2
-rw-r--r--test/dm/usb.c3
3 files changed, 14 insertions, 1 deletions
diff --git a/common/usb_hub.c b/common/usb_hub.c
index a92c9fb73d..e1de813adf 100644
--- a/common/usb_hub.c
+++ b/common/usb_hub.c
@@ -31,6 +31,9 @@
#include <asm/unaligned.h>
#include <linux/ctype.h>
#include <asm/byteorder.h>
+#ifdef CONFIG_SANDBOX
+#include <asm/state.h>
+#endif
#include <asm/unaligned.h>
#include <dm/root.h>
@@ -466,7 +469,12 @@ static int usb_hub_configure(struct usb_device *dev)
unsigned short portstatus, portchange;
int ret;
ulong start = get_timer(0);
+ uint delay = CONFIG_SYS_HZ;
+#ifdef CONFIG_SANDBOX
+ if (state_get_skip_delays())
+ delay = 0;
+#endif
#ifdef CONFIG_DM_USB
debug("\n\nScanning '%s' port %d\n", dev->dev->name, i + 1);
#else
@@ -498,7 +506,7 @@ static int usb_hub_configure(struct usb_device *dev)
if (portstatus & USB_PORT_STAT_CONNECTION)
break;
- } while (get_timer(start) < CONFIG_SYS_HZ * 1);
+ } while (get_timer(start) < delay);
if (ret < 0)
continue;
diff --git a/test/dm/test-main.c b/test/dm/test-main.c
index 0e43ab9548..a36a9c04ab 100644
--- a/test/dm/test-main.c
+++ b/test/dm/test-main.c
@@ -9,6 +9,7 @@
#include <dm.h>
#include <errno.h>
#include <malloc.h>
+#include <asm/state.h>
#include <dm/test.h>
#include <dm/root.h>
#include <dm/uclass-internal.h>
@@ -113,6 +114,7 @@ static int dm_test_main(const char *test_name)
ut_assertok(dm_scan_fdt(gd->fdt_blob, false));
test->func(uts);
+ state_set_skip_delays(false);
ut_assertok(dm_test_destroy(uts));
}
diff --git a/test/dm/usb.c b/test/dm/usb.c
index 9939d837a9..4300bbd5c9 100644
--- a/test/dm/usb.c
+++ b/test/dm/usb.c
@@ -8,6 +8,8 @@
#include <dm.h>
#include <usb.h>
#include <asm/io.h>
+#include <asm/state.h>
+#include <dm/device-internal.h>
#include <dm/test.h>
#include <test/ut.h>
@@ -35,6 +37,7 @@ static int dm_test_usb_flash(struct unit_test_state *uts)
block_dev_desc_t *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));