I think you mean "seg".

It sounds like you need to have an address that is aligned on a 64K 
boundary, right?  seg doesn't quite get you there, since it only ensures 
that a segment doesn't *cross* a 64K boundary.

I think you should set align to the appropriate alignment restriction, 
i.e. dma_attr_align = 65536.  That should do the trick for you.

    -- Garrett

Steven Stallion wrote:
> All,
>
> I'm having some problems getting DMA to align appropriately for the
> DP8390. The DP8390's DMA engine is programmed with the upper 16 bits in
> single bus mode (single 32-bit DMA).
>
> After reading the documentation for ddi_dma_attr_t, it looks like
> dma_attr_sgl can be used to accomplish this, however I can't seem to get
> dma_cookie_t.dmac_address to align correctly:
>
>
> static ddi_dma_attr_t ne_dma_attr = {
>       DMA_ATTR_V0,    /* dma_attr_version */
>       0,              /* dma_attr_addr_lo */
>       0xffffffff,     /* dma_attr_addr_hi */
>       0xffffffff,     /* dma_attr_count_max */
>       1,              /* dma_attr_align */
>       0x1f,           /* dma_attr_burstsizes */
>       1,              /* dma_attr_minxfer */
>       0xffffffff,     /* dma_attr_maxxfer */
>       0xffff,         /* dma_attr_sgl */
>       1,              /* dma_attr_sgllen */
>       1,              /* dma_attr_granular */
>       0               /* dma_attr_flags */
> };
>
> dmac.dma_address is: 0xc0190040.
>
> Any ideas?
>
> Steve
>   

_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to