Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Aug 1997 14:00:47 +1000
From:      Stephen McKay <syssgm@dtir.qld.gov.au>
To:        freebsd-hackers@freebsd.org
Cc:        syssgm@dtir.qld.gov.au
Subject:   Re: isa_dmastatus 
Message-ID:  <199708190400.OAA01354@ogre.dtir.qld.gov.au>
In-Reply-To: <199708190127.KAA15154@genesis.atrad.adelaide.edu.au> from Michael Smith at "Tue, 19 Aug 1997 01:27:59 %2B0000"
References:  <199708190127.KAA15154@genesis.atrad.adelaide.edu.au>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday, 19th August 1997, Michael Smith wrote:

>Amancio Hasty stands accused of saying:
>> So if we wish to support auto dma and use the existing dma interface
>> in isa.c then I suggest that we add a simple check in the isa 
>> dma routine to bypass the busy flag check when we are using 
>> auto dma.
>
>It sounds like you're just adding hairs to an existing wart.  This may
>well be the most expedient way to go in the short term though.

To be more specific, this seems like the way to go for 2.2.5.  For -current,
we can be more flamboyant.

>It sounds to me as though there is a need for a couple of different
>levels of access to the DMA support.  At the bottom, we need some
>primitives :
>
>isa_dmaacquire		- obtain a DMA channel
>isa_dmarelease		- release a DMA channel
>isa_dmastart		- start a DMA transfer
>isa_dmastop		- stop a DMA transfer
>isa_dmastatus		- query DMA status

Looks like a good start.  Can we please have more underscores?  Like
isa_dma_status?  These look lopsided.

>which provide hands-on access to the DMA hardware.  Above these, it seems
>that DMA consumers would benefit from 
>
>isa_dmatransact	- start one-shot DMA transaction
>isa_dmatransstatus	- query/complete DMA transaction
>
>where the first would take assorted parameters (address, port, direction,
>channel etc.), and then use the primitives to obtain the channel and start
>the transaction, and the second would allow for polling the status of a
>DMA transaction (instead of sleeping for it to finish, etg.).

Since the DMA channels are not shareable (please correct me if wrong),
there seems no point in combining acquiring a channel with any other
operation.  Then there's not much point in having isa_dma_transact.

I think we should continue directly using routines very much like we
have now, but clear up the difficulties with concepts like bounce buffering
and auto DMA by adding a few more routines, or at least some more flags.

Stephen.



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