All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Revell <rlrevell@joe-job.com>
To: Paul Davis <paul@linuxaudiosystems.com>
Cc: Takashi Iwai <tiwai@suse.de>, Jaroslav Kysela <perex@suse.cz>,
	alsa-devel <alsa-devel@lists.sourceforge.net>
Subject: Re: emu10k1 multichannel playback design (was Re: [PATCH] emu10k1: add interval timer support)
Date: Sun, 26 Sep 2004 02:50:43 -0400	[thread overview]
Message-ID: <1096181442.7203.50.camel@krustophenia.net> (raw)
In-Reply-To: <1096170629.1357.19.camel@krustophenia.net>

On Sat, 2004-09-25 at 23:50, Lee Revell wrote: 
> On Sat, 2004-09-25 at 23:15, Paul Davis wrote:
> > >OK, I fixed the voice allocator to handle multichannel PCM.  Now it
> > >looks like the prepare callback is being called over and over in a loop.
> > 
> >    [ ... ]
> > 
> > >I am still missing parts of the driver, like the interrupt handler.  But
> > >it seems like the prepare callback should not loop this way.  Am I doing
> > >something wrong?
> > 
> 
> The interrupt handler fortunately was a one liner.  All I have left is
> the pointer callback and it should work.

OK, I have the basic driver working, but I think I am doing something
wrong somewhere.  Jack can open the device but the watchdog thread times
it out, and it looks like the prepare callback is being called over and
over.  However the hardware pointer looks correct:

ptr = 0x84c, ccca_start_addr = 0x803c
ptr = 0x10, buffer_size = 0x800, period_size = 0x400
in capture efx irq handler, updating playback stream
ptr = 0xc2f, ccca_start_addr = 0x803c
ptr = 0x3f3, buffer_size = 0x800, period_size = 0x400
in capture efx irq handler, updating playback stream
in snd_emu10k1_efx_playback_prepare - start_addr 0x1000 end_addr 0x11000
init voice - master 1 extra 0 start_addr 0x800 end_addr 0x1000
init voice - master 1 extra 0 start_addr 0x1000 end_addr 0x1800
init voice - master 1 extra 0 start_addr 0x1800 end_addr 0x2000
init voice - master 1 extra 0 start_addr 0x2000 end_addr 0x2800
init voice - master 1 extra 0 start_addr 0x2800 end_addr 0x3000
init voice - master 1 extra 0 start_addr 0x3000 end_addr 0x3800
init voice - master 1 extra 0 start_addr 0x3800 end_addr 0x4000
init voice - master 1 extra 0 start_addr 0x4000 end_addr 0x4800
init voice - master 1 extra 0 start_addr 0x4800 end_addr 0x5000
init voice - master 1 extra 0 start_addr 0x5000 end_addr 0x5800
init voice - master 1 extra 0 start_addr 0x5800 end_addr 0x6000
init voice - master 1 extra 0 start_addr 0x6000 end_addr 0x6800
init voice - master 1 extra 0 start_addr 0x6800 end_addr 0x7000
init voice - master 1 extra 0 start_addr 0x7000 end_addr 0x7800
init voice - master 1 extra 0 start_addr 0x7800 end_addr 0x8000
init voice - master 1 extra 0 start_addr 0x8000 end_addr 0x8800
ptr = 0x84d, ccca_start_addr = 0x803c
ptr = 0x11, buffer_size = 0x800, period_size = 0x400
in capture efx irq handler, updating playback stream
ptr = 0xc2f, ccca_start_addr = 0x803c
ptr = 0x3f3, buffer_size = 0x800, period_size = 0x400
in capture efx irq handler, updating playback stream
in snd_emu10k1_efx_playback_prepare - start_addr 0x1000 end_addr 0x11000
init voice - master 1 extra 0 start_addr 0x800 end_addr 0x1000

...

init voice - master 1 extra 0 start_addr 0x8000 end_addr 0x8800
ptr = 0x84d, ccca_start_addr = 0x803c
ptr = 0x11, buffer_size = 0x800, period_size = 0x400
in capture efx irq handler, updating playback stream
ptr = 0xc2f, ccca_start_addr = 0x803c
ptr = 0x3f3, buffer_size = 0x800, period_size = 0x400
in capture efx irq handler, updating playback stream
in snd_emu10k1_efx_playback_prepare - start_addr 0x1000 end_addr 0x11000
init voice - master 1 extra 0 start_addr 0x800 end_addr 0x1000

...

init voice - master 1 extra 0 start_addr 0x8000 end_addr 0x8800
ptr = 0x84c, ccca_start_addr = 0x803c
ptr = 0x10, buffer_size = 0x800, period_size = 0x400
in capture efx irq handler, updating playback stream
ptr = 0xc2f, ccca_start_addr = 0x803c
ptr = 0x3f3, buffer_size = 0x800, period_size = 0x400
in capture efx irq handler, updating playback stream
in snd_emu10k1_efx_playback_prepare - start_addr 0x1000 end_addr 0x11000
init voice - master 1 extra 0 start_addr 0x800 end_addr 0x1000

...

init voice - master 1 extra 0 start_addr 0x8000 end_addr 0x8800
ptr = 0x84e, ccca_start_addr = 0x803c
ptr = 0x12, buffer_size = 0x800, period_size = 0x400
in capture efx irq handler, updating playback stream
ptr = 0xc2c, ccca_start_addr = 0x803c
ptr = 0x3f0, buffer_size = 0x800, period_size = 0x400
in capture efx irq handler, updating playback stream

The jitter is about the same as with the extra voice method, 0-3
samples.  However it looks like with every other interrupt it resets the
stream.

Do I need to post the code to debug this further?

Lee




-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php

  reply	other threads:[~2004-09-26  6:50 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-17  7:19 [PATCH] emu10k1: add interval timer support Lee Revell
2004-09-17  8:59 ` Jaroslav Kysela
2004-09-21 19:36   ` Lee Revell
2004-09-22 10:16     ` Takashi Iwai
2004-09-22 10:17       ` Jaroslav Kysela
2004-09-22 15:01       ` Lee Revell
2004-09-24 13:43         ` Takashi Iwai
2004-09-24 13:56           ` Jaroslav Kysela
2004-09-24 14:53             ` Paul Davis
2004-09-24 15:13               ` Takashi Iwai
2004-09-24 15:26                 ` Paul Davis
2004-09-24 15:33                   ` Takashi Iwai
2004-09-24 21:02                 ` emu10k1 multichannel playback design (was Re: [PATCH] emu10k1: add interval timer support) Lee Revell
2004-09-24 22:32                   ` Paul Davis
2004-09-24 22:57                     ` Lee Revell
2004-09-25  4:05                     ` Lee Revell
2004-09-26  0:55                   ` Lee Revell
2004-09-26  2:51                     ` Lee Revell
2004-09-26  3:10                       ` Lee Revell
2004-09-26  3:15                       ` Paul Davis
2004-09-26  3:19                         ` Lee Revell
2004-09-26  3:50                         ` Lee Revell
2004-09-26  6:50                           ` Lee Revell [this message]
2004-09-26 11:38                   ` Jaroslav Kysela
2004-09-27  0:40                     ` Lee Revell
2004-09-27  6:48                       ` Jaroslav Kysela
2004-09-27 14:35                         ` Lee Revell
2004-11-03 19:43   ` [PATCH] emu10k1: add interval timer support Lee Revell
2004-11-03 21:24     ` Lee Revell
2004-11-03 23:08       ` Lee Revell
2004-11-09 14:24       ` Takashi Iwai
2004-11-10  4:32         ` Lee Revell
2004-11-10  9:50           ` Takashi Iwai
2004-11-04 17:05     ` Jaroslav Kysela
2004-11-04 19:13       ` Lee Revell

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=1096181442.7203.50.camel@krustophenia.net \
    --to=rlrevell@joe-job.com \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=paul@linuxaudiosystems.com \
    --cc=perex@suse.cz \
    --cc=tiwai@suse.de \
    /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.