All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Courtier-Dutton <James@superbug.co.uk>
To: Adrian McMenamin <adrian@mcmen.demon.co.uk>
Cc: Lee Revell <rlrevell@joe-job.com>, alsa-devel@lists.sourceforge.net
Subject: Re: pointer callback in pcm
Date: Sat, 11 Mar 2006 11:16:15 +0000	[thread overview]
Message-ID: <4412B17F.7080200@superbug.co.uk> (raw)
In-Reply-To: <1142020261.9246.3.camel@localhost.localdomain>

Adrian,

Here is a quick summary of what I think you have been saying.
1) Your hardware has min and max periods set to 8.
2) Your hardware can do DMA, but not periodic DMA.   <- This is really 
the crux of the problem.
3) You wish to use DMA.
4) Unknown:  What triggers the audio interrupt? It should be triggered 
once each period is completed.

Now, here is what the ALSA model assumes:
1) hardware period sizes are exactly the same size as the memory mapped 
DMA pages.
2) snd_period_ellapsed() is called at periodic intervals dependent on 
where the ADC is playing samples.
3) If the copy callback is NULL, ALSA assumes the DMA has already completed.
4) If the copy callback is not NULL, ALSA calls it, but when the copy 
callback returns, the copy has been completed.
5) The pointer callback is then called that should return the position 
of the ADC in frames (not bytes) within the audio buffer.

So, if you wish to use DMA, you should be calling snd_period_ellapsed() 
only after the DMA has completed, alternatively, the copy() callback 
should only return after the DMA transaction has completed, but I don't 
know if delaying the copy() return is allowed.
Can you get it to interrupt on each DMA completion?

I would recommend you trying to do the following:
1) Discover when the ADC has played the entire period.
2) start the DMA transfer.
3) At the DMA transfer complete interrrupt, call period_ellapsed().

So, the problem might be how to discover that the ADC has played the 
entire period.
You might have to use some sort of timer based polling to discover this.

James


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

  parent reply	other threads:[~2006-03-11 11:16 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-09 22:21 pointer callback in pcm Adrian McMenamin
2006-03-10  0:53 ` Lee Revell
2006-03-10 19:51   ` Adrian McMenamin
2006-03-10 20:16     ` Takashi Iwai
2006-03-10 20:21       ` Adrian McMenamin
2006-03-10 20:23       ` Lee Revell
2006-03-11 11:16     ` James Courtier-Dutton [this message]
2006-03-11 11:27       ` Adrian McMenamin
2006-03-11 15:42         ` James Courtier-Dutton
2006-03-11 15:53           ` Adrian McMenamin
2006-03-11 17:30           ` Adrian McMenamin
2006-03-11 18:47             ` James Courtier-Dutton
2006-03-11 19:08               ` Adrian McMenamin
2006-03-11 19:15                 ` James Courtier-Dutton
2006-03-11 19:18                   ` Adrian McMenamin
2006-03-11 19:37                     ` James Courtier-Dutton
2006-03-11 19:55                       ` Adrian McMenamin
2006-03-11 19:26               ` Adrian McMenamin
2006-03-11 19:35                 ` James Courtier-Dutton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4412B17F.7080200@superbug.co.uk \
    --to=james@superbug.co.uk \
    --cc=adrian@mcmen.demon.co.uk \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=rlrevell@joe-job.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.