At Wed, 18 Apr 2012 13:36:55 +0200, Uros Vampl wrote:
On 18.04.12 12:32, Takashi Iwai wrote:
Below is the test patch. Again, adjust the mixer volumes after applying the patch. Now you should have "Headphone" and "Speaker" volumes & switches.
Also, the speaker is muted automatically when the headphone is plugged. For testing the speaker, unplug the headphone.
Still no sound, not speakers, not headphones. Did you see my other mail about the "Front" control?
Yes, but it alone doesn't help for analysis because it's already an abstracted mixer element. We need to figure out which pin corresponds to the speaker output. It must be either 0x0f or 0x11.
BTW, any reason to set the "Speaker" volume so low? It's almost inaudible. Raise this volume.
If raising volume doesn't change, and if you can still run the older kernel, try to change the pin control via hda-verb like: # hda-verb /dev/snd/hwC0D0 0x0f SET_PIN_WID 0x00 and check whether the speaker still works. If 0x0f doesn't change, try 0x11, # hda-verb /dev/snd/hwC0D0 0x11 SET_PIN_WID 0x00
If the pin 0x0f actually changes the speaker output, use the patch below instead of the previous one.
Also, there's only one capture control now.
This is correct. When there are only internal and external mics, the driver enables the auto-mic switching mode.
Shouldn't I be able to choose whether to capture from internal or external mic?
Just plugging the mic jack should switch to the external mic automatically just like the headphone/speaker switch.
Takashi
--- diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 2508f81..c826a6d 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -4861,6 +4861,7 @@ enum { ALC260_FIXUP_GPIO1_TOGGLE, ALC260_FIXUP_REPLACER, ALC260_FIXUP_HP_B1900, + ALC260_FIXUP_KN1, };
static void alc260_gpio1_automute(struct hda_codec *codec) @@ -4938,7 +4939,25 @@ static const struct alc_fixup alc260_fixups[] = { .v.func = alc260_fixup_gpio1_toggle, .chained = true, .chain_id = ALC260_FIXUP_COEF, - } + }, + [ALC260_FIXUP_KN1] = { + .type = ALC_FIXUP_PINS, + .v.pins = (const struct alc_pincfg[]) { + { 0x0f, 0x99130110 }, /* speaker */ + { 0x10, 0x02214000 }, /* HP */ + { 0x12, 0x90a60160 }, /* int mic */ + { 0x13, 0x02a19000 }, /* ext mic */ + { 0x18, 0x01446000 }, /* SPDIF out */ + /* disable bogus I/O pins */ + { 0x11, 0x411111f0 }, + { 0x14, 0x411111f0 }, + { 0x15, 0x411111f0 }, + { 0x16, 0x411111f0 }, + { 0x17, 0x411111f0 }, + { 0x19, 0x411111f0 }, + { } + } + }, };
static const struct snd_pci_quirk alc260_fixup_tbl[] = { @@ -4948,6 +4967,7 @@ static const struct snd_pci_quirk alc260_fixup_tbl[] = { SND_PCI_QUIRK(0x103c, 0x280a, "HP dc5750", ALC260_FIXUP_HP_DC5750), SND_PCI_QUIRK(0x103c, 0x30ba, "HP Presario B1900", ALC260_FIXUP_HP_B1900), SND_PCI_QUIRK(0x1509, 0x4540, "Favorit 100XS", ALC260_FIXUP_GPIO1), + SND_PCI_QUIRK(0x152d, 0x0729, "Quanta KN1", ALC260_FIXUP_KN1), SND_PCI_QUIRK(0x161f, 0x2057, "Replacer 672V", ALC260_FIXUP_REPLACER), SND_PCI_QUIRK(0x1631, 0xc017, "PB V7900", ALC260_FIXUP_COEF), {}