From patchwork Tue Apr 15 06:41:36 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen-Yu Tsai X-Patchwork-Id: 339182 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 84D17140093 for ; Tue, 15 Apr 2014 17:25:59 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750999AbaDOHWO (ORCPT ); Tue, 15 Apr 2014 03:22:14 -0400 Received: from mirror2.csie.ntu.edu.tw ([140.112.30.76]:36232 "EHLO mirror2.csie.ntu.edu.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750865AbaDOHWM (ORCPT ); Tue, 15 Apr 2014 03:22:12 -0400 X-Greylist: delayed 2393 seconds by postgrey-1.27 at vger.kernel.org; Tue, 15 Apr 2014 03:22:12 EDT Received: from wens by mirror2.csie.ntu.edu.tw with local (Exim 4.82) (envelope-from ) id 1WZx3u-0004jK-1w; Tue, 15 Apr 2014 14:41:42 +0800 From: Chen-Yu Tsai To: Linus Walleij , Johannes Berg , "John W. Linville" , Maxime Ripard Cc: Chen-Yu Tsai , Arnd Bergmann , Heikki Krogerus , Mika Westerberg , Alexandre Courbot , Stephen Warren , linux-gpio@vger.kernel.org, linux-wireless@vger.kernel.org, netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com Subject: [PATCH 2/7] gpiolib: Support purely name based gpiod lookup in device trees Date: Tue, 15 Apr 2014 14:41:36 +0800 Message-Id: <1397544101-18135-3-git-send-email-wens@csie.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1397544101-18135-1-git-send-email-wens@csie.org> References: <1397544101-18135-1-git-send-email-wens@csie.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch enables gpio-names based gpiod lookup in device tree usage, which ignores the index passed to gpiod_get_index. If this fails, fall back to the original function-index ("con_id"-gpios) based lookup scheme, for backward compatibility and any drivers needing more than one GPIO for any function. Signed-off-by: Chen-Yu Tsai Acked-by: Linus Walleij --- drivers/gpio/gpiolib.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 761013f..956f01e 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -2585,8 +2585,13 @@ static struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id, else snprintf(prop_name, 32, "gpios"); - desc = of_get_named_gpiod_flags(dev->of_node, prop_name, idx, - &of_flags); + /* try gpio-names based lookup first */ + desc = of_get_gpiod_flags_by_name(dev->of_node, con_id, &of_flags); + + /* fallback to function based lookup */ + if (IS_ERR(desc)) + desc = of_get_named_gpiod_flags(dev->of_node, prop_name, idx, + &of_flags); if (IS_ERR(desc)) return desc;