return 0;
 }
 
-#ifdef CONFIG_PM
-void musb_platform_save_context(struct musb *musb,
-       struct musb_context_registers *musb_context)
+static int am35x_musb_suspend(struct musb *musb)
 {
        phy_off();
+
+       return 0;
 }
 
-void musb_platform_restore_context(struct musb *musb,
-       struct musb_context_registers *musb_context)
+static int am35x_musb_resume(struct musb *musb)
 {
        phy_on();
+
+       return 0;
 }
-#endif
 
 /* AM35x supports only 32bit read operation */
 void musb_read_fifo(struct musb_hw_ep *hw_ep, u16 len, u8 *dst)
        .set_mode       = am35x_musb_set_mode,
        .try_idle       = am35x_musb_try_idle,
 
+       .suspend        = am35x_musb_suspend,
+       .resume         = am35x_musb_resume,
+
        .set_vbus       = am35x_musb_set_vbus,
 };
 
 
        return 0;
 }
 
-#ifdef CONFIG_PM
-void musb_platform_save_context(struct musb *musb,
-                       struct musb_context_registers *musb_context)
+static int bfin_musb_suspend(struct musb *musb)
 {
        if (is_host_active(musb))
                /*
                 * wakeup event.
                 */
                gpio_set_value(musb->config->gpio_vrsel, 0);
+
+       return 0;
 }
 
-void musb_platform_restore_context(struct musb *musb,
-                       struct musb_context_registers *musb_context)
+static int bfin_musb_resume(struct musb *musb)
 {
        bfin_musb_reg_init(musb);
+
+       return 0;
 }
-#endif
 
 static int bfin_musb_exit(struct musb *musb)
 {
        .set_mode       = bfin_musb_set_mode,
        .try_idle       = bfin_musb_try_idle,
 
+       .suspend        = bfin_musb_suspend,
+       .resume         = bfin_musb_resume,
+
        .vbus_status    = bfin_musb_vbus_status,
        .set_vbus       = bfin_musb_set_vbus,
 };
 
                }
        }
 
-       musb_platform_save_context(musb, &musb->context);
+       musb_platform_suspend(musb);
 }
 
 void musb_restore_context(struct musb *musb)
        void __iomem *ep_target_regs;
        void __iomem *epio;
 
-       musb_platform_restore_context(musb, &musb->context);
+       musb_platform_resume(musb);
 
        if (is_host_enabled(musb)) {
                musb_writew(musb_base, MUSB_FRAME, musb->context.frame);
 
 
 extern void musb_hnp_stop(struct musb *musb);
 
-#ifdef CONFIG_PM
-#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \
-    defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_BLACKFIN)
-extern void musb_platform_save_context(struct musb *musb,
-               struct musb_context_registers *musb_context);
-extern void musb_platform_restore_context(struct musb *musb,
-               struct musb_context_registers *musb_context);
-#else
-#define musb_platform_save_context(m, x)       do {} while (0)
-#define musb_platform_restore_context(m, x)    do {} while (0)
-#endif
-
-#endif
-
 static inline void musb_platform_set_vbus(struct musb *musb, int is_on)
 {
        if (musb->ops->set_vbus)
 
        return 0;
 }
 
-#ifdef CONFIG_PM
-void musb_platform_save_context(struct musb *musb,
-               struct musb_context_registers *musb_context)
+static void omap2430_save_context(struct musb *musb)
 {
-       musb_context->otg_sysconfig = musb_readl(musb->mregs, OTG_SYSCONFIG);
-       musb_context->otg_forcestandby = musb_readl(musb->mregs, OTG_FORCESTDBY);
+       musb->context.otg_sysconfig = musb_readl(musb->mregs, OTG_SYSCONFIG);
+       musb->context.otg_forcestandby = musb_readl(musb->mregs, OTG_FORCESTDBY);
 }
 
-void musb_platform_restore_context(struct musb *musb,
-               struct musb_context_registers *musb_context)
+static void omap2430_restore_context(struct musb *musb)
 {
-       musb_writel(musb->mregs, OTG_SYSCONFIG, musb_context->otg_sysconfig);
-       musb_writel(musb->mregs, OTG_FORCESTDBY, musb_context->otg_forcestandby);
+       musb_writel(musb->mregs, OTG_SYSCONFIG, musb->context.otg_sysconfig);
+       musb_writel(musb->mregs, OTG_FORCESTDBY, musb->context.otg_forcestandby);
 }
-#endif
 
 static int omap2430_musb_suspend(struct musb *musb)
 {
        l |= ENABLEWAKEUP;      /* enable wakeup */
        musb_writel(musb->mregs, OTG_SYSCONFIG, l);
 
+       omap2430_save_context(musb);
+
        otg_set_suspend(musb->xceiv, 1);
 
        return 0;
 
        otg_set_suspend(musb->xceiv, 0);
 
+       omap2430_restore_context(musb);
+
        l = musb_readl(musb->mregs, OTG_SYSCONFIG);
        l &= ~ENABLEWAKEUP;     /* disable wakeup */
        musb_writel(musb->mregs, OTG_SYSCONFIG, l);