ddi_dma_cookie(9S)




NAME

     ddi_dma_cookie - DMA address cookie


SYNOPSIS

     #include <sys/sunddi.h>


INTERFACE LEVEL

     Solaris DDI specific (Solaris DDI).


DESCRIPTION

     The ddi_dma_cookie_t structure contains DMA address informa-
     tion  required  to  program  a  DMA engine. The structure is
     filled    in    by    a    call    to    ddi_dma_getwin(9F),
     ddi_dma_addr_bind_handle(9F),                             or
     ddi_dma_buf_bind_handle(9F),  to  get  device-specific   DMA
     transfer information for a DMA request or a DMA window.


STRUCTURE MEMBERS

     typedef struct {
            union {
                    uint64_t        _dmac_ll;       /* 64 bit DMA address */
                    uint32_t        _dmac_la[2];    /* 2 x 32 bit address */
            } _dmu;
            size_t          dmac_size;      /* DMA cookie size */
            uint_t          dmac_type;      /* bus specific type bits */
     } ddi_dma_cookie_t;

     You  can  access  the  DMA  address  through  the  #defines:
     dmac_address  for 32-bit addresses and dmac_laddress for 64-
     bit addresses. These macros are defined as follows:

     #define dmac_laddress   _dmu._dmac_ll
     #ifdef _LONG_LONG_HTOL
     #define dmac_notused    _dmu._dmac_la[0]
     #define dmac_address    _dmu._dmac_la[1]
     #else
     #define dmac_address    _dmu._dmac_la[0]
     #define dmac_notused    _dmu._dmac_la[1]
     #endif

     dmac_laddress specifies a 64-bit I/O address appropriate for
     programming  the  device's DMA engine. If a device has a 64-
     bit DMA address register a driver should use this  field  to
     program  the DMA engine. dmac_address specifies a 32-bit I/O
     address. It should be used for devices that  have  a  32-bit
     DMA  address register. The I/O address range that the device
     can address and other DMA attributes have to be specified in
     a ddi_dma_attr(9S) structure.

     dmac_size describes the length of the transfer in bytes.

     dmac_type contains bus-specific type bits,  if  appropriate.
     For  example, a device on a PCI bus has PCI address modifier
     bits placed here.


SEE ALSO

     pci(4),  sbus(4),  sysbus(4),  ddi_dma_addr_bind_handle(9F),
     ddi_dma_buf_bind_handle(9F),             ddi_dma_getwin(9F),
     ddi_dma_nextcookie(9F), ddi_dma_attr(9S)

     Writing Device Drivers


Man(1) output converted with man2html