1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-20 10:02:07 +02:00

bootstd: usb: Avoid initing USB twice

This causes crashes on some boards, e.g. rockpro64. In any case, we
should not do it.

Check the usb_started flag to avoid this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Jonas Karlman <jonas@kwiboo.se>
Tested-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Simon Glass
2023-05-05 20:03:04 -06:00
committed by Tom Rini
parent 9fea3a799d
commit 8c29b73278
2 changed files with 8 additions and 0 deletions

View File

@@ -22,6 +22,9 @@ static int usb_bootdev_bind(struct udevice *dev)
static int usb_bootdev_hunt(struct bootdev_hunter *info, bool show) static int usb_bootdev_hunt(struct bootdev_hunter *info, bool show)
{ {
if (usb_started)
return 0;
return usb_init(); return usb_init();
} }

View File

@@ -306,6 +306,7 @@ static int bootdev_test_hunter(struct unit_test_state *uts)
{ {
struct bootstd_priv *std; struct bootstd_priv *std;
usb_started = false;
test_set_skip_delays(true); test_set_skip_delays(true);
/* get access to the used hunters */ /* get access to the used hunters */
@@ -346,6 +347,7 @@ static int bootdev_test_cmd_hunt(struct unit_test_state *uts)
struct bootstd_priv *std; struct bootstd_priv *std;
test_set_skip_delays(true); test_set_skip_delays(true);
usb_started = false;
/* get access to the used hunters */ /* get access to the used hunters */
ut_assertok(bootstd_get_priv(&std)); ut_assertok(bootstd_get_priv(&std));
@@ -474,6 +476,7 @@ BOOTSTD_TEST(bootdev_test_bootable, UT_TESTF_DM | UT_TESTF_SCAN_FDT);
/* Check hunting for bootdev of a particular priority */ /* Check hunting for bootdev of a particular priority */
static int bootdev_test_hunt_prio(struct unit_test_state *uts) static int bootdev_test_hunt_prio(struct unit_test_state *uts)
{ {
usb_started = false;
test_set_skip_delays(true); test_set_skip_delays(true);
console_record_reset_enable(); console_record_reset_enable();
@@ -502,6 +505,8 @@ static int bootdev_test_hunt_label(struct unit_test_state *uts)
struct bootstd_priv *std; struct bootstd_priv *std;
int mflags; int mflags;
usb_started = false;
/* get access to the used hunters */ /* get access to the used hunters */
ut_assertok(bootstd_get_priv(&std)); ut_assertok(bootstd_get_priv(&std));