Lenovo Y430 и ALSA (Решение проблемы с "mute")

Всё, что связано с ноутбуками.

Модератор: Модераторы разделов

Аватара пользователя
BSDevil
Сообщения: 112
ОС: MAC OS X

Lenovo Y430 и ALSA

Сообщение BSDevil »

Надо сказать, что я очень долго искал решение этой проблемы, но везде были лишь вопросы, ответов не было. Наброски патча, я нашёл на багтрекере алсы, до ума пришлось доводить самому.

Код: Выделить всё

--- alsa-driver-1.0.21.orig/alsa-kernel/pci/hda/patch_conexant.c    2009-11-30 21:24:39.743235533 +0300
+++ alsa-driver-1.0.21/alsa-kernel/pci/hda/patch_conexant.c    2009-11-30 21:29:18.403252504 +0300
@@ -698,6 +698,14 @@
     }
 };

+static void cxt5051_update_subwoofer(struct hda_codec *codec)
+{
+        struct conexant_spec *spec = codec->spec;
+        unsigned int pinctl;
+        pinctl = (!spec->hp_present && spec->cur_eapd) ? PIN_OUT : 0;
+        snd_hda_codec_write(codec, 0x1b, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, pinctl);
+}
+
 /* turn on/off EAPD (+ mute HP) as a master switch */
 static int cxt5045_hp_master_sw_put(struct snd_kcontrol *kcontrol,
                     struct snd_ctl_elem_value *ucontrol)
@@ -1599,6 +1607,7 @@
     if (!cxt_eapd_put(kcontrol, ucontrol))
         return 0;
     cxt5051_update_speaker(codec);
+        cxt5051_update_subwoofer(codec);
     return 1;
 }

@@ -1654,6 +1663,7 @@
                      AC_VERB_GET_PIN_SENSE, 0) &
         AC_PINSENSE_PRESENCE;
     cxt5051_update_speaker(codec);
+        cxt5051_update_subwoofer(codec);
 }

 /* unsolicited event for HP jack sensing */

Код: Выделить всё

 patch -p1 < patch_y430.patch


Так же выложил ebuild для Gentoo.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение
Спасибо сказали:
Аватара пользователя
BSDevil
Сообщения: 112
ОС: MAC OS X

Re: Lenovo Y430 и ALSA

Сообщение BSDevil »

Обновлено для более новой версии alsa. В архиве с ебилдом, сохранена старая версия (если надо кому)
Изображение
Спасибо сказали: