@ -380,7 +380,7 @@ int miiphy_reset(const char *devname, unsigned char addr)
*/
*/
int miiphy_speed ( 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)
# if defined(CONFIG_PHY_GIGE)
u16 btsr ;
u16 btsr ;
@ -417,7 +417,12 @@ int miiphy_speed(const char *devname, unsigned char addr)
printf ( " PHY AN speed " ) ;
printf ( " PHY AN speed " ) ;
goto miiphy_read_failed ;
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. */
/* Get speed from basic control settings. */
return ( bmcr & BMCR_SPEED100 ) ? _100BASET : _10BASET ;
return ( bmcr & BMCR_SPEED100 ) ? _100BASET : _10BASET ;
@ -433,7 +438,7 @@ miiphy_read_failed:
*/
*/
int miiphy_duplex ( const char * devname , unsigned char addr )
int miiphy_duplex ( const char * devname , unsigned char addr )
{
{
u16 bmcr , anlpar ;
u16 bmcr , anlpar , adv ;
# if defined(CONFIG_PHY_GIGE)
# if defined(CONFIG_PHY_GIGE)
u16 btsr ;
u16 btsr ;
@ -475,7 +480,12 @@ int miiphy_duplex(const char *devname, unsigned char addr)
puts ( " PHY AN duplex " ) ;
puts ( " PHY AN duplex " ) ;
goto miiphy_read_failed ;
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 ;
FULL : HALF ;
}
}
/* Get speed from basic control settings. */
/* Get speed from basic control settings. */