LINUX.ORG.RU

Сообщения BSDevil

 

Lenovo Y430 Решение проблемы с «mute»

Форум — Linux-hardware

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

--- alsa-driver-1.0.20.orig/alsa-kernel/pci/hda/patch_conexant.c	2009-06-28 04:49:31.000000000 +0400
+++ alsa-driver-1.0.20/alsa-kernel/pci/hda/patch_conexant.c	2009-06-28 05:31:31.000000000 +0400
@@ -1588,6 +1588,14 @@
 			    pinctl);
 }
 
+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 cxt5051_hp_master_sw_put(struct snd_kcontrol *kcontrol,
 				    struct snd_ctl_elem_value *ucontrol)
@@ -1597,6 +1605,7 @@
 	if (!cxt_eapd_put(kcontrol, ucontrol))
 		return 0;
 	cxt5051_update_speaker(codec);
+    cxt5051_update_subwoofer(codec);
 	return 1;
 }
 
@@ -1652,6 +1661,7 @@
 				     AC_VERB_GET_PIN_SENSE, 0) &
 		AC_PINSENSE_PRESENCE;
 	cxt5051_update_speaker(codec);
+	cxt5051_update_subwoofer(codec);
 }
 
 /* unsolicited event for HP jack sensing */

BSDevil
()

RSS подписка на новые темы