Received: by 10.192.165.148 with SMTP id m20csp678612imm; Fri, 27 Apr 2018 05:52:09 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrSJmCL48PuDnPR5ZA3XqbzhW6Cug2/GFubBh1y2zc2nolzQ+bSUDbvQZSW5KLt7BCRNo5X X-Received: by 10.98.89.89 with SMTP id n86mr690163pfb.217.1524833529174; Fri, 27 Apr 2018 05:52:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524833529; cv=none; d=google.com; s=arc-20160816; b=OPMCFWKxuZh4PJISnt6jyIdLVNcy/hi/pFkxdOD6DohZKne8W5G8dzOSVinvOYagXo 2tVeWwsIOb5IHpm42sUlKnX4E85UyqWdN5LAjT2tQS6epL/ig+BftsjTMkVvEN0mqkry 7LMetBaihsNUbvElTRPpgprvAS5IUp+st5DOFlg3U0SJ/g0lBTPhme2pD/Krm8PiB6kZ ZOYY5A1UmaLRylQkdbKNDWdlpy/i5kTJVUszQotgQy0bQotdfThAlYOWf7t8aLVrwj7s zG8axJ6rV+A+FN4KYIMLeedabp8e74C4CgqpsHGitjJz80CrfE7Ifk84LTHypvcCrMGK OIjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:in-reply-to :mime-version:user-agent:date:message-id:from:cc:references:to :subject:dkim-signature:arc-authentication-results; bh=Fg3XrZCMxm2WWNkvidAkKUKfXhS7qaOAZEcYTWPw8+w=; b=CaDoWt4wvkcBIGIW68kqqXUXGeW1yu9epWjy33swafEPmaHXfXMA/W41AR34/I8kyn C6Q3z5+2LWHczx6eZnV3vJX4ywrounnPc/4BgjtFHAvQn1BTZkWW8cr2q/rHNILH+rds J7Qm7+Yq6G28p19Ov0fRoyYg9pi01bGbFG+e5nmQe/WvedRB6OFlGQ63yNBKvj9H9v6Z FuJz9m0dC7jIjVY7vXhKS/Nwv0NfjlfQmXQo429EAv4NUjDPx2GLGP/sfew3qqv34eAz jNAWZO6LQFf/dluAnpdFVsNKZ9jew8p+4V8fLdJb6t3fcPaogFEJ4lf61kT3vmx/gcbt idxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=UbL1dpxT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q87si1233421pfa.272.2018.04.27.05.51.55; Fri, 27 Apr 2018 05:52:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=UbL1dpxT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758249AbeD0Mus (ORCPT + 99 others); Fri, 27 Apr 2018 08:50:48 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:38192 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757241AbeD0Mur (ORCPT ); Fri, 27 Apr 2018 08:50:47 -0400 Received: by mail-pf0-f195.google.com with SMTP id o76so1438701pfi.5 for ; Fri, 27 Apr 2018 05:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=Fg3XrZCMxm2WWNkvidAkKUKfXhS7qaOAZEcYTWPw8+w=; b=UbL1dpxT5s2N4ZdIE64NR+juHoLrPvmE6QFqjQAYpfyQVCMhCiBg2izT/UuB1zE4HL s2HTTP5E2iCLA2DKSJ1yXJqKfNN4bb41ydaDGFVmV2qsnZt9LO1pIvixoviPNVieU/Al jh5A0fno/+yT3/bRDeZCld6Rqmr446h5DfFv2sIdz/s9IXRjNq4pEBiqByo/mIiLjWFG PEnYvMoSGtUZArlVI8eipE134eqcDVJMDDdDmjvxDrjP3PNy/DJCJ5sMqd2aaQhaiB2x yHd3h6RladmVeRJO/7KJRaoNRxwWeypVSh/JpJrFDmyei7SqribJrKrqxloZSGbMQPmM /jjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=Fg3XrZCMxm2WWNkvidAkKUKfXhS7qaOAZEcYTWPw8+w=; b=nFrpxwDFbvaBU+ZmJFR85e4QCpCTfHuwLHz2ZKakJwKa6JPw21IlFbCIM80MxGarV8 QLK23svs9CsygoAq7bW+Qy0wmHiTdXhhyZvccX3dEXGNbgGIYZOfpgRf2Sfr5oMFORZc EOko2OXIa7OzFIHqYebpEdVjUkhusEc0aBpUqdiPapyGW+D0UJR+DPkLXFwL69VpZgKx 2oNUA8IKNfC7DkehbFi7oxbAntauidMCUo0t/Hz8KU2t5X7XgqrSw47w5tdOd7aasQYN ZyQwzF1PRuwZkkRYXIHZFfyeAwJ+67Zd5t+DEniUlWbR4EJs+mSCjaOnkDbq9YrJ7t5r 4mcg== X-Gm-Message-State: ALQs6tCOIQEi8/3LMdsWqRTPwAQi5OR3TFJHfoLKOmIcdwdHEh6ujDt3 RxpVUiiHKzOt5tnsknoD20xmnVtR X-Received: by 2002:a63:9557:: with SMTP id t23-v6mr2028900pgn.77.1524833446094; Fri, 27 Apr 2018 05:50:46 -0700 (PDT) Received: from [10.17.129.40] ([149.23.17.254]) by smtp.gmail.com with ESMTPSA id o123-v6sm2651569pga.76.2018.04.27.05.50.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Apr 2018 05:50:45 -0700 (PDT) Subject: Re: [greybus-dev] [PATCH] staging: greybus: Use gpio_is_valid() To: Alex Elder , hvaibhav.linux@gmail.com, johan@kernel.org, elder@kernel.org, gregkh@linuxfoundation.org References: <785eda4d65f396b353393e9538eba21095ce876e.1524825902.git.arvind.yadav.cs@gmail.com> <7ebee672-6413-6f1d-fe57-2e278c90cf9e@linaro.org> Cc: devel@driverdev.osuosl.org, greybus-dev@lists.linaro.org, linux-kernel@vger.kernel.org From: Arvind Yadav Message-ID: <3910023d-143e-7618-1fd4-f3bdffbfb3ec@gmail.com> Date: Fri, 27 Apr 2018 18:20:37 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <7ebee672-6413-6f1d-fe57-2e278c90cf9e@linaro.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Friday 27 April 2018 05:47 PM, Alex Elder wrote: > On 04/27/2018 05:52 AM, Arvind Yadav wrote: >> Replace the manual validity checks for the GPIO with the >> gpio_is_valid(). > I haven't looked through the code paths very closely, but I > think that get_named_gpio() might return -EPROBE_DEFER, which > would be something we want to pass to the caller. Yes of_get_name_gpio() can return other error value apart from -EPROBE_DEFER. > So rather than returning -ENODEV and hiding the reason the > call to of_get_named_gpio() failed, you should continue > returning the errno it supplies (if not a valid gpio number). > > -Alex I have return -ENODEV because invalid gpio pin can be positive. static inline bool gpio_is_valid(int number) { return number >= 0 && number < ARCH_NR_GPIOS; } Here if number > ARCH_NR_GPIOS then it's invalid but return value will be positive. We can return like this " return (gpio > 0) ? -ENODEV: gpio;" But not sure this is worth to handle this. ~arvind > >> Signed-off-by: Arvind Yadav >> --- >> drivers/staging/greybus/arche-platform.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/staging/greybus/arche-platform.c b/drivers/staging/greybus/arche-platform.c >> index 83254a7..fc6bf60 100644 >> --- a/drivers/staging/greybus/arche-platform.c >> +++ b/drivers/staging/greybus/arche-platform.c >> @@ -448,9 +448,9 @@ static int arche_platform_probe(struct platform_device *pdev) >> arche_pdata->svc_reset_gpio = of_get_named_gpio(np, >> "svc,reset-gpio", >> 0); >> - if (arche_pdata->svc_reset_gpio < 0) { >> + if (!gpio_is_valid(arche_pdata->svc_reset_gpio)) { >> dev_err(dev, "failed to get reset-gpio\n"); >> - return arche_pdata->svc_reset_gpio; >> + return -ENODEV; >> } >> ret = devm_gpio_request(dev, arche_pdata->svc_reset_gpio, "svc-reset"); >> if (ret) { >> @@ -468,9 +468,9 @@ static int arche_platform_probe(struct platform_device *pdev) >> arche_pdata->svc_sysboot_gpio = of_get_named_gpio(np, >> "svc,sysboot-gpio", >> 0); >> - if (arche_pdata->svc_sysboot_gpio < 0) { >> + if (!gpio_is_valid(arche_pdata->svc_sysboot_gpio)) { >> dev_err(dev, "failed to get sysboot gpio\n"); >> - return arche_pdata->svc_sysboot_gpio; >> + return -ENODEV; >> } >> ret = devm_gpio_request(dev, arche_pdata->svc_sysboot_gpio, "sysboot0"); >> if (ret) { >> @@ -487,9 +487,9 @@ static int arche_platform_probe(struct platform_device *pdev) >> arche_pdata->svc_refclk_req = of_get_named_gpio(np, >> "svc,refclk-req-gpio", >> 0); >> - if (arche_pdata->svc_refclk_req < 0) { >> + if (!gpio_is_valid(arche_pdata->svc_refclk_req)) { >> dev_err(dev, "failed to get svc clock-req gpio\n"); >> - return arche_pdata->svc_refclk_req; >> + return -ENODEV; >> } >> ret = devm_gpio_request(dev, arche_pdata->svc_refclk_req, >> "svc-clk-req"); >>