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