USB: musb: fix build when !CONFIG_PM
[firefly-linux-kernel-4.4.55.git] / drivers / usb / musb / musb_core.c
index af77e46590065fd5b8890bd819ac20d0cc912b82..4000cf6d1e819a3cacd857b4316dd6efeeebe752 100644 (file)
@@ -769,7 +769,7 @@ static irqreturn_t musb_stage2_irq(struct musb *musb, u8 int_usb,
                case OTG_STATE_A_SUSPEND:
                        usb_hcd_resume_root_hub(musb_to_hcd(musb));
                        musb_root_disconnect(musb);
-                       if (musb->a_wait_bcon != 0)
+                       if (musb->a_wait_bcon != 0 && is_otg_enabled(musb))
                                musb_platform_try_idle(musb, jiffies
                                        + msecs_to_jiffies(musb->a_wait_bcon));
                        break;
@@ -2170,32 +2170,28 @@ static int musb_suspend(struct platform_device *pdev, pm_message_t message)
        return 0;
 }
 
-static int musb_resume(struct platform_device *pdev)
+static int musb_resume_early(struct platform_device *pdev)
 {
-       unsigned long   flags;
        struct musb     *musb = dev_to_musb(&pdev->dev);
 
        if (!musb->clock)
                return 0;
 
-       spin_lock_irqsave(&musb->lock, flags);
-
        if (musb->set_clock)
                musb->set_clock(musb->clock, 1);
        else
                clk_enable(musb->clock);
 
        /* for static cmos like DaVinci, register values were preserved
-        * unless for some reason the whole soc powered down and we're
-        * not treating that as a whole-system restart (e.g. swsusp)
+        * unless for some reason the whole soc powered down or the USB
+        * module got reset through the PSC (vs just being disabled).
         */
-       spin_unlock_irqrestore(&musb->lock, flags);
        return 0;
 }
 
 #else
 #define        musb_suspend    NULL
-#define        musb_resume     NULL
+#define        musb_resume_early       NULL
 #endif
 
 static struct platform_driver musb_driver = {
@@ -2207,7 +2203,7 @@ static struct platform_driver musb_driver = {
        .remove         = __devexit_p(musb_remove),
        .shutdown       = musb_shutdown,
        .suspend        = musb_suspend,
-       .resume         = musb_resume,
+       .resume_early   = musb_resume_early,
 };
 
 /*-------------------------------------------------------------------------*/