@ -399,8 +399,7 @@ static int configure_phy(struct eth_device *dev)
return - 1 ;
return - 1 ;
# if defined(CONFIG_DW_AUTONEG)
# if defined(CONFIG_DW_AUTONEG)
bmcr = BMCR_ANENABLE | BMCR_ANRESTART | BMCR_SPEED100 | \
bmcr = BMCR_ANENABLE | BMCR_ANRESTART ;
BMCR_FULLDPLX | BMCR_SPEED1000 ;
# else
# else
bmcr = BMCR_SPEED100 | BMCR_FULLDPLX ;
bmcr = BMCR_SPEED100 | BMCR_FULLDPLX ;
@ -428,23 +427,39 @@ static int configure_phy(struct eth_device *dev)
eth_mdio_read ( dev , phy_addr , MII_STAT1000 , & btsr ) ;
eth_mdio_read ( dev , phy_addr , MII_STAT1000 , & btsr ) ;
if ( bmsr & BMSR_ANEGCOMPLETE ) {
if ( bmsr & BMSR_ANEGCOMPLETE ) {
if ( btsr & ( PHY_1000BTSR_1000FD | PHY_1000BTSR_1000HD ) ) {
if ( btsr & PHY_1000BTSR_1000FD ) {
priv - > speed = SPEED_1000M ;
priv - > speed = SPEED_1000M ;
if ( btsr & PHY_1000BTSR_1000FD )
bmcr | = BMCR_SPEED1000 ;
priv - > duplex = FULL_DUPLEX ;
priv - > duplex = FULL_DUPLEX ;
else
bmcr | = BMCR_FULLDPLX ;
priv - > duplex = HALF_DUPLEX ;
} else if ( btsr & PHY_1000BTSR_1000HD ) {
priv - > speed = SPEED_1000M ;
bmcr | = BMCR_SPEED1000 ;
priv - > duplex = HALF_DUPLEX ;
bmcr & = ~ BMCR_FULLDPLX ;
} else if ( anlpar & LPA_100FULL ) {
priv - > speed = SPEED_100M ;
bmcr | = BMCR_SPEED100 ;
priv - > duplex = FULL_DUPLEX ;
bmcr | = BMCR_FULLDPLX ;
} else if ( anlpar & LPA_100HALF ) {
priv - > speed = SPEED_100M ;
bmcr | = BMCR_SPEED100 ;
priv - > duplex = HALF_DUPLEX ;
bmcr & = ~ BMCR_FULLDPLX ;
} else if ( anlpar & LPA_10FULL ) {
priv - > speed = SPEED_10M ;
bmcr & = ~ BMCR_SPEED100 ;
priv - > duplex = FULL_DUPLEX ;
bmcr | = BMCR_FULLDPLX ;
} else {
} else {
if ( anlpar & LPA_100 )
priv - > speed = SPEED_100M ;
else
priv - > speed = SPEED_10M ;
priv - > speed = SPEED_10M ;
bmcr & = ~ BMCR_SPEED100 ;
if ( anlpar & ( LPA_10FULL | LPA_100FULL ) )
priv - > duplex = FULL_DUPLEX ;
else
priv - > duplex = HALF_DUPLEX ;
priv - > duplex = HALF_DUPLEX ;
bmcr & = ~ BMCR_FULLDPLX ;
}
}
if ( eth_mdio_write ( dev , phy_addr , MII_BMCR , bmcr ) < 0 )
return - 1 ;
} else
} else
return - 1 ;
return - 1 ;
# else
# else