From patchwork Tue Dec 24 14:33:10 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabio Estevam X-Patchwork-Id: 304984 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 372EC2C00A6 for ; Wed, 25 Dec 2013 01:33:26 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752510Ab3LXOdW (ORCPT ); Tue, 24 Dec 2013 09:33:22 -0500 Received: from mail-qe0-f44.google.com ([209.85.128.44]:33973 "EHLO mail-qe0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752337Ab3LXOdW (ORCPT ); Tue, 24 Dec 2013 09:33:22 -0500 Received: by mail-qe0-f44.google.com with SMTP id nd7so6474003qeb.3 for ; Tue, 24 Dec 2013 06:33:21 -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=aYzjI8Gm9jkA4d+MBAmFPkxIQ7ipU2wV3QGLc9KdB3M=; b=E30BKvcloAXiV6E5ymR+bJ0mMhsVv7Vlp/l0c65hGF4D132UvJhtSPcK34ivrkkE4S ZOis5yQNenD+7CVPfQTTms/xkJUiduNu/naT1q2gquh5qtmA01mLMRLXibYZrS9Y4LhF r9R7cUZ0lFuSecUtO46IYNPyXVKPbQmymv3FdZswAQFBfs8f5cPHiqyRvYG9cybzRUdH 5WlH3lxGFOJVrYuDM3aEhBe8JOOLeYfhn9R236/YvlF8Ny30pxcbepykdbZPxmNQ7Rb6 rCb1axyEaqNoSIrtSd8XadAY3a1wzmQsELpBk+BVdhQJsB73psElg7JboP7+1idURoLz eqSg== X-Received: by 10.224.127.131 with SMTP id g3mr24510903qas.98.1387895600931; Tue, 24 Dec 2013 06:33:20 -0800 (PST) Received: from localhost.localdomain ([186.207.93.139]) by mx.google.com with ESMTPSA id f19sm36119359qaq.12.2013.12.24.06.33.18 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 24 Dec 2013 06:33:20 -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 v2] fec: Do not assume that PHY reset is active low Date: Tue, 24 Dec 2013 12:33:10 -0200 Message-Id: <1387895590-32333-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 --- Changes since v1: - Fix the initial state of the GPIOs 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_HIGH; + else + port = GPIOF_OUT_INIT_LOW; + + 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)