Re: SPDIF wave audio broken after BIOS update

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Fri, 24 Sep 2010 08:51:43 +0200,
Manuel Lauss wrote:
> 
> On Fri, Sep 24, 2010 at 8:35 AM, Takashi Iwai <tiwai@xxxxxxx> wrote:
> > At Thu, 23 Sep 2010 14:10:45 +0200,
> > Manuel Lauss wrote:
> >>
> >> Hello,
> >>
> >> I've updated my system BIOS to fix some issues, however since then wave audio
> >> over (optical) SPDIF is broken, i.e. I can hear the receiver power up
> >> but only silence
> >> comes out. Audio on the analog jacks work, as does transmitting AC3/DTS data
> >> over spdif.
> >>
> >> Attached is the codec#0 proc info for the non-working case, as well as
> >> a diff of this
> >> output between the (old) working and (new) broken bios.
> >
> > Looks like you set non-audio SPDIF bit accidentally as default.
> > Thus it doesn't work but for pass-thru mode.
> > Try to reset it via iecset utility.
> 
> That worked.
> 
> 
> >> Also, since the update, this message has reappeared (it went away after the
> >> sound tree merge early in the 2.6.36-rc phase):
> >>
> >> hda_codec: ALC892: BIOS auto-probing.
> >> ALSA hda_codec.c:337: hda_codec: connection list not available for 0x1f
> >
> > This shouldn't be a big problem, but for tracking more, I'd need
> > alsa-info.sh output. ÂRun with --no-upload option, and attach the
> > output.
> 
> Attached.

Thanks, found out the problem.
The fixed patch is below.  I updated the tree now.


Takashi

---
>From 01fdf1801e349302fce5d9865470a7100a2d9b74 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@xxxxxxx>
Date: Fri, 24 Sep 2010 09:09:42 +0200
Subject: [PATCH] ALSA: hda - Fix auto-parse of SPDIF input of Realtek codecs

The SPDIF in audio widget must be searched through the list as the widget
that contains the given pin as the connection source.  The current code
was implemented in a reverse way.

Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
---
 sound/pci/hda/patch_realtek.c |   22 ++++++++++++++++------
 1 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index a1312a6..a432e6e 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -1594,12 +1594,22 @@ static void alc_auto_parse_digital(struct hda_codec *codec)
 	}
 
 	if (spec->autocfg.dig_in_pin) {
-		hda_nid_t dig_nid;
-		err = snd_hda_get_connections(codec,
-					      spec->autocfg.dig_in_pin,
-					      &dig_nid, 1);
-		if (err > 0)
-			spec->dig_in_nid = dig_nid;
+		dig_nid = codec->start_nid;
+		for (i = 0; i < codec->num_nodes; i++, dig_nid++) {
+			unsigned int wcaps = get_wcaps(codec, dig_nid);
+			if (get_wcaps_type(wcaps) != AC_WID_AUD_IN)
+				continue;
+			if (!(wcaps & AC_WCAP_DIGITAL))
+				continue;
+			if (!(wcaps & AC_WCAP_CONN_LIST))
+				continue;
+			err = get_connection_index(codec, dig_nid,
+						   spec->autocfg.dig_in_pin);
+			if (err >= 0) {
+				spec->dig_in_nid = dig_nid;
+				break;
+			}
+		}
 	}
 }
 
-- 
1.7.2.2

_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux