diff options
author | Tim Harvey <tharvey@gateworks.com> | 2023-02-07 15:37:18 -0800 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2023-05-05 13:41:55 -0400 |
commit | 1416b80de46ea6a194ad29a541a075ffba320927 (patch) | |
tree | d3e44cea90b4f6c2e6a1463670d22e47293ac61e /drivers | |
parent | 2b7252953c502eb64593aebeb65409d268068365 (diff) | |
download | u-boot-1416b80de46ea6a194ad29a541a075ffba320927.zip u-boot-1416b80de46ea6a194ad29a541a075ffba320927.tar.gz u-boot-1416b80de46ea6a194ad29a541a075ffba320927.tar.bz2 |
net: ksz9477: add port_probe function to config phy
Add a port_probe function to configure the phy. This leads to
earlier link negotiation so the port is more likely to be ready
when used.
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ksz9477.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/drivers/net/ksz9477.c b/drivers/net/ksz9477.c index 5b0ef78..6b59b5f 100644 --- a/drivers/net/ksz9477.c +++ b/drivers/net/ksz9477.c @@ -337,11 +337,21 @@ static int ksz_port_setup(struct udevice *dev, int port, return 0; } +static int ksz_port_probe(struct udevice *dev, int port, struct phy_device *phy) +{ + int supported = PHY_GBIT_FEATURES; + + /* configure phy */ + phy->supported &= supported; + phy->advertising &= supported; + + return phy_config(phy); +} + static int ksz_port_enable(struct udevice *dev, int port, struct phy_device *phy) { struct dsa_pdata *pdata = dev_get_uclass_plat(dev); struct ksz_dsa_priv *priv = dev_get_priv(dev); - int supported = PHY_GBIT_FEATURES; u8 data8; int ret; @@ -365,23 +375,12 @@ static int ksz_port_enable(struct udevice *dev, int port, struct phy_device *phy if (port == pdata->cpu_port) return 0; - /* configure phy */ - phy->supported &= supported; - phy->advertising &= supported; - ret = phy_config(phy); - if (ret) - return ret; - - ret = phy_startup(phy); - if (ret) - return ret; - /* start switch */ ksz_read8(priv->dev, REG_SW_OPERATION, &data8); data8 |= SW_START; ksz_write8(priv->dev, REG_SW_OPERATION, data8); - return 0; + return phy_startup(phy); } static void ksz_port_disable(struct udevice *dev, int port, struct phy_device *phy) @@ -410,6 +409,7 @@ static void ksz_port_disable(struct udevice *dev, int port, struct phy_device *p } static const struct dsa_ops ksz_dsa_ops = { + .port_probe = ksz_port_probe, .port_enable = ksz_port_enable, .port_disable = ksz_port_disable, }; |