From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7F68CC54FD0 for ; Mon, 27 Apr 2020 09:22:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 54BAF206B6 for ; Mon, 27 Apr 2020 09:22:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587979377; bh=Pxuv+63uIXVBQfQTxfZNvzUt9zx+LD0NF0mqxrxESjs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=EXiQQOClPtwiHxQf14EYOtgONrHH/f/98Ck1BcNKIV10BtKbbgvMNCpwPRn5tj6wF Gp2+fzchQVqUCqJap61r2MyrTco7Qlz6sW+SylhrYQXoFMU1+hpGJRx/dJCUC3YoAE jNyxagDNwKeMRj7kpnnEWaGhnCNythhkG3JDcJnk= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726769AbgD0JW4 (ORCPT ); Mon, 27 Apr 2020 05:22:56 -0400 Received: from mail.kernel.org ([198.145.29.99]:57870 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726434AbgD0JW4 (ORCPT ); Mon, 27 Apr 2020 05:22:56 -0400 Received: from pali.im (pali.im [31.31.79.79]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B7DD920656; Mon, 27 Apr 2020 09:22:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587979375; bh=Pxuv+63uIXVBQfQTxfZNvzUt9zx+LD0NF0mqxrxESjs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=DiZnlLbL+4wXJfKjJPUkYsGZ8XlotTZGKBLgn7crkXN4pezM6H8FA1oHplzieoQC8 X8WWlQCyGPOu10+rBVEY2xyeisG4MA874EUdZkz08xhGS6zGljBiesIrFPcgfR4+i5 87aVmpnBB9aYZwoT1ZUYlMaRY1scTI5sZ+0MMTHg= Received: by pali.im (Postfix) id C35578A8; Mon, 27 Apr 2020 11:22:53 +0200 (CEST) Date: Mon, 27 Apr 2020 11:22:53 +0200 From: Pali =?utf-8?B?Um9ow6Fy?= To: Rob Herring Cc: PCI , Jason Cooper , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Thomas Petazzoni , Lorenzo Pieralisi , Andrew Murray , Remi Pommarel , Tomasz Maciej Nowak , Xogium , Marek =?utf-8?B?QmVow7pu?= , Bjorn Helgaas Subject: Re: [PATCH v3 05/12] PCI: aardvark: Issue PERST via GPIO Message-ID: <20200427092253.huppgr6w25jrnp4f@pali> References: <20200424153858.29744-1-pali@kernel.org> <20200424153858.29744-6-pali@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: NeoMutt/20180716 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org On Friday 24 April 2020 12:05:29 Rob Herring wrote: > On Fri, Apr 24, 2020 at 10:39 AM Pali Rohár wrote: > > @@ -1046,6 +1071,22 @@ static int advk_pcie_probe(struct platform_device *pdev) > > } > > pcie->root_bus_nr = bus->start; > > > > + pcie->reset_gpio = devm_gpiod_get_from_of_node(dev, dev->of_node, > > + "reset-gpios", 0, > > + GPIOD_OUT_LOW, > > + "pcie1-reset"); > > + ret = PTR_ERR_OR_ZERO(pcie->reset_gpio); > > + if (ret) { > > + if (ret == -ENOENT) { > > + pcie->reset_gpio = NULL; > > + } else { > > + if (ret != -EPROBE_DEFER) > > + dev_err(dev, "Failed to get reset-gpio: %i\n", > > + ret); > > + return ret; > > + } > > + } > > I believe all this can be replaced with devm_gpiod_get_optional. I'm looking at the devm_gpiod_get_optional() code and it calls fwnode_gpiod_get_index() which mangle passed gpio name by appending suffix from array gpio_suffixes[]. And then mangled name is passed to fwnode_get_named_gpiod(). At the end devm_gpiod_get_optional() handles -ENOENT and transform it to NULL. So via devm_gpiod_get_optional() I cannot request for "reset-gpios" DT property directly, but I need to specify implicit name "reset" due to appending suffix from gpio_suffixes[] array. And the only benefit is that I do not need to handle ret == -ENOENT state. Handling of -EPROBE_DEFER is still needed in aardvark driver. For me it makes usage of devm_gpiod_get_optional() in this case harder to debug code in future. As I would not be able to find a place which reads 'reset-gpios' DT property via 'git grep reset-gpios'. So it is really useful for this particular case to use devm_gpiod_get_optional() instead of devm_gpiod_get_from_of_node().