bus_get_dma_tag now necessary for drivers using bus_dma
John-Mark Gurney
gurney_j at resnet.uoregon.edu
Tue Sep 5 22:04:00 UTC 2006
Hans Petter Selasky wrote this message on Tue, Sep 05, 2006 at 21:11 +0200:
> On Tuesday 05 September 2006 20:31, Scott Long wrote:
> > Poul-Henning Kamp wrote:
> > > In message <20060905173334.GH9421 at funkthat.com>, John-Mark Gurney writes:
> > >>This means that for each call to bus_dma_tag_create, instead of passing
> > >>a NULL pointer, you should call bus_get_dma_tag(yourdev) and use that
> > >>as the parent tag. I committed some example code to various drivers,
> > >>such as ahc, ata, em, and ohci.
> > >
> > > If there are never any exeptions to this requirement, why not
> > > pass "yourdev" and have the magic hidden, rather than add 17
> > > ritual characters to the API ?
> >
> > Drivers can have their own multi-level tag heirarchy. You'd have to
> > create a new bus_dma_tag_create() variant that expected a device_t
> > instead of a bus_dma_tag_t. This might be a good idea.
> >
>
> I think it is easier to share code with NetBSD if we use
> "bus_get_dma_tag(yourdev)".
>
> For example I use the following prototype on NetBSD and FreeBSD:
>
> void *
> usbd_mem_alloc(bus_dma_tag_t parent, u_int32_t size,
> u_int8_t align_power);
It won't prevent you from first creating a bus_dma_tag_t w/ no
restrictions but the dev, and passing that to this function.. Once
you have inherited the tag from the device, all children tag's will
have the correct tag...
--
John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not."
More information about the freebsd-arch
mailing list