[alsa-devel] [PATCH v2] ALSA: hda - Fixes inverted Conexant GPIO mic mute led

Jerónimo Borque jeronimo at borque.com.ar
Mon Aug 19 02:01:17 CEST 2019


I'm sorry. I've sent a wrong patch file.
I'll resubmit the right patch shortly.
Thanks,
Jerónimo

El dom., 18 de ago. de 2019 a la(s) 18:23, <jeronimo at borque.com.ar>
escribió:

> From: Jeronimo Borque <jeronimo at borque.com.ar>
>
> "enabled" parameter historically referred to the device input or
> output, not to the led indicator. After the changes added with the led
> helper functions the mic mute led logic refers to the led and not to
> the mic input which caused led indicator to be negated.
> Fixing logic in cxt_update_gpio_led and updated
> cxt_fixup_gpio_mute_hook
> Also updated debug messages to ease further debugging if necessary.
>
> Suggested-by: Takashi Iwai <tiwai at suse.de>
> Signed-off-by: Jeronimo Borque <jeronimo at borque.com.ar>
> ---
>  sound/pci/hda/patch_conexant.c | 17 +++++++++--------
>  1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/sound/pci/hda/patch_conexant.c
> b/sound/pci/hda/patch_conexant.c
> index 14298ef45b21..d1c93dfa158b 100644
> --- a/sound/pci/hda/patch_conexant.c
> +++ b/sound/pci/hda/patch_conexant.c
> @@ -611,18 +611,20 @@ static void cxt_fixup_hp_gate_mic_jack(struct
> hda_codec *codec,
>
>  /* update LED status via GPIO */
>  static void cxt_update_gpio_led(struct hda_codec *codec, unsigned int
> mask,
> -                               bool enabled)
> +                               bool led_on)
>  {
>         struct conexant_spec *spec = codec->spec;
>         unsigned int oldval = spec->gpio_led;
>
>         if (spec->mute_led_polarity)
> -               enabled = !enabled;
> +               led_on = !led_on;
>
> -       if (enabled)
> -               spec->gpio_led &= ~mask;
> -       else
> +       if (led_on)
>                 spec->gpio_led |= mask;
> +       else
> +               spec->gpio_led &= ~mask;
> +       codec_dbg(codec, "mask:%d enabled:%d gpio_led:%d\n
> +                       mask, led_on, spec->gpio_led);
>         if (spec->gpio_led != oldval)
>                 snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA,
>                                     spec->gpio_led);
> @@ -633,8 +635,8 @@ static void cxt_fixup_gpio_mute_hook(void
> *private_data, int enabled)
>  {
>         struct hda_codec *codec = private_data;
>         struct conexant_spec *spec = codec->spec;
> -
> -       cxt_update_gpio_led(codec, spec->gpio_mute_led_mask, enabled);
> +       /* muted -> LED on */
> +       cxt_update_gpio_led(codec, spec->gpio_mute_led_mask, !enabled);
>  }
>
>  /* turn on/off mic-mute LED via GPIO per capture hook */
> @@ -656,7 +658,6 @@ static void cxt_fixup_mute_led_gpio(struct hda_codec
> *codec,
>                 { 0x01, AC_VERB_SET_GPIO_DIRECTION, 0x03 },
>                 {}
>         };
> -       codec_info(codec, "action: %d gpio_led: %d\n", action,
> spec->gpio_led);
>
>         if (action == HDA_FIXUP_ACT_PRE_PROBE) {
>                 spec->gen.vmaster_mute.hook = cxt_fixup_gpio_mute_hook;
> --
> 2.21.0
>
>


More information about the Alsa-devel mailing list