diff options
Diffstat (limited to 'common/miiphyutil.c')
| -rw-r--r-- | common/miiphyutil.c | 25 | 
1 files changed, 24 insertions, 1 deletions
| diff --git a/common/miiphyutil.c b/common/miiphyutil.c index 03964da81..b45ab0615 100644 --- a/common/miiphyutil.c +++ b/common/miiphyutil.c @@ -135,11 +135,20 @@ int miiphy_speed (unsigned char addr)  {  	unsigned short reg; +	if (miiphy_read (addr, PHY_1000BTSR, ®)) { +		printf ("PHY 1000BT Status read failed\n"); +	} else { +		if (reg != 0xFFFF) { +			if ((reg & (PHY_1000BTSR_1000FD | PHY_1000BTSR_1000HD)) !=0) { +				return (_1000BASET); +			} +		} +	} +  	if (miiphy_read (addr, PHY_ANLPAR, ®)) {  		printf ("PHY speed1 read failed, assuming 10bT\n");  		return (_10BASET);  	} -  	if ((reg & PHY_ANLPAR_100) != 0) {  		return (_100BASET);  	} else { @@ -156,6 +165,20 @@ int miiphy_duplex (unsigned char addr)  {  	unsigned short reg; + +	if (miiphy_read (addr, PHY_1000BTSR, ®)) { +		printf ("PHY 1000BT Status read failed\n"); +	} else { +		if ( (reg != 0xFFFF) && +		     (reg & (PHY_1000BTSR_1000FD | PHY_1000BTSR_1000HD)) ) { +			if ((reg & PHY_1000BTSR_1000FD) !=0) { +				return (FULL); +			} else { +				return (HALF); +			} +		} +	} +  	if (miiphy_read (addr, PHY_ANLPAR, ®)) {  		printf ("PHY duplex read failed, assuming half duplex\n");  		return (HALF); |