At Thu, 16 Apr 2009 09:23:25 +0200, Ortwin Glück wrote:
Takashi Iwai wrote:
Also the "Front" and "Surround" outputs are now both labeled "Speaker" (see attached images of kmix).
What I/O are they actually corresponding to? Are they speaker outputs or line-outs, or anything else?
They correspond to the built-in speakers.
So they are really front/surround 4.0-speaker outputs?
Probably. They seem to control two distinct speakers inside the laptop. More I don't know. In OS-X there is only a single volume control (a sacrifice to usability I think. who would want to control individual volumes of these on a laptop anyway).
The problem is likely because hp_detect field isn't set on your machine because the headphone shares the same audio-out widget with the speaker out.
Could you try the patch below?
thanks,
Takashi
--- diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index ce30b45..917bc5d 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c @@ -3076,6 +3076,11 @@ static int create_multi_out_ctls(struct hda_codec *codec, int num_outs, unsigned int wid_caps;
for (i = 0; i < num_outs && i < ARRAY_SIZE(chname); i++) { + if (type == AUTO_PIN_HP_OUT && !spec->hp_detect) { + wid_caps = get_wcaps(codec, pins[i]); + if (wid_caps & AC_WCAP_UNSOL_CAP) + spec->hp_detect = 1; + } nid = dac_nids[i]; if (!nid) continue; @@ -3119,11 +3124,6 @@ static int create_multi_out_ctls(struct hda_codec *codec, int num_outs, err = create_controls_idx(codec, name, idx, nid, 3); if (err < 0) return err; - if (type == AUTO_PIN_HP_OUT && !spec->hp_detect) { - wid_caps = get_wcaps(codec, pins[i]); - if (wid_caps & AC_WCAP_UNSOL_CAP) - spec->hp_detect = 1; - } } } return 0;