[PATCH] ALSA: hda - fix the micmute led status for Lenovo ThinkCentre AIO
Takashi Iwai
tiwai at suse.de
Tue Aug 11 11:22:27 CEST 2020
On Tue, 11 Aug 2020 11:03:55 +0200,
Hui Wang wrote:
>
>
> On 2020/8/11 下午4:56, Kai-Heng Feng wrote:
> > Hi,
> >
> >> On Aug 10, 2020, at 14:51, Takashi Iwai <tiwai at suse.de> wrote:
> >>
> >> On Mon, 10 Aug 2020 08:34:36 +0200,
> >> Hui Wang wrote:
> >>>
> >>> On 2020/8/10 下午2:30, Takashi Iwai wrote:
> >>>> On Mon, 10 Aug 2020 04:16:59 +0200,
> >>>> Hui Wang wrote:
> >>>>> After installing the Ubuntu Linux, the micmute led status is not
> >>>>> correct. Users expect that the led is on if the capture is disabled,
> >>>>> but with the current kernel, the led is off with the capture disabled.
> >>>>>
> >>>>> We tried the old linux kernel like linux-4.15, there is no this issue.
> >>>>> It looks like we introduced this issue when switching to the led_cdev.
> >>>> The behavior can be controlled via "Mic Mute-LED Mode" enum kcontrol.
> >>>> Which value does it have now? If it's "Follow Capture", that's the
> >>>> correct behavior. OTOH, if it's "Follow Mute", the LED polarity is
> >>>> indeed wrong.
> >>> It is "Follow Mute", if I change it to "Follow Capture" manually, the
> >>> led status becomes correct.
> >> OK, thanks for confirmation. Applied now.
> > I wonder if it's because how brightness value passed to gpio_mute_led_set() and micmute_led_set():
> >
> > static int gpio_mute_led_set(struct led_classdev *led_cdev,
> > enum led_brightness brightness)
> > {
> > struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent);
> > struct alc_spec *spec = codec->spec;
> >
> > alc_update_gpio_led(codec, spec->gpio_mute_led_mask,
> > spec->mute_led_polarity, !brightness);
> > return 0;
> > }
> >
> > static int micmute_led_set(struct led_classdev *led_cdev,
> > enum led_brightness brightness)
> > {
> > struct hda_codec *codec = dev_to_hda_codec(led_cdev->dev->parent);
> > struct alc_spec *spec = codec->spec;
> >
> > alc_update_gpio_led(codec, spec->gpio_mic_led_mask,
> > spec->micmute_led_polarity, !!brightness);
> > return 0;
> > }
> >
> > Maybe we should let micmute_led_set() match gpio_mute_led_set() so the micmute polarity can be removed?
>
> This will impact many many machines, I don't know if the current code
> could work correctly or not on other machines.
True. But we should rather fix this, the current flag is illogical.
I forgot about this problem while I also noticed during working on the
led cdev conversion.
I guess most of configurations can be verified with hda-emu or such.
Let's see...
Takashi
More information about the Alsa-devel
mailing list