[rtems commit] bsp/atsam: Fix PHY detection

Sebastian Huber sebh at rtems.org
Wed Oct 5 12:05:29 UTC 2016


Module:    rtems
Branch:    master
Commit:    10eedb9fa67e928600fc4f73a20ff3e0ff3df270
Changeset: http://git.rtems.org/rtems/commit/?id=10eedb9fa67e928600fc4f73a20ff3e0ff3df270

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed Oct  5 14:04:07 2016 +0200

bsp/atsam: Fix PHY detection

---

 c/src/lib/libbsp/arm/atsam/network/if_atsam.c | 27 +++++++++++----------------
 1 file 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 db3f729..61c0b9b 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;
 	}
 }



More information about the vc mailing list