瀏覽代碼

usb: musb: unconditionally save and restore the context on suspend

It appears not all platforms featuring a musb core need to save the musb
core registers at suspend time and restore them on resume.

The dsps platform does, however, and because it shouldn't cause any
trouble on other platforms, do it unconditionally for all of them.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Daniel Mack 11 年之前
父節點
當前提交
c338412b5d
共有 1 個文件被更改,包括 13 次插入1 次删除
  1. 13 1
      drivers/usb/musb/musb_core.c

+ 13 - 1
drivers/usb/musb/musb_core.c

@@ -2224,16 +2224,28 @@ static int musb_suspend(struct device *dev)
 		 */
 		 */
 	}
 	}
 
 
+	musb_save_context(musb);
+
 	spin_unlock_irqrestore(&musb->lock, flags);
 	spin_unlock_irqrestore(&musb->lock, flags);
 	return 0;
 	return 0;
 }
 }
 
 
 static int musb_resume_noirq(struct device *dev)
 static int musb_resume_noirq(struct device *dev)
 {
 {
-	/* for static cmos like DaVinci, register values were preserved
+	struct musb	*musb = dev_to_musb(dev);
+
+	/*
+	 * For static cmos like DaVinci, register values were preserved
 	 * unless for some reason the whole soc powered down or the USB
 	 * unless for some reason the whole soc powered down or the USB
 	 * module got reset through the PSC (vs just being disabled).
 	 * module got reset through the PSC (vs just being disabled).
+	 *
+	 * For the DSPS glue layer though, a full register restore has to
+	 * be done. As it shouldn't harm other platforms, we do it
+	 * unconditionally.
 	 */
 	 */
+
+	musb_restore_context(musb);
+
 	return 0;
 	return 0;
 }
 }