public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* looping S/PDIF data
@ 2008-05-31  9:26 Pierre Ossman
  2008-06-02  8:00 ` Takashi Iwai
  2008-06-17 19:55 ` Pierre Ossman
  0 siblings, 2 replies; 19+ messages in thread
From: Pierre Ossman @ 2008-05-31  9:26 UTC (permalink / raw)
  To: mulix; +Cc: linux-kernel

I have a minor annoyance with the snd_trident driver that I was hoping
you might have a fix for:

Pausing the output does not seem to take on the S/PDIF output. Analog
outputs properly stop in their tracks, but the S/PDIF port keeps
looping the current data buffer, which gives a rather unpleasant end
result. :)

Also, I was wondering if the hardware is capable of automatically
shuffling data from the line in ADC to the S/PDIF port? The driver
doesn't expose anything, but I don't know if that's because of missing
code or missing hardware.

Rgds

-- 
     -- Pierre Ossman

  Linux kernel, MMC maintainer        http://www.kernel.org
  rdesktop, core developer          http://www.rdesktop.org

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: looping S/PDIF data
  2008-05-31  9:26 looping S/PDIF data Pierre Ossman
@ 2008-06-02  8:00 ` Takashi Iwai
  2008-06-17 19:55 ` Pierre Ossman
  1 sibling, 0 replies; 19+ messages in thread
From: Takashi Iwai @ 2008-06-02  8:00 UTC (permalink / raw)
  To: Pierre Ossman; +Cc: mulix, linux-kernel

At Sat, 31 May 2008 11:26:06 +0200,
Pierre Ossman wrote:
> 
> I have a minor annoyance with the snd_trident driver that I was hoping
> you might have a fix for:
> 
> Pausing the output does not seem to take on the S/PDIF output. Analog
> outputs properly stop in their tracks, but the S/PDIF port keeps
> looping the current data buffer, which gives a rather unpleasant end
> result. :)
> 
> Also, I was wondering if the hardware is capable of automatically
> shuffling data from the line in ADC to the S/PDIF port? The driver
> doesn't expose anything, but I don't know if that's because of missing
> code or missing hardware.

AFAIK, there is no analog loopback for SPDIF on trident.  At least,
the driver doesn't support it.

The easiest way would be a software solution, e.g. use JACK, I
suppose.


Takashi

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: looping S/PDIF data
  2008-05-31  9:26 looping S/PDIF data Pierre Ossman
  2008-06-02  8:00 ` Takashi Iwai
@ 2008-06-17 19:55 ` Pierre Ossman
  2008-06-18  7:24   ` Rene Herman
  1 sibling, 1 reply; 19+ messages in thread
From: Pierre Ossman @ 2008-06-17 19:55 UTC (permalink / raw)
  To: mulix; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 430 bytes --]

Ping

On Sat, 31 May 2008 11:26:06 +0200
Pierre Ossman <drzeus-list@drzeus.cx> wrote:

> I have a minor annoyance with the snd_trident driver that I was hoping
> you might have a fix for:
> 
> Pausing the output does not seem to take on the S/PDIF output. Analog
> outputs properly stop in their tracks, but the S/PDIF port keeps
> looping the current data buffer, which gives a rather unpleasant end
> result. :)
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: looping S/PDIF data
  2008-06-17 19:55 ` Pierre Ossman
@ 2008-06-18  7:24   ` Rene Herman
  2008-06-19 10:05     ` [alsa-devel] " Takashi Iwai
  2008-06-19 10:05     ` Takashi Iwai
  0 siblings, 2 replies; 19+ messages in thread
From: Rene Herman @ 2008-06-18  7:24 UTC (permalink / raw)
  To: Pierre Ossman; +Cc: mulix, linux-kernel, ALSA devel

On 17-06-08 21:55, Pierre Ossman wrote:

> Ping
> 
> On Sat, 31 May 2008 11:26:06 +0200
> Pierre Ossman <drzeus-list@drzeus.cx> wrote:
> 
>> I have a minor annoyance with the snd_trident driver that I was hoping
>> you might have a fix for:
>>
>> Pausing the output does not seem to take on the S/PDIF output. Analog
>> outputs properly stop in their tracks, but the S/PDIF port keeps
>> looping the current data buffer, which gives a rather unpleasant end
>> result. :)

Try the alsa-devel list...

Rene.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-18  7:24   ` Rene Herman
@ 2008-06-19 10:05     ` Takashi Iwai
  2008-06-19 12:39       ` Jaroslav Kysela
  2008-06-19 10:05     ` Takashi Iwai
  1 sibling, 1 reply; 19+ messages in thread
From: Takashi Iwai @ 2008-06-19 10:05 UTC (permalink / raw)
  To: Rene Herman; +Cc: Pierre Ossman, ALSA devel, linux-kernel, mulix

At Wed, 18 Jun 2008 09:24:59 +0200,
Rene Herman wrote:
> 
> On 17-06-08 21:55, Pierre Ossman wrote:
> 
> > Ping
> > 
> > On Sat, 31 May 2008 11:26:06 +0200
> > Pierre Ossman <drzeus-list@drzeus.cx> wrote:
> > 
> >> I have a minor annoyance with the snd_trident driver that I was hoping
> >> you might have a fix for:
> >>
> >> Pausing the output does not seem to take on the S/PDIF output. Analog
> >> outputs properly stop in their tracks, but the S/PDIF port keeps
> >> looping the current data buffer, which gives a rather unpleasant end
> >> result. :)
> 
> Try the alsa-devel list...

Does the patch below help?


Takashi

diff --git a/sound/pci/trident/trident_main.c b/sound/pci/trident/trident_main.c
index bbcee2c..916d4b8 100644
--- a/sound/pci/trident/trident_main.c
+++ b/sound/pci/trident/trident_main.c
@@ -1593,7 +1593,11 @@ static int snd_trident_trigger(struct snd_pcm_substream *substream,
 			outb(trident->spdif_pcm_ctrl, TRID_REG(trident, NX_SPCTRL_SPCSO + 3));
 		} else {
 			outl(trident->spdif_pcm_bits, TRID_REG(trident, SI_SPDIF_CS));
-			val = inl(TRID_REG(trident, SI_SERIAL_INTF_CTRL)) | SPDIF_EN;
+			val = inl(TRID_REG(trident, SI_SERIAL_INTF_CTRL));
+			if (go)
+				val |= SPDIF_EN;
+			else
+				val &= ~SPDIF_EN;
 			outl(val, TRID_REG(trident, SI_SERIAL_INTF_CTRL));
 		}
 	}

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-18  7:24   ` Rene Herman
  2008-06-19 10:05     ` [alsa-devel] " Takashi Iwai
@ 2008-06-19 10:05     ` Takashi Iwai
  1 sibling, 0 replies; 19+ messages in thread
From: Takashi Iwai @ 2008-06-19 10:05 UTC (permalink / raw)
  To: Rene Herman; +Cc: Pierre Ossman, ALSA devel, linux-kernel, mulix

At Wed, 18 Jun 2008 09:24:59 +0200,
Rene Herman wrote:
> 
> On 17-06-08 21:55, Pierre Ossman wrote:
> 
> > Ping
> > 
> > On Sat, 31 May 2008 11:26:06 +0200
> > Pierre Ossman <drzeus-list@drzeus.cx> wrote:
> > 
> >> I have a minor annoyance with the snd_trident driver that I was hoping
> >> you might have a fix for:
> >>
> >> Pausing the output does not seem to take on the S/PDIF output. Analog
> >> outputs properly stop in their tracks, but the S/PDIF port keeps
> >> looping the current data buffer, which gives a rather unpleasant end
> >> result. :)
> 
> Try the alsa-devel list...

Does the patch below help?


Takashi

diff --git a/sound/pci/trident/trident_main.c b/sound/pci/trident/trident_main.c
index bbcee2c..916d4b8 100644
--- a/sound/pci/trident/trident_main.c
+++ b/sound/pci/trident/trident_main.c
@@ -1593,7 +1593,11 @@ static int snd_trident_trigger(struct snd_pcm_substream *substream,
 			outb(trident->spdif_pcm_ctrl, TRID_REG(trident, NX_SPCTRL_SPCSO + 3));
 		} else {
 			outl(trident->spdif_pcm_bits, TRID_REG(trident, SI_SPDIF_CS));
-			val = inl(TRID_REG(trident, SI_SERIAL_INTF_CTRL)) | SPDIF_EN;
+			val = inl(TRID_REG(trident, SI_SERIAL_INTF_CTRL));
+			if (go)
+				val |= SPDIF_EN;
+			else
+				val &= ~SPDIF_EN;
 			outl(val, TRID_REG(trident, SI_SERIAL_INTF_CTRL));
 		}
 	}

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-19 10:05     ` [alsa-devel] " Takashi Iwai
@ 2008-06-19 12:39       ` Jaroslav Kysela
  2008-06-19 12:48         ` Takashi Iwai
  2008-06-19 23:02         ` Pierre Ossman
  0 siblings, 2 replies; 19+ messages in thread
From: Jaroslav Kysela @ 2008-06-19 12:39 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Rene Herman, ALSA devel, mulix, Pierre Ossman, LKML

On Thu, 19 Jun 2008, Takashi Iwai wrote:

> At Wed, 18 Jun 2008 09:24:59 +0200,
> Rene Herman wrote:
> > 
> > On 17-06-08 21:55, Pierre Ossman wrote:
> > 
> > > Ping
> > > 
> > > On Sat, 31 May 2008 11:26:06 +0200
> > > Pierre Ossman <drzeus-list@drzeus.cx> wrote:
> > > 
> > >> I have a minor annoyance with the snd_trident driver that I was hoping
> > >> you might have a fix for:
> > >>
> > >> Pausing the output does not seem to take on the S/PDIF output. Analog
> > >> outputs properly stop in their tracks, but the S/PDIF port keeps
> > >> looping the current data buffer, which gives a rather unpleasant end
> > >> result. :)
> > 
> > Try the alsa-devel list...
> 
> Does the patch below help?
> 
> 
> Takashi
> 
> diff --git a/sound/pci/trident/trident_main.c b/sound/pci/trident/trident_main.c
> index bbcee2c..916d4b8 100644
> --- a/sound/pci/trident/trident_main.c
> +++ b/sound/pci/trident/trident_main.c
> @@ -1593,7 +1593,11 @@ static int snd_trident_trigger(struct snd_pcm_substream *substream,
>  			outb(trident->spdif_pcm_ctrl, TRID_REG(trident, NX_SPCTRL_SPCSO + 3));
>  		} else {
>  			outl(trident->spdif_pcm_bits, TRID_REG(trident, SI_SPDIF_CS));
> -			val = inl(TRID_REG(trident, SI_SERIAL_INTF_CTRL)) | SPDIF_EN;
> +			val = inl(TRID_REG(trident, SI_SERIAL_INTF_CTRL));
> +			if (go)
> +				val |= SPDIF_EN;
> +			else
> +				val &= ~SPDIF_EN;
>  			outl(val, TRID_REG(trident, SI_SERIAL_INTF_CTRL));
>  		}
>  	}

I don't think that this patch is correct. DMA transfers should be disabled 
by:

outl(what, TRID_REG(trident, T4D_STOP_B));
outl(val, TRID_REG(trident, T4D_AINTEN_B));

lines. Adding &= ~SPDIF_EN can disable output from AC97 to S/PDIF as well.

						Jaroslav

-----
Jaroslav Kysela <perex@perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-19 12:39       ` Jaroslav Kysela
@ 2008-06-19 12:48         ` Takashi Iwai
  2008-06-20 19:45           ` Pierre Ossman
  2008-06-19 23:02         ` Pierre Ossman
  1 sibling, 1 reply; 19+ messages in thread
From: Takashi Iwai @ 2008-06-19 12:48 UTC (permalink / raw)
  To: Jaroslav Kysela; +Cc: Rene Herman, ALSA devel, mulix, Pierre Ossman, LKML

