Skip to content

Commit

Permalink
net: phy: bcm7xxx: enable auto power down
Browse files Browse the repository at this point in the history
The 28nm process BCM7xxx internal Gigabit PHYs all support automatic
power down, turn on that feature as part of the configuration
initialization callback.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Florian Fainelli authored and David S. Miller committed Aug 23, 2014
1 parent 7053147 commit 9df54dd
Showing 1 changed file with 26 additions and 1 deletion.
27 changes: 26 additions & 1 deletion drivers/net/phy/bcm7xxx.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,27 @@ static int bcm7xxx_28nm_afe_config_init(struct phy_device *phydev)
return 0;
}

static int bcm7xxx_apd_enable(struct phy_device *phydev)
{
int val;

/* Enable powering down of the DLL during auto-power down */
val = bcm54xx_shadow_read(phydev, BCM54XX_SHD_SCR3);
if (val < 0)
return val;

val |= BCM54XX_SHD_SCR3_DLLAPD_DIS;
bcm54xx_shadow_write(phydev, BCM54XX_SHD_SCR3, val);

/* Enable auto-power down */
val = bcm54xx_shadow_read(phydev, BCM54XX_SHD_APD);
if (val < 0)
return val;

val |= BCM54XX_SHD_APD_EN;
return bcm54xx_shadow_write(phydev, BCM54XX_SHD_APD, val);
}

static int bcm7xxx_28nm_config_init(struct phy_device *phydev)
{
int ret;
Expand All @@ -154,7 +175,11 @@ static int bcm7xxx_28nm_config_init(struct phy_device *phydev)
if (ret)
return ret;

return bcm7xxx_28nm_afe_config_init(phydev);
ret = bcm7xxx_28nm_afe_config_init(phydev);
if (ret)
return ret;

return bcm7xxx_apd_enable(phydev);
}

static int bcm7xxx_28nm_resume(struct phy_device *phydev)
Expand Down

0 comments on commit 9df54dd

Please sign in to comment.