Re: [PATCH v3 3/3] ALSA: hda: add support for Huawei WMI micmute LED

Takashi Iwai
2018-11-09T09:01:41Z

On Thu, 08 Nov 2018 18:16:55 +0100,
Ayman Bagabas wrote:
>
> diff --git a/drivers/platform/x86/huawei_wmi.c b/drivers/platform/x86/huawei_wmi.c
> index 658c44ab2126..f06aa967c311 100644
> --- a/drivers/platform/x86/huawei_wmi.c
> +++ b/drivers/platform/x86/huawei_wmi.c
> @@ -23,6 +23,7 @@
> #include <linux/input.h>
> #include <linux/input/sparse-keymap.h>
> #include <linux/module.h>
> +#include <linux/platform_data/x86/huawei_wmi.h>
>
> MODULE_AUTHOR("Ayman Bagabas <ayman.bagabas@gmail.com>");
> MODULE_DESCRIPTION("Huawei WMI hotkeys");
> diff --git a/include/linux/platform_data/x86/huawei_wmi.h b/include/linux/platform_data/x86/huawei_wmi.h
> new file mode 100644
> index 000000000000..dd251780ee5c
> --- /dev/null
> +++ b/include/linux/platform_data/x86/huawei_wmi.h
> @@ -0,0 +1,9 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#if IS_ENABLED(CONFIG_HUAWEI_LAPTOP)
> +#ifndef __HUAWEI_WMI_H__
> +#define __HUAWEI_WMI_H__
> +
> +int huawei_wmi_micmute_led_set(bool on);
> +
> +#endif
> +#endif

These changes should belong to the WMI patch.

> @@ -5765,6 +5769,10 @@ static const struct hda_fixup alc269_fixups[] = {
> .chained = true,
> .chain_id = ALC269_FIXUP_HEADSET_MIC
> },
> + [ALC256_FIXUP_HUAWEI_WMI_MICMUTE_LED] = {
> + .type = HDA_FIXUP_FUNC,
> + .v.func = alc_fixup_huawei_wmi
> + },
> [ALC256_FIXUP_HUAWEI_MBXP_PINS] = {
> .type = HDA_FIXUP_PINS,
> .v.pins = (const struct hda_pintbl[]) {
> @@ -5779,7 +5787,9 @@ static const struct hda_fixup alc269_fixups[] = {
> {0x1e, 0x411111f0},
> {0x21, 0x04211020},
> { }
> - }
> + },
> + .chained = true,
> + .chain_id = ALC256_FIXUP_HUAWEI_WMI_MICMUTE_LED
> },
> [ALC269_FIXUP_ASUS_X101_FUNC] = {
> .type = HDA_FIXUP_FUNC,

This means that ALC256_FIXUP_HUAWEI_MBXP_PINS performs both the pin
config fixup and the mic-mute LED enablement.

> @@ -6609,6 +6619,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
> SND_PCI_QUIRK(0x17aa, 0x511e, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
> SND_PCI_QUIRK(0x17aa, 0x511f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
> + SND_PCI_QUIRK(0x19e5, 0x3200, "Huawei MBX", ALC256_FIXUP_HUAWEI_WMI_MICMUTE_LED),
> SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MBXP", ALC256_FIXUP_HUAWEI_MBXP_PINS),
> SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),
> SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),

... and yet you add a new entry for performing only mic-mute LED.
I guess the chaining is done wrongly above?

thanks,

Takashi