Hello!
The attached patch will force building the S/PDIF controls on the PCU
SSID for Asus P5P800-VM motherboard, even if the AC97_EI_SPDIF bit is
not set.
Is this approach OK or do you guys want to have the check somewhere else?
Signed-off-by: Magnus Sandin (magnus@xxxxxxxxx)
Takashi Iwai wrote:
> At Sat, 19 Aug 2006 09:37:01 +0200,
> Magnus Sandin wrote:
>
>> Hello!
>>
>> On my ASUS P5P800-VM motherboard, the onboard AC97-chip (Realtek ALC655)
>> does not indicate that there are any S/PDIF functionality available.
>>
>> However, the manufacturer (Asus) claim that there are S/PDIF output on
>> the board, and of course there is.
>>
>> I created a patch that check the PCI subsystem vendor id and device id,
>> and if it's a match to this board it ignores the AC97_EI_SPDIF bit when
>> the controls are built.
>> This allows me to get the desired S/PDIF output to work just as expected.
>>
>> I'm not sure this is good practise to just ignore this bit or force the
>> bit to 1?
>>
>> I have checked the BIOS for settings regarding S/PDIF, but there are
>> none. The only audio setting available is to control if the chip shall
>> be enabled or disabled.
>>
>
> Well, I'd call it a BIOS bug. But such a thing can always happen, of
> course...
>
>
>> What do you recommend in this case?
>>
>
> I think your approach is OK. The only concern is that the board with
> the same PCI SSID might have a codec without SPDIF, but I guess the
> probability of this regression is quite low.
>
> So, just send a patch for merging (maybe after 1.0.12 release).
>
>
> Thanks,
>
> Takashi
>
diff -Nru alsa-kernel/pci/ac97/ac97_codec.c alsa-kernel-patched/pci/ac97/ac97_codec.c
--- alsa-kernel/pci/ac97/ac97_codec.c 2006-08-18 20:11:26.000000000 +0200
+++ alsa-kernel-patched/pci/ac97/ac97_codec.c 2006-08-18 22:01:14.000000000 +0200
@@ -1533,7 +1533,9 @@
}
/* build S/PDIF controls */
- if ((ac97->ext_id & AC97_EI_SPDIF) && !(ac97->scaps & AC97_SCAP_NO_SPDIF)) {
+ /* 0x1043, 0x810f ASUS P5P800-VM, which does not indicate S/PDIF capability */
+ if (((ac97->subsystem_vendor == 0x1043 && ac97->subsystem_device == 0x810f) || (ac97->ext_id & AC97_EI_SPDIF))
+ && !(ac97->scaps & AC97_SCAP_NO_SPDIF)) {
if (ac97->build_ops->build_spdif) {
if ((err = ac97->build_ops->build_spdif(ac97)) < 0)
return err;
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-devel