mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 23:51:33 +00:00
net: mii: check phy advertising register when geting link status
When phy autoneg on, the link speed and duplex should be determined by phy advertising register and phy link partner ability register. Check phy advertising register when geting phy link speed and duplex if autoneg on. Signed-off-by: Dongpo Li <lidongpo@hisilicon.com> Cc: Joe Hershberger <joe.hershberger@ni.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
parent
05237f735e
commit
8c83c0303c
1 changed files with 14 additions and 4 deletions
|
@ -380,7 +380,7 @@ int miiphy_reset(const char *devname, unsigned char addr)
|
|||
*/
|
||||
int miiphy_speed(const char *devname, unsigned char addr)
|
||||
{
|
||||
u16 bmcr, anlpar;
|
||||
u16 bmcr, anlpar, adv;
|
||||
|
||||
#if defined(CONFIG_PHY_GIGE)
|
||||
u16 btsr;
|
||||
|
@ -417,7 +417,12 @@ int miiphy_speed(const char *devname, unsigned char addr)
|
|||
printf("PHY AN speed");
|
||||
goto miiphy_read_failed;
|
||||
}
|
||||
return (anlpar & LPA_100) ? _100BASET : _10BASET;
|
||||
|
||||
if (miiphy_read(devname, addr, MII_ADVERTISE, &adv)) {
|
||||
puts("PHY AN adv speed");
|
||||
goto miiphy_read_failed;
|
||||
}
|
||||
return ((anlpar & adv) & LPA_100) ? _100BASET : _10BASET;
|
||||
}
|
||||
/* Get speed from basic control settings. */
|
||||
return (bmcr & BMCR_SPEED100) ? _100BASET : _10BASET;
|
||||
|
@ -433,7 +438,7 @@ miiphy_read_failed:
|
|||
*/
|
||||
int miiphy_duplex(const char *devname, unsigned char addr)
|
||||
{
|
||||
u16 bmcr, anlpar;
|
||||
u16 bmcr, anlpar, adv;
|
||||
|
||||
#if defined(CONFIG_PHY_GIGE)
|
||||
u16 btsr;
|
||||
|
@ -475,7 +480,12 @@ int miiphy_duplex(const char *devname, unsigned char addr)
|
|||
puts("PHY AN duplex");
|
||||
goto miiphy_read_failed;
|
||||
}
|
||||
return (anlpar & (LPA_10FULL | LPA_100FULL)) ?
|
||||
|
||||
if (miiphy_read(devname, addr, MII_ADVERTISE, &adv)) {
|
||||
puts("PHY AN adv duplex");
|
||||
goto miiphy_read_failed;
|
||||
}
|
||||
return ((anlpar & adv) & (LPA_10FULL | LPA_100FULL)) ?
|
||||
FULL : HALF;
|
||||
}
|
||||
/* Get speed from basic control settings. */
|
||||
|
|
Loading…
Reference in a new issue