All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] musb_hdrc: Fix musb_hnp_stop() to return to device mode
@ 2007-08-21 12:41 Tony Lindgren
  2007-08-21 13:54 ` How do we update mach-types on OMAPGIT? Syed Mohammed, Khasim
  2007-08-22  6:22 ` [PATCH] musb_hdrc: Fix musb_hnp_stop() to return to device mode Tony Lindgren
  0 siblings, 2 replies; 6+ messages in thread
From: Tony Lindgren @ 2007-08-21 12:41 UTC (permalink / raw)
  To: linux-omap-open-source

[-- Attachment #1: Type: text/plain, Size: 57 bytes --]

This one fixes some USB HS OPT test unreliability.

Tony

[-- Attachment #2: musb-fix-hnp.patch --]
[-- Type: text/x-diff, Size: 1706 bytes --]

From: Tony Lindgren <tony@atomide.com>
Subject: musb_hdrc: Fix musb_hnp_stop() to return to device mode

Without this patch HNP does not return to device mode, which can
confuse OPT tests. Also change to b_host if SUSPEND and CONNECT
simultaneously as b_peripheral, and fix a comment.

Signed-off-by: Tony Lindgren <tony@atomide.com>

--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -331,6 +331,7 @@ void musb_hnp_stop(struct musb *musb)
 		DBG(1, "HNP: Disabling HR\n");
 		hcd->self.is_b_host = 0;
 		musb->xceiv.state = OTG_STATE_B_PERIPHERAL;
+		MUSB_DEV_MODE(musb);
 		reg = musb_readb(mbase, MUSB_POWER);
 		reg |= MUSB_POWER_SUSPENDM;
 		musb_writeb(mbase, MUSB_POWER, reg);
@@ -579,6 +580,15 @@ static irqreturn_t musb_stage0_irq(struct musb * musb, u8 int_usb,
 
 		/* indicate new connection to OTG machine */
 		switch (musb->xceiv.state) {
+		case OTG_STATE_B_PERIPHERAL:
+			if (int_usb & MUSB_INTR_SUSPEND) {
+				DBG(1, "HNP: SUSPEND and CONNECT, now b_host\n");
+				musb->xceiv.state = OTG_STATE_B_HOST;
+				hcd->self.is_b_host = 1;
+				int_usb &= ~MUSB_INTR_SUSPEND;
+			} else
+				DBG(1, "CONNECT as b_peripheral???\n");
+			break;
 		case OTG_STATE_B_WAIT_ACON:
 			DBG(1, "HNP: Waiting to switch to b_host state\n");
 			musb->xceiv.state = OTG_STATE_B_HOST;
@@ -707,11 +717,11 @@ static irqreturn_t musb_stage2_irq(struct musb * musb, u8 int_usb,
 		case OTG_STATE_B_HOST:
 			musb_hnp_stop(musb);
 			break;
-			/* FALLTHROUGH */
 		case OTG_STATE_A_PERIPHERAL:
 			musb_root_disconnect(musb);
 			/* FALLTHROUGH */
 		case OTG_STATE_B_WAIT_ACON:
+			/* FALLTHROUGH */
 #endif	/* OTG */
 #ifdef CONFIG_USB_GADGET_MUSB_HDRC
 		case OTG_STATE_B_PERIPHERAL:

[-- Attachment #3: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-08-22  6:22 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-21 12:41 [PATCH] musb_hdrc: Fix musb_hnp_stop() to return to device mode Tony Lindgren
2007-08-21 13:54 ` How do we update mach-types on OMAPGIT? Syed Mohammed, Khasim
2007-08-21 13:56   ` Tony Lindgren
2007-08-21 14:04     ` Syed Mohammed, Khasim
2007-08-22  6:21       ` Tony Lindgren
2007-08-22  6:22 ` [PATCH] musb_hdrc: Fix musb_hnp_stop() to return to device mode Tony Lindgren

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.