Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp5248546ybc; Wed, 27 Nov 2019 00:46:20 -0800 (PST) X-Google-Smtp-Source: APXvYqzLoKR1lfMNhcRfzuMM9F48CnKxOTeSjY5eGyktOdKTaopLoLEWA13Uz0+e0G2cDsqsm/Ap X-Received: by 2002:a50:91d0:: with SMTP id h16mr30321297eda.203.1574844380381; Wed, 27 Nov 2019 00:46:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574844380; cv=none; d=google.com; s=arc-20160816; b=xwMlhJAAUF77P598UeKPdFylcpvZNKbPlVzfcpjnzrGbmJN4o8uE+wHQcVy1/UZpl7 EL5h34E9zafomr7ygvWTH2yBQ1EVx15IVAa1LkZAzLJ6jDYwuaHk0htypo/PBN/8zfeh NdJVuYi62yqz3Fp3+xwffPWOw1lzxD+0x1mvm0qfDs4dEuGf1j5LNEJvxDAy0ZtPiHFc oVR/T5/ODz2XPnU9bzQdt1LmBLN8Et/3cQ5QuFFbcLiTT0ltgm1GzmYnRpwtD7CS52zw 2GbQryVER9y+LHK/DKSUK+TwKZaS9w4O07PkGi9FbWGUz/+Ha1mavOg1hvzQJjplSlyW 2fMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=PGNmlIkKuMyZwPUh3HbvHtB/axdNFG0Qe9OTQzg7Wts=; b=rVGaQcyStjWXd2fPCTTSaPkOdsygEaZYmaxTlheRqp7D1HL75NqUBbw9sUtudiiqm0 EMWq7zmLipa2/pvEvsUk8xEy3sSfZycn3eVmcp9pebLGPOKiAXB2d0wASCvywql9bISS vVN6p0vQoE3xhaS7dOAK0hirRLipIxBlj2+07VA+fy23bA7VzhvTchlFrHimNdIJPZ0I y0JvvYm0JjIZ9Fbh2lgANR6KomocxUnolETJAdQEUAHXr5MnGX3pBAUPErzevDa5H8ZZ FX8mI7m3Y06KGsm9j9OhQYJpbZVrZ0RwhWq8WLywc8ZDtG/yD3IOBRkem9WJ8S7fzHtf txAg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id df16si626308edb.147.2019.11.27.00.45.55; Wed, 27 Nov 2019 00:46:20 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727104AbfK0Inl (ORCPT + 99 others); Wed, 27 Nov 2019 03:43:41 -0500 Received: from xavier.telenet-ops.be ([195.130.132.52]:48478 "EHLO xavier.telenet-ops.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726194AbfK0InK (ORCPT ); Wed, 27 Nov 2019 03:43:10 -0500 Received: from ramsan ([84.195.182.253]) by xavier.telenet-ops.be with bizsmtp id Wwiu2100T5USYZQ01wiuc1; Wed, 27 Nov 2019 09:43:07 +0100 Received: from rox.of.borg ([192.168.97.57]) by ramsan with esmtp (Exim 4.90_1) (envelope-from ) id 1iZsuU-0000xh-LV; Wed, 27 Nov 2019 09:42:54 +0100 Received: from geert by rox.of.borg with local (Exim 4.90_1) (envelope-from ) id 1iZsuU-0004OX-JP; Wed, 27 Nov 2019 09:42:54 +0100 From: Geert Uytterhoeven To: Linus Walleij , Bartosz Golaszewski , Jonathan Corbet , Rob Herring , Mark Rutland , Harish Jenny K N , Eugeniu Rosca Cc: Alexander Graf , Peter Maydell , Paolo Bonzini , Phil Reid , Marc Zyngier , Christoffer Dall , Magnus Damm , linux-gpio@vger.kernel.org, linux-doc@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, qemu-devel@nongnu.org, Geert Uytterhoeven Subject: [PATCH v3 2/7] gpiolib: Add support for gpiochipN-based table lookup Date: Wed, 27 Nov 2019 09:42:48 +0100 Message-Id: <20191127084253.16356-3-geert+renesas@glider.be> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191127084253.16356-1-geert+renesas@glider.be> References: <20191127084253.16356-1-geert+renesas@glider.be> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently GPIO controllers can only be referred to by label in GPIO lookup tables. Add support for looking them up by "gpiochipN" name, with "N" either the corresponding GPIO device's ID number, or the GPIO controller's first GPIO number. Signed-off-by: Geert Uytterhoeven --- If this is rejected, the GPIO Aggregator documentation must be updated. The second variant is currently used by the legacy sysfs interface only, so perhaps the chip->base check should be dropped? v3: - New. --- drivers/gpio/gpiolib.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index c9e47620d2434983..d24a3d79dcfe69ad 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1746,9 +1746,29 @@ static int gpiochip_match_name(struct gpio_chip *chip, void *data) return !strcmp(chip->label, name); } +static int gpiochip_match_id(struct gpio_chip *chip, void *data) +{ + int id = (uintptr_t)data; + + return id == chip->base || id == chip->gpiodev->id; +} + static struct gpio_chip *find_chip_by_name(const char *name) { - return gpiochip_find((void *)name, gpiochip_match_name); + struct gpio_chip *chip; + int id; + + chip = gpiochip_find((void *)name, gpiochip_match_name); + if (chip) + return chip; + + if (!str_has_prefix(name, GPIOCHIP_NAME)) + return NULL; + + if (kstrtoint(name + strlen(GPIOCHIP_NAME), 10, &id)) + return NULL; + + return gpiochip_find((void *)(uintptr_t)id, gpiochip_match_id); } #ifdef CONFIG_GPIOLIB_IRQCHIP -- 2.17.1