* S/PDIF indication wrong?
@ 2006-08-19 7:37 Magnus Sandin
2006-08-19 14:01 ` Takashi Iwai
0 siblings, 1 reply; 6+ messages in thread
From: Magnus Sandin @ 2006-08-19 7:37 UTC (permalink / raw)
To: alsa-devel
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: S/PDIF indication wrong?
2006-08-19 7:37 S/PDIF indication wrong? Magnus Sandin
@ 2006-08-19 14:01 ` Takashi Iwai
2006-08-21 20:11 ` [PATCH] Asus P5P800-VM, " Magnus Sandin
0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2006-08-19 14:01 UTC (permalink / raw)
To: Magnus Sandin; +Cc: alsa-devel
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
-------------------------------------------------------------------------
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] Asus P5P800-VM, S/PDIF indication wrong?
2006-08-19 14:01 ` Takashi Iwai
@ 2006-08-21 20:11 ` Magnus Sandin
2006-08-22 11:22 ` Takashi Iwai
0 siblings, 1 reply; 6+ messages in thread
From: Magnus Sandin @ 2006-08-21 20:11 UTC (permalink / raw)
To: Takashi Iwai, alsa-devel
[-- Attachment #1: Type: text/plain, Size: 1608 bytes --]
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@sandin.cx)
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
>
[-- Attachment #2: asus_p5p800-vm.patch --]
[-- Type: text/x-patch, Size: 738 bytes --]
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;
[-- Attachment #3: Type: text/plain, Size: 373 bytes --]
-------------------------------------------------------------------------
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
[-- Attachment #4: Type: text/plain, Size: 161 bytes --]
_______________________________________________
Alsa-devel mailing list
Alsa-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Asus P5P800-VM, S/PDIF indication wrong?
2006-08-21 20:11 ` [PATCH] Asus P5P800-VM, " Magnus Sandin
@ 2006-08-22 11:22 ` Takashi Iwai
2006-08-22 19:57 ` Magnus Sandin
0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2006-08-22 11:22 UTC (permalink / raw)
To: Magnus Sandin; +Cc: alsa-devel
At Mon, 21 Aug 2006 22:11:29 +0200,
Magnus Sandin wrote:
>
> 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@sandin.cx)
I prefer the one like below. Could you check whether it works?
Takashi
diff -r 2359af36395e pci/ac97/ac97_codec.c
--- a/pci/ac97/ac97_codec.c Tue Aug 22 13:16:39 2006 +0200
+++ b/pci/ac97/ac97_codec.c Tue Aug 22 13:21:01 2006 +0200
@@ -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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Asus P5P800-VM, S/PDIF indication wrong?
2006-08-22 11:22 ` Takashi Iwai
@ 2006-08-22 19:57 ` Magnus Sandin
2006-08-23 9:50 ` Takashi Iwai
0 siblings, 1 reply; 6+ messages in thread
From: Magnus Sandin @ 2006-08-22 19:57 UTC (permalink / raw)
To: Takashi Iwai, alsa-devel
I can confirm that that approach works as well!
Will this patch go into 1.0.12?
Regards
// Magnus Sandin
Takashi Iwai wrote:
> At Mon, 21 Aug 2006 22:11:29 +0200,
> Magnus Sandin wrote:
>
>> 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@sandin.cx)
>>
>
> I prefer the one like below. Could you check whether it works?
>
>
> Takashi
>
> diff -r 2359af36395e pci/ac97/ac97_codec.c
> --- a/pci/ac97/ac97_codec.c Tue Aug 22 13:16:39 2006 +0200
> +++ b/pci/ac97/ac97_codec.c Tue Aug 22 13:21:01 2006 +0200
> @@ -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
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Asus P5P800-VM, S/PDIF indication wrong?
2006-08-22 19:57 ` Magnus Sandin
@ 2006-08-23 9:50 ` Takashi Iwai
0 siblings, 0 replies; 6+ messages in thread
From: Takashi Iwai @ 2006-08-23 9:50 UTC (permalink / raw)
To: Magnus Sandin; +Cc: alsa-devel
At Tue, 22 Aug 2006 21:57:25 +0200,
Magnus Sandin wrote:
>
> 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
> Regards
> // Magnus Sandin
>
> Takashi Iwai wrote:
> > At Mon, 21 Aug 2006 22:11:29 +0200,
> > Magnus Sandin wrote:
> >
> >> 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@sandin.cx)
> >>
> >
> > I prefer the one like below. Could you check whether it works?
> >
> >
> > Takashi
> >
> > diff -r 2359af36395e pci/ac97/ac97_codec.c
> > --- a/pci/ac97/ac97_codec.c Tue Aug 22 13:16:39 2006 +0200
> > +++ b/pci/ac97/ac97_codec.c Tue Aug 22 13:21:01 2006 +0200
> > @@ -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
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@lists.sourceforge.net
> 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
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-08-23 9:50 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-19 7:37 S/PDIF indication wrong? Magnus Sandin
2006-08-19 14:01 ` Takashi Iwai
2006-08-21 20:11 ` [PATCH] Asus P5P800-VM, " Magnus Sandin
2006-08-22 11:22 ` Takashi Iwai
2006-08-22 19:57 ` Magnus Sandin
2006-08-23 9:50 ` Takashi Iwai
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.