openvortex-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Alsa-devel] Re: [Openvortex-dev] aplay - How to use device 3 of car


From: Manuel Jander
Subject: Re: [Alsa-devel] Re: [Openvortex-dev] aplay - How to use device 3 of card 0 ?
Date: Mon, 07 Mar 2005 09:22:14 -0300

Hi Raymond,

On Mon, 2005-03-07 at 15:54 +0800, Raymond wrote:
> >> 2) How did you perform your "WT DMA" test ?
> 
> >Using:
> >aplay -d hw:0,1 test.wav
> 
> >The result for me was that aplay did newer finish, because data was
> >never being transfered. After some time it timed out with an error.
> 
> http://savannah.nongnu.org/cgi-bin/viewcvs/openvortex/alsa/pci/au88x0/au88x0_pcm.c.diff?r1=1.9&r2=1.10
> 
> #define VORTEX_PCM_TYPE(x) (x->name[40])
> 
> http://cvs.sourceforge.net/viewcvs.py/alsa/alsa-kernel/pci/au88x0/au88x0_pcm.c?rev=1.6&view=markup
> 
> snd_vortex_new_pcm()
> {
> ...
>       strcpy(pcm->name, vortex_pcm_name[idx]);
>       chip->pcm[idx] = pcm;
>       // This is an evil hack, but it saves a lot of duplicated code.
>       VORTEX_PCM_TYPE(pcm) = idx;
>       pcm->private_data = chip;
> ...
> }

I'm the author of that ugly thing :) 

> Added debug statement in snd_vortex_pcm_open()
> 
> 
>       /* Avoid PAGE_SIZE boundary to fall inside of a period. */
>       if ((err =
>            snd_pcm_hw_constraint_pow2(runtime, 0,
> SNDRV_PCM_HW_PARAM_PERIOD_BYTES)) < 0)
>               return err;
> +     printk(KERN_INFO "vortex_pcm_open()
> %d\n",VORTEX_PCM_TYPE(substream->pcm));
> 
>       if (VORTEX_PCM_TYPE(substream->pcm) != VORTEX_PCM_WT) {
> 
> 
> Don't know why VORTEX_PCM_TYPE(substream->pcm) is always zero when using
> "aplay -d hw:0,1 test.wav" or "aplay -d hw:0,3 test.wav"

Hmm, if we are lucky, you are the one, who finally found out why the WT
engine does not work. The thing to be done, is to change the mechanism
in which we differentiate between WT and ADB channels. I just used
char[40] of the name string, but thats not a very safe thing. One thing
would be using a intermediate struct for substream->pcm->private_data,
for example:

typedef struct _au_pcm {
  int type;
  chip_t *chip;  /* type is probably wrong here. */
} au_pcm;

Best Regards
-- 
Manuel Jander
Electronic Engineer





reply via email to

[Prev in Thread] Current Thread [Next in Thread]