|
|
@@ -624,18 +624,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);
|
|
|
@@ -646,8 +648,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 */
|
|
|
@@ -669,7 +671,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;
|