At Thu, 19 Jun 2008 14:39:05 +0200 (CEST),
Jaroslav Kysela wrote:
> 
> On Thu, 19 Jun 2008, Takashi Iwai wrote:
> 
> > At Wed, 18 Jun 2008 09:24:59 +0200,
> > Rene Herman wrote:
> > > 
> > > On 17-06-08 21:55, Pierre Ossman wrote:
> > > 
> > > > Ping
> > > > 
> > > > On Sat, 31 May 2008 11:26:06 +0200
> > > > Pierre Ossman <drzeus-list@drzeus.cx> wrote:
> > > > 
> > > >> I have a minor annoyance with the snd_trident driver that I was hoping
> > > >> you might have a fix for:
> > > >>
> > > >> Pausing the output does not seem to take on the S/PDIF output. Analog
> > > >> outputs properly stop in their tracks, but the S/PDIF port keeps
> > > >> looping the current data buffer, which gives a rather unpleasant end
> > > >> result. :)
> > > 
> > > Try the alsa-devel list...
> > 
> > Does the patch below help?
> > 
> > 
> > Takashi
> > 
> > diff --git a/sound/pci/trident/trident_main.c b/sound/pci/trident/trident_main.c
> > index bbcee2c..916d4b8 100644
> > --- a/sound/pci/trident/trident_main.c
> > +++ b/sound/pci/trident/trident_main.c
> > @@ -1593,7 +1593,11 @@ static int snd_trident_trigger(struct snd_pcm_substream *substream,
> >  			outb(trident->spdif_pcm_ctrl, TRID_REG(trident, NX_SPCTRL_SPCSO + 3));
> >  		} else {
> >  			outl(trident->spdif_pcm_bits, TRID_REG(trident, SI_SPDIF_CS));
> > -			val = inl(TRID_REG(trident, SI_SERIAL_INTF_CTRL)) | SPDIF_EN;
> > +			val = inl(TRID_REG(trident, SI_SERIAL_INTF_CTRL));
> > +			if (go)
> > +				val |= SPDIF_EN;
> > +			else
> > +				val &= ~SPDIF_EN;
> >  			outl(val, TRID_REG(trident, SI_SERIAL_INTF_CTRL));
> >  		}
> >  	}
> 
> I don't think that this patch is correct. DMA transfers should be disabled 
> by:
> 
> outl(what, TRID_REG(trident, T4D_STOP_B));
> outl(val, TRID_REG(trident, T4D_AINTEN_B));

They are already in the trigger callback as long as I saw the code
quickly.  So the problem should be somewhere else.

> lines. Adding &= ~SPDIF_EN can disable output from AC97 to S/PDIF as well.

That's true.

Anyway, if you are up now, I'll let you hunt further as you are the
author of the driver :)


thanks,

Takashi

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-19 12:39       ` Jaroslav Kysela
  2008-06-19 12:48         ` Takashi Iwai
@ 2008-06-19 23:02         ` Pierre Ossman
  1 sibling, 0 replies; 19+ messages in thread
From: Pierre Ossman @ 2008-06-19 23:02 UTC (permalink / raw)
  To: Jaroslav Kysela; +Cc: Takashi Iwai, Rene Herman, ALSA devel, mulix, LKML

[-- Attachment #1: Type: text/plain, Size: 578 bytes --]

On Thu, 19 Jun 2008 14:39:05 +0200 (CEST)
Jaroslav Kysela <perex@perex.cz> wrote:

> 
> I don't think that this patch is correct. DMA transfers should be disabled 
> by:
> 
> outl(what, TRID_REG(trident, T4D_STOP_B));
> outl(val, TRID_REG(trident, T4D_AINTEN_B));
> 
> lines. Adding &= ~SPDIF_EN can disable output from AC97 to S/PDIF as well.
> 

FWIW, the patch had zero effect on the system here.

Rgds
-- 
     -- Pierre Ossman

  WARNING: This correspondence is being monitored by the
  Swedish government. Use end-to-end encryption where
  possible.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-19 12:48         ` Takashi Iwai
@ 2008-06-20 19:45           ` Pierre Ossman
  2008-06-20 19:52             ` Rene Herman
  0 siblings, 1 reply; 19+ messages in thread
From: Pierre Ossman @ 2008-06-20 19:45 UTC (permalink / raw)
  To: Takashi Iwai, Jaroslav Kysela; +Cc: Rene Herman, ALSA devel, mulix, LKML

[-- Attachment #1: Type: text/plain, Size: 984 bytes --]

On Thu, 19 Jun 2008 14:48:19 +0200
Takashi Iwai <tiwai@suse.de> wrote:

> At Thu, 19 Jun 2008 14:39:05 +0200 (CEST),
> Jaroslav Kysela wrote:
> > 
> > I don't think that this patch is correct. DMA transfers should be disabled 
> > by:
> > 
> > outl(what, TRID_REG(trident, T4D_STOP_B));
> > outl(val, TRID_REG(trident, T4D_AINTEN_B));
> 
> They are already in the trigger callback as long as I saw the code
> quickly.  So the problem should be somewhere else.
> 
> > lines. Adding &= ~SPDIF_EN can disable output from AC97 to S/PDIF as well.
> 
> That's true.
> 
> Anyway, if you are up now, I'll let you hunt further as you are the
> author of the driver :)
> 

