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

John Stile john at stilen.com
Wed Dec 19 17:21:51 CET 2007


On Wed, 2007-12-19 at 10:30 +0100, Takashi Iwai wrote:
> At Tue, 18 Dec 2007 20:49:28 -0800,
> John Stile wrote:
> > 
> > On Tue, 2007-12-18 at 16:05 +0100, Takashi Iwai wrote:
> > > 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;
> > >  }
> > 
> > After making the changes by hand the compile failed. 
> 
> The problem is irrelevant with my patch.
> The build looks broken on your system anyway.
> 
> > This is the output:
> > gcc utils/mod-deps.c -o utils/mod-deps
> > utils/mod-deps --basedir /usr/src/alsa-driver/alsa-kernel --hiddendir /usr/src/alsa-driver --versiondep /usr/src/alsa-driver/kconfig-vers --makeconf > toplevel.config.in
> > can't handle word INPUT=y properly, supposing it's OK
> > can't handle word INPUT=SND_USB_CAIAQ properly, supposing it's OK
> > utils/mod-deps --basedir /usr/src/alsa-driver/alsa-kernel --hiddendir /usr/src/alsa-driver --versiondep /usr/src/alsa-driver/kconfig-vers --acinclude > acinclude.m4
> > can't handle word INPUT=y properly, supposing it's OK
> > can't handle word INPUT=SND_USB_CAIAQ properly, supposing it's OK
> > utils/mod-deps --basedir /usr/src/alsa-driver/alsa-kernel --hiddendir /usr/src/alsa-driver --versiondep /usr/src/alsa-driver/kconfig-vers --include > include/config1.h.in
> > can't handle word INPUT=y properly, supposing it's OK
> > can't handle word INPUT=SND_USB_CAIAQ properly, supposing it's OK
> > ./configure --with-debug=full --with-isapnp=yes --with-sequencer=yes
> > checking for gcc... gcc
> > checking for C compiler default output file name... a.out
> > checking whether the C compiler works... yes
> > checking whether we are cross compiling... no
> > checking for suffix of executables...
> > checking for suffix of object files... o
> > checking whether we are using the GNU C compiler... yes
> > checking whether gcc accepts -g... yes
> > checking for gcc option to accept ISO C89... none needed
> > checking for ranlib... ranlib
> > checking for a BSD-compatible install... /usr/bin/install -c
> > checking how to run the C preprocessor... gcc -E
> > checking for grep that handles long lines and -e... /bin/grep
> > checking for egrep... /bin/grep -E
> > checking for ANSI C header files... yes
> > checking for an ANSI C-conforming const... yes
> > checking for inline... inline
> > checking whether time.h and sys/time.h may both be included... yes
> > checking whether gcc needs -traditional... no
> > checking for current directory... /usr/src/alsa-driver
> > checking cross compile...
> > checking for directory with kernel source... /lib/modules/2.6.23-gentoo-r3/source
> > checking for directory with kernel build... /lib/modules/2.6.23-gentoo-r3/build
> > checking for kernel linux/version.h... yes
> > checking for kernel linux/autoconf.h... yes
> > checking for kernel version... 2.6.23-gentoo-r3
> > checking for GCC version... Kernel compiler: gcc 4.1.2 (Gentoo 4.1.2 p1.0.2) Used compiler: gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.0.2)
> > checking for built-in ALSA... no
> > checking for existing ALSA module... yes
> > checking for Red Hat kernel... auto
> > checking for Red Hat kernel... no
> > checking for SUSE kernel... auto
> > checking for SUSE kernel... no
> > checking for CONFIG_EXPERIMENTAL... yes
> > checking for kernel linux/config.h... no
> > Creating <linux/config.h>...
> > checking to modify of kernel linux/kmod.h... no
> > checking for kernel linux/utsrelease.h... yes
> > checking for kernel linux/compiler.h... yes
> > checking for kernel linux/pm.h... yes
> > checking for kernel linux/spinlock.h... yes
> > checking for kernel linux/irq.h... yes
> > checking for kernel linux/threads.h... yes
> > checking for kernel linux/rwsem.h... yes
> > checking for kernel linux/gameport.h... yes
> > checking for kernel media/v4l2-dev.h... yes
> > checking for kernel linux/devfs_fs_kernel.h... no
> > Creating a dummy <linux/devfs_fs_kernel.h>...
> > checking for kernel linux/highmem.h... yes
> > checking for kernel linux/workqueue.h... yes
> > checking for kernel linux/dma-mapping.h... yes
> > checking for kernel asm/hw_irq.h... yes
> > checking for kernel linux/device.h... yes
> > checking for kernel linux/platform_device.h... yes
> > checking for kernel linux/isa.h... yes
> > checking for kernel linux/jiffies.h... yes
> > checking for kernel linux/compat.h... yes
> > checking for kernel linux/log2.h... yes
> > checking for kernel linux/adb.h... yes
> > checking for kernel linux/cuda.h... yes
> > checking for kernel linux/pmu.h... yes
> > checking for kernel linux/moduleparam.h... yes
> > checking for kernel linux/syscalls.h... yes
> > checking for kernel linux/firmware.h... yes
> > checking for kernel linux/err.h... yes
> > checking for kernel linux/bitmap.h... yes
> > checking for kernel linux/mutex.h... yes
> > checking for kernel linux/latency.h... yes
> > checking for kernel linux/kthread.h... yes
> > checking for kernel asm/irq_regs.h... yes
> > checking for kernel module symbol versions... yes
> > checking for has ioport support... yes
> > checking for PCI support in kernel... yes
> > checking for I2C driver in kernel... module
> > checking for I2C_POWERMAC in kernel... unknown
> > checking for firmware loader... module
> > checking for input subsystem in kernel... yes
> > checking for directory to store kernel modules... /lib/modules/2.6.23-gentoo-r3/kernel/sound
> > checking for verbose procfs... on
> > checking for verbose printk... on
> > checking for debug level... full
> > checking for ISA support in kernel... yes
> > checking for processor type... x86_32
> > checking for ISA DMA API... yes
> > checking for SMP... yes
> > checking for Video device support in kernel... yes
> > checking for ISA PnP driver in kernel... yes
> > checking for PnP driver in kernel... yes
> > checking for Kernel ISA-PnP support... yes
> > checking for strlcpy... yes
> > checking for snprintf... yes
> > checking for vsnprintf... yes
> > checking for scnprintf... yes
> > checking for sscanf... yes
> > checking for vmalloc_to_page... no
> 
> The configure doesn't check properly from here on.
> Check config.log.  You must have relevant compile error messages.

I kept good notes of my procedure.  
Does any of the stuff below look wrong?
#
# Remove all installed alsa stuff
#
emerge --unmerge alsa-headers
emerge --unmerge alsa-lib
emerge --unmerge alsa-utils
emerge --unmerge alsa-tools
emerge --unmerge alsa-firmware
emerge --unmerge alsa-oss
emerge --unmerge alsa-plugins
emerge --unmmerge media-sound/alsamixergui        
eix -I alsa 
# <empty>

# 
# Remove alsa from init system
#
rc-update delete alsasound
rm -rf /etc/init.d/alsasound

#
# Rebuild kernel with only minimal alsa support
#
Device Drivers  --->
 Sound  --->
  <*> Sound card support
  Advanced Linux Sound Architecture  --->
   <M> Advanced Linux Sound Architecture
   <M>   Sequencer support
   <M>   OSS Mixer API
   <M>   OSS PCM (digital audio) API
   [*]     OSS PCM (digital audio) API - Include plugin system
   [*]   OSS Sequencer API
   <M>   RTC Timer support
   [*]     Use RTC as default sequencer timer 
   [*]   Support old ALSA API
   PCI devices --->
    <none selected>

#
# Install Hg alsa stuff here
#
cd /usr/src
#
# Download alsa-lib and alsa-utils from http://www.alsa-project.org/  
#
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.15.tar.bz2
wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.15.tar.bz2
tar xvf alsa-lib* 
tar xvf alsa-utils*

#
# Install mercurial
#
emerge --update --newuse --deep  mercurial   
#
# Checkout mercruial alsa repo
#
cd /usr/src
hg clone http://hg-mirror.alsa-project.org/alsa-driver alsa-driver
pushd alsa-driver
hg clone http://hg-mirror.alsa-project.org/alsa-kernel alsa-kernel

#
# Patch
#
#  Apply Takashi's changes by hand (patch -p1 didn't work).
#

#
# Build it up
#
cd /usr/src/alsa-driver
./hgcompile 


<compile failed>




More information about the Alsa-devel mailing list