Subject: [PATCH] DMA: let filter functions of of_dma_simple_xlate possible check of_node

From: [email-masked] (Stephen Warren)
Date: Fri, 23 Aug 2013 09:57:43 -0600

On 08/22/2013 07:29 PM, Richard Zhao wrote:
> On Fri, Aug 23, 2013 at 04:18:27AM +0800, Stephen Warren wrote:
>> On 08/21/2013 11:19 PM, Richard Zhao wrote:
>>> On Fri, Aug 02, 2013 at 10:00:00AM +0800, Richard Zhao wrote:
>>>> pass of_phandle_args dma_spec to dma_request_channel in of_dma_simple_xlate,
>>>> so the filter function could access of_node in of_phandle_args.
>>>>
>>>> It also remove restriction of #dma-cells has to be one.
>>>>
>>>> Signed-off-by: Richard Zhao <[email-masked]>
>>>> ---
>>>>  drivers/dma/edma.c     |  7 +++++--
>>>>  drivers/dma/of-dma.c   | 10 ++++------
>>>>  drivers/dma/omap-dma.c |  6 ++++--
>>>>  3 files changed, 13 insertions(+), 10 deletions(-)
>>>>
>>>
>>> Hi Vinod,
>>>
>>> Can you please pick up this change?
>>>
>>> Hi Stephen,
>>>
>>> Can you please give a ack or reviewed-by etc?
>>
>> Hmm. Looking at the patch, I'm not sure it's right.
>>
>> This patch simply passes all the specfier args to the filter function,
>> and the code to check the equality of the of_node to the filter args is
>> still duplicated in each DMA driver. Instead, the DMA core should be
>> implementing the equality check, and only even calling the
>> driver-specific filter function for devices where the client's phandle
>> matches the DMA providing device's of_node handle.
> 
> Filter function is called in dmaengine core code, independent of dt.

The core code can still check if a dmaengine's driver was instantiated
from DT and take additional actions in that case.

> And the reason why the driver has to write its own filter function is
> it has to store slave id there in its own way.

I'm not saying don't call the driver's filter function, but rather that
the dmaengine core should perform the common checks before doing so.