Are there any specs on this hardware? I could play around a bit myself,
but I can't really find any documentation on the registers.

Rgds
-- 
     -- Pierre Ossman

  WARNING: This correspondence is being monitored by the
  Swedish government. Use end-to-end encryption where
  possible.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-20 19:45           ` Pierre Ossman
@ 2008-06-20 19:52             ` Rene Herman
  2008-06-20 22:00               ` Pierre Ossman
  0 siblings, 1 reply; 19+ messages in thread
From: Rene Herman @ 2008-06-20 19:52 UTC (permalink / raw)
  To: Pierre Ossman; +Cc: Takashi Iwai, Jaroslav Kysela, ALSA devel, mulix, LKML

On 20-06-08 21:45, Pierre Ossman wrote:

> On Thu, 19 Jun 2008 14:48:19 +0200
> Takashi Iwai <tiwai@suse.de> wrote:
> 
>> At Thu, 19 Jun 2008 14:39:05 +0200 (CEST),
>> Jaroslav Kysela wrote:
>>> I don't think that this patch is correct. DMA transfers should be disabled 
>>> by:
>>>
>>> outl(what, TRID_REG(trident, T4D_STOP_B));
>>> outl(val, TRID_REG(trident, T4D_AINTEN_B));
>> They are already in the trigger callback as long as I saw the code
>> quickly.  So the problem should be somewhere else.
>>
>>> lines. Adding &= ~SPDIF_EN can disable output from AC97 to S/PDIF as well.
>> That's true.
>>
>> Anyway, if you are up now, I'll let you hunt further as you are the
>> author of the driver :)
>>
> 
> Are there any specs on this hardware? I could play around a bit myself,
> but I can't really find any documentation on the registers.

At:

ftp://ftp.alsa-project.org/pub/manuals/trident/

there's a 4D-Wave DX technical reference manual and .doc files which at 
first glance look useful.

Rene.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-20 19:52             ` Rene Herman
@ 2008-06-20 22:00               ` Pierre Ossman
  2008-06-20 22:23                 ` Rene Herman
  0 siblings, 1 reply; 19+ messages in thread
From: Pierre Ossman @ 2008-06-20 22:00 UTC (permalink / raw)
  To: Rene Herman; +Cc: Takashi Iwai, Jaroslav Kysela, ALSA devel, mulix, LKML

