mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 16:52:14 +02:00
* Patch by Dave Peverley, 30 Apr 2004:
Add support for OMAP730 Perseus2 Development board * Patch by Alan J. Luse, 29 Apr 2004: Fix flash chip-select (OR0) option register setting on FADS boards. * Patch by Alan J. Luse, 29 Apr 2004: Report MII network speed and duplex setting properly when auto-negotiate is not enabled. * Patch by Jarrett Redd, 29 Apr 2004: Fix hang on reset on Ocotea board due to flash in wrong mode.
This commit is contained in:
@@ -147,15 +147,31 @@ int miiphy_speed (unsigned char addr)
|
||||
}
|
||||
#endif /* CONFIG_PHY_GIGE */
|
||||
|
||||
if (miiphy_read (addr, PHY_ANLPAR, ®)) {
|
||||
puts ("PHY speed1 read failed, assuming 10bT\n");
|
||||
/* Check Basic Management Control Register first. */
|
||||
if (miiphy_read (addr, PHY_BMCR, ®)) {
|
||||
puts ("PHY speed read failed, assuming 10bT\n");
|
||||
return (_10BASET);
|
||||
}
|
||||
if ((reg & PHY_ANLPAR_100) != 0) {
|
||||
/* Check if auto-negotiation is on. */
|
||||
if ((reg & PHY_BMCR_AUTON) != 0) {
|
||||
/* Get auto-negotiation results. */
|
||||
if (miiphy_read (addr, PHY_ANLPAR, ®)) {
|
||||
puts ("PHY AN speed read failed, assuming 10bT\n");
|
||||
return (_10BASET);
|
||||
}
|
||||
if ((reg & PHY_ANLPAR_100) != 0) {
|
||||
return (_100BASET);
|
||||
} else {
|
||||
return (_10BASET);
|
||||
}
|
||||
}
|
||||
/* Get speed from basic control settings. */
|
||||
else if (reg & PHY_BMCR_100MB) {
|
||||
return (_100BASET);
|
||||
} else {
|
||||
return (_10BASET);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -182,16 +198,32 @@ int miiphy_duplex (unsigned char addr)
|
||||
}
|
||||
#endif /* CONFIG_PHY_GIGE */
|
||||
|
||||
if (miiphy_read (addr, PHY_ANLPAR, ®)) {
|
||||
/* Check Basic Management Control Register first. */
|
||||
if (miiphy_read (addr, PHY_BMCR, ®)) {
|
||||
puts ("PHY duplex read failed, assuming half duplex\n");
|
||||
return (HALF);
|
||||
}
|
||||
/* Check if auto-negotiation is on. */
|
||||
if ((reg & PHY_BMCR_AUTON) != 0) {
|
||||
/* Get auto-negotiation results. */
|
||||
if (miiphy_read (addr, PHY_ANLPAR, ®)) {
|
||||
puts ("PHY AN duplex read failed, assuming half duplex\n");
|
||||
return (HALF);
|
||||
}
|
||||
|
||||
if ((reg & (PHY_ANLPAR_10FD | PHY_ANLPAR_TXFD)) != 0) {
|
||||
if ((reg & (PHY_ANLPAR_10FD | PHY_ANLPAR_TXFD)) != 0) {
|
||||
return (FULL);
|
||||
} else {
|
||||
return (HALF);
|
||||
}
|
||||
}
|
||||
/* Get speed from basic control settings. */
|
||||
else if (reg & PHY_BMCR_DPLX) {
|
||||
return (FULL);
|
||||
} else {
|
||||
return (HALF);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#ifdef CFG_FAULT_ECHO_LINK_DOWN
|
||||
|
Reference in New Issue
Block a user