From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manuel Lauss Subject: [PATCH] [PATCH v2] net: au1000_eth: fix PHY detection Date: Sat, 11 Jun 2016 00:13:04 +0200 Message-ID: <20160610221304.694639-1-manuel.lauss@gmail.com> Cc: Florian Fainelli , Manuel Lauss , Andrew Lunn To: netdev@vger.kernel.org Return-path: Received: from mail-wm0-f67.google.com ([74.125.82.67]:34348 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752216AbcFJWNI (ORCPT ); Fri, 10 Jun 2016 18:13:08 -0400 Received: by mail-wm0-f67.google.com with SMTP id n184so1548546wmn.1 for ; Fri, 10 Jun 2016 15:13:07 -0700 (PDT) Sender: netdev-owner@vger.kernel.org List-ID: Commit 7f854420fbfe9d49afe2ffb1df052cfe8e215541 ("phy: Add API for {un}registering an mdio device to a bus.") broke PHY detection on this driver with a copy-paste bug: The code is looking 32 times for a PHY at address 0. Fixes ethernet on AMD DB1100/DB1500/DB1550 boards which have their (autodetected) PHYs at address 31. Cc: Andrew Lunn Signed-off-by: Manuel Lauss --- v2: unbreak "use highest phy addr" case. before: libphy: au1000_eth_mii: probed au1000-eth au1000-eth.0 (unnamed net_device) (uninitialized): no PHY found au1000-eth: probe of au1000-eth.0 failed with error -1 after: libphy: au1000_eth_mii: probed AM79C874 au1000-eth-0:1f: attached PHY driver [AM79C874] (mii_bus:phy_addr=au1000-eth-0:1f, irq=-1) au1000-eth au1000-eth.0 eth0: Au1xx0 Ethernet found at 0x11500000, irq 36 drivers/net/ethernet/amd/au1000_eth.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/amd/au1000_eth.c b/drivers/net/ethernet/amd/au1000_eth.c index e0fb0f1..20760e1 100644 --- a/drivers/net/ethernet/amd/au1000_eth.c +++ b/drivers/net/ethernet/amd/au1000_eth.c @@ -509,8 +509,8 @@ static int au1000_mii_probe(struct net_device *dev) * on the current MAC's MII bus */ for (phy_addr = 0; phy_addr < PHY_MAX_ADDR; phy_addr++) - if (mdiobus_get_phy(aup->mii_bus, aup->phy_addr)) { - phydev = mdiobus_get_phy(aup->mii_bus, aup->phy_addr); + if (mdiobus_get_phy(aup->mii_bus, phy_addr)) { + phydev = mdiobus_get_phy(aup->mii_bus, phy_addr); if (!aup->phy_search_highest_addr) /* break out with first one found */ break; -- 2.8.4