[-- Attachment #1: Type: text/plain, Size: 692 bytes --]

On Fri, 20 Jun 2008 21:52:55 +0200
Rene Herman <rene.herman@keyaccess.nl> wrote:

> On 20-06-08 21:45, Pierre Ossman wrote:
> > 
> > Are there any specs on this hardware? I could play around a bit myself,
> > but I can't really find any documentation on the registers.
> 
> At:
> 
> ftp://ftp.alsa-project.org/pub/manuals/trident/
> 
> there's a 4D-Wave DX technical reference manual and .doc files which at 
> first glance look useful.
> 

Ah, thanks. This is an NX, but hopefully they don't differ that much.

Rgds
-- 
     -- Pierre Ossman

  WARNING: This correspondence is being monitored by the
  Swedish government. Use end-to-end encryption where
  possible.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-20 22:00               ` Pierre Ossman
@ 2008-06-20 22:23                 ` Rene Herman
  2008-06-20 23:09                   ` Pierre Ossman
  0 siblings, 1 reply; 19+ messages in thread
From: Rene Herman @ 2008-06-20 22:23 UTC (permalink / raw)
  To: Pierre Ossman; +Cc: Takashi Iwai, Jaroslav Kysela, ALSA devel, mulix, LKML

On 21-06-08 00:00, Pierre Ossman wrote:

> On Fri, 20 Jun 2008 21:52:55 +0200 Rene Herman
> <rene.herman@keyaccess.nl> wrote:
> 
>> On 20-06-08 21:45, Pierre Ossman wrote:
>>> Are there any specs on this hardware? I could play around a bit
>>> myself, but I can't really find any documentation on the
>>> registers.
>> At:
>> 
>> ftp://ftp.alsa-project.org/pub/manuals/trident/
>> 
>> there's a 4D-Wave DX technical reference manual and .doc files
>> which at first glance look useful.
>> 
> 
> Ah, thanks. This is an NX, but hopefully they don't differ that much.

No idea, but if you come up with something and keep me in CC I'll test 
it on a DX. Just acquired one on eBay a few days ago as a coincedence.

Rene.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-20 22:23                 ` Rene Herman
@ 2008-06-20 23:09                   ` Pierre Ossman
  2008-06-21 12:14                     ` Rene Herman
  0 siblings, 1 reply; 19+ messages in thread
From: Pierre Ossman @ 2008-06-20 23:09 UTC (permalink / raw)
  To: Rene Herman, Takashi Iwai, Jaroslav Kysela; +Cc: ALSA devel, mulix, LKML

[-- Attachment #1: Type: text/plain, Size: 2897 bytes --]

On Sat, 21 Jun 2008 00:23:51 +0200
Rene Herman <rene.herman@keyaccess.nl> wrote:

> On 21-06-08 00:00, Pierre Ossman wrote:
> 
> > On Fri, 20 Jun 2008 21:52:55 +0200 Rene Herman
> > <rene.herman@keyaccess.nl> wrote:
> > 
> >> On 20-06-08 21:45, Pierre Ossman wrote:
> >>> Are there any specs on this hardware? I could play around a bit
> >>> myself, but I can't really find any documentation on the
> >>> registers.
> >> At:
> >> 
> >> ftp://ftp.alsa-project.org/pub/manuals/trident/
> >> 
> >> there's a 4D-Wave DX technical reference manual and .doc files
> >> which at first glance look useful.
> >> 
> > 
> > Ah, thanks. This is an NX, but hopefully they don't differ that much.
> 
> No idea, but if you come up with something and keep me in CC I'll test 
> it on a DX. Just acquired one on eBay a few days ago as a coincedence.
> 

Well aren't things just so much easier with a decent spec. I have this
one solved now. :)

The following patch disables both the S/PDIF output, and the DMA engine
when paused. As for Jaroslav's comment, the documentation seems to
suggest that the DMA disabled by the main code path is just for the
mixer engine, which is not used when feeding the S/PDIF directly. This
is supported by my tests as S/PDIF output is paused when using hw:0.0
(the mixer engine), but not with hw:0.2 (the raw S/PDIF).

Regarding the DX, the docs say that the DX lacks S/PDIF, so it should
be unaffected. For the SiS chip, Takashi's patch might still be needed.

--

trident: pause s/pdif output

Stop the S/PDIF DMA engine and output when the device is told to pause.
It will keep on looping the current buffer contents if this isn't done.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
--

diff --git a/sound/pci/trident/trident_main.c b/sound/pci/trident/trident_main.c
index bbcee2c..a69b420 100644
--- a/sound/pci/trident/trident_main.c
+++ b/sound/pci/trident/trident_main.c
@@ -1590,7 +1590,10 @@ static int snd_trident_trigger(struct snd_pcm_substream *substream,
        if (spdif_flag) {
                if (trident->device != TRIDENT_DEVICE_ID_SI7018) {
                        outl(trident->spdif_pcm_bits, TRID_REG(trident, NX_SPCSTATUS));
-                       outb(trident->spdif_pcm_ctrl, TRID_REG(trident, NX_SPCTRL_SPCSO + 3));
+                       val = trident->spdif_pcm_ctrl;
+                       if (!go)
+                               val &= ~(0x28);
+                       outb(val, TRID_REG(trident, NX_SPCTRL_SPCSO + 3));
                } else {
                        outl(trident->spdif_pcm_bits, TRID_REG(trident, SI_SPDIF_CS));
                        val = inl(TRID_REG(trident, SI_SERIAL_INTF_CTRL)) | SPDIF_EN;

-- 
     -- Pierre Ossman

  WARNING: This correspondence is being monitored by the
  Swedish government. Use end-to-end encryption where
  possible.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-20 23:09                   ` Pierre Ossman
@ 2008-06-21 12:14                     ` Rene Herman
  2008-06-30 17:11                       ` Pierre Ossman
  0 siblings, 1 reply; 19+ messages in thread
From: Rene Herman @ 2008-06-21 12:14 UTC (permalink / raw)
  To: Pierre Ossman; +Cc: Takashi Iwai, Jaroslav Kysela, ALSA devel, mulix, LKML

On 21-06-08 01:09, Pierre Ossman wrote:

> trident: pause s/pdif output
> 
> Stop the S/PDIF DMA engine and output when the device is told to pause.
> It will keep on looping the current buffer contents if this isn't done.
> 
> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

Verified to fix the reported pause problem on a 4DWaveNX (and indeed to 
not affect a 4DWaveDX). The Trident SPDIF doesn't seem capable of 44100 
which for me means it's not all that useful but you no doubt know 
yourself that/if it is for you...

Tested-by: Rene Herman <rene.herman@gmail.com>

Rene.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-21 12:14                     ` Rene Herman
@ 2008-06-30 17:11                       ` Pierre Ossman
  2008-06-30 18:21                         ` Rene Herman
  0 siblings, 1 reply; 19+ messages in thread
From: Pierre Ossman @ 2008-06-30 17:11 UTC (permalink / raw)
  To: Takashi Iwai, Jaroslav Kysela; +Cc: Rene Herman, ALSA devel, mulix, LKML

[-- Attachment #1: Type: text/plain, Size: 957 bytes --]

On Sat, 21 Jun 2008 14:14:38 +0200
Rene Herman <rene.herman@keyaccess.nl> wrote:

> On 21-06-08 01:09, Pierre Ossman wrote:
> 
> > trident: pause s/pdif output
> > 
> > Stop the S/PDIF DMA engine and output when the device is told to pause.
> > It will keep on looping the current buffer contents if this isn't done.
> > 
> > Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
> 
> Verified to fix the reported pause problem on a 4DWaveNX (and indeed to 
> not affect a 4DWaveDX). The Trident SPDIF doesn't seem capable of 44100 
> which for me means it's not all that useful but you no doubt know 
> yourself that/if it is for you...
> 
> Tested-by: Rene Herman <rene.herman@gmail.com>


Sooo.... ack? nak? limbo?

-- 
     -- Pierre Ossman

  WARNING: This correspondence is being monitored by the
  Swedish government. Make sure your server uses encryption
  for SMTP traffic and consider using PGP for end-to-end
  encryption.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-30 17:11                       ` Pierre Ossman
@ 2008-06-30 18:21                         ` Rene Herman
  2008-06-30 19:22                           ` Pierre Ossman
  2008-07-01 10:16                           ` Takashi Iwai
  0 siblings, 2 replies; 19+ messages in thread
From: Rene Herman @ 2008-06-30 18:21 UTC (permalink / raw)
  To: Pierre Ossman; +Cc: Takashi Iwai, Jaroslav Kysela, ALSA devel, mulix, LKML

On 30-06-08 19:11, Pierre Ossman wrote:

> On Sat, 21 Jun 2008 14:14:38 +0200
> Rene Herman <rene.herman@keyaccess.nl> wrote:
> 
>> On 21-06-08 01:09, Pierre Ossman wrote:
>>
>>> trident: pause s/pdif output
>>>
>>> Stop the S/PDIF DMA engine and output when the device is told to pause.
>>> It will keep on looping the current buffer contents if this isn't done.
>>>
>>> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
>> Verified to fix the reported pause problem on a 4DWaveNX (and indeed to 
>> not affect a 4DWaveDX). The Trident SPDIF doesn't seem capable of 44100 
>> which for me means it's not all that useful but you no doubt know 
>> yourself that/if it is for you...
>>
>> Tested-by: Rene Herman <rene.herman@gmail.com>
> 
> 
> Sooo.... ack? nak? limbo?

... come on shake your body baby, do the limbo, I know ...

Your fix is commit f19a62ecba9d0963cee2b673f0ad34917b5e57ad in the 
"sound-2.6" git repo (Takashi Iwai's tree), branch "master", at

git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git

also viewable at:

http://git.kernel.org/?p=linux/kernel/git/tiwai/sound-2.6.git;a=commit;h=f19a62ecba9d0963cee2b673f0ad34917b5e57ad

That commit is pre the 1.0.17-rc3 release/tag so it's in. Will find its 
way into the kernel during the next merge window no doubt...

Rene.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-30 18:21                         ` Rene Herman
@ 2008-06-30 19:22                           ` Pierre Ossman
  2008-07-01 10:16                           ` Takashi Iwai
  1 sibling, 0 replies; 19+ messages in thread
From: Pierre Ossman @ 2008-06-30 19:22 UTC (permalink / raw)
  To: Rene Herman; +Cc: Takashi Iwai, Jaroslav Kysela, ALSA devel, mulix, LKML

[-- Attachment #1: Type: text/plain, Size: 914 bytes --]

On Mon, 30 Jun 2008 20:21:09 +0200
Rene Herman <rene.herman@keyaccess.nl> wrote:

> 
> Your fix is commit f19a62ecba9d0963cee2b673f0ad34917b5e57ad in the 
> "sound-2.6" git repo (Takashi Iwai's tree), branch "master", at
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
> 
> also viewable at:
> 
> http://git.kernel.org/?p=linux/kernel/git/tiwai/sound-2.6.git;a=commit;h=f19a62ecba9d0963cee2b673f0ad34917b5e57ad
> 
> That commit is pre the 1.0.17-rc3 release/tag so it's in. Will find its 
> way into the kernel during the next merge window no doubt...
> 

Delightful. :)

Now I just need to poke my vendor of choice to backport it aswell...

Rgds
-- 
     -- Pierre Ossman

  WARNING: This correspondence is being monitored by the
  Swedish government. Make sure your server uses encryption
  for SMTP traffic and consider using PGP for end-to-end
  encryption.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [alsa-devel] looping S/PDIF data
  2008-06-30 18:21                         ` Rene Herman
  2008-06-30 19:22                           ` Pierre Ossman
@ 2008-07-01 10:16                           ` Takashi Iwai
  1 sibling, 0 replies; 19+ messages in thread
From: Takashi Iwai @ 2008-07-01 10:16 UTC (permalink / raw)
  To: Rene Herman; +Cc: Pierre Ossman, Jaroslav Kysela, ALSA devel, mulix, LKML

At Mon, 30 Jun 2008 20:21:09 +0200,
Rene Herman wrote:
> 
> On 30-06-08 19:11, Pierre Ossman wrote:
> 
> > On Sat, 21 Jun 2008 14:14:38 +0200
> > Rene Herman <rene.herman@keyaccess.nl> wrote:
> > 
> >> On 21-06-08 01:09, Pierre Ossman wrote:
> >>
> >>> trident: pause s/pdif output
> >>>
> >>> Stop the S/PDIF DMA engine and output when the device is told to pause.
> >>> It will keep on looping the current buffer contents if this isn't done.
> >>>
> >>> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
> >> Verified to fix the reported pause problem on a 4DWaveNX (and indeed to 
> >> not affect a 4DWaveDX). The Trident SPDIF doesn't seem capable of 44100 
> >> which for me means it's not all that useful but you no doubt know 
> >> yourself that/if it is for you...
> >>
> >> Tested-by: Rene Herman <rene.herman@gmail.com>
> > 
> > 
> > Sooo.... ack? nak? limbo?
> 
> ... come on shake your body baby, do the limbo, I know ...
> 
> Your fix is commit f19a62ecba9d0963cee2b673f0ad34917b5e57ad in the 
> "sound-2.6" git repo (Takashi Iwai's tree), branch "master", at
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
> 
> also viewable at:
> 
> http://git.kernel.org/?p=linux/kernel/git/tiwai/sound-2.6.git;a=commit;h=f19a62ecba9d0963cee2b673f0ad34917b5e57ad
> 
> That commit is pre the 1.0.17-rc3 release/tag so it's in. Will find its 
> way into the kernel during the next merge window no doubt...

Yep.  Sorry, I simply forgot to send ACK message.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2008-07-01 10:17 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-31  9:26 looping S/PDIF data Pierre Ossman
2008-06-02  8:00 ` Takashi Iwai
2008-06-17 19:55 ` Pierre Ossman
2008-06-18  7:24   ` Rene Herman
2008-06-19 10:05     ` [alsa-devel] " Takashi Iwai
2008-06-19 12:39       ` Jaroslav Kysela
2008-06-19 12:48         ` Takashi Iwai
2008-06-20 19:45           ` Pierre Ossman
2008-06-20 19:52             ` Rene Herman
2008-06-20 22:00               ` Pierre Ossman
2008-06-20 22:23                 ` Rene Herman
2008-06-20 23:09                   ` Pierre Ossman
2008-06-21 12:14                     ` Rene Herman
2008-06-30 17:11                       ` Pierre Ossman
2008-06-30 18:21                         ` Rene Herman
2008-06-30 19:22                           ` Pierre Ossman
2008-07-01 10:16                           ` Takashi Iwai
2008-06-19 23:02         ` Pierre Ossman
2008-06-19 10:05     ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox