From patchwork Wed Jan 29 10:32:37 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Roese X-Patchwork-Id: 314953 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id B824B2C007C for ; Wed, 29 Jan 2014 21:39:18 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751141AbaA2Kii (ORCPT ); Wed, 29 Jan 2014 05:38:38 -0500 Received: from mo4-p05-ob.smtp.rzone.de ([81.169.146.183]:55238 "EHLO mo4-p05-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750882AbaA2Kih (ORCPT ); Wed, 29 Jan 2014 05:38:37 -0500 X-Greylist: delayed 346 seconds by postgrey-1.27 at vger.kernel.org; Wed, 29 Jan 2014 05:38:36 EST X-RZG-AUTH: :IW0NeWC7b/q2i6W/qstXb1SBUuFnrGohfvxEndrDXKjzPMsB3ouvji1T0rFWuqGmBRxArpk= X-RZG-CLASS-ID: mo05 Received: from stefan-work.fritz.box (pD9FFB8DF.dip0.t-ipconnect.de [217.255.184.223]) by smtp.strato.de (RZmta 32.22 DYNA|AUTH) with ESMTPA id L03aa5q0TAWUP6B; Wed, 29 Jan 2014 11:32:30 +0100 (CET) From: Stefan Roese To: netdev@vger.kernel.org Cc: Lukas Stockmann , Mugunthan V N Subject: [PATCH] net: eth: cpsw: Correctly attach to GPIO bitbang MDIO driver Date: Wed, 29 Jan 2014 11:32:37 +0100 Message-Id: <1390991557-22522-1-git-send-email-sr@denx.de> X-Mailer: git-send-email 1.8.5.3 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When the GPIO bitbang MDIO driver is used instead of the Davinci MDIO driver we need to configure the phy_id string differently. Otherwise this string looks like this "gpio.6" instead of "gpio-0" and the PHY is not found when phy_connect() is called. Signed-off-by: Stefan Roese Cc: Lukas Stockmann Cc: Mugunthan V N Acked-by: Mugunthan V N --- drivers/net/ethernet/ti/cpsw.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index a3ca3dd..43e6591 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -1858,8 +1858,18 @@ static int cpsw_probe_dt(struct cpsw_platform_data *data, mdio_node = of_find_node_by_phandle(be32_to_cpup(parp)); phyid = be32_to_cpup(parp+1); mdio = of_find_device_by_node(mdio_node); - snprintf(slave_data->phy_id, sizeof(slave_data->phy_id), - PHY_ID_FMT, mdio->name, phyid); + + if (strncmp(mdio->name, "gpio", 4) == 0) { + /* GPIO bitbang MDIO driver attached */ + struct mii_bus *bus = dev_get_drvdata(&mdio->dev); + + snprintf(slave_data->phy_id, sizeof(slave_data->phy_id), + PHY_ID_FMT, bus->id, phyid); + } else { + /* davinci MDIO driver attached */ + snprintf(slave_data->phy_id, sizeof(slave_data->phy_id), + PHY_ID_FMT, mdio->name, phyid); + } mac_addr = of_get_mac_address(slave_node); if (mac_addr)