From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 507A2C433FE for ; Tue, 8 Dec 2020 16:25:35 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 409D823A75 for ; Tue, 8 Dec 2020 16:25:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 409D823A75 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 44EDB16D2; Tue, 8 Dec 2020 17:24:41 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 44EDB16D2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1607444731; bh=RlcJ9Las5EU9jq+WBPl+D/EtsfI71o5RhnyUT+75Jek=; h=Date:From:To:Subject:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=sDlyyL9U4EyvmziUX/ljeQocQA81SP/TwMH9dYGFDZn62XRyxN8+WloNH/BtvRcDC QWOrwtXEko38MPJxBTyPSeBaiflejAeqm9bH5AP3UIs85eR4talFcI1QxGBezAYUQt AdqCEleZEYl2hzmlxmKQDQwi9U4+QvLZxJ4vxKio= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id BA3D0F80164; Tue, 8 Dec 2020 17:24:40 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 43A13F8019D; Tue, 8 Dec 2020 17:24:39 +0100 (CET) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 7BADBF80130 for ; Tue, 8 Dec 2020 17:24:32 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 7BADBF80130 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 364D7AC94; Tue, 8 Dec 2020 16:24:32 +0000 (UTC) Date: Tue, 08 Dec 2020 17:24:32 +0100 Message-ID: From: Takashi Iwai To: Jaroslav Kysela Subject: Re: [PATCH] ASoC: AMD Renoir - add DMI table to avoid the ACP mic probe (broken BIOS) In-Reply-To: <20201208153654.2733354-1-perex@perex.cz> References: <20201208153654.2733354-1-perex@perex.cz> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/25.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Cc: ALSA development , Mark Brown , stable@kernel.org, Vijendar Mukunda X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" On Tue, 08 Dec 2020 16:36:54 +0100, Jaroslav Kysela wrote: > > Users reported that some Lenovo AMD platforms do not have ACP microphone, > but the BIOS advertises it via ACPI. > > This patch create a simple DMI table, where those machines with the broken > BIOS can be added. The DMI description for Lenovo IdeaPad 5 and > IdeaPad Flex 5 devices are added there. > > Also describe the dmic_acpi_check kernel module parameter in a more > understandable way. > > BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1892115 > Cc: > Cc: Vijendar Mukunda > Cc: Mark Brown > Signed-off-by: Jaroslav Kysela > --- > sound/soc/amd/renoir/rn-pci-acp3x.c | 28 +++++++++++++++++++++++----- > 1 file changed, 23 insertions(+), 5 deletions(-) > > diff --git a/sound/soc/amd/renoir/rn-pci-acp3x.c b/sound/soc/amd/renoir/rn-pci-acp3x.c > index b943e59fc302..3289ab3eae6f 100644 > --- a/sound/soc/amd/renoir/rn-pci-acp3x.c > +++ b/sound/soc/amd/renoir/rn-pci-acp3x.c > @@ -6,6 +6,7 @@ > > #include > #include > +#include > #include > #include > #include > @@ -20,14 +21,13 @@ module_param(acp_power_gating, int, 0644); > MODULE_PARM_DESC(acp_power_gating, "Enable acp power gating"); > > /** > - * dmic_acpi_check = -1 - Checks ACPI method to know DMIC hardware status runtime > - * = 0 - Skips the DMIC device creation and returns probe failure > - * = 1 - Assumes that platform has DMIC support and skips ACPI > - * method check > + * dmic_acpi_check = -1 - Use ACPI/DMI method to detect the DMIC hardware presence at runtime > + * = 0 - Skip the DMIC device creation and return probe failure > + * = 1 - Force DMIC support > */ > static int dmic_acpi_check = ACP_DMIC_AUTO; > module_param(dmic_acpi_check, bint, 0644); > -MODULE_PARM_DESC(dmic_acpi_check, "checks Dmic hardware runtime"); > +MODULE_PARM_DESC(dmic_acpi_check, "Digital microphone presence (-1=auto, 0=none, 1=force)"); > > struct acp_dev_data { > void __iomem *acp_base; > @@ -163,6 +163,17 @@ static int rn_acp_deinit(void __iomem *acp_base) > return 0; > } > > +static const struct dmi_system_id rn_acp_quirk_table[] = { > + { > + /* Lenovo IdeaPad Flex 5 14ARE05, IdeaPad 5 15ARE05 */ > + .matches = { > + DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "LENOVO"), > + DMI_EXACT_MATCH(DMI_BOARD_NAME, "LNVNB161216"), > + } > + }, > + {} > +}; > + > static int snd_rn_acp_probe(struct pci_dev *pci, > const struct pci_device_id *pci_id) > { > @@ -172,6 +183,7 @@ static int snd_rn_acp_probe(struct pci_dev *pci, > acpi_handle handle; > acpi_integer dmic_status; > #endif > + const struct dmi_system_id *dmi_id; > unsigned int irqflags; > int ret, index; > u32 addr; > @@ -232,6 +244,12 @@ static int snd_rn_acp_probe(struct pci_dev *pci, > goto de_init; > } > #endif > + dmi_id = dmi_first_match(rn_acp_quirk_table); > + if (dmi_id && !dmi_id->driver_data) { > + dev_warn(&pci->dev, "ACPI settings override using DMI (ACP mic is not present)"); IMO, better to be dev_info() here. It's the correct set up, hence it should be neither error nor warning that appears in the boot screen over the boot splash. BTW, both Raven and Reonir drivers point to the very same PCI ID, and both drivers will be probed for this machine (and both to be skipped). Also, I noticed that Renoir driver tries to detect the dmic at the late stage; this could be done at the very beginning, so the whole allocation and initialization could be simply skipped. But this can be done in a separate cleanup patch. thanks, Takashi