On Tue, 16 Feb 2010 14:21:48 +0530
"Gadiyar, Anand" [off-list ref] wrote:
quoted
hcd->self.uses_dma = (dev->dma_mask != NULL);
Is it easier to make sure that PIO devices don't have dev->dma_mask set?
Not really. For instance, in the case of the DMA engine in the MUSB
controller in OMAP3, we can only use DMA with endpoints other than
EP0, and EP0 is what is used for control transfers.
It's not PIO for all the endpoints or DMA for all of them.
The HC driver does not have to be 100% truthful here. If the system
is not HIGHMEM, HCD can easily set uses_dma to false yet use DMA
by mapping buffers itself, without relying on the quoted code.
On a HIGHMEM system, block layer will bounce-buffer data in such case.
Hopefuly not a problem for ARM?
All network stack drivers work that way, BTW.
-- Pete