On Tuesday 19 April 2016 14:59:49 Jon Hunter wrote: > On 19/04/16 14:25, Vinod Koul wrote: > > On Mon, Apr 18, 2016 at 04:06:23PM +0100, Jon Hunter wrote: > >> On 14/04/16 12:04, Jon Hunter wrote: > >>> I had a look at this, but actually, I don't think this is going to work. > >>> > >>> Looking at dma_request_channel(), it is going to get a DMA channel that > >>> matches the mask for any DMA controller. In the xlate I already know > >>> which DMA controller I am and I just want one of the channels. The flow > >>> here is ... > >>> > >>> dma_request_chan() > >>> --> of_dma_request_slave_channel() > >>> --> xlate() > >>> --> dma_get_any_slave_channel() > >>> > >>> There are several other DMA drivers that are calling > >>> dma_get_any_slave_channel() from their xlate function which makes sense > >>> because they are requesting one of their own channels. > >>> > >>> I can understand that you wish to consolidate the APIs for requesting a > >>> channel, but it seems to me that you still need to have an API that DMA > >>> controller drivers can call where they can pass their dma_device > >>> structure to ensure you get a channel for the appropriate DMA controller. > > > > Yes but the idea was that xlate will help you to get the right channel. The > > whole dmaengine property was supposed to help you with that > > Well it depends on the DMA controller. In the case of tegra the xlate > helps you extract the slave request ID for a given device. However, > because any channel can be used with any slave request ID, we don't care > about the exact channel. So we request any available channel for the DMA > controller in question and program it with the slave request we got from > the xlate. Right. the cleanup was supposed to reduce the number of interfaces that a slave driver can call and consolidate them as much as possible into dma_request_chan(), but we still need dma_get_any_slave_channel() as an interface for the dmaengine masters as you said. > I have seen some DMA drivers (such as imx-dma) use the filter function > to match the DMA controller, but it seems daft to use the filter > function to match the DMA controller when we already know in the xlate > which DMA controller we are. The filter functions should ideally all go away after the cleanup is complete. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html