Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3712443pxb; Mon, 24 Jan 2022 16:05:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJxVWzfGWDwJUDDEnbwCMt9upUi4UiwTnyWpMk2ieCLgWZZlg2cTrVbClC9LiBjOum0SlCV9 X-Received: by 2002:a17:903:32c1:b0:14b:2d82:c05a with SMTP id i1-20020a17090332c100b0014b2d82c05amr12339167plr.55.1643069105269; Mon, 24 Jan 2022 16:05:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643069105; cv=none; d=google.com; s=arc-20160816; b=0xZDqTJvJIkaVldCoYQzntqkdy5fKyBIGvCSurE97Ad1MkB3QoF7Aa/gg3Fm2eu7QC wOds1YwyKXuNo8FNaDw0vDFsRAwtrqZ0vjC9ZKxm6zXLIl81T2nc7bXkUBbDVS5igXDa TtCZwnOthIdN0C7OVw33pY/kTDch7HooR7eksnzqBGHoxk46YhMifvYsot/xmoYMx40G plXgxNdUlTiL30QIDvqKcR4hcvK3QBPO6rnSQfnRhOQDeAqw5JvhCWqbE1J0Wk/U2wEg IhelxfTvyGQZR/zkEVlL0yGEM2N3sGboLpwHuJBEKdmJgYzsGMwtbHsFgqwnPfFM1/Ri LUQQ== 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=jkwAIey+qofz4FnJ63Kt6c/hx0ZAO225TvTBSL1rehCGIYvmjUG5+QVBfeeHI6imoU VXFwmZkmMzIIEZzeEQ1QOpIZ7+vyRyC/JaNX56iHsbRBgTLhdVpAgNI1leU1l7ZHMhZN 14ChABVZr1TQrj5/gtWckLeZQ9LEw7636BuXGNMoCXZdjnEY5BWwZQMDl2Nm9AWV0g+A VGmnZudocX1UbfY5w8URUi1u8AIUi23cfhHOwnzDCJurrRsZ3serqSgLKAHiGum3uff+ aeIxfK1tGLYJgtfD43LFUPB9OtMS2LElxUSlU6EywF8sCl/xphqVzZjTi7rC1Dh7WL+S pBGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=UC6+XVhf; 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 z2si12044930pgb.20.2022.01.24.16.04.52; Mon, 24 Jan 2022 16:05:05 -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=UC6+XVhf; 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 S1386407AbiAXX5P (ORCPT + 99 others); Mon, 24 Jan 2022 18:57:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50450 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1846344AbiAXXPn (ORCPT ); Mon, 24 Jan 2022 18:15:43 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5A9D1C06177D; Mon, 24 Jan 2022 13:23:39 -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 ams.source.kernel.org (Postfix) with ESMTPS id 2453FB8105C; Mon, 24 Jan 2022 21:23:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4E40EC340E4; Mon, 24 Jan 2022 21:23:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643059416; bh=a3dFkuC1B1onUYYjOCkI8tMCtX9oDS/YpYKObjKeaao=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UC6+XVhfuGX/FUZiRCl/hci9Jw8xjCBYSEyVImxP5V8YZktzCRr6+d+JP5u20Wvdv WVFqnKzGN4Mt4nhCLP9lvrwpqYn8wz1ooh5a1MAFMSL5F3vH1ZPppMKRSPU9dDxPT9 HVZo2atsanRPL1OG5secCTR07RfvoPY1sNpM2JCQ= 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.16 0608/1039] ACPI / x86: Add not-present quirk for the PCI0.SDHB.BRC1 device on the GPD win Date: Mon, 24 Jan 2022 19:39:57 +0100 Message-Id: <20220124184145.772042657@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184125.121143506@linuxfoundation.org> References: <20220124184125.121143506@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