Hello. On 26-07-2012 10:03, Ajay M JAWADE wrote:
After sending the USB Bus reset, Host waits for High Speed Chirps. If the soft-disconnect and soft-connect happens during this chirp time, then Host doesn't detect this disconnect.
Why talk about soft-connect when we're already connected (as USB reset is in progress) and further you talk about disconnect only?
Host treats this as Full Speed Device as there are no chirps. To avoid this Full Speed Enumeration, soft-disconnect and soft-connect should have a 500 mili-second gap when USB cable is connected.
Signed-off-by: Ajay Jawade <ajay.jawade@xxxxxxxxxxxxxx> Acked-by: srinidhi kasagar <srinidhi.kasagar@xxxxxxxxxxxxxx> --- drivers/usb/musb/musb_gadget.c | 26 ++++++++++++++++++++++++++ 1 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c index f7194cf..801dbe6 100644 --- a/drivers/usb/musb/musb_gadget.c +++ b/drivers/usb/musb/musb_gadget.c
[...]
@@ -1751,6 +1752,31 @@ static int musb_gadget_pullup(struct usb_gadget *gadget, int is_on) /* NOTE: this assumes we are sensing vbus; we'd rather * not pullup unless the B-session is active. */ + + /* After sending the USB Bus reset, Host waits for + * High Speed Chirps. If the soft-disconnect and soft-connect + * happens during this chirp time, then Host doesn't + * detect this disconnect. Host treats this as Full Speed + * Device as there are no chirps. To avoid this Full Speed + * Enumeration, soft-disconnect and soft-connect should have + * a 500 mili-second delay when USB cable is connected.
s/mili-second/millisecond/
+ */ +
Empty line not needed here.
+ if (is_on && (is_on != musb->softconnect)) { + + /* USB cable presence is decided by reading the VBUS + * Level bits of DevCtl register. + */ +
Here too.
+ devctl = musb_readb(musb->mregs, MUSB_DEVCTL); + devctl = (devctl & MUSB_DEVCTL_VBUS) >> MUSB_DEVCTL_VBUS_SHIFT; +
And here too.
+ if (devctl != 0) { + /* USB Cable is connected. Delay the soft-connect */
s/connected/powered/?
+ msleep(500); + } + } +
WBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html