[alsa-devel] snd-hda-intel support for SPDIF-in wiht vt1708 card?

Takashi Iwai tiwai at suse.de
Tue Dec 18 16:05:16 CET 2007


At Tue, 18 Dec 2007 08:28:06 -0800,
John Stile wrote:
> 
> On Tue, 2007-12-18 at 14:04 +0100, Takashi Iwai wrote:
> > At Mon, 17 Dec 2007 10:27:27 -0800,
> > John Stile wrote:
> > > 
> > > I am trying to use a Via VT1708 audio card ( uses the snd-hda-intel.ko
> > > driver) to record from SPDIF-in.
> > > 
> > > An off-list reply to my posting to alsa-users list suggested that
> > > snd-hda-intel.ko might not support SPDIF-in with the VT1708 card, which
> > > brought me here.
> > > 
> > > Can someone who works on the Intel HDA driver tell me if it supports
> > > SPDIF-in on the VT1708 audio card?
> > 
> > It should be, but not tested well, I guess.
> > 
> > The driver enables the SPDIF-in capability when BIOS sets the pin
> > information properly.  Check /proc/asound/card0/codec#* file whether
> > you have any (activated) input pin node that supports SPDIF-in.
> > 
> > 
> > Takashi
> Thank you for your reply!
> The output of your command is below.
>   spdif-out=Node 0x25
>   spdif-in=Node 0x26
> Neither labeled inactive,
> but spdif-in doesn't list a "Connection" line.

Just because it's only for input (thus it has no "source").

> I have the latest bios: 1.03 (2007/08/23) (a beta bios is available).
> Do I try the beta bios?

I don't think so.  Likely a driver bug.
How about the patch below (against the latest HG version)?


Takashi

diff -r 2d3893cf030c pci/hda/patch_via.c
--- a/pci/hda/patch_via.c	Tue Dec 18 15:42:53 2007 +0100
+++ b/pci/hda/patch_via.c	Tue Dec 18 17:48:00 2007 +0100
@@ -568,25 +568,27 @@ static int via_init(struct hda_codec *co
 		if (IS_VT1708_VENDORID(codec->vendor_id)) {
 			snd_hda_codec_write(codec, VT1708_DIGIN_PIN, 0,
 					    AC_VERB_SET_PIN_WIDGET_CONTROL,
-					    0x40);
+					    PIN_OUT);
 			snd_hda_codec_write(codec, VT1708_DIGIN_PIN, 0,
 					    AC_VERB_SET_EAPD_BTLENABLE, 0x02);
 		} else if (IS_VT1709_10CH_VENDORID(codec->vendor_id) ||
 			   IS_VT1709_6CH_VENDORID(codec->vendor_id)) {
 			snd_hda_codec_write(codec, VT1709_DIGIN_PIN, 0,
 					    AC_VERB_SET_PIN_WIDGET_CONTROL,
-					    0x40);
+					    PIN_OUT);
 			snd_hda_codec_write(codec, VT1709_DIGIN_PIN, 0,
 					    AC_VERB_SET_EAPD_BTLENABLE, 0x02);
 		} else if (IS_VT1708B_8CH_VENDORID(codec->vendor_id) ||
 			   IS_VT1708B_4CH_VENDORID(codec->vendor_id)) {
 			snd_hda_codec_write(codec, VT1708B_DIGIN_PIN, 0,
 					    AC_VERB_SET_PIN_WIDGET_CONTROL,
-					    0x40);
+					    PIN_OUT);
 			snd_hda_codec_write(codec, VT1708B_DIGIN_PIN, 0,
 					    AC_VERB_SET_EAPD_BTLENABLE, 0x02);
 		}
-	}
+	} else /* enable SPDIF-input pin */
+		snd_hda_codec_write(codec, spec->autocfg.dig_in_pin, 0,
+				    AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN);
 
  	return 0;
 }


More information about the Alsa-devel mailing list