net: stmmac: ingenic: simplify x2000 mac_set_mode()
As per the previous commit, we have validated that the phy_intf_sel value is one that is permissible for this SoC, so there is no need to handle invalid PHY interface modes. We can also apply the other configuration based upon the phy_intf_sel value rather than the PHY interface mode. Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Link: https://patch.msgid.link/E1vHHqO-0000000Djrb-0DPN@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
608975d4d7
commit
2284cca0bc
@@ -122,39 +122,25 @@ static int x2000_mac_set_mode(struct plat_stmmacenet_data *plat_dat,
|
||||
struct ingenic_mac *mac = plat_dat->bsp_priv;
|
||||
unsigned int val;
|
||||
|
||||
switch (plat_dat->phy_interface) {
|
||||
case PHY_INTERFACE_MODE_RMII:
|
||||
val = FIELD_PREP(MACPHYC_TX_SEL_MASK, MACPHYC_TX_SEL_ORIGIN) |
|
||||
FIELD_PREP(MACPHYC_RX_SEL_MASK, MACPHYC_RX_SEL_ORIGIN);
|
||||
break;
|
||||
val = FIELD_PREP(MACPHYC_PHY_INFT_MASK, phy_intf_sel);
|
||||
|
||||
case PHY_INTERFACE_MODE_RGMII:
|
||||
case PHY_INTERFACE_MODE_RGMII_ID:
|
||||
case PHY_INTERFACE_MODE_RGMII_TXID:
|
||||
case PHY_INTERFACE_MODE_RGMII_RXID:
|
||||
val = 0;
|
||||
if (phy_intf_sel == PHY_INTF_SEL_RMII) {
|
||||
val |= FIELD_PREP(MACPHYC_TX_SEL_MASK, MACPHYC_TX_SEL_ORIGIN) |
|
||||
FIELD_PREP(MACPHYC_RX_SEL_MASK, MACPHYC_RX_SEL_ORIGIN);
|
||||
} else if (phy_intf_sel == PHY_INTF_SEL_RGMII) {
|
||||
if (mac->tx_delay == 0)
|
||||
val |= FIELD_PREP(MACPHYC_TX_SEL_MASK, MACPHYC_TX_SEL_ORIGIN);
|
||||
else
|
||||
val |= FIELD_PREP(MACPHYC_TX_SEL_MASK, MACPHYC_TX_SEL_DELAY) |
|
||||
FIELD_PREP(MACPHYC_TX_DELAY_MASK, (mac->tx_delay + 9750) / 19500 - 1);
|
||||
FIELD_PREP(MACPHYC_TX_DELAY_MASK, (mac->tx_delay + 9750) / 19500 - 1);
|
||||
|
||||
if (mac->rx_delay == 0)
|
||||
val |= FIELD_PREP(MACPHYC_RX_SEL_MASK, MACPHYC_RX_SEL_ORIGIN);
|
||||
else
|
||||
val |= FIELD_PREP(MACPHYC_RX_SEL_MASK, MACPHYC_RX_SEL_DELAY) |
|
||||
FIELD_PREP(MACPHYC_RX_DELAY_MASK, (mac->rx_delay + 9750) / 19500 - 1);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
dev_err(mac->dev, "Unsupported interface %s\n",
|
||||
phy_modes(plat_dat->phy_interface));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
val |= FIELD_PREP(MACPHYC_PHY_INFT_MASK, phy_intf_sel);
|
||||
|
||||
/* Update MAC PHY control register */
|
||||
return regmap_update_bits(mac->regmap, 0, mac->soc_info->mask, val);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user