aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/musb/musb_virthub.c
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-03-31 15:30:04 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-06-16 00:44:40 -0400
commit84e250ffa76dddc1bad84e04248a27f442c25986 (patch)
treeb253b1e2b030b160d2c458aece9c8122446e433f /drivers/usb/musb/musb_virthub.c
parentcc835e321a9f3fa5e083436872e198095f4805b9 (diff)
musb: proper hookup to transceiver drivers
Let the otg_transceiver in MUSB be managed by an external driver; don't assume it's integrated. OMAP3 chips need it to be external, and there may be ways to interact with the transceiver which add functionality to the system. Platform init code is responsible for setting up the transeciver, probably using the NOP transceiver for integrated transceivers. External ones will use whatever the board init code provided, such as twl4030 or something more hands-off. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/musb/musb_virthub.c')
-rw-r--r--drivers/usb/musb/musb_virthub.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/usb/musb/musb_virthub.c b/drivers/usb/musb/musb_virthub.c
index bf677acc83db..d7e1bc44f00a 100644
--- a/drivers/usb/musb/musb_virthub.c
+++ b/drivers/usb/musb/musb_virthub.c
@@ -78,18 +78,18 @@ static void musb_port_suspend(struct musb *musb, bool do_suspend)
78 DBG(3, "Root port suspended, power %02x\n", power); 78 DBG(3, "Root port suspended, power %02x\n", power);
79 79
80 musb->port1_status |= USB_PORT_STAT_SUSPEND; 80 musb->port1_status |= USB_PORT_STAT_SUSPEND;
81 switch (musb->xceiv.state) { 81 switch (musb->xceiv->state) {
82 case OTG_STATE_A_HOST: 82 case OTG_STATE_A_HOST:
83 musb->xceiv.state = OTG_STATE_A_SUSPEND; 83 musb->xceiv->state = OTG_STATE_A_SUSPEND;
84 musb->is_active = is_otg_enabled(musb) 84 musb->is_active = is_otg_enabled(musb)
85 && musb->xceiv.host->b_hnp_enable; 85 && musb->xceiv->host->b_hnp_enable;
86 musb_platform_try_idle(musb, 0); 86 musb_platform_try_idle(musb, 0);
87 break; 87 break;
88#ifdef CONFIG_USB_MUSB_OTG 88#ifdef CONFIG_USB_MUSB_OTG
89 case OTG_STATE_B_HOST: 89 case OTG_STATE_B_HOST:
90 musb->xceiv.state = OTG_STATE_B_WAIT_ACON; 90 musb->xceiv->state = OTG_STATE_B_WAIT_ACON;
91 musb->is_active = is_otg_enabled(musb) 91 musb->is_active = is_otg_enabled(musb)
92 && musb->xceiv.host->b_hnp_enable; 92 && musb->xceiv->host->b_hnp_enable;
93 musb_platform_try_idle(musb, 0); 93 musb_platform_try_idle(musb, 0);
94 break; 94 break;
95#endif 95#endif
@@ -116,7 +116,7 @@ static void musb_port_reset(struct musb *musb, bool do_reset)
116 void __iomem *mbase = musb->mregs; 116 void __iomem *mbase = musb->mregs;
117 117
118#ifdef CONFIG_USB_MUSB_OTG 118#ifdef CONFIG_USB_MUSB_OTG
119 if (musb->xceiv.state == OTG_STATE_B_IDLE) { 119 if (musb->xceiv->state == OTG_STATE_B_IDLE) {
120 DBG(2, "HNP: Returning from HNP; no hub reset from b_idle\n"); 120 DBG(2, "HNP: Returning from HNP; no hub reset from b_idle\n");
121 musb->port1_status &= ~USB_PORT_STAT_RESET; 121 musb->port1_status &= ~USB_PORT_STAT_RESET;
122 return; 122 return;
@@ -186,14 +186,14 @@ void musb_root_disconnect(struct musb *musb)
186 usb_hcd_poll_rh_status(musb_to_hcd(musb)); 186 usb_hcd_poll_rh_status(musb_to_hcd(musb));
187 musb->is_active = 0; 187 musb->is_active = 0;
188 188
189 switch (musb->xceiv.state) { 189 switch (musb->xceiv->state) {
190 case OTG_STATE_A_HOST: 190 case OTG_STATE_A_HOST:
191 case OTG_STATE_A_SUSPEND: 191 case OTG_STATE_A_SUSPEND:
192 musb->xceiv.state = OTG_STATE_A_WAIT_BCON; 192 musb->xceiv->state = OTG_STATE_A_WAIT_BCON;
193 musb->is_active = 0; 193 musb->is_active = 0;
194 break; 194 break;
195 case OTG_STATE_A_WAIT_VFALL: 195 case OTG_STATE_A_WAIT_VFALL:
196 musb->xceiv.state = OTG_STATE_B_IDLE; 196 musb->xceiv->state = OTG_STATE_B_IDLE;
197 break; 197 break;
198 default: 198 default:
199 DBG(1, "host disconnect (%s)\n", otg_state_string(musb)); 199 DBG(1, "host disconnect (%s)\n", otg_state_string(musb));
@@ -332,7 +332,7 @@ int musb_hub_control(
332 musb->port1_status |= USB_PORT_STAT_C_SUSPEND << 16; 332 musb->port1_status |= USB_PORT_STAT_C_SUSPEND << 16;
333 usb_hcd_poll_rh_status(musb_to_hcd(musb)); 333 usb_hcd_poll_rh_status(musb_to_hcd(musb));
334 /* NOTE: it might really be A_WAIT_BCON ... */ 334 /* NOTE: it might really be A_WAIT_BCON ... */
335 musb->xceiv.state = OTG_STATE_A_HOST; 335 musb->xceiv->state = OTG_STATE_A_HOST;
336 } 336 }
337 337
338 put_unaligned(cpu_to_le32(musb->port1_status 338 put_unaligned(cpu_to_le32(musb->port1_status