From patchwork Tue Jul 14 08:29:55 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomeu Vizoso X-Patchwork-Id: 494933 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3A9541402D7 for ; Tue, 14 Jul 2015 18:32:04 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=d5VuS0u7; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753044AbbGNIbS (ORCPT ); Tue, 14 Jul 2015 04:31:18 -0400 Received: from mail-wg0-f46.google.com ([74.125.82.46]:35173 "EHLO mail-wg0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752969AbbGNIbP (ORCPT ); Tue, 14 Jul 2015 04:31:15 -0400 Received: by wgjx7 with SMTP id x7so2610945wgj.2; Tue, 14 Jul 2015 01:31:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=xRcVMhDacvqA+kI/CpJxqwjpaHHPWqNrI8IK+qymBIs=; b=d5VuS0u7UWqStdd2oRS62Vd+7ZEePvCP1+aKofatd4ijAKlp52njPRdxE1/TJASCav vdQp5B3VkA70jIEzILD+WPz70OP8/2RY60Zwf5Q9Rie+TDXHNNza/wGpOctTlLCb9uHy veUJnT99NSa2BBQca5QwVe/uu4GwQDS1CzFCzudS43BEGEsZqzbuBN3W4/rrZFM9solx XwOGCUCvxVtEdAoR+cXfYoWHhLI2n3jBKkanXEfMERUxqCwLD/BgrW8mDfKPqEC0UkCH XfP1BifX83bg8h4AXebr4d6kNLxWhSj/Piv6hHOjIRpPc8K4+bIvK/8t42Zf9puar1od XYUQ== X-Received: by 10.180.9.168 with SMTP id a8mr3075318wib.77.1436862674074; Tue, 14 Jul 2015 01:31:14 -0700 (PDT) Received: from cizrna.lan ([109.72.12.162]) by smtp.gmail.com with ESMTPSA id k2sm1810368wif.4.2015.07.14.01.31.11 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Jul 2015 01:31:12 -0700 (PDT) From: Tomeu Vizoso To: linux-kernel@vger.kernel.org Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-tegra@vger.kernel.org, Tomeu Vizoso , Thierry Reding , Linus Walleij , Stephen Warren , Alexandre Courbot Subject: [PATCH v2 2/3] pinctrl: tegra: Only set the gpio range if needed Date: Tue, 14 Jul 2015 10:29:55 +0200 Message-Id: <1436862596-27730-3-git-send-email-tomeu.vizoso@collabora.com> X-Mailer: git-send-email 2.4.3 In-Reply-To: <1436862596-27730-1-git-send-email-tomeu.vizoso@collabora.com> References: <1436862596-27730-1-git-send-email-tomeu.vizoso@collabora.com> Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org If the gpio DT node has the gpio-ranges property, the range will be added by the gpio core and doesn't need to be added by the pinctrl driver. By having the gpio-ranges property, we have an explicit dependency from the gpio node to the pinctrl node and we can stop using the deprecated pinctrl_add_gpio_range() function. Signed-off-by: Tomeu Vizoso Acked-by: Stephen Warren Acked-by: Linus Walleij --- Changes in v2: None drivers/pinctrl/pinctrl-tegra.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/pinctrl-tegra.c b/drivers/pinctrl/pinctrl-tegra.c index 0f982b829be1..0fd7fd2b0f72 100644 --- a/drivers/pinctrl/pinctrl-tegra.c +++ b/drivers/pinctrl/pinctrl-tegra.c @@ -624,6 +624,22 @@ static struct pinctrl_desc tegra_pinctrl_desc = { .owner = THIS_MODULE, }; +static bool gpio_node_has_range(void) +{ + struct device_node *np; + bool has_prop = false; + + np = of_find_compatible_node(NULL, NULL, "nvidia,tegra30-gpio"); + if (!np) + return has_prop; + + has_prop = of_find_property(np, "gpio-ranges", NULL); + + of_node_put(np); + + return has_prop; +} + int tegra_pinctrl_probe(struct platform_device *pdev, const struct tegra_pinctrl_soc_data *soc_data) { @@ -708,7 +724,8 @@ int tegra_pinctrl_probe(struct platform_device *pdev, return PTR_ERR(pmx->pctl); } - pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range); + if (!gpio_node_has_range()) + pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range); platform_set_drvdata(pdev, pmx);