|
@@ -56,7 +56,7 @@ static const char *dwc3_ep0_state_string(enum dwc3_ep0_state state)
|
|
|
}
|
|
|
|
|
|
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;
|
|
@@ -302,7 +302,7 @@ void dwc3_ep0_out_start(struct dwc3 *dwc)
|
|
|
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);
|
|
|
}
|
|
|
|
|
@@ -855,7 +855,7 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc,
|
|
|
|
|
|
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);
|
|
|
}
|
|
|
}
|
|
@@ -939,7 +939,7 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
|
|
|
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;
|
|
@@ -970,7 +970,7 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
|
|
|
*/
|
|
|
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);
|
|
@@ -980,7 +980,8 @@ static void __dwc3_ep0_do_control_data(struct dwc3 *dwc,
|
|
|
}
|
|
|
|
|
|
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);
|
|
@@ -995,7 +996,7 @@ static int dwc3_ep0_start_control_status(struct dwc3_ep *dep)
|
|
|
: 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)
|