From patchwork Sun Jun 29 11:33:38 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 4446821 X-Patchwork-Delegate: tiwai@suse.de Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 59D549F319 for ; Mon, 30 Jun 2014 09:08:12 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3620D202FE for ; Mon, 30 Jun 2014 09:08:11 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id E8EC120176 for ; Mon, 30 Jun 2014 09:08:09 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id CA40226550F; Mon, 30 Jun 2014 11:08:08 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from alsa0.perex.cz (localhost [IPv6:::1]) by alsa0.perex.cz (Postfix) with ESMTP id 9FBBC2608E8; Mon, 30 Jun 2014 11:07:58 +0200 (CEST) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id BE78F26548F; Sun, 29 Jun 2014 13:33:57 +0200 (CEST) Received: from mout.web.de (mout.web.de [212.227.15.14]) by alsa0.perex.cz (Postfix) with ESMTP id C6A77265470 for ; Sun, 29 Jun 2014 13:33:49 +0200 (CEST) Received: from netbook.home ([95.157.58.223]) by smtp.web.de (mrweb002) with ESMTPSA (Nemesis) id 0MRTzc-1X7hdS2A1I-00SjPM; Sun, 29 Jun 2014 13:33:46 +0200 Message-ID: <53AFF992.5030403@web.de> Date: Sun, 29 Jun 2014 13:33:38 +0200 From: Jan Kiszka User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 MIME-Version: 1.0 To: Hui Wang , tiwai@suse.de, alsa-devel@alsa-project.org References: <1385534846-20829-1-git-send-email-hui.wang@canonical.com> In-Reply-To: <1385534846-20829-1-git-send-email-hui.wang@canonical.com> X-Enigmail-Version: 1.6 X-Provags-ID: V03:K0:Cxjc82uxYnK7XSn0A2/EqWULYRvoQTRNka8plW4f3oHhscKcQCA cbvs9lZkcdVBKVEtnC4SFXz9UlZdhJih3Fq5s/B2pTZW2DNutsJGOqFQWdA15yPW3V3EpDP BZ4CQ3+wajfGvEtioHAdJ+oqaNeCOw9mrObRXideAdTkfatapBSqJzboDmVAy/TVjTGFGhx YVjW70w7GrxawKR6gI/AA== X-Mailman-Approved-At: Mon, 30 Jun 2014 11:07:58 +0200 Cc: hui.wang@canonical.com, alex.hung@canonical.com, yk@canonical.com, Linux Kernel Mailing List , david.henningsson@canonical.com Subject: Re: [alsa-devel] [V2 PATCH] ALSA: hda - Enable mute/mic-mute LEDs for more Thinkpads with Conexant codec X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 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-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP On 2013-11-27 07:47, Hui Wang wrote: > Most Thinkpad Edge series laptops use conexant codec, so far although > the codecs have different minor Vendor Id and minor Subsystem Id, > they all belong to the cxt5066 family, this change can make the > mute/mic-mute LEDs support more generic among cxt_5066 family. > > This design refers to the similar solution for the realtek codec > ALC269 family in the patch_realtek.c. > > Cc: Alex Hung > Cc: David Henningsson > Signed-off-by: Hui Wang > --- > sound/pci/hda/patch_conexant.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c > index c205bb1..1f2717f 100644 > --- a/sound/pci/hda/patch_conexant.c > +++ b/sound/pci/hda/patch_conexant.c > @@ -3244,9 +3244,29 @@ enum { > #if IS_ENABLED(CONFIG_THINKPAD_ACPI) > > #include > +#include > > static int (*led_set_func)(int, bool); > > +static acpi_status acpi_check_cb(acpi_handle handle, u32 lvl, void *context, > + void **rv) > +{ > + bool *found = context; > + *found = true; > + return AE_OK; > +} > + > +static bool is_thinkpad(struct hda_codec *codec) > +{ > + bool found = false; > + if (codec->subsystem_id >> 16 != 0x17aa) > + return false; > + if (ACPI_SUCCESS(acpi_get_devices("LEN0068", acpi_check_cb, &found, NULL)) && found) > + return true; > + found = false; > + return ACPI_SUCCESS(acpi_get_devices("IBM0068", acpi_check_cb, &found, NULL)) && found; > +} > + > static void update_tpacpi_mute_led(void *private_data, int enabled) > { > struct hda_codec *codec = private_data; > @@ -3279,6 +3299,8 @@ static void cxt_fixup_thinkpad_acpi(struct hda_codec *codec, > bool removefunc = false; > > if (action == HDA_FIXUP_ACT_PROBE) { > + if (!is_thinkpad(codec)) > + return; > if (!led_set_func) > led_set_func = symbol_request(tpacpi_led_set); > if (!led_set_func) { > @@ -3494,6 +3516,7 @@ static const struct snd_pci_quirk cxt5066_fixups[] = { > SND_PCI_QUIRK(0x17aa, 0x3975, "Lenovo U300s", CXT_FIXUP_STEREO_DMIC), > SND_PCI_QUIRK(0x17aa, 0x3977, "Lenovo IdeaPad U310", CXT_FIXUP_STEREO_DMIC), > SND_PCI_QUIRK(0x17aa, 0x397b, "Lenovo S205", CXT_FIXUP_STEREO_DMIC), > + SND_PCI_QUIRK_VENDOR(0x17aa, "Thinkpad", CXT_FIXUP_THINKPAD_ACPI), > SND_PCI_QUIRK(0x1c06, 0x2011, "Lemote A1004", CXT_PINCFG_LEMOTE_A1004), > SND_PCI_QUIRK(0x1c06, 0x2012, "Lemote A1205", CXT_PINCFG_LEMOTE_A1205), > {} > Starting with this patch, my Lenovo Thinkpad X121e netbook (it's without any mute LEDs, BTW, there is only a power LED) considers the power button as hard reset. I have to exclude my machine from that ACPI fixup (this is on top of current Linus master): Is that the way to address it? Then I can send a proper patch. Any hints regarding the "why" will be incorporated into its description. Thanks, Jan diff --git a/sound/pci/hda/thinkpad_helper.c b/sound/pci/hda/thinkpad_helper.c index 6ba0b55..7e1a179 100644 --- a/sound/pci/hda/thinkpad_helper.c +++ b/sound/pci/hda/thinkpad_helper.c @@ -21,7 +21,8 @@ static acpi_status acpi_check_cb(acpi_handle handle, u32 lvl, void *context, static bool is_thinkpad(struct hda_codec *codec) { bool found = false; - if (codec->subsystem_id >> 16 != 0x17aa) + if (codec->subsystem_id >> 16 != 0x17aa || + codec->subsystem_id == 0x17aa21ec) return false; if (ACPI_SUCCESS(acpi_get_devices("LEN0068", acpi_check_cb, &found, NULL)) && found) return true;