Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3677472pxb; Mon, 24 Jan 2022 15:07:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJxX1blxEEcRjTHIXjSrin+PujpSZarIzZ/avjIfjbw2II0y6OU3qQkQRMYnhZlwDqdSoqfZ X-Received: by 2002:a17:902:c40a:b0:14b:276d:1bb with SMTP id k10-20020a170902c40a00b0014b276d01bbmr13486672plk.26.1643065641117; Mon, 24 Jan 2022 15:07:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643065641; cv=none; d=google.com; s=arc-20160816; b=TN/3hqdds1bXs8jc0RJUPk3nayasM83gjVyIctFFwN2TPYmovUt0XiCKAWP51gEykP u+/8jrJ4xnlDemGeTxWrf0fwLzjShlpt9RIqr9ED7lN7zOTGFr5DuXwTMB6M9/Q8pGjO KQfVz5lC8VG3FTZKbCErCcoArkSiljX/k4OBGQP5Rc3IU3PyNBenv6w9yBP0CVaTceXw +eVf3FHp/nLJiEcYI0ucz2T1UypZtozXeJMGfQ12GkwvfF1i4IZLr6bY1ujDVMsprZ2Z 7kdiPfaf7xWd5RksSbCv9m0aTA4Pn/FJ3UqGZxjkg95iseyYy/j52tB6DPYBRe/vFE1i 0/ag== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=I256MUr957wFBy9veJOyMyjM6dlVqu1XqsI8EopNrE0=; b=ZNpVXWzhD8IPOgpjRs6VX8L9GkwKNXYDSLgjw5Eo+8PJEeNvqhybAAml0Dtp3PJMVm X7kmz3vpOLgdF91DBaXZko8NYHz5E4DtN2M89MB01URCQ5bQpZAxheLrGbOb8Y/Tt3KH bp7aoq7Yvp7uHg/9M0cxmXRDII7UkmrJ1GS6AtAeGBHb0hmNoO69ViWztmCSbyKvvy60 gMlNuea90aSm6VcL4Fodz3DUPgcE79BCN20hNjNEiYGN6Xj0iW+giA/W2XIWtTOiJGsr ZjGWXseMsIoohuKN9NnfOjZQ/GDHtcKpIXV8QCXPVZXSPHnd+GBgQN1P6howW6I4o2X0 WrGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=oRNpjNSm; 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=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m13si5644319plx.70.2022.01.24.15.07.09; Mon, 24 Jan 2022 15:07:21 -0800 (PST) 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=@linuxfoundation.org header.s=korg header.b=oRNpjNSm; 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=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1842733AbiAXXC2 (ORCPT + 99 others); Mon, 24 Jan 2022 18:02:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1455940AbiAXVzA (ORCPT ); Mon, 24 Jan 2022 16:55:00 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 73985C061364; Mon, 24 Jan 2022 12:35:33 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 0FFC661506; Mon, 24 Jan 2022 20:35:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E1570C340E5; Mon, 24 Jan 2022 20:35:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643056532; bh=a3dFkuC1B1onUYYjOCkI8tMCtX9oDS/YpYKObjKeaao=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oRNpjNSmNI78C63Vky+f5I5Q8fJX3njCbhCYBsUpky5ZKa2MXYH4eIWZf+JqphIJO hhdfTh7rMBXehCCz6962eQuBqWcZtQ+olwfsytVC2KzWIERSP9ppWVd5JrLS+9qFsd tRAVcA7OG9t6lzgves56suTkqlXVU5lgErDO1l58= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hans de Goede , "Rafael J. Wysocki" , Sasha Levin Subject: [PATCH 5.15 516/846] ACPI / x86: Add not-present quirk for the PCI0.SDHB.BRC1 device on the GPD win Date: Mon, 24 Jan 2022 19:40:33 +0100 Message-Id: <20220124184118.816851771@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184100.867127425@linuxfoundation.org> References: <20220124184100.867127425@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hans de Goede [ Upstream commit 57d2dbf710d832841872fb15ebb79429cab90fae ] The GPD win and its sibling the GPD pocket (99% the same electronics in a different case) use a PCI wifi card. But the ACPI tables on both variants contain a bug where the SDIO MMC controller for SDIO wifi cards is enabled despite this. This SDIO MMC controller has a PCI0.SDHB.BRC1 child-device which _PS3 method sets a GPIO causing the PCI wifi card to turn off. At the moment there is a pretty ugly kludge in the sdhci-acpi.c code, just to work around the bug in the DSDT of this single design. This can be solved cleaner/simply with a quirk overriding the _STA return of the broken PCI0.SDHB.BRC1 PCI0.SDHB.BRC1 child with a status value of 0, so that its power_manageable flag gets cleared, avoiding this problem. Note that even though it is not used, the _STA method for the MMC controller is deliberately not overridden. If the status of the MMC controller were forced to 0 it would never get suspended, which would cause these mini-laptops to not reach S0i3 level when suspended. Signed-off-by: Hans de Goede Signed-off-by: Rafael J. Wysocki Signed-off-by: Sasha Levin --- drivers/acpi/x86/utils.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/acpi/x86/utils.c b/drivers/acpi/x86/utils.c index 190bfc2ab3f26..b3fb428461c6f 100644 --- a/drivers/acpi/x86/utils.c +++ b/drivers/acpi/x86/utils.c @@ -94,9 +94,10 @@ static const struct override_status_id override_status_ids[] = { /* * The GPD win BIOS dated 20170221 has disabled the accelerometer, the * drivers sometimes cause crashes under Windows and this is how the - * manufacturer has solved this :| Note that the the DMI data is less - * generic then it seems, a board_vendor of "AMI Corporation" is quite - * rare and a board_name of "Default String" also is rare. + * manufacturer has solved this :| The DMI match may not seem unique, + * but it is. In the 67000+ DMI decode dumps from linux-hardware.org + * only 116 have board_vendor set to "AMI Corporation" and of those 116 + * only the GPD win and pocket entries' board_name is "Default string". * * Unfortunately the GPD pocket also uses these strings and its BIOS * was copy-pasted from the GPD win, so it has a disabled KIOX000A @@ -120,6 +121,19 @@ static const struct override_status_id override_status_ids[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Default string"), DMI_MATCH(DMI_BIOS_DATE, "05/25/2017") }), + + /* + * The GPD win/pocket have a PCI wifi card, but its DSDT has the SDIO + * mmc controller enabled and that has a child-device which _PS3 + * method sets a GPIO causing the PCI wifi card to turn off. + * See above remark about uniqueness of the DMI match. + */ + NOT_PRESENT_ENTRY_PATH("\\_SB_.PCI0.SDHB.BRC1", ATOM_AIRMONT, { + DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"), + DMI_EXACT_MATCH(DMI_BOARD_SERIAL, "Default string"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"), + }), }; bool acpi_device_override_status(struct acpi_device *adev, unsigned long long *status) -- 2.34.1