In particular, this introduces musb_host_resume_root_hub()and
musb_host_poke_root_hub() which will be stubbed out later.

Signed-off-by: Daniel Mack <zon...@gmail.com>
Acked-by: Peter Korsgaard <jac...@sunsite.dk>
---
 drivers/usb/musb/musb_core.c | 18 +++++++-----------
 drivers/usb/musb/musb_host.c | 15 ++++++++++++++-
 drivers/usb/musb/musb_host.h |  3 +++
 3 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index 37a261a..13341c6 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -484,7 +484,7 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 
int_usb,
 
                                musb->xceiv->state = OTG_STATE_A_HOST;
                                musb->is_active = 1;
-                               usb_hcd_resume_root_hub(musb_to_hcd(musb));
+                               musb_host_resume_root_hub(musb);
                                break;
                        case OTG_STATE_B_WAIT_ACON:
                                musb->xceiv->state = OTG_STATE_B_PERIPHERAL;
@@ -501,7 +501,7 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 
int_usb,
                        case OTG_STATE_A_SUSPEND:
                                /* possibly DISCONNECT is upcoming */
                                musb->xceiv->state = OTG_STATE_A_HOST;
-                               usb_hcd_resume_root_hub(musb_to_hcd(musb));
+                               musb_host_resume_root_hub(musb);
                                break;
                        case OTG_STATE_B_WAIT_ACON:
                        case OTG_STATE_B_PERIPHERAL:
@@ -643,7 +643,7 @@ static irqreturn_t musb_stage0_irq(struct musb *musb, u8 
int_usb,
                         * undesired detour through A_WAIT_BCON.
                         */
                        musb_hnp_stop(musb);
-                       usb_hcd_resume_root_hub(musb_to_hcd(musb));
+                       musb_host_resume_root_hub(musb);
                        musb_root_disconnect(musb);
                        musb_platform_try_idle(musb, jiffies
                                        + msecs_to_jiffies(musb->a_wait_bcon
@@ -734,17 +734,13 @@ b_host:
                        if ((devctl & MUSB_DEVCTL_VBUS)
                                        == (3 << MUSB_DEVCTL_VBUS_SHIFT)) {
                                musb->xceiv->state = OTG_STATE_A_HOST;
-                               hcd->self.is_b_host = 0;
+                               if (hcd)
+                                       hcd->self.is_b_host = 0;
                        }
                        break;
                }
 
-               /* poke the root hub */
-               MUSB_HST_MODE(musb);
-               if (hcd->status_urb)
-                       usb_hcd_poll_rh_status(hcd);
-               else
-                       usb_hcd_resume_root_hub(hcd);
+               musb_host_poke_root_hub(musb);
 
                dev_dbg(musb->controller, "CONNECT (%s) devctl %02x\n",
                                usb_otg_state_string(musb->xceiv->state), 
devctl);
@@ -759,7 +755,7 @@ b_host:
                switch (musb->xceiv->state) {
                case OTG_STATE_A_HOST:
                case OTG_STATE_A_SUSPEND:
-                       usb_hcd_resume_root_hub(musb_to_hcd(musb));
+                       musb_host_resume_root_hub(musb);
                        musb_root_disconnect(musb);
                        if (musb->a_wait_bcon != 0)
                                musb_platform_try_idle(musb, jiffies
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index 8914dec..8b977d2 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -46,7 +46,6 @@
 #include "musb_core.h"
 #include "musb_host.h"
 
-
 /* MUSB HOST status 22-mar-2006
  *
  * - There's still lots of partial code duplication for fault paths, so
@@ -2608,3 +2607,17 @@ const struct hc_driver musb_hc_driver = {
        /* .start_port_reset    = NULL, */
        /* .hub_irq_enable      = NULL, */
 };
+
+void musb_host_resume_root_hub(struct musb *musb)
+{
+       usb_hcd_resume_root_hub(musb_to_hcd(musb));
+}
+
+void musb_host_poke_root_hub(struct musb *musb)
+{
+       MUSB_HST_MODE(musb);
+       if (musb_to_hcd(musb)->status_urb)
+               usb_hcd_poll_rh_status(musb_to_hcd(musb));
+       else
+               usb_hcd_resume_root_hub(musb_to_hcd(musb));
+}
diff --git a/drivers/usb/musb/musb_host.h b/drivers/usb/musb/musb_host.h
index 9670269..c63e585 100644
--- a/drivers/usb/musb/musb_host.h
+++ b/drivers/usb/musb/musb_host.h
@@ -89,6 +89,9 @@ extern void musb_host_tx(struct musb *, u8);
 extern void musb_host_rx(struct musb *, u8);
 extern void musb_root_disconnect(struct musb *musb);
 
+extern void musb_host_resume_root_hub(struct musb *musb);
+extern void musb_host_poke_root_hub(struct musb *musb);
+
 struct usb_hcd;
 
 extern int musb_hub_status_data(struct usb_hcd *hcd, char *buf);
-- 
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to