Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Aug 1997 18:22:01 -0700
From:      Amancio Hasty <hasty@rah.star-gate.com>
To:        multimedia@FreeBSD.ORG
Cc:        luigi@labinfo.iet.unipi.it
Subject:   [snd] For your review: isa.c
Message-ID:  <199708220122.SAA00395@rah.star-gate.com>

next in thread | raw e-mail | index | archive | help

The review is needed here first in order to pass the mods thru the 
freebsd gauntlet as a step to check in the sound driver.

The mods are for FreeBSD -current and hopefully the mods
will be apply to FreeBSD 2.2.

Background:

The sound driver 3.5 (guspnp series of sound drivers) uses auto dma
to process audio streams. This saves time by not having to 
setup a dma channel for each dma transaction additionally it 
minimizes latency time .


The need for this change arose from the sound driver support
for xquake with respect to isa_dmastatus. For some reason
Luigi check in a version of isa_dmastatus which checks for a 
busy flag when I requested for -current's isa_dmastatus to
be revised  objections were raised to eliminating the sanity checks
from isa_dmastatus. I requested current's hackers to devise
a suitable interface which I could use and no one so far has
volunteer any code.


For auto dma , isa_dmastart gets called once which right now it
sets the busy flag however since I don't call isa_dmastart again
to initiate a dma transfer I don't see the point of calling 
isa_dmadone . Currently, the sound drivers allocates memory below
the 16MB memory region so we dont use bounce buffers.

If we want to keep the sanity checks then I suggest to bracket
at least the busy flag check by way of checking to see if the channel
is operating in auto dma mode and I will be more than 
happy to modify the guspnp driver to call isa_dma_acquire ,
isa_dma_done, and isa_dma_release.


One more thing, Luigi's latest incarnation of isa_dmastatus does
not work with my guspnp so it will be nice if someone can shed
some light into is the principal difference between current's
isa_dmastatus and luigi's original isa_dmastatus.

---
mods:
static dma_auto_flag to determine when a dma channel is being used
in auto dma mode. All routines which check the busy flag first check
to see if the channel is auto mode if so it skips the busy flag.

I put back  Luigi's old isa_dmastatus since it works with my guspnp
and for comparison purposes current's isa_dmastatus is included however
is "ifdef out".

I have modified the sound driver to reflect the changes in isa.c when
we agree on a proper isa.c which we can use with the sound driver
I will release both, the sound driver and isa.c

	Thank you,
	Amancio











Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199708220122.SAA00395>