[PATCH v2 06/39] bootstd: Create a function to reset USB

Heinrich Schuchardt xypron.glpk at gmx.de
Wed Aug 7 03:56:31 CEST 2024


On 06.08.24 14:58, Simon Glass wrote:
> Set up a function for this, since it needs to be used from multiple test
> files.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> (no changes since v1)
>
>   test/boot/bootdev.c        | 19 ++++++-------------
>   test/boot/bootstd_common.c | 12 ++++++++++++
>   test/boot/bootstd_common.h |  8 ++++++++
>   3 files changed, 26 insertions(+), 13 deletions(-)
>
> diff --git a/test/boot/bootdev.c b/test/boot/bootdev.c
> index 1bf5929c396..de16a51956d 100644
> --- a/test/boot/bootdev.c
> +++ b/test/boot/bootdev.c
> @@ -16,13 +16,6 @@
>   #include <test/ut.h>
>   #include "bootstd_common.h"
>
> -/* Allow reseting the USB-started flag */
> -#if defined(CONFIG_USB_HOST) || defined(CONFIG_USB_GADGET)
> -extern bool usb_started;
> -#else
> -#include <usb.h>
> -#endif
> -
>   /* Check 'bootdev list' command */
>   static int bootdev_test_cmd_list(struct unit_test_state *uts)
>   {
> @@ -201,7 +194,7 @@ static int bootdev_test_order(struct unit_test_state *uts)
>   	test_set_skip_delays(true);
>
>   	/* Start up USB which gives us three additional bootdevs */
> -	usb_started = false;
> +	bootstd_reset_usb();
>   	ut_assertok(run_command("usb start", 0));
>
>   	/*
> @@ -317,7 +310,7 @@ static int bootdev_test_prio(struct unit_test_state *uts)
>   	test_set_eth_enable(false);
>
>   	/* Start up USB which gives us three additional bootdevs */
> -	usb_started = false;
> +	bootstd_reset_usb();
>   	ut_assertok(run_command("usb start", 0));
>
>   	ut_assertok(bootstd_test_drop_bootdev_order(uts));
> @@ -357,7 +350,7 @@ static int bootdev_test_hunter(struct unit_test_state *uts)
>   {
>   	struct bootstd_priv *std;
>
> -	usb_started = false;
> +	bootstd_reset_usb();
>   	test_set_skip_delays(true);
>
>   	/* get access to the used hunters */
> @@ -398,7 +391,7 @@ static int bootdev_test_cmd_hunt(struct unit_test_state *uts)
>   	struct bootstd_priv *std;
>
>   	test_set_skip_delays(true);
> -	usb_started = false;
> +	bootstd_reset_usb();
>
>   	/* get access to the used hunters */
>   	ut_assertok(bootstd_get_priv(&std));
> @@ -527,7 +520,7 @@ BOOTSTD_TEST(bootdev_test_bootable, UT_TESTF_DM | UT_TESTF_SCAN_FDT);
>   /* Check hunting for bootdev of a particular priority */
>   static int bootdev_test_hunt_prio(struct unit_test_state *uts)
>   {
> -	usb_started = false;
> +	bootstd_reset_usb();
>   	test_set_skip_delays(true);
>
>   	console_record_reset_enable();
> @@ -556,7 +549,7 @@ static int bootdev_test_hunt_label(struct unit_test_state *uts)
>   	struct bootstd_priv *std;
>   	int mflags;
>
> -	usb_started = false;
> +	bootstd_reset_usb();
>
>   	/* get access to the used hunters */
>   	ut_assertok(bootstd_get_priv(&std));
> diff --git a/test/boot/bootstd_common.c b/test/boot/bootstd_common.c
> index e50539500a0..ff0aff4bbe7 100644
> --- a/test/boot/bootstd_common.c
> +++ b/test/boot/bootstd_common.c
> @@ -20,6 +20,13 @@
>   /* tracks whether bootstd_setup_for_tests() has been run yet */
>   bool vbe_setup_done;
>
> +/* Allow resetting the USB-started flag */
> +#if defined(CONFIG_USB_HOST) || defined(CONFIG_USB_GADGET)
> +extern bool usb_started;
> +#else
> +#include <usb.h>
> +#endif

Why can't you always include usb.h which defines usb_started?
Is there a bug in usb.h?

Best regards

Heinrich

> +
>   /* set up MMC for VBE tests */
>   int bootstd_setup_for_tests(void)
>   {
> @@ -88,6 +95,11 @@ int bootstd_test_check_mmc_hunter(struct unit_test_state *uts)
>   	return 0;
>   }
>
> +void bootstd_reset_usb(void)
> +{
> +	usb_started = false;
> +}
> +
>   int do_ut_bootstd(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>   {
>   	struct unit_test *tests = UNIT_TEST_SUITE_START(bootstd_test);
> diff --git a/test/boot/bootstd_common.h b/test/boot/bootstd_common.h
> index 4a126e43ff4..e29036c897c 100644
> --- a/test/boot/bootstd_common.h
> +++ b/test/boot/bootstd_common.h
> @@ -53,4 +53,12 @@ int bootstd_setup_for_tests(void);
>    */
>   int bootstd_test_check_mmc_hunter(struct unit_test_state *uts);
>
> +/**
> + * bootstd_reset_usb() - Reset the USB subsystem
> + *
> + * Resets USB so that it can be started (and scanning) again. This is useful in
> + * tests which need to use USB.
> + */
> +void bootstd_reset_usb(void);
> +
>   #endif



More information about the U-Boot mailing list