diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 37ad064b178c..20340ab2363a 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2623,7 +2623,6 @@ static const struct usb_gadget_ops dwc3_gadget_ops = { #define NUM_GSI_OUT_EPS 1 #define NUM_GSI_IN_EPS 2 - static int dwc3_gadget_init_control_endpoint(struct dwc3_ep *dep) { struct dwc3 *dwc = dep->dwc; @@ -2727,12 +2726,16 @@ static int dwc3_gadget_init_endpoints(struct dwc3 *dwc, u8 total) /* Reserve EPs at the end for GSI */ if (!dep->direction && num > out_count - NUM_GSI_OUT_EPS - 1) { + /* Allocation of TRBs are handled by GSI EP ops. */ + dwc3_free_trb_pool(dep); idx = num - (out_count - NUM_GSI_OUT_EPS - 1); snprintf(dep->name, sizeof(dep->name), "gsi-epout%d", idx); dep->gsi = true; } else if (dep->direction && num > in_count - NUM_GSI_IN_EPS - 1) { + /* Allocation of TRBs are handled by GSI EP ops. */ + dwc3_free_trb_pool(dep); idx = num - (in_count - NUM_GSI_IN_EPS - 1); snprintf(dep->name, sizeof(dep->name), "gsi-epin%d", idx);