Jose,

It's taking me a little longer than expected to finish the changes I
mentioned.  I'm trying to set this up so that it will be possible to test
emitting buffers to the ring as they come in, but keep the original code
in place, while sharing as much code as possible.  I'm borrowing some code
from the r128 driver, and alomst have this working, but I've got bugs and 
regressions to fix still. I saw your commit and wanted to get this to you
so you can see what I had in mind before you get too far along.  Let me 
know what you think.

BTW, regarding your last change: you're right that the register resets for
BUS_CNTL and SRC_CNTL are _not_ required to stop the DMA transfer.  The
card won't act on the changes made to these registers, but the values are
changed.  It's more of a security thing to leave things in a sane state
between dispatches.  Anyway, if you look at my diff, I have a separate
macro for emitting buffers to the ring -- I'd like to keep the existing
queue and dispatch functions around (plus the cosmetic changes) until we
see how the new approach goes.  That way we'll have a basis for comparison
and a working fallback.  I know the code gets a bit ugly with all the
preprocessor switches, but we can remove those and clean up down the road
when we find the best option.  The biggest problem with emitting to the
ring right away is handling restarting DMA when the card goes idle.  You
don't want to do it right away or it will go idle again.  You need to
allow a resonable amount of buffers to queue up on the card before
restarting it.

-- 
Leif Delgass 
http://www.retinalburn.net

Attachment: mach64-20020529.diff.gz
Description: GNU Zip compressed data

Reply via email to