}
 
 static int dwc3_ep0_start_trans(struct dwc3 *dwc, u8 epnum, dma_addr_t buf_dma,
-               u32 len, u32 type)
+               u32 len, u32 type, bool chain)
 {
        struct dwc3_gadget_ep_cmd_params params;
        struct dwc3_trb                 *trb;
        int                             ret;
 
        ret = dwc3_ep0_start_trans(dwc, 0, dwc->ctrl_req_addr, 8,
-                       DWC3_TRBCTL_CONTROL_SETUP);
+                       DWC3_TRBCTL_CONTROL_SETUP, false);
        WARN_ON(ret < 0);
 }
 
 
                        ret = dwc3_ep0_start_trans(dwc, epnum,
                                        dwc->ctrl_req_addr, 0,
-                                       DWC3_TRBCTL_CONTROL_DATA);
+                                       DWC3_TRBCTL_CONTROL_DATA, false);
                        WARN_ON(ret < 0);
                }
        }
        if (req->request.length == 0) {
                ret = dwc3_ep0_start_trans(dwc, dep->number,
                                dwc->ctrl_req_addr, 0,
-                               DWC3_TRBCTL_CONTROL_DATA);
+                               DWC3_TRBCTL_CONTROL_DATA, false);
        } else if (!IS_ALIGNED(req->request.length, dep->endpoint.maxpacket)
                        && (dep->number == 0)) {
                u32     transfer_size = 0;
                 */
                ret = dwc3_ep0_start_trans(dwc, dep->number,
                                dwc->ep0_bounce_addr, transfer_size,
-                               DWC3_TRBCTL_CONTROL_DATA);
+                               DWC3_TRBCTL_CONTROL_DATA, false);
        } else {
                ret = usb_gadget_map_request(&dwc->gadget, &req->request,
                                dep->number);
                }
 
                ret = dwc3_ep0_start_trans(dwc, dep->number, req->request.dma,
-                               req->request.length, DWC3_TRBCTL_CONTROL_DATA);
+                               req->request.length, DWC3_TRBCTL_CONTROL_DATA,
+                               false);
        }
 
        WARN_ON(ret < 0);
                : DWC3_TRBCTL_CONTROL_STATUS2;
 
        return dwc3_ep0_start_trans(dwc, dep->number,
-                       dwc->ctrl_req_addr, 0, type);
+                       dwc->ctrl_req_addr, 0, type, false);
 }
 
 static void __dwc3_ep0_do_control_status(struct dwc3 *dwc, struct dwc3_ep *dep)