diff options
-rw-r--r-- | common/usbgadget.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/common/usbgadget.c b/common/usbgadget.c index fb508db947..8b351c7bf4 100644 --- a/common/usbgadget.c +++ b/common/usbgadget.c @@ -102,12 +102,18 @@ int usbgadget_register(bool dfu, const char *dfu_opts, static int usbgadget_autostart_set(struct param_d *param, void *ctx) { + static bool started; bool fastboot_bbu = get_fastboot_bbu(); + int err; - if (!IS_ENABLED(CONFIG_USB_GADGET_AUTOSTART) || !autostart) + if (!IS_ENABLED(CONFIG_USB_GADGET_AUTOSTART) || !autostart || started) return 0; - return usbgadget_register(true, NULL, true, NULL, acm, fastboot_bbu); + err = usbgadget_register(true, NULL, true, NULL, acm, fastboot_bbu); + if (!err) + started = true; + + return err; } static int usbgadget_globalvars_init(void) |