Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp185590pxj; Thu, 20 May 2021 07:14:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw87DSlY1PvJeVkIzEFzGCDx2wj97vkCAfHPDNMm5fq3vmCv4Vs+wUNpjfZC69aHxO+gcSY X-Received: by 2002:a05:600c:4f44:: with SMTP id m4mr3934307wmq.50.1621520072973; Thu, 20 May 2021 07:14:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621520072; cv=none; d=google.com; s=arc-20160816; b=g1Dnw/zhLcmvmmnKI8URkpqkTDf2lpN/lbJ/URo7urHP7lgcTDFwOlFLO+2NBe5Jct Jut8lGVPIYHjFvMIvPtpfnAakytQjB/+c+eeZ8nxO3R2s89l5+d4OCqoYwdoWwZ1kkUD 9R1wYnDbdQxc/xBZll8qxrGT3AJOYyx2EgKdswdVnFc5TSm5kHjBHAqG2/Jdb6H2jtLK HLyr4KKb2mLZl48wLSfBNx09z2OfCSZ76eUkXQd2aUsCT9r/1rj9jkSagsT98oTuLbt2 ec7cHxzwqWIGLmWJvhcFpSIH/NZlctypCBjGMFwwaHeFWjlSWvVKrC8MCyn5y2JlnLjB xYug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Y1NjdOLHUQzHFymiFoDSQw2j72nXbqyPKvtTA9/f6Uc=; b=XdbgjUqWHTlGNciV2laFuMGtX8dk3sU7vyJeP3oSyTI5KbPc8g6rl+e2SXBkFK0seD sZ01FUBlwtkBv/6oSQ0JpQ2Af7sqo3XIVK1h/N2cKBmczFe27/XGfeuWvyXIiHButwck 2f8HX8+7YTyUveMXIsyno6U+ln/JbhsNnnq9JO0UNTSBOaXVPHiRUfZn4wA9H8rmLY9k e990lEISBRayLJi1/FOZJpge/GQa15JRBBxtVVkGz6PkOuSUG7jxoWPMvn/dNSc45jDe EBOcF1Z1SO31HSrQGi0VVQg5uRQgeWtDWqz+AtcVsQL6mLGhkjuHZqXVx53vhABRvhOJ DXjA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=KIxRPaBe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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. [23.128.96.18]) by mx.google.com with ESMTP id x15si2719576ejv.85.2021.05.20.07.14.02; Thu, 20 May 2021 07:14:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=KIxRPaBe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S240867AbhETONn (ORCPT + 99 others); Thu, 20 May 2021 10:13:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50888 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240755AbhETOMj (ORCPT ); Thu, 20 May 2021 10:12:39 -0400 Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DE702C061362; Thu, 20 May 2021 07:09:48 -0700 (PDT) Received: by mail-wr1-x431.google.com with SMTP id p7so14092887wru.10; Thu, 20 May 2021 07:09:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Y1NjdOLHUQzHFymiFoDSQw2j72nXbqyPKvtTA9/f6Uc=; b=KIxRPaBeOTncTLOq/GzzgVaXLfRpMno2CKJ1r1XpsilyS2AJJviWYBO5ztuhIAyr5Q gWVB6i62yuxQ5ZvNdbfiNj0LHMPVmda0LEZQ3n+YH8T8MvT7Q8XtFXyUghqTcwrWIPCg kZ1z2oC/K0LYOvFSnUopnV0jJikHJupZFSFHLj/Pll097wX67gr8bdKt68LTztZhHP06 xIHit+GUNRKaY+w1oGEJ8s1CHYuotQx1ugqs/UVneiEyKsNZcG/nrJvE9MTbJtE8p2Sp ThDo0t1VodfZvNHeEVYJ/e0RQw+67TQVvCu9YIr08H+2WI2Ss/11a5b5RwCvX1IuhE2G FL8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Y1NjdOLHUQzHFymiFoDSQw2j72nXbqyPKvtTA9/f6Uc=; b=Wo5Smw5nfTOad4ituoPqAqj2ZZSy5MFkkCijAm1fCogMrXJ6YUbyj2jAnk5r0MUhHS etTyEIVPTrl/nKGz/kQd8NPSB+MedOJLfB2e+6bl3DCm5QO7R/pm5TUXT6pC1c4xqNq+ W1a/z0Z4LFcbnhyqxwmOfgbMbHLpn3E3tkUtKL+p84ZEA1U8MRC+D9/xPCkT9JdL5LMy KBtzSTAxo0FrXyYIuXSXXsDkmFl4XGlS1e6aG41sL9P8V1M3y8ktaQSOxnEk4Mt2gKLu oWmXnlkzaS1DtllS/wZWfLytoecEdS7IQsR7iqmYRlzfBc0jhISFYd2NwxGr1N/WjXCg mQPw== X-Gm-Message-State: AOAM532h0gc7uuJX3JDbgtsU1pysEkw09SrerUBHQXg2qAFSbJXrb+KG FoqawY3Mw8CG8Fk7V+PxYbM= X-Received: by 2002:adf:d231:: with SMTP id k17mr4426065wrh.78.1621519787548; Thu, 20 May 2021 07:09:47 -0700 (PDT) Received: from valhalla.home ([91.110.20.117]) by smtp.gmail.com with ESMTPSA id m6sm8411974wml.3.2021.05.20.07.09.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 May 2021 07:09:47 -0700 (PDT) From: Daniel Scally To: "Rafael J . Wysocki" , Andy Shevchenko , Daniel Scally , Wolfram Sang , Lee Jones , Hans de Goede , Maximilian Luz , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, linux-i2c@vger.kernel.org, platform-driver-x86@vger.kernel.org, devel@acpica.org Cc: Len Brown , Mika Westerberg , Russell King , Linus Walleij , Bartosz Golaszewski , Mark Gross , Robert Moore , Erik Kaneda , laurent.pinchart@ideasonboard.com, kieran.bingham@ideasonboard.com Subject: [PATCH v4 6/8] gpiolib: acpi: Add acpi_gpio_get_io_resource() Date: Thu, 20 May 2021 15:09:26 +0100 Message-Id: <20210520140928.3252671-7-djrscally@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210520140928.3252671-1-djrscally@gmail.com> References: <20210520140928.3252671-1-djrscally@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a function to verify that a given acpi_resource represents an IO type GPIO resource, and return it if so. Signed-off-by: Daniel Scally --- Changes since v3: - Patch introduced drivers/gpio/gpiolib-acpi.c | 23 +++++++++++++++++++++++ include/linux/acpi.h | 7 +++++++ 2 files changed, 30 insertions(+) diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c index 684ddb35d83b..9887bb684575 100644 --- a/drivers/gpio/gpiolib-acpi.c +++ b/drivers/gpio/gpiolib-acpi.c @@ -196,6 +196,29 @@ bool acpi_gpio_get_irq_resource(struct acpi_resource *ares, } EXPORT_SYMBOL_GPL(acpi_gpio_get_irq_resource); +/** + * acpi_gpio_get_io_resource - Fetch details of an ACPI resource if it is a GPIO + * I/O resource or return False if not. + * @ares: Pointer to the ACPI resource to fetch + * @agpio: Pointer to a &struct acpi_resource_gpio to store the output pointer + */ +bool acpi_gpio_get_io_resource(struct acpi_resource *ares, + struct acpi_resource_gpio **agpio) +{ + struct acpi_resource_gpio *gpio; + + if (ares->type != ACPI_RESOURCE_TYPE_GPIO) + return false; + + gpio = &ares->data.gpio; + if (gpio->connection_type != ACPI_RESOURCE_GPIO_TYPE_IO) + return false; + + *agpio = gpio; + return true; +} +EXPORT_SYMBOL_GPL(acpi_gpio_get_io_resource); + static void acpi_gpiochip_request_irq(struct acpi_gpio_chip *acpi_gpio, struct acpi_gpio_event *event) { diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 170b9bebdb2b..e8ba7063c000 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -1098,6 +1098,8 @@ void __acpi_handle_debug(struct _ddebug *descriptor, acpi_handle handle, const c #if defined(CONFIG_ACPI) && defined(CONFIG_GPIOLIB) bool acpi_gpio_get_irq_resource(struct acpi_resource *ares, struct acpi_resource_gpio **agpio); +bool acpi_gpio_get_io_resource(struct acpi_resource *ares, + struct acpi_resource_gpio **agpio); int acpi_dev_gpio_irq_get_by(struct acpi_device *adev, const char *name, int index); #else static inline bool acpi_gpio_get_irq_resource(struct acpi_resource *ares, @@ -1105,6 +1107,11 @@ static inline bool acpi_gpio_get_irq_resource(struct acpi_resource *ares, { return false; } +static inline bool acpi_gpio_get_io_resource(struct acpi_resource *ares, + struct acpi_resource_gpio **agpio) +{ + return false; +} static inline int acpi_dev_gpio_irq_get_by(struct acpi_device *adev, const char *name, int index) { -- 2.25.1