From: Nathan Bryant <nbryant@allegientsystems.com>
To: Doug Ledford <dledford@redhat.com>
Cc: Thomas Gschwind <tom@infosys.tuwien.ac.at>, linux-kernel@vger.kernel.org
Subject: Re: i810_audio
Date: Tue, 08 Jan 2002 15:01:33 -0500 [thread overview]
Message-ID: <3C3B501D.7050508@allegientsystems.com> (raw)
In-Reply-To: <20020105031329.B6158@infosys.tuwien.ac.at> <3C3A2B5D.8070707@allegientsystems.com> <3C3A301A.2050501@redhat.com> <3C3AA6F9.5090407@redhat.com>
Doug Ledford wrote:
>> Added stop_dac at the end. Otherwise the system gets locked up
>> sometimes.
>
>
>
> This is (I think) a red herring. I would suspect that the lockup you
> are seeing is more likely to have something to do with the changes in
> i810_get_dma_address(). I'm referring to the change to the do
> {}while() loop in particular. Also, if the change you made in
> i810_get_dma_address() is needed for the SiS chipset, then there would
> appear to be a hardware bug that needs worked around. However, I
> think this is the wrong way to solve it. In prog_dmabuf(), we set the
> control bits on the device such that when it finishes the LVI, it's
> *suppossed* to stop playback. Now, the only way I can think of that
> the CIV register would update as fast as you can read it in
> i810_get_dma_address() is if at the end of LVI, the card went into a
> loop and the CIV is essentially running from 0 to 31 and going round
> and round without doing anything. In that case, the proper fix may
> actually be to go into the interrupt handler and on LVI interrupt with
> count==0 (for playback) call stop_dac and do similarly for record.
> This is because I suspect that we aren't ever getting the DCH Stopped
> interrupt on the SiS card. Of course, the DCH Stop interrupt causes
> us to call stop_{dac,adc} as appropriate, so the call to stop_dac in
> drain_dac is redundant if this code is working as advertised. I
> suspect that fixing things in the interrupt handler will make the
> stop_dac call in drain_dac and the change in i810_get_dma_address()
> both unnecessary. Can you test that for me?
1) Is the LVI interrupt supposed to arrive when the chip *starts*
playing the last buffer?
2) Does SiS actually do it this way?
If your theory on why the registers are spinning is correct, and if we
receive the LVI interrupt with too much latency, your code will still
deadlock, Doug. (The LVI interrupt handler calls update_ptr first thing,
which calls get_dma_address.) Furthermore, if this turns out to be the
case, the LVI IRQ handler uses dmabuf->count to determine whether to
call stop_dac, and needs to call update_ptr to update dmabuf->count...
so an explicit stop_dac might be needed elsewhere.
Even if the LVI interrupt comes at the beginning of the buffer, those
2048 bytes will play in 10.67 ms. Can we really guarantee that kind of
latency?
next prev parent reply other threads:[~2002-01-08 20:02 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <3C338217.1080207@allegientsystems.com>
2002-01-05 2:13 ` i810_audio Thomas Gschwind
2002-01-07 19:32 ` i810_audio Nathan Bryant
2002-01-07 23:12 ` i810_audio Nathan Bryant
2002-01-07 23:32 ` i810_audio Doug Ledford
2002-01-08 7:59 ` i810_audio Doug Ledford
2002-01-08 8:11 ` i810_audio Doug Ledford
2002-01-08 9:02 ` i810_audio Doug Ledford
2002-01-08 15:11 ` i810_audio Mario Mikocevic
2002-01-08 19:21 ` i810_audio Doug Ledford
2002-01-08 19:22 ` i810_audio Nathan Bryant
2002-01-09 15:47 ` i810_audio Mario Mikocevic
2002-01-08 20:01 ` Nathan Bryant [this message]
2002-01-08 20:15 ` i810_audio Doug Ledford
2002-01-08 20:23 ` i810_audio Nathan Bryant
2002-01-08 8:22 ` i810_audio Martin Dalecki
2002-01-08 16:31 i810_audio willy tarreau
2002-01-08 19:58 ` i810_audio Doug Ledford
2002-01-08 23:03 ` i810_audio willy tarreau
2002-01-09 6:28 ` i810_audio Nick Papadonis
2002-01-09 7:16 ` i810_audio willy tarreau
-- strict thread matches above, loose matches on Subject: below --
2002-01-09 7:09 i810_audio reddog83
[not found] <3C3BFF98.9080309@redhat.com>
2002-01-09 9:08 ` i810_audio willy tarreau
2002-01-10 6:42 i810_audio reddog83
2002-01-10 18:59 i810_audio reddog83
2002-01-10 19:21 i810_audio reddog83
2002-01-11 0:33 ` i810_audio Doug Ledford
2002-11-10 23:37 i810 audio Alan Cox
2002-11-12 23:06 ` Brian C. Huffman
2002-11-12 23:38 ` Alan Cox
2002-11-12 23:43 ` Doug Ledford
2002-11-13 0:04 ` Peter Kundrat
2002-11-13 0:43 ` Alan Cox
2002-11-13 12:08 ` Brian C. Huffman
2002-11-12 23:52 ` Peter Kundrat
2002-11-11 21:16 i810_audio Rus Foster
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=3C3B501D.7050508@allegientsystems.com \
--to=nbryant@allegientsystems.com \
--cc=dledford@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tom@infosys.tuwien.ac.at \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox