Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp3035421imj; Mon, 11 Feb 2019 12:41:16 -0800 (PST) X-Google-Smtp-Source: AHgI3IaOKP5Tpt0TVmOYxW+Drj2zMbaYUTQBgcG3DZMsw5ptiXmjZ6NNFxZcVidFzZNPbpPnKPfm X-Received: by 2002:a65:5bc4:: with SMTP id o4mr105947pgr.426.1549917676063; Mon, 11 Feb 2019 12:41:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549917676; cv=none; d=google.com; s=arc-20160816; b=GvnYlbuEFxH9LlJgQHWbboin6TbdwoWBOo+RWYizx4Sd5L17pgpa6Hr/QdaPX84/1f hr40uRI9u0N7EFFMFrtIvj7PNqNyIeQWaIH6Z/ibIZtMYSNntpc5SeDk51gRgmKstGG4 mwd7spRMm3UZn5i4t+GzfavyWhB9DJrRHTkvGH4LaSSf8YQNwTh5/g4g2sojeUL2h9yW epUNgyhpJcs3SCjHTJv/h/VoA9YW9mI0CZlgYjM2ng2zekJ/EEIsgJcr7KTUwxTS+aKP x36eZcOMflydoImwp2NF5Nngz6tnytqng5EzB8AkqHhua6E4BE1tzMqs9gclf82MEcO9 Ws+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ospWOkK/asl+2XUsQlMJFKpsi9hzWjjt+jhjOjpJePI=; b=mQfkKqqTPZi0LmWaDb8TNNVAWU3oSrIBPuKIqeESq/qe24oxvpQLwg7eWNEYGoFKqg d0rcUbpXAGcjUm44LsUGYA5F7xL9jA3vh25uMhel3qmeh1ej0CNI2gOfbVtiSuAISysk 9oJzCpsGowzXzxJoZUIiD67BaB4IL/RfZN6RSA8UTdDU1M0+Hf+o1IO9o5e4mxgcwvKH cSlQ8IuvMnvI1AbJ1F5lXHwNIZAkQ/h2DPo1IshbFtMVwOhlq9MvG6Jps45sOot3DBMn iAGrWCenwt5GzzQNlZRxrd2M507nSTaavR6luyWdSsJHbaLzE4Ni6gFoo44tC5udIm9o dPGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=cPrdr72K; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m11si11129568plt.26.2019.02.11.12.40.59; Mon, 11 Feb 2019 12:41:16 -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; dkim=pass header.i=@chromium.org header.s=google header.b=cPrdr72K; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387434AbfBKTBS (ORCPT + 99 others); Mon, 11 Feb 2019 14:01:18 -0500 Received: from mail-pf1-f195.google.com ([209.85.210.195]:45960 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733288AbfBKTBR (ORCPT ); Mon, 11 Feb 2019 14:01:17 -0500 Received: by mail-pf1-f195.google.com with SMTP id j3so5672671pfi.12 for ; Mon, 11 Feb 2019 11:01:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ospWOkK/asl+2XUsQlMJFKpsi9hzWjjt+jhjOjpJePI=; b=cPrdr72Kr46b07xpUQKaCG7VTFOHLxgcw45o9iw78EhuSq7MrWyovKXYsbT1a4Opkh 34TWfkx3SN4fwpRBy0nuoPsIbVAH4sR0fPSl76R3+KoOHMQQ7cPgWu3+aOI+szFQmiCV FJ59yNb8z42cC15frnhqLLeFhkijlhl6IdKX0= 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=ospWOkK/asl+2XUsQlMJFKpsi9hzWjjt+jhjOjpJePI=; b=IxSVQZ4h2k2/a7WqeSmhdV9iAVvSBzVAeuVErptrOIuLTzziC891VKvWvABfBkO+g1 OXjxJuDa8WmBSIc5EYL62z/+TehGSSZSHoBNxYkfm+T2GuLX9VldO3ObDwbxD1Pa5jW9 ZpcwVBf4C30w9HqoRQpvYlBp17c7AbcXtD3TwzAbVLgl9rzlgnWrpjYhtddODKtaOHlw +dt32bluYzBrdqP+wiMgSYGvzFtff1CN17rMoEXwMhG9yTlLLitMNTPlgwVzW6s83u3z H2GganopI1Drt5+N9INlBkzrtVd9FGn5gDiVGi07Uni93tKmkPXp909GWYhkJU6UaVO9 KFwA== X-Gm-Message-State: AHQUAube3Dd8Hg8Kt58rs7k1lpCROd5/ewlpmlz8pjwChgWTtJ7+LTGd 2PspUu3kYfz750aFWWz0aJv2jQ== X-Received: by 2002:a63:2ad4:: with SMTP id q203mr10550084pgq.43.1549911676251; Mon, 11 Feb 2019 11:01:16 -0800 (PST) Received: from egranata0.mtv.corp.google.com ([2620:15c:202:1:e209:54cf:7c16:6776]) by smtp.gmail.com with ESMTPSA id k66sm976877pgc.24.2019.02.11.11.01.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Feb 2019 11:01:15 -0800 (PST) From: egranata@chromium.org To: hdegoede@redhat.com, mika.westerberg@linux.intel.com, dtor@chromium.org, andy.shevchenko@gmail.com, rafael@kernel.org, gregkh@linuxfoundation.org, enric.balletbo@collabora.com, linux-kernel@vger.kernel.org, gwendal@chromium.org, linux-acpi@vger.kernel.org, briannorris@chromium.org, andriy.shevchenko@linux.intel.com Cc: egranata@google.com, Enrico Granata Subject: [PATCH v2] driver: platform: Support parsing GpioInt 0 in platform_get_irq() Date: Mon, 11 Feb 2019 11:01:12 -0800 Message-Id: <20190211190112.209286-1-egranata@chromium.org> X-Mailer: git-send-email 2.20.1.791.gb4d0f1c61a-goog In-Reply-To: <20190207185917.167829-1-egranata@google.com> References: <20190207185917.167829-1-egranata@google.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Enrico Granata ACPI 5 added support for GpioInt resources as a way to provide information about interrupts mediated via a GPIO controller. Several device buses (e.g. SPI, I2C) have support for retrieving an IRQ specified via this type of resource, and providing it directly to the driver as an IRQ number. This is not currently done for the platform drivers, as platform_get_irq() does not try to parse GpioInt() resources. This requires drivers to either have to support only one possible IRQ resource, or to have code in place to try both as a failsafe. While there is a possibility of ambiguity for devices that exposes multiple IRQs, it is easy and feasible to support the common case of devices that only expose one IRQ which would be of either type depending on the underlying system's architecture. This commit adds support for parsing a GpioInt resource in order to fulfill a request for the index 0 IRQ for a platform device. Signed-off-by: Enrico Granata --- Changes in v2: - only support IRQ index 0 drivers/base/platform.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 1c958eb33ef4d..0d3611cd1b3bc 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -127,7 +127,20 @@ int platform_get_irq(struct platform_device *dev, unsigned int num) irqd_set_trigger_type(irqd, r->flags & IORESOURCE_BITS); } - return r ? r->start : -ENXIO; + if (r) + return r->start; + + /* + * For the index 0 interrupt, allow falling back to GpioInt + * resources. While a device could have both Interrupt and GpioInt + * resources, making this fallback ambiguous, in many common cases + * the device will only expose one IRQ, and this fallback + * allows a common code path across either kind of resource. + */ + if (num == 0 && has_acpi_companion(&dev->dev)) + return acpi_dev_gpio_irq_get(ACPI_COMPANION(&dev->dev), num); + + return -ENXIO; #endif } EXPORT_SYMBOL_GPL(platform_get_irq); -- 2.20.1.791.gb4d0f1c61a-goog