From: Adrian McMenamin <adrian@mcmen.demon.co.uk>
To: Lee Revell <rlrevell@joe-job.com>
Cc: linux-sh <linuxsh-dev@lists.sourceforge.net>,
alsa-devel@alsa-project.org
Subject: Re: kernel threads etc
Date: Tue, 07 Mar 2006 21:19:42 +0000 [thread overview]
Message-ID: <1141766382.9232.10.camel@localhost.localdomain> (raw)
In-Reply-To: <1141690930.25487.104.camel@mindpipe>
On Mon, 2006-03-06 at 19:22 -0500, Lee Revell wrote:
> On Tue, 2006-03-07 at 00:11 +0000, Adrian McMenamin wrote:
> > It transfers - without CPU intervention - memory from the SH4 (main
> > CPU)
> > memory to the ARM7 (sound processing chip) memory (ie the playback
> > ring
> > buffer). The function simply sets the register values and off it goes
> >
> >
>
> OK - so it's the same DMA I am familiar with, it just needs to be
> reprogrammed every period - IOW you can't tell it "repeatedly transfer
> audio to this location until I tell you to stop".
>
> If this is the case then I would say forget about the kernel thread and
> the copy/silence callbacks - just do all the work in the interrupt
> handler.
>
OK. I am doing this (dealing with it in the interrupt handler) and so
far it seems to work quite well, though it is still stuck in an endless
loop, but I have a fair idea why, but i'm not sure how to deal with it.
Right now this is what happens:
0. Create a DMA buffer in SH4 space - this is used as the source for the
dma transfer (the target is in the ARM7's memory space). Alsa seems to
fill up this buffer easily enough
1. Fill the ring buffer completely with first DMA transfer (ring buffer
has space for 8 periods) on receiving the SNDDRV_PCM_TRIGGER_START, then
start the ARM7 playback
2. ARM7 fires interrupt on SH4 bus every time period is played
3. SH4 interrupt handler counts interrupts - have 4 elapsed? if yes then
fill up first half of ring buffer - have 8 elapsed? then fill up second
half
4. However the data in the DMA buffer never seems to change - ie I just
play the same 8 periods worth of sound, and the buffer never fills up
with new material from the user space/application/alsa middle layer -
and the calling app blocks ad infinitum, because clearly it is never
told to send any more data
How do I fix this?
-------------------------------------------------------
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
next prev parent reply other threads:[~2006-03-07 21:19 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1141684061.9230.15.camel@localhost.localdomain>
2006-03-06 23:11 ` kernel threads etc Lee Revell
2006-03-06 23:29 ` Adrian McMenamin
2006-03-06 23:38 ` Adrian McMenamin
[not found] ` <1141687750.9230.24.camel@localhost.localdomain>
2006-03-06 23:48 ` Lee Revell
2006-03-07 0:11 ` Adrian McMenamin
[not found] ` <1141690313.9230.32.camel@localhost.localdomain>
2006-03-07 0:22 ` Lee Revell
2006-03-07 21:19 ` Adrian McMenamin [this message]
2006-03-07 21:29 ` Lee Revell
2006-03-07 21:32 ` Adrian McMenamin
[not found] ` <1141767139.9232.17.camel@localhost.localdomain>
2006-03-07 21:36 ` Lee Revell
2006-03-07 23:28 ` Adrian McMenamin
2006-03-07 0:26 ` Lee Revell
[not found] ` <1141688305.9230.26.camel@localhost.localdomain>
2006-03-06 23:49 ` Lee Revell
2006-03-06 22:27 Adrian McMenamin
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=1141766382.9232.10.camel@localhost.localdomain \
--to=adrian@mcmen.demon.co.uk \
--cc=alsa-devel@alsa-project.org \
--cc=linuxsh-dev@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.