Fix no sound issues for ASUS W6F (ALC861) laptops (buggy BIOS config that

deserves its own internet memes). The trick is to force all available,
unused pins (that being advertised as "speaker") to behave as microphone
pins instead.

Reported / Tested by:	Dmitry Kutsenko <kutsenko.truebsd.org>
MFC after:		3 days
This commit is contained in:
Ariff Abdullah 2008-04-19 22:32:23 +00:00
parent ae0615f633
commit 42018dcf7b

View File

@ -81,7 +81,7 @@
#include "mixer_if.h"
#define HDA_DRV_TEST_REV "20080412_0051"
#define HDA_DRV_TEST_REV "20080420_0052"
#define HDA_WIDGET_PARSER_REV 1
SND_DECLARE_FILE("$FreeBSD$");
@ -2145,6 +2145,16 @@ hdac_widget_pin_getconfig(struct hdac_widget *w)
config |= (HDA_CONFIG_DEFAULTCONF_DEVICE_LINE_OUT |
HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED);
break;
case 12:
case 14:
case 16:
case 31:
case 32:
config &= ~(HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK);
config |= (HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN |
HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED);
break;
case 15:
config &= ~(HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK);
@ -4229,8 +4239,6 @@ static const struct {
HDA_QUIRK_EAPDINV, 0 },
{ ASUS_F3JC_SUBVENDOR, HDA_CODEC_ALC861,
HDA_QUIRK_OVREF, 0 },
{ ASUS_W6F_SUBVENDOR, HDA_CODEC_ALC861,
HDA_QUIRK_OVREF, 0 },
{ UNIWILL_9075_SUBVENDOR, HDA_CODEC_ALC861,
HDA_QUIRK_OVREF, 0 },
/*{ ASUS_M2N_SUBVENDOR, HDA_CODEC_AD1988,