mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 01:51:53 +00:00
net: phy: marvell: Refactor setting downshift into a helper
The 1116r has code to set downshift. Refactor this into a helper, so in future other marvell PHYs can use it. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fecd5e910e
commit
6ef05eb73c
@ -58,6 +58,7 @@
|
||||
#define MII_M1011_PHY_SCR 0x10
|
||||
#define MII_M1011_PHY_SCR_DOWNSHIFT_EN BIT(11)
|
||||
#define MII_M1011_PHY_SCR_DOWNSHIFT_SHIFT 12
|
||||
#define MII_M1011_PHY_SRC_DOWNSHIFT_MASK 0x7800
|
||||
#define MII_M1011_PHY_SCR_MDI (0x0 << 5)
|
||||
#define MII_M1011_PHY_SCR_MDI_X (0x1 << 5)
|
||||
#define MII_M1011_PHY_SCR_AUTO_CROSS (0x3 << 5)
|
||||
@ -263,6 +264,23 @@ static int marvell_set_polarity(struct phy_device *phydev, int polarity)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int marvell_set_downshift(struct phy_device *phydev, bool enable,
|
||||
u8 retries)
|
||||
{
|
||||
int reg;
|
||||
|
||||
reg = phy_read(phydev, MII_M1011_PHY_SCR);
|
||||
if (reg < 0)
|
||||
return reg;
|
||||
|
||||
reg &= MII_M1011_PHY_SRC_DOWNSHIFT_MASK;
|
||||
reg |= ((retries - 1) << MII_M1011_PHY_SCR_DOWNSHIFT_SHIFT);
|
||||
if (enable)
|
||||
reg |= MII_M1011_PHY_SCR_DOWNSHIFT_EN;
|
||||
|
||||
return phy_write(phydev, MII_M1011_PHY_SCR, reg);
|
||||
}
|
||||
|
||||
static int marvell_config_aneg(struct phy_device *phydev)
|
||||
{
|
||||
int err;
|
||||
@ -643,7 +661,6 @@ static int marvell_config_init(struct phy_device *phydev)
|
||||
|
||||
static int m88e1116r_config_init(struct phy_device *phydev)
|
||||
{
|
||||
int temp;
|
||||
int err;
|
||||
|
||||
err = genphy_soft_reset(phydev);
|
||||
@ -660,10 +677,7 @@ static int m88e1116r_config_init(struct phy_device *phydev)
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
temp = phy_read(phydev, MII_M1011_PHY_SCR);
|
||||
temp |= (7 << MII_M1011_PHY_SCR_DOWNSHIFT_SHIFT);
|
||||
temp |= MII_M1011_PHY_SCR_DOWNSHIFT_EN;
|
||||
err = phy_write(phydev, MII_M1011_PHY_SCR, temp);
|
||||
err = marvell_set_downshift(phydev, true, 8);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user