aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/chipidea/udc.c
diff options
context:
space:
mode:
authorMichael Grzeschik <m.grzeschik@pengutronix.de>2013-03-30 06:54:04 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-03-30 11:20:48 -0400
commit080ff5f4719e21c78f8ec96eea4f82b2fd047fa4 (patch)
tree7cb17f1151488046fff766680518c2027dd8cb83 /drivers/usb/chipidea/udc.c
parent938d323f14480ca8dcb9dbbe48add35a09246d09 (diff)
usb: chipidea: udc: only clear active and halted bits in qhead
The datasheet of the synopsys core describes only to overwrite the active and halted bits in the qhead before priming any endpoint. Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Reviewed-by: Felipe Balbi <balbi@ti.com> [Alex: fixed a case of line-too-long] Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/chipidea/udc.c')
-rw-r--r--drivers/usb/chipidea/udc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c
index ff393e1ecf4a..0e11172a4c84 100644
--- a/drivers/usb/chipidea/udc.c
+++ b/drivers/usb/chipidea/udc.c
@@ -461,7 +461,8 @@ static int _hardware_enqueue(struct ci13xxx_ep *mEp, struct ci13xxx_req *mReq)
461 461
462 /* QH configuration */ 462 /* QH configuration */
463 mEp->qh.ptr->td.next = cpu_to_le32(mReq->dma); /* TERMINATE = 0 */ 463 mEp->qh.ptr->td.next = cpu_to_le32(mReq->dma); /* TERMINATE = 0 */
464 mEp->qh.ptr->td.token &= cpu_to_le32(~TD_STATUS); /* clear status */ 464 mEp->qh.ptr->td.token &=
465 cpu_to_le32(~(TD_STATUS_HALTED|TD_STATUS_ACTIVE));
465 mEp->qh.ptr->cap |= cpu_to_le32(QH_ZLT); 466 mEp->qh.ptr->cap |= cpu_to_le32(QH_ZLT);
466 467
467 wmb(); /* synchronize before ep prime */ 468 wmb(); /* synchronize before ep prime */