summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-10-05 14:04:07 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-10-05 14:04:07 +0200
commit10eedb9fa67e928600fc4f73a20ff3e0ff3df270 (patch)
tree2ef9d0c35279b4de82016c732dc92e059d7af37f
parentscore/arm: Correct logic to select 64 byte cache line maximum size for Cortex-A. (diff)
downloadrtems-10eedb9fa67e928600fc4f73a20ff3e0ff3df270.tar.bz2
bsp/atsam: Fix PHY detection
-rw-r--r--c/src/lib/libbsp/arm/atsam/network/if_atsam.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/c/src/lib/libbsp/arm/atsam/network/if_atsam.c b/c/src/lib/libbsp/arm/atsam/network/if_atsam.c
index db3f729c1e..61c0b9bcc8 100644
--- a/c/src/lib/libbsp/arm/atsam/network/if_atsam.c
+++ b/c/src/lib/libbsp/arm/atsam/network/if_atsam.c
@@ -248,38 +248,33 @@ if_atsam_read_phy(Gmac *pHw,
static void atsamv7_find_valid_phy(if_atsam_gmac *gmac_inst)
{
Gmac *pHw = gmac_inst->gGmacd.pHw;
-
- uint32_t retry_max;
uint32_t value = 0;
- uint8_t rc;
uint8_t phy_address;
+ int i;
- phy_address = gmac_inst->phy_address;
- retry_max = gmac_inst->retries;
-
- if (phy_address != 0xFF) {
+ if (gmac_inst->phy_address != 0xFF) {
return;
}
/* Find another one */
- rc = 0xFF;
+ phy_address = 0xFF;
- for (phy_address = 0; phy_address < 32; ++phy_address) {
+ for (i = 31; i >= 0; --i) {
int rv;
- rv = if_atsam_read_phy(pHw, phy_address, MII_PHYIDR1,
- &value, retry_max);
- if (rv == 0 && value != 0 && value >= 0xffff) {
- rc = phy_address;
+ rv = if_atsam_read_phy(pHw, (uint8_t)i, MII_PHYIDR1,
+ &value, gmac_inst->retries);
+ if (rv == 0 && value != 0 && value < 0xffff) {
+ phy_address = (uint8_t)i;
break;
}
}
- if (rc != 0xFF) {
+ if (phy_address != 0xFF) {
if_atsam_read_phy(pHw, phy_address, MII_PHYIDR1, &value,
- retry_max);
+ gmac_inst->retries);
if_atsam_read_phy(pHw, phy_address, MII_PHYIDR2, &value,
- retry_max);
+ gmac_inst->retries);
gmac_inst->phy_address = phy_address;
}
}