[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