Messages in this thread | | | From | "Adam J. Richter" <> | Date | Sat, 28 Dec 2002 07:41:04 -0800 | Subject | Re: [RFT][PATCH] generic device DMA implementation |
| |
David Brownell wrote: >Adam J. Richter wrote: >> At 2002-12-28 1:29:54 GMT, David Brownell wrote: >> >>>Isn't the goal to make sure that for every kind of "struct device *" ^^^^^ >>>it should be possible to use those dma_*() calls, without BUGging >>>out. >> >> No. >> >>>If that's not true ... then why were they defined? >> >> So that other memory mapped busses such as ISA and sbus >> can use them.
>That sounds like a "yes", not a "no" ... except for devices on busses ^^^^^^ Then it's not "every", which was your question. I guess I need to understand better how to interpret your questions.
>that don't have do memory mapped I/O. It's what I described: dma_*() >calls being used with struct device, without BUGging out.
Let's see if we agree. The behavior I expect is:
addr = dma_malloc(&some_usb_device->dev,size, &dma_addr,DMA_CONSISTENT) ===> BUG()
addr = dma_malloc(host_dev(some_usb_device), &dma_addr, DMA_CONSISTENT) ===> some consistent memory (or NULL).
where host_dev would be something like:
struct device *host_dev(struct usb_device *usbdev) { struct usb_hcd *hcd = usbdev->bus->hcpriv; return &hcd->pdev->device; /* actually, this would become &hcd->dev */ }
>> USB devices should do DMA operations with respect to their USB >> host adapters, typically a PCI device. For example, imagine a machine >> with two USB controllers on different bus instances.
>USB already does that ... you write as if it didn't.
I wasn't aware of it. I've looked up the code now. Thanks for the pointer. With generic DMA operations, we can delete most of drivers/bus/usb/core/buffer.c, specifically hcd_buffer_{alloc,free,{,un}map{,_sg},dmasync,sync_sg}, and their method pointers in struct usb_operations in drivers/usb/core/hcd.[ch] without introducing PCI dependency.
I hope this clarifies things. Please let me know if you think we still disagree on something.
Adam J. Richter __ ______________ 575 Oroville Road adam@yggdrasil.com \ / Milpitas, California 95035 +1 408 309-6081 | g g d r a s i l United States of America "Free Software For The Rest Of Us." - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |