eisa_dma_prog(D3X)eisa_dma_prog(D3X)NAMEeisa_dma_prog - program a DMA operation for a subsequent software request
SYNOPSIS
#include <sys/eisa.h>
void eisa_dma_prog(vint_t adap, struct eisa_dma_cb *dmacbptr, int chan, uchar_t mode);
Arguments
adap Bus adapter number (zero on an Indigo2).
dmacbptr
Pointer to the DMA command block specifying the DMA operation.
chan Channel over which the DMA operation is to take place.
mode Specifies whether the caller is willing to sleep waiting for to
allocate the desired DMA channel. If mode is set to
EISA_DMA_NOSLEEP, then the caller will sleep if necessary until the
requested channel becomes available for its use. If mode is set to
EISA_DMA_SLEEP, then the caller will not sleep, but eisa_dma_prog
will return FALSE if the requested DMA channel is not immediately
available.
DESCRIPTION
The eisa_dma_prog routine programs the DMA channel chan for the operation
specified by the DMA command block whose address is given by dmacbptr.
Note that eisa_dma_prog does not initiate the DMA transfer. Instead, the
transfer will be initiated by a subsequent request initiated by
eisa_dma_swstart() or eisa_dma_enable().
To program the operation, eisa_dma_prog requires exclusive use of the
specified DMA channel. The caller may specify, via the mode argument,
whether eisa_dma_prog should sleep waiting for a busy channel to become
available. If the specified channel is in use and mode is set to
EISA_DMA_SLEEP, then eisa_dma_prog will sleep until the channel becomes
available for its use. Otherwise, if EISA_DMA_NOSLEEP is specified and
the requested channel is not immediately available, eisa_dma_prog will
not program the channel, but will simply return a value of FALSE.
Return Values
eisa_dma_prog returns the value TRUE on success and FALSE otherwise.
Level
Base only if either mode is set to EISA_DMA_SLEEP.
Notes
Can sleep if mode is set to DMA_SLEEP or the routine specified by the
proc field of the eisa_dma_cb structure sleeps.
Page 1