Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- drivers/usb/gadget/composite.c | 7 ++++++- include/usb/composite.h | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index 37c67d5..ba3b9da 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -577,16 +577,21 @@ static void reset_config(struct usb_composite_dev *cdev) { struct usb_function *f; + if (cdev->in_reset_config) + return; + + cdev->in_reset_config = 1; + DBG(cdev, "reset config\n"); list_for_each_entry(f, &cdev->config->functions, list) { if (f->disable) f->disable(f); - bitmap_zero(f->endpoints, 32); } cdev->config = NULL; cdev->delayed_status = 0; + cdev->in_reset_config = 0; } static int set_config(struct usb_composite_dev *cdev, diff --git a/include/usb/composite.h b/include/usb/composite.h index 5b92c92..d24454c 100644 --- a/include/usb/composite.h +++ b/include/usb/composite.h @@ -392,6 +392,8 @@ struct usb_composite_dev { /* protects deactivations and delayed_status counts*/ spinlock_t lock; + + int in_reset_config; }; extern int usb_string_id(struct usb_composite_dev *c); -- 2.0.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox