Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp2383839rwb; Thu, 29 Sep 2022 09:30:06 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5aoCRsoI+60JfafBhq6cBe8PrmiiqsqPtnFw2lxqOiZoLLfq2SO3Z1FtVxjuz0ZIhjObY6 X-Received: by 2002:a17:907:6d09:b0:782:393c:36c1 with SMTP id sa9-20020a1709076d0900b00782393c36c1mr3375357ejc.43.1664469005936; Thu, 29 Sep 2022 09:30:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664469005; cv=none; d=google.com; s=arc-20160816; b=wWMYBu6LvqGUzDDH68lopjoyqgVYvniQiOBI6GHEmUMF6RSJLdYrczf5WO3DMDa5Ml PZ8qjA3+oBSKZ8iRmj93rMsGqpkXfTPExXQdJXZOqMKd0sO0Jq6MeLizb0lnlUfxpWoQ OFvUlKaVoDFKVtAL8kQjUWdeHNXGMMUuwzueufCtowiTOnfbRD1P5jCnEckR89VAEsrc XWR3JcR1gQSzncPlZNcyyDW00hgtE/xvwUDEwLRtD4KyElFDzDYjI4DLlLNe01oO1e/O 7Hhi6eO9SamUX3n3bTIj9PidxVpPLa2t/RzdEmAD96vrx5tq0GSmdXtGCb9ZXgMpcsAL VRuQ== 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=7X+A3HUjv/AFbiPoz+UjvIQeQtBXjNPEmQGM5tZ7iJk=; b=oJe2ZdSk20OFCtffA329k+fzgmkY/VNDdFv0AyC4gwcoRDmkN9pB2DZBtoTmbRFJhZ DUL8ZtUgNEsgIpstikyRRsNFFclS9SJgWs9w0teFXgdQf5i8qc9wL7nZHlos2AYAs7vd O6uV1AreBqqCIzucQ1BRVlYG1NDuuTmsIiSPGkHLQevhQz4Li34KRx8qYUWMXpVzk5uy rk826nuhqLNPda6l5o7QpkolqedIdXgj3yPLXXUdmQQCzKXn7GPux6NcTpwiDGyG566y LSgR5nQyC1Yr5bTjPSptbczK/L9B7TwqKNMq6wUKQyjW8KUsPXCUYfAayLxpP9OWsx4H Idvw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=meJY3jLH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x6-20020a50d606000000b0044e8b287219si7800552edi.179.2022.09.29.09.29.39; Thu, 29 Sep 2022 09:30:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=meJY3jLH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S236181AbiI2QVB (ORCPT + 99 others); Thu, 29 Sep 2022 12:21:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36340 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236171AbiI2QTm (ORCPT ); Thu, 29 Sep 2022 12:19:42 -0400 Received: from mail-il1-x136.google.com (mail-il1-x136.google.com [IPv6:2607:f8b0:4864:20::136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BFF11E1118 for ; Thu, 29 Sep 2022 09:19:31 -0700 (PDT) Received: by mail-il1-x136.google.com with SMTP id a2so935598iln.13 for ; Thu, 29 Sep 2022 09:19:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7X+A3HUjv/AFbiPoz+UjvIQeQtBXjNPEmQGM5tZ7iJk=; b=meJY3jLHRLWTQsoLhEUKky21w26HmTTsiESdfNlO5GSDiaXS4j9Amf1boWrOO0y9d0 ylDxFCo9jLT2b0N5GfRnmspc4uH3ftvwm+Pgusgaa3x287LgoAu4HzLeH8M01gnuQ+WO N4KETVF/8sRbQcAGT7HYjRYAkcenDj/PC7p5c= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7X+A3HUjv/AFbiPoz+UjvIQeQtBXjNPEmQGM5tZ7iJk=; b=FE8SxF5GAyvpCPG2lI0NG8YHi9Z8lxu1LeJfvfIhs5OfE2nsizLEfQlE/ZGMntbcMG 9E0UQLRp0uO/FOBpiwxsONkx0YzTnQvHmusevcRVoEgdLydkAcA+DmYY42clB1GVtzKb 7vDXGrP7hhX33XA6vn8O420Qx2hi/obE+CYi0++KHQWrfxwo+4C8hCgzL7WOgPvK3YEk 205NiklW/T8IX/X2QONjiSvMt192XtwRDrlYuWodKt5zFI49J3xPbR70QgFlsItJWCis DmNlCz+w3jDViYsYBBnO7jO6zAkZJSm7ysmdRWHTPobVRI6tEV9OR0IQyul88NYodFKg v0iw== X-Gm-Message-State: ACrzQf2By0AcCR2/5R7cCgZ4slslJS/YfyIRGZFlNQrqMeBWpmHuk6mx dDqDOj6k8Y7Fb6AUGjb63a7DHQ== X-Received: by 2002:a05:6e02:1bac:b0:2f2:45c2:235c with SMTP id n12-20020a056e021bac00b002f245c2235cmr2076837ili.128.1664468370357; Thu, 29 Sep 2022 09:19:30 -0700 (PDT) Received: from rrangel920.bld.corp.google.com (h24-56-189-219.arvdco.broadband.dynamic.tds.net. [24.56.189.219]) by smtp.gmail.com with ESMTPSA id f12-20020a02848c000000b0035aab2f1ab1sm2965451jai.134.2022.09.29.09.19.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Sep 2022 09:19:30 -0700 (PDT) From: Raul E Rangel To: linux-acpi@vger.kernel.org, linux-input@vger.kernel.org Cc: andriy.shevchenko@linux.intel.com, dmitry.torokhov@gmail.com, hdegoede@redhat.com, rafael@kernel.org, mika.westerberg@linux.intel.com, mario.limonciello@amd.com, timvp@google.com, linus.walleij@linaro.org, jingle.wu@emc.com.tw, Raul E Rangel , Len Brown , linux-kernel@vger.kernel.org Subject: [PATCH v6 08/13] ACPI: PM: Take wake IRQ into consideration when entering suspend-to-idle Date: Thu, 29 Sep 2022 10:19:12 -0600 Message-Id: <20220929093200.v6.8.I7d9202463f08373feccd6e8fd87482c4f40ece5d@changeid> X-Mailer: git-send-email 2.37.3.998.g577e59143f-goog In-Reply-To: <20220929161917.2348231-1-rrangel@chromium.org> References: <20220929161917.2348231-1-rrangel@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This change adds support for ACPI devices that use ExclusiveAndWake or SharedAndWake in their _CRS GpioInt definition (instead of using _PRW), and also provide power resources. Previously the ACPI subsystem had no idea if the device had a wake capable interrupt armed. This resulted in the ACPI device PM system placing the device into D3Cold, and thus cutting power to the device. With this change we will now query the _S0W method to figure out the appropriate wake capable D-state. Signed-off-by: Raul E Rangel --- Changes in v6: - Refactored to leave else clause Changes in v5: - Go back to using adev->wakeup.flags.valid to keep the diff cleaner - Fix a typo in comment drivers/acpi/device_pm.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c index 9dce1245689ca25..b657998ce728e4c 100644 --- a/drivers/acpi/device_pm.c +++ b/drivers/acpi/device_pm.c @@ -681,7 +681,22 @@ static int acpi_dev_pm_get_state(struct device *dev, struct acpi_device *adev, d_min = ret; wakeup = device_may_wakeup(dev) && adev->wakeup.flags.valid && adev->wakeup.sleep_state >= target_state; + } else if (device_may_wakeup(dev) && dev->power.wakeirq) { + /* + * The ACPI subsystem doesn't manage the wake bit for IRQs + * defined with ExclusiveAndWake and SharedAndWake. Instead we + * expect them to be managed via the PM subsystem. Drivers + * should call dev_pm_set_wake_irq to register an IRQ as a wake + * source. + * + * If a device has a wake IRQ attached we need to check the + * _S0W method to get the correct wake D-state. Otherwise we + * end up putting the device into D3Cold which will more than + * likely disable wake functionality. + */ + wakeup = true; } else { + /* ACPI GPE is specified in _PRW. */ wakeup = adev->wakeup.flags.valid; } -- 2.37.3.998.g577e59143f-goog