usb: dwc3: gadget: change detemination method of connect status

In current code, the connect status will be set to connected state when
reset interrupt occur and change to disconnected state in disconnect
interrupt.

But the usb charger may bring about reset signal in accident if we
connect and disconnect quickly. In this case, the dwc3 controller will
change link state and set to connect status, yet not change to
disconnected state when disconnect. So the dwc3 controller suspend
fail and result in a mistake when quick reconnect.

This patch set connect status to connected state when transfer complete
to make sure that usb is connect to PC exactly.

Change-Id: I8e5894d2e08b88bb5434222100d8f5c91c9f1a9d
Signed-off-by: Meng Dongyang <daniel.meng@rock-chips.com>
This commit is contained in:
Meng Dongyang
2016-12-02 18:27:09 +08:00
committed by Tao Huang
parent 2114bd9e7a
commit 0e16bcc09c

View File

@@ -2550,6 +2550,9 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc,
}
if (epnum == 0 || epnum == 1) {
if (!dwc->connected &&
event->endpoint_event == DWC3_DEPEVT_XFERCOMPLETE)
dwc->connected = true;
dwc3_ep0_interrupt(dwc, event);
return;
}
@@ -2716,8 +2719,6 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
{
u32 reg;
dwc->connected = true;
/*
* WORKAROUND: DWC3 revisions <1.88a have an issue which
* would cause a missing Disconnect Event if there's a