[fastboot] Reset USB on `fastboot boot` or `fastboot continue`

Perform a full USB reset before fastboot continue/fastboot boot to
remove fastboot from the USB descriptor, so that host won't see the
device in fastboot mode.

Test: Stop after fastboot continue/boot and run `fastboot devices`
Bug: b/327281431
Change-Id: I156096549b1665fb5691f6a699ac5910531b42d8
Reviewed-on: https://turquoise-internal-review.googlesource.com/c/third_party/u-boot/+/814015
Reviewed-by: Yecheng Zhao <zyecheng@google.com>
GitOrigin-RevId: 44f3d5d4c3598cfdeaf3fbecda2c6f6c90f40741
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index d70b4a2..6fb9ba8 100644
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -1107,6 +1107,9 @@
 
 static void do_bootm_on_complete(struct usb_ep *ep, struct usb_request *req)
 {
+	// Performs a full USB reset to remove the fastboot interface descriptor
+	run_command("usb reset", 0);
+
 	zircon_ram_boot();
 
 	/* This only happens if image is somehow faulty so we start over */
@@ -1128,6 +1131,9 @@
 
 static void do_exit_on_complete(struct usb_ep *ep, struct usb_request *req)
 {
+	// Performs a full USB reset to remove the fastboot interface descriptor
+	run_command("usb reset", 0);
+
 	puts("Booting kernel..\n");
 	run_command("run storeboot", 0);