OSDN Git Service

net: phy: dp83867: Add speed optimization feature
authorDan Murphy <dmurphy@ti.com>
Tue, 18 Feb 2020 14:11:30 +0000 (08:11 -0600)
committerDavid S. Miller <davem@davemloft.net>
Fri, 21 Feb 2020 19:43:56 +0000 (11:43 -0800)
commitcd26d72d4d43175cec8c10bed4df7f21ac5316b3
treefd2d55a7ba9a05bfc83246a7ddad7c8eaf55ff36
parentfeb5d98e0a156274fbf334362f56359d19f614fa
net: phy: dp83867: Add speed optimization feature

Set the speed optimization bit on the DP83867 PHY.
This feature can also be strapped on the 64 pin PHY devices
but the 48 pin devices do not have the strap pin available to enable
this feature in the hardware.  PHY team suggests to have this bit set.

With this bit set the PHY will auto negotiate and report the link
parameters in the PHYSTS register.  This register provides a single
location within the register set for quick access to commonly accessed
information.

In this case when auto negotiation is on the PHY core reads the bits
that have been configured or if auto negotiation is off the PHY core
reads the BMCR register and sets the phydev parameters accordingly.

This Giga bit PHY can throttle the speed to 100Mbps or 10Mbps to accomodate a
4-wire cable.  If this should occur the PHYSTS register contains the
current negotiated speed and duplex mode.

In overriding the genphy_read_status the dp83867_read_status will do a
genphy_read_status to setup the LP and pause bits.  And then the PHYSTS
register is read and the phydev speed and duplex mode settings are
updated.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/dp83867.c