diff options
author | Arun Ramadoss <arun.ramadoss@microchip.com> | 2022-06-22 12:04:21 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-06-24 13:31:43 +0300 |
commit | 7a8988a17c48bcca361ebd04440c2e898f9cdb9d (patch) | |
tree | 3cc178dffb68705488f46f2da341137bb8b21757 /drivers | |
parent | 1958eee85f6724c2398af3de93c72c78f756165c (diff) | |
download | linux-7a8988a17c48bcca361ebd04440c2e898f9cdb9d.tar.xz |
net: dsa: microchip: ksz9477: separate phylink mode from switch register
As per 'commit 3506b2f42dff ("net: dsa: microchip: call
phy_remove_link_mode during probe")' phy_remove_link_mode is added in
the switch_register function after dsa_switch_register. In order to have
the common switch register function, moving this phylink validation to
phylink_get_caps validation hook.
Signed-off-by: Arun Ramadoss <arun.ramadoss@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/dsa/microchip/ksz9477.c | 31 | ||||
-rw-r--r-- | drivers/net/dsa/microchip/ksz_common.c | 2 |
2 files changed, 7 insertions, 26 deletions
diff --git a/drivers/net/dsa/microchip/ksz9477.c b/drivers/net/dsa/microchip/ksz9477.c index e3989aef93f4..4fcc7923da4d 100644 --- a/drivers/net/dsa/microchip/ksz9477.c +++ b/drivers/net/dsa/microchip/ksz9477.c @@ -1059,8 +1059,11 @@ static void ksz9477_phy_errata_setup(struct ksz_device *dev, int port) static void ksz9477_get_caps(struct ksz_device *dev, int port, struct phylink_config *config) { - config->mac_capabilities = MAC_10 | MAC_100 | MAC_1000FD | - MAC_ASYM_PAUSE | MAC_SYM_PAUSE; + config->mac_capabilities = MAC_10 | MAC_100 | MAC_ASYM_PAUSE | + MAC_SYM_PAUSE; + + if (dev->features & GBIT_SUPPORT) + config->mac_capabilities |= MAC_1000FD; } static void ksz9477_port_setup(struct ksz_device *dev, int port, bool cpu_port) @@ -1381,29 +1384,7 @@ static const struct ksz_dev_ops ksz9477_dev_ops = { int ksz9477_switch_register(struct ksz_device *dev) { - int ret, i; - struct phy_device *phydev; - - ret = ksz_switch_register(dev, &ksz9477_dev_ops); - if (ret) - return ret; - - for (i = 0; i < dev->phy_port_cnt; ++i) { - if (!dsa_is_user_port(dev->ds, i)) - continue; - - phydev = dsa_to_port(dev->ds, i)->slave->phydev; - - /* The MAC actually cannot run in 1000 half-duplex mode. */ - phy_remove_link_mode(phydev, - ETHTOOL_LINK_MODE_1000baseT_Half_BIT); - - /* PHY does not support gigabit. */ - if (!(dev->features & GBIT_SUPPORT)) - phy_remove_link_mode(phydev, - ETHTOOL_LINK_MODE_1000baseT_Full_BIT); - } - return ret; + return ksz_switch_register(dev, &ksz9477_dev_ops); } EXPORT_SYMBOL(ksz9477_switch_register); diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index 9ebeaba2c755..62d699a47589 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -1332,7 +1332,7 @@ int ksz_switch_register(struct ksz_device *dev, /* Start the MIB timer. */ schedule_delayed_work(&dev->mib_read, 0); - return 0; + return ret; } EXPORT_SYMBOL(ksz_switch_register); |