Skip to contentSkip to conversation

S/PDIF indication wrong?

PATCH In review Magnus Sandin 2 participants 6 messages Aug 19, 2006 – Aug 23, 2006

lore
Share & tools
lore
#0 lore raw

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.

What do you recommend in this case?

You can find more information about this issue on the bugtracker:
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=2372

Regards
// Magnus

-------------------------------------------------------------------------
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

#1 lore raw

At Sat, 19 Aug 2006 09:37:01 +0200,

Quoted 14 lines · Magnus Sandin

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.

Quoted 6 lines

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...

Quoted 1 line

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

-------------------------------------------------------------------------
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

#2 lore raw

PATCH 1/1 Asus P5P800-VM, S/PDIF indication wrong?

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?

Quoted 35 lines · Takashi Iwai

At Sat, 19 Aug 2006 09:37:01 +0200,

Quoted 13 lines · Magnus Sandin

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.

Quoted 7 lines

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...

Quoted 2 lines

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.

Quoted 7 lines

So, just send a patch for merging (maybe after 1.0.12 release).

Thanks,

Takashi

pci/ac97/ac97_codec.c +3 -1
diff -Nru alsa-kernel/pci/ac97/ac97_codec.c alsa-kernel-patched/pci/ac97/ac97_codec.c
@@ -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
[email protected]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

#3 lore raw

Re: [PATCH] Asus P5P800-VM, S/PDIF indication wrong?

At Mon, 21 Aug 2006 22:11:29 +0200,

Quoted 10 lines · Magnus Sandin

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?

I prefer the one like below. Could you check whether it works?

Takashi

pci/ac97/ac97_codec.c +6 -0
diff -r 2359af36395e pci/ac97/ac97_codec.c
@@ -1573,6 +1573,12 @@ static int snd_ac97_mixer_build(struct s
 	}
 
 	/* build S/PDIF controls */
+
+	/* Hack for 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;
+
 	if ((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)

-------------------------------------------------------------------------
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

#4 lore raw

Re: [PATCH] Asus P5P800-VM, S/PDIF indication wrong?

I can confirm that that approach works as well!

Will this patch go into 1.0.12?

Regards
// Magnus Sandin

Quoted 26 lines · Takashi Iwai

At Mon, 21 Aug 2006 22:11:29 +0200,

Quoted 10 lines · Magnus Sandin

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?

I prefer the one like below. Could you check whether it works?

Takashi

diff -r 2359af36395e pci/ac97/ac97_codec.c

pci/ac97/ac97_codec.c +0 -0
@@ -1573,6 +1573,12 @@ static int snd_ac97_mixer_build(struct s
 	}
 

pci/ac97/ac97_codec.c static int snd_ac97_mixer_build(struct s · line 1584

Quoted 10 lines
pci/ac97/ac97_codec.c +6 -0
 	/* build S/PDIF controls */
+
+	/* Hack for 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;
+
 	if ((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)

-------------------------------------------------------------------------
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

#5 lore raw

Re: [PATCH] Asus P5P800-VM, S/PDIF indication wrong?

At Tue, 22 Aug 2006 21:57:25 +0200,

Quoted 4 lines · Magnus Sandin

I can confirm that that approach works as well!

Will this patch go into 1.0.12?

I guess it won't. It's in my local queue, but not committed to the public HG repo because of 1.0.12 freeze...

Takashi

Quoted 42 lines

Regards
// Magnus Sandin

Quoted 26 lines · Takashi Iwai

At Mon, 21 Aug 2006 22:11:29 +0200,

Quoted 10 lines · Magnus Sandin

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?

I prefer the one like below. Could you check whether it works?

Takashi

diff -r 2359af36395e pci/ac97/ac97_codec.c

pci/ac97/ac97_codec.c +0 -0
@@ -1573,6 +1573,12 @@ static int snd_ac97_mixer_build(struct s
 	}
 

pci/ac97/ac97_codec.c static int snd_ac97_mixer_build(struct s · line 1584

Quoted 10 lines
pci/ac97/ac97_codec.c +6 -0
 	/* build S/PDIF controls */
+
+	/* Hack for 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;
+
 	if ((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)

-------------------------------------------------------------------------

Quoted 9 lines

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
[email protected]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

-------------------------------------------------------------------------
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