|
@@ -103,13 +103,6 @@ int omap4430_phy_set_clk(struct device *dev, int on)
|
|
|
int omap4430_phy_power(struct device *dev, int ID, int on)
|
|
|
{
|
|
|
if (on) {
|
|
|
- /* enabled the clocks */
|
|
|
- omap4430_phy_set_clk(dev, 1);
|
|
|
- /* power on the phy */
|
|
|
- if (__raw_readl(ctrl_base + CONTROL_DEV_CONF) & PHY_PD) {
|
|
|
- __raw_writel(~PHY_PD, ctrl_base + CONTROL_DEV_CONF);
|
|
|
- mdelay(200);
|
|
|
- }
|
|
|
if (ID)
|
|
|
/* enable VBUS valid, IDDIG groung */
|
|
|
__raw_writel(AVALID | VBUSVALID, ctrl_base +
|
|
@@ -125,10 +118,25 @@ int omap4430_phy_power(struct device *dev, int ID, int on)
|
|
|
/* Enable session END and IDIG to high impedence. */
|
|
|
__raw_writel(SESSEND | IDDIG, ctrl_base +
|
|
|
USBOTGHS_CONTROL);
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+int omap4430_phy_suspend(struct device *dev, int suspend)
|
|
|
+{
|
|
|
+ if (suspend) {
|
|
|
/* Disable the clocks */
|
|
|
omap4430_phy_set_clk(dev, 0);
|
|
|
/* Power down the phy */
|
|
|
__raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF);
|
|
|
+ } else {
|
|
|
+ /* Enable the internel phy clcoks */
|
|
|
+ omap4430_phy_set_clk(dev, 1);
|
|
|
+ /* power on the phy */
|
|
|
+ if (__raw_readl(ctrl_base + CONTROL_DEV_CONF) & PHY_PD) {
|
|
|
+ __raw_writel(~PHY_PD, ctrl_base + CONTROL_DEV_CONF);
|
|
|
+ mdelay(200);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return 0;
|