Re: DMA API issues

From: Jamey Hicks
Date: Fri Jun 18 2004 - 20:09:06 EST


Matt Porter wrote:

On Fri, Jun 18, 2004 at 02:33:18PM -0400, Jamey Hicks wrote:


Yes, it can be cleaner, but it's not something I would say is
completely broken with the DMA API. It does provide a way to
make your device specific implementation, regardless of whether
it's managed ideally via a struct device pointer. Migrating to
dev->dma* sounds suspiciously like a 2.7ism.


The DMA API is certainly not completely broken. Except for page_to_dma needing struct device the interface could be implemented with per-device dma operation implementations.

described, but there is already a good start towards that support in 2.6. The other thing that might be needed is passing device to


Where's that code?



arch/arm/common/dmabounce.c

page_to_dma so that device specific dma addresses can be constructed.



A struct device argument to page_to_dma seems like a no brainer to be
included.



Deepak Saxena wrote a pretty good summary as part if the discussion about this issue on the linux-arm-kernel mailing list:

http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2004-June/022796.html



Ahh, ok. Deepak and I have discussed this idea F2F on a several
occassions, I recall he needed it for the small floating PCI window
he has to manage on the IXP* ports. It may help in some embedded
PPC areas as well.



I think I'm looking for something like the PARISC hppa_dma_ops but more generic:
http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2004-June/022813.html



I see that's somewhat like what David Brownell suggested before...a single
pointer to a set of dma ops from struct device. hppa_dma_ops translated
into a generic dma_ops entity with fields corresponding to existing
DMA API calls would be a good starting point. We can get rid of some
address translation hacks in a lot of custom embedded PPC drivers
with something like this.


Yes, I think this would be generally useful.

Jamey


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/