static struct clk *phyclk, *clk48m, *clk32k;
 static void __iomem *ctrl_base;
+static int usbotghs_control;
 
 int omap4430_phy_init(struct device *dev)
 {
                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);
                        __raw_writel(~PHY_PD, ctrl_base + CONTROL_DEV_CONF);
                        mdelay(200);
                }
+
+               /* restore the context */
+               __raw_writel(usbotghs_control, ctrl_base + USBOTGHS_CONTROL);
        }
 
        return 0;