diff options
author | Felipe Balbi <balbi@ti.com> | 2011-08-30 15:48:08 +0300 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2011-09-09 13:02:17 +0300 |
commit | 0b7836a9eb32f626ffd3fe3045e8c618cb8ed965 (patch) | |
tree | 4b78a357ffbebab238e182a1de12efb8cf9b6e05 /drivers/usb/dwc3 | |
parent | 76cb323f80ac32833109e2c089842be2b99d8d2b (diff) | |
download | blackbird-op-linux-0b7836a9eb32f626ffd3fe3045e8c618cb8ed965.tar.gz blackbird-op-linux-0b7836a9eb32f626ffd3fe3045e8c618cb8ed965.zip |
usb: dwc3: drop EP0_STALL state
Whenever we issue a Set Stall command on EP0,
the state machine will be restarted and Stall
is cleared automatically, when core receives
the next SETUP packet.
There's no need to track that EP0_STALL state.
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/dwc3')
-rw-r--r-- | drivers/usb/dwc3/core.h | 1 | ||||
-rw-r--r-- | drivers/usb/dwc3/ep0.c | 2 | ||||
-rw-r--r-- | drivers/usb/dwc3/gadget.c | 10 |
3 files changed, 8 insertions, 5 deletions
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index 6c1ff7a58fcb..72388d8eda32 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h @@ -375,7 +375,6 @@ enum dwc3_ep0_state { EP0_SETUP_PHASE, EP0_DATA_PHASE, EP0_STATUS_PHASE, - EP0_STALL, }; enum dwc3_link_state { diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c index 618a29e11323..045c278274a5 100644 --- a/drivers/usb/dwc3/ep0.c +++ b/drivers/usb/dwc3/ep0.c @@ -68,8 +68,6 @@ static const char *dwc3_ep0_state_string(enum dwc3_ep0_state state) return "Data Phase"; case EP0_STATUS_PHASE: return "Status Phase"; - case EP0_STALL: - return "Stall"; default: return "UNKNOWN"; } diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index b5d95f8329f2..0c934a195deb 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -872,8 +872,14 @@ int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value) memset(¶ms, 0x00, sizeof(params)); if (value) { - if (dep->number == 0 || dep->number == 1) - dwc->ep0state = EP0_STALL; + if (dep->number == 0 || dep->number == 1) { + /* + * Whenever EP0 is stalled, we will restart + * the state machine, thus moving back to + * Setup Phase + */ + dwc->ep0state = EP0_SETUP_PHASE; + } ret = dwc3_send_gadget_ep_cmd(dwc, dep->number, DWC3_DEPCMD_SETSTALL, ¶ms); |