From patchwork Tue Dec 24 14:16:01 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabio Estevam X-Patchwork-Id: 304981 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 DE7132C00B0 for ; Wed, 25 Dec 2013 01:16:31 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752439Ab3LXOQM (ORCPT ); Tue, 24 Dec 2013 09:16:12 -0500 Received: from mail-qa0-f50.google.com ([209.85.216.50]:34221 "EHLO mail-qa0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752308Ab3LXOQL (ORCPT ); Tue, 24 Dec 2013 09:16:11 -0500 Received: by mail-qa0-f50.google.com with SMTP id i13so6236443qae.9 for ; Tue, 24 Dec 2013 06:16:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=8naHBT2y0PuaHBrJyR/itnLEsQZe6hSJH3ItljzqZMo=; b=srYP5GBycneXE5v2pKI4pYCWw6EbOUXEhx+hcDDypxNwsSsha8fKzWi3EbL5puZRK7 h/M9nmQLimAKZFkx8LwlK1jk3ngl8tcJ0yjla84pVtLfxsUSH4P/4EWklAuxoxWGFEW5 q1ZgaJZ+o4mo2OwIcOT4KockaC/6EXnz/jXa+rSVKK0OZNzoTSTg2mHw4V86evCY5RCR bAjtKqapRpgpMJ3csjijgZdrJ/jsTvvSESAvj1DyMvK/34Qi7O5uFzlaaScImIqjuCjP V1765cGMfASb7MlhXwWqbRl/mYUPdg+mq72bPws0hS0GHc1bHiIi5XWKBcjRD7lVGLXj ZW0g== X-Received: by 10.224.124.134 with SMTP id u6mr52509582qar.79.1387894570546; Tue, 24 Dec 2013 06:16:10 -0800 (PST) Received: from localhost.localdomain ([186.207.93.139]) by mx.google.com with ESMTPSA id a5sm36109623qae.2.2013.12.24.06.16.08 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 24 Dec 2013 06:16:10 -0800 (PST) From: Fabio Estevam To: davem@davemloft.net Cc: Frank.Li@freescale.com, shawn.guo@linaro.org, p.zabel@pengutronix.de, netdev@vger.kernel.org, Fabio Estevam Subject: [PATCH] fec: Do not assume that PHY reset is active low Date: Tue, 24 Dec 2013 12:16:01 -0200 Message-Id: <1387894561-31494-1-git-send-email-festevam@gmail.com> X-Mailer: git-send-email 1.8.1.2 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Fabio Estevam We should not assume that the PHY reset is always active low. Retrieve this information from the device tree instead, so that the PHY reset can work on both cases. Reported-by: Philipp Zabel Signed-off-by: Fabio Estevam --- drivers/net/ethernet/freescale/fec_main.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 6530177..4b9976a0 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -2053,6 +2053,8 @@ static void fec_reset_phy(struct platform_device *pdev) int err, phy_reset; int msec = 1; struct device_node *np = pdev->dev.of_node; + enum of_gpio_flags flags; + bool port; if (!np) return; @@ -2062,18 +2064,22 @@ static void fec_reset_phy(struct platform_device *pdev) if (msec > 1000) msec = 1; - phy_reset = of_get_named_gpio(np, "phy-reset-gpios", 0); + phy_reset = of_get_named_gpio_flags(np, "phy-reset-gpios", 0, &flags); if (!gpio_is_valid(phy_reset)) return; - err = devm_gpio_request_one(&pdev->dev, phy_reset, - GPIOF_OUT_INIT_LOW, "phy-reset"); + if (flags & OF_GPIO_ACTIVE_LOW) + port = GPIOF_OUT_INIT_LOW; + else + port = GPIOF_OUT_INIT_HIGH; + + err = devm_gpio_request_one(&pdev->dev, phy_reset, port, "phy-reset"); if (err) { dev_err(&pdev->dev, "failed to get phy-reset-gpios: %d\n", err); return; } msleep(msec); - gpio_set_value(phy_reset, 1); + gpio_set_value(phy_reset, !port); } #else /* CONFIG_OF */ static void fec_reset_phy(struct platform_device *pdev)