mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
net: lan743x: Create separate Link Speed Duplex state function
Create separate Link Speed Duplex (LSD) update state function from lan743x_sgmii_config () to use as subroutine. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Raju Lakkaraju <Raju.Lakkaraju@microchip.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ef0250456c
commit
92b740a43f
|
|
@ -992,6 +992,42 @@ static int lan743x_sgmii_write(struct lan743x_adapter *adapter,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int lan743x_get_lsd(int speed, int duplex, u8 mss)
|
||||
{
|
||||
int lsd;
|
||||
|
||||
switch (speed) {
|
||||
case SPEED_2500:
|
||||
if (mss == MASTER_SLAVE_STATE_SLAVE)
|
||||
lsd = LINK_2500_SLAVE;
|
||||
else
|
||||
lsd = LINK_2500_MASTER;
|
||||
break;
|
||||
case SPEED_1000:
|
||||
if (mss == MASTER_SLAVE_STATE_SLAVE)
|
||||
lsd = LINK_1000_SLAVE;
|
||||
else
|
||||
lsd = LINK_1000_MASTER;
|
||||
break;
|
||||
case SPEED_100:
|
||||
if (duplex == DUPLEX_FULL)
|
||||
lsd = LINK_100FD;
|
||||
else
|
||||
lsd = LINK_100HD;
|
||||
break;
|
||||
case SPEED_10:
|
||||
if (duplex == DUPLEX_FULL)
|
||||
lsd = LINK_10FD;
|
||||
else
|
||||
lsd = LINK_10HD;
|
||||
break;
|
||||
default:
|
||||
lsd = -EINVAL;
|
||||
}
|
||||
|
||||
return lsd;
|
||||
}
|
||||
|
||||
static int lan743x_sgmii_mpll_set(struct lan743x_adapter *adapter,
|
||||
u16 baud)
|
||||
{
|
||||
|
|
@ -1179,42 +1215,21 @@ static int lan743x_sgmii_config(struct lan743x_adapter *adapter)
|
|||
{
|
||||
struct net_device *netdev = adapter->netdev;
|
||||
struct phy_device *phydev = netdev->phydev;
|
||||
enum lan743x_sgmii_lsd lsd = POWER_DOWN;
|
||||
bool status;
|
||||
int ret;
|
||||
|
||||
switch (phydev->speed) {
|
||||
case SPEED_2500:
|
||||
if (phydev->master_slave_state == MASTER_SLAVE_STATE_MASTER)
|
||||
lsd = LINK_2500_MASTER;
|
||||
else
|
||||
lsd = LINK_2500_SLAVE;
|
||||
break;
|
||||
case SPEED_1000:
|
||||
if (phydev->master_slave_state == MASTER_SLAVE_STATE_MASTER)
|
||||
lsd = LINK_1000_MASTER;
|
||||
else
|
||||
lsd = LINK_1000_SLAVE;
|
||||
break;
|
||||
case SPEED_100:
|
||||
if (phydev->duplex)
|
||||
lsd = LINK_100FD;
|
||||
else
|
||||
lsd = LINK_100HD;
|
||||
break;
|
||||
case SPEED_10:
|
||||
if (phydev->duplex)
|
||||
lsd = LINK_10FD;
|
||||
else
|
||||
lsd = LINK_10HD;
|
||||
break;
|
||||
default:
|
||||
ret = lan743x_get_lsd(phydev->speed, phydev->duplex,
|
||||
phydev->master_slave_state);
|
||||
if (ret < 0) {
|
||||
netif_err(adapter, drv, adapter->netdev,
|
||||
"Invalid speed %d\n", phydev->speed);
|
||||
return -EINVAL;
|
||||
"error %d link-speed-duplex(LSD) invalid\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
adapter->sgmii_lsd = lsd;
|
||||
adapter->sgmii_lsd = ret;
|
||||
netif_dbg(adapter, drv, adapter->netdev,
|
||||
"Link Speed Duplex (lsd) : 0x%X\n", adapter->sgmii_lsd);
|
||||
|
||||
ret = lan743x_sgmii_aneg_update(adapter);
|
||||
if (ret < 0) {
|
||||
netif_err(adapter, drv, adapter->netdev,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user