* ep0.c - DesignWare USB3 DRD Controller Endpoint 0 Handling
*
* Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com
- * All rights reserved.
*
* Authors: Felipe Balbi <balbi@ti.com>,
* Sebastian Andrzej Siewior <bigeasy@linutronix.de>
dwc3_trb_to_hw(&trb, trb_hw);
memset(¶ms, 0, sizeof(params));
- params.param0.depstrtxfer.transfer_desc_addr_high =
- upper_32_bits(dwc->ep0_trb_addr);
- params.param1.depstrtxfer.transfer_desc_addr_low =
- lower_32_bits(dwc->ep0_trb_addr);
+ params.param0 = upper_32_bits(dwc->ep0_trb_addr);
+ params.param1 = lower_32_bits(dwc->ep0_trb_addr);
ret = dwc3_send_gadget_ep_cmd(dwc, dep->number,
DWC3_DEPCMD_STARTTRANSFER, ¶ms);
u32 cfg;
int ret;
+ dwc->start_config_issued = false;
cfg = le16_to_cpu(ctrl->wValue);
switch (dwc->dev_state) {
len = le16_to_cpu(ctrl->wLength);
if (!len) {
- dwc->three_stage_setup = 0;
+ dwc->three_stage_setup = false;
+ dwc->ep0_expect_in = false;
dwc->ep0_next_event = DWC3_EP0_NRDY_STATUS;
} else {
- dwc->three_stage_setup = 1;
+ dwc->three_stage_setup = true;
+ dwc->ep0_expect_in = !!(ctrl->bRequestType & USB_DIR_IN);
dwc->ep0_next_event = DWC3_EP0_NRDY_DATA;
}
- dwc->ep0_expect_in = !!(ctrl->bRequestType & USB_DIR_IN);
-
if ((ctrl->bRequestType & USB_TYPE_MASK) == USB_TYPE_STANDARD)
ret = dwc3_ep0_std_request(dwc, ctrl);
else
/* for some reason we did not get everything out */
dwc3_ep0_stall_and_restart(dwc);
- dwc3_gadget_giveback(dep, r, -ECONNRESET);
} else {
/*
* handle the case where we have to send a zero packet. This
if (dwc->ep0_next_event != DWC3_EP0_NRDY_DATA) {
dev_vdbg(dwc->dev, "Expected %d got %d\n",
- DEPEVT_STATUS_CONTROL_DATA,
- event->status);
+ dwc->ep0_next_event,
+ DWC3_EP0_NRDY_DATA);
dwc3_ep0_stall_and_restart(dwc);
return;
if (dwc->ep0_next_event != DWC3_EP0_NRDY_STATUS) {
dev_vdbg(dwc->dev, "Expected %d got %d\n",
- DEPEVT_STATUS_CONTROL_STATUS,
- event->status);
+ dwc->ep0_next_event,
+ DWC3_EP0_NRDY_STATUS);
dwc3_ep0_stall_and_restart(dwc);
return;
dev_dbg(dwc->dev, "%s while ep%d%s in state '%s'\n",
dwc3_ep_event_string(event->endpoint_event),
- epnum, (epnum & 1) ? "in" : "out",
+ epnum >> 1, (epnum & 1) ? "in" : "out",
dwc3_ep0_state_string(dwc->ep0state));
switch (event->endpoint_event) {