|
@@ -43,6 +43,7 @@
|
|
|
|
|
|
static struct clk *phyclk, *clk48m, *clk32k;
|
|
|
static void __iomem *ctrl_base;
|
|
|
+static int usbotghs_control;
|
|
|
|
|
|
int omap4430_phy_init(struct device *dev)
|
|
|
{
|
|
@@ -129,6 +130,9 @@ int omap4430_phy_suspend(struct device *dev, int suspend)
|
|
|
omap4430_phy_set_clk(dev, 0);
|
|
|
/* Power down the phy */
|
|
|
__raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF);
|
|
|
+
|
|
|
+ /* save the context */
|
|
|
+ usbotghs_control = __raw_readl(ctrl_base + USBOTGHS_CONTROL);
|
|
|
} else {
|
|
|
/* Enable the internel phy clcoks */
|
|
|
omap4430_phy_set_clk(dev, 1);
|
|
@@ -137,6 +141,9 @@ int omap4430_phy_suspend(struct device *dev, int suspend)
|
|
|
__raw_writel(~PHY_PD, ctrl_base + CONTROL_DEV_CONF);
|
|
|
mdelay(200);
|
|
|
}
|
|
|
+
|
|
|
+ /* restore the context */
|
|
|
+ __raw_writel(usbotghs_control, ctrl_base + USBOTGHS_CONTROL);
|
|
|
}
|
|
|
|
|
|
return 0;
|