I'm not quite sure which version (of patch_hdmi.c) you are using, since the patch fails on kernel 3.0-stable.
-- patching file sound/pci/hda/patch_hdmi.c Hunk #1 FAILED at 923. Hunk #2 FAILED at 996. 2 out of 2 hunks FAILED -- saving rejects to file sound/pci/hda/patch_hdmi.c.rej
On 8 August 2011 16:58, Takashi Iwai tiwai@suse.de wrote:
At Mon, 8 Aug 2011 16:43:31 +0200, Andrée 'Glaucous' wrote:
Thanks.
# hda-verb /dev/snd/hwC2D0 0x03 GET_PIN_SENSE 0 nid = 0x3, verb = 0xf09, param = 0x0 value = 0xffffffff
This looks pretty invalid.
With monitor connected and outputting.
So, either codec or the a driver is too lazy to give the info.
Also, looking at your codec proc file, the codec doesn't give the right channel count, too.
What happens with the patch below?
Takashi
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index 19cb72d..4da81b3 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -923,6 +923,7 @@ static void hdmi_present_sense(struct hda_codec *codec, hda_nid_t pin_nid,
memset(eld, 0, sizeof(*eld));
printk(KERN_INFO "XXX HDMI pin_sense = 0x%x\n", present); eld->monitor_present = !!(present & AC_PINSENSE_PRESENCE); if (eld->monitor_present) eld->eld_valid = !!(present & AC_PINSENSE_ELDV);
@@ -996,6 +997,7 @@ static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t cvt_nid)
chans = get_wcaps(codec, cvt_nid); chans = get_wcaps_channels(chans);
chans = 8; /* XXX */ cvt_idx = spec->num_cvts; per_cvt = &spec->cvts[cvt_idx];