From patchwork Sun Feb 17 15:29:24 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabio Estevam X-Patchwork-Id: 221064 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 608AD2C0077 for ; Mon, 18 Feb 2013 02:29:40 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756311Ab3BQP3g (ORCPT ); Sun, 17 Feb 2013 10:29:36 -0500 Received: from mail-gh0-f170.google.com ([209.85.160.170]:41088 "EHLO mail-gh0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756266Ab3BQP3f (ORCPT ); Sun, 17 Feb 2013 10:29:35 -0500 Received: by mail-gh0-f170.google.com with SMTP id g14so786814ghb.1 for ; Sun, 17 Feb 2013 07:29:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer; bh=+S5JPqEwDObgHlAldxYbGns3IMDwUps9PahcT0ttIkk=; b=aqabtM8PzO60IiDshf+WOOsitTC1O9wtVKKlf4ZflpH3qsxzQ5hIw6OvTZaViXzccu rAZQ6ms1aJ5WnxoKvt7ZqrcqAdbnYBsXC3ZbtUv5Wg4D8CDIXkYA1CZFOc//z8dpRGNX zyi5/o+rawT0cZhAqrc4tusGNuDjS620QWjax3QcDo3UMuyHLpHtBRTdiZyRE+gH0j3/ hiv+zopvDwNzt4+/NV735iViCbI1o1vOyVNHupk3wrtoOBr+T9kQQc+8bq/TTmGrpeev a8cFHF4GfhDZezGyd0GHxvfywUNiXPBjg0hu2pUdnpgPQio6Smisf30L/AKrw3VUUQsv WiPA== X-Received: by 10.236.130.111 with SMTP id j75mr14922749yhi.82.1361114974757; Sun, 17 Feb 2013 07:29:34 -0800 (PST) Received: from localhost.localdomain ([201.82.137.218]) by mx.google.com with ESMTPS id s3sm107630541yhm.10.2013.02.17.07.29.32 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 17 Feb 2013 07:29:34 -0800 (PST) From: Fabio Estevam To: davem@davemloft.net Cc: s.hauer@pengutronix.de, shawn.guo@linaro.org, marex@denx.de, netdev@vger.kernel.org, Fabio Estevam Subject: [PATCH v3] net: fec: Do a sanity check on the gpio number Date: Sun, 17 Feb 2013 12:29:24 -0300 Message-Id: <1361114964-10517-1-git-send-email-festevam@gmail.com> X-Mailer: git-send-email 1.7.9.5 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Fabio Estevam Since commit 372e722ea4d (gpiolib: use descriptors internally) the following warning is seen on a mx28evk board: [ 5.116291] ------------[ cut here ]------------ [ 5.121306] WARNING: at drivers/gpio/gpiolib.c:125 gpio_to_desc+0x30/0x44() [ 5.128491] invalid GPIO -2 [ 5.131563] Modules linked in: [ 5.134846] [] (unwind_backtrace+0x0/0xf4) from [] (warn_slowpath_common+0x4c/0x68) [ 5.144682] [] (warn_slowpath_common+0x4c/0x68) from [] (warn_slowpath_fmt+0x30/0x40) [ 5.154693] [] (warn_slowpath_fmt+0x30/0x40) from [] (gpio_to_desc+0x30/0x44) [ 5.164002] [] (gpio_to_desc+0x30/0x44) from [] (gpio_request_one+0x10/0xe8) [ 5.173294] [] (gpio_request_one+0x10/0xe8) from [] (devm_gpio_request_one+0x40/0x74) [ 5.183332] [] (devm_gpio_request_one+0x40/0x74) from [] (fec_probe+0x2d0/0x99c) [ 5.192923] [] (fec_probe+0x2d0/0x99c) from [] (platform_drv_probe+0x14/0x18) [ 5.202228] [] (platform_drv_probe+0x14/0x18) from [] (driver_probe_device+0x90/0x224) [ 5.212332] [] (driver_probe_device+0x90/0x224) from [] (__driver_attach+0x94/0x98) [ 5.222162] [] (__driver_attach+0x94/0x98) from [] (bus_for_each_dev+0x78/0x98) [ 5.231642] [] (bus_for_each_dev+0x78/0x98) from [] (bus_add_driver+0x1a4/0x240) [ 5.241207] [] (bus_add_driver+0x1a4/0x240) from [] (driver_register+0x78/0x140) [ 5.250768] [] (driver_register+0x78/0x140) from [] (do_one_initcall+0x30/0x17c) [ 5.260347] [] (do_one_initcall+0x30/0x17c) from [] (kernel_init_freeable+0xe8/0x1b0) [ 5.270381] [] (kernel_init_freeable+0xe8/0x1b0) from [] (kernel_init+0x8/0xe4) [ 5.279886] [] (kernel_init+0x8/0xe4) from [] (ret_from_fork+0x14/0x2c) [ 5.288740] ---[ end trace c15c72a22979d58d ]--- mx28evk has two ethernet controllers. The GPIO that performs the ethernet reset on both ports is the same GPIO, so on the board dts file, only in one ethernet instance is passed the GPIO reset property. Validate the gpio number prior to requesting it in order to avoid such warning. With such gpio validation in place, it is also safe to change from pr_debug to dev_err in the case the gpio request fails. Signed-off-by: Fabio Estevam Reviewed-by: Shawn Guo --- Changes since v2: - Merge the two patches into a single one, and use dev_err Changes since v1: - Added Shawn's ack drivers/net/ethernet/freescale/fec.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/fec.c b/drivers/net/ethernet/freescale/fec.c index 0fe68c4..1a2071b 100644 --- a/drivers/net/ethernet/freescale/fec.c +++ b/drivers/net/ethernet/freescale/fec.c @@ -1689,10 +1689,13 @@ static void fec_reset_phy(struct platform_device *pdev) msec = 1; phy_reset = of_get_named_gpio(np, "phy-reset-gpios", 0); + if (!gpio_is_valid(phy_reset)) + return; + err = devm_gpio_request_one(&pdev->dev, phy_reset, GPIOF_OUT_INIT_LOW, "phy-reset"); if (err) { - pr_debug("FEC: failed to get gpio phy-reset: %d\n", err); + dev_err(&pdev->dev, "failed to get phy-reset-gpios: %d\n", err); return; } msleep(msec);