At Tue, 27 Mar 2007 10:44:23 -0600, Rob Franklin wrote:
On 3/27/07, Takashi Iwai tiwai@suse.de wrote:
At Tue, 27 Mar 2007 08:49:05 -0600, Rob Franklin wrote:
Hi All,
I posted a question a couple of weeks ago to the alsa-users list (Can't get spdif working with ALSA and FC6 on ECS L4S5MG/651+ motherboard), but never got a response.
I have been looking at the ALSA source code for the AC'97 codec on my board (CMI9738) and the source code for the intel8x0 driver (for my SiS 7012). However, as far as I can tell from looking at the source, S/PDIF is not enabled/supported for this combination of devices. Additionally, Googling around I haven't found any mention of people getting spdif working with ALSA and a CM9738 / SiS7012 combo.
I am wondering whether anyone on the developer list can confirm that this is the case. Also, if this is the case can someone give me an idea of what would be required to get this working. The system is setup with dual boot and so I could grab some of the values from windows using a PCI sniffer, and I might be able to do some hacking on the source code and submit a patch if someone could help guide me in the right direction.
Are you sure it's CM9738? AFAIK, CM9738 doesn't support SPDIF at all, but CM9739 does...
That was my first thought too, but I pulled open the case last night and verified that it was indeed a 9738. The download page from the motherboard manufacturer has a driver for CMI9738 and a CMI9738/9739 driver (http://www.ecsusa.com/downloads/drivers_sound.html). I am wondering if there are two different versions of this chip.
Here is the output from lspci -vv for the sound device:
00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] AC'97 Sound Controller (rev a0) Subsystem: Elitegroup Computer Systems Unknown device 0a44 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32 (13000ns min, 2750ns max) Interrupt: pin C routed to IRQ 22 Region 0: I/O ports at d000 [size=256] Region 1: I/O ports at d400 [size=128] Capabilities: <access denied>
One thought that I had was to force the AC'97 driver to detect the chip as a 9739 instead of a 9738 to see whether my 9738 can work as a 9739. But I'm not sure how to do that short of modifying the source code and recompiling the kernel module.
First check whether its codec id is CMI9738, see /proc/asound/card0/codec97#0/* files. If it's really CM9738, you can hack pci/ac97/ac97_codec.c to replace patch_cm9738 with patch_cm9739 in snd_ac97_codec_ids[].
Takashi