Hi Takashi, Modifying Mic Mute-LED Mode does indeed alter the behavior. The thing is that this ends being confusing as in all machines I've been testing this setting Mic Mute-LED Mode to "Follow Capture" actually makes it follow mute, as setting it to "On" turns the LED off. There is other setting called "mute_led_polarity" but this does not work, as currently mic mute LED and mute LED do not follow the same logic. What I think may be causing confusion is "cxt_update_gpio_led" "enabled" parameter. Setting "enabled" to "true" sets the GPIO pin to 0 causing the led to be turned off. I think "enabled" used to refer to the input capture or output status and not to the LED being lit or not. Output or input not enabled (enabled==false) caused the LED to be turned on. This logic in the function negates it on the GPIO output.
if (enabled) spec->gpio_led &= ~mask; else spec->gpio_led |= mask;
May be I can do a more comprehensive fix, reversing the behavior of "cxt_update_gpio_led" "enabled" parameter to refer the GPIO output value ( enabled==true => GPIO pin output high ) Then also modify the call to "cxt_update_gpio_led" in "cxt_fixup_gpio_mute_hook" to make it work consistently.
Thanks, Jerónimo
El jue., 15 de ago. de 2019 a la(s) 02:58, Takashi Iwai (tiwai@suse.de) escribió:
On Thu, 15 Aug 2019 03:38:24 +0200, jeronimo@borque.com.ar wrote:
From: Jeronimo Borque jeronimo@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 (Mic mute led was on when the input enabled) Fixing it in the call to cxt_update_gpio_led at the cxt_gpio_micmute_update hook. Maybe more changes are required to be consistent everywhere.
Signed-off-by: Jeronimo Borque jeronimo@borque.com.ar
Could you check which value you have in "Mic Mute-LED Mode" mixer element? I guess it's "Follow Mute". If so, change it to "Follow Capture".
If this works, it means that the driver works as expected but the problem is only about the default value. The default value set in the generic parser is based on other machine's standard (LED on at mic off), while some machines might expect differently. On such machines, we need to set the different value initially in the quirk fixup.
thanks,
Takashi