Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp3592687yba; Mon, 29 Apr 2019 05:21:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqychqtG8FbiAAIm7BVJaUqA7jXxfBB9R/9msAOth1EOVZEVIRBJjQfAMaJwHYVE+wtsdDCs X-Received: by 2002:a62:4115:: with SMTP id o21mr62492281pfa.153.1556540509014; Mon, 29 Apr 2019 05:21:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556540509; cv=none; d=google.com; s=arc-20160816; b=sJ8n2MxlAxQfuISXEW8VUOvPv6QNfbsX8X5EilH0wq714dRjgfrDy9LGr8ABjj6FpV pdNAp/wPzunjMHcTdDPK9odYRX89M3LHmHL7SsC6uSJ7SrVYv/gzFl8W6OxvPeR2yjCM X96PTKDK5zvnd5wKA+KkGHt/dzKD4KVZxWgJhlNLoMekaOTz3Ft/hR4LxDEWqAXeLqth HyJNOESCRrrEwgTDiw2Ist3IuqcJuqhMGlXWHbYkZhIupbiwFGJ2c4kqwclHQSPFyIRv 5qFGoUjXREQbzT0n5+kpPTQmBVj2DLLmAwfdg+/s7qmTShocqlzd/BQucSYUh1ABuBTK pdxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=eFO0p/7UJRpxLYopOdRBBRpDf4lmxD0/G7tl+RGmL9s=; b=MgAReNKbuUbSqbyCBcmIThLchRF59uGCNZIUwXeBhRDdeS0b+p5LfjVxuvkpOMA8Bc c7VGfr1JeZaWHdFwWybGfGqzAatgjRTA47+hsKe7D/fY7tI97DaMpcsIPB94uA0GwNKs fRyNGWammXBJ1IZNTyjtV3ybnuPYXaPHB7QeOCK608U/M/QABF2uAxiXibXQwotQhnDq wP2FOnySLkMOmMx3I9PrVmZYUmCuCEvrks3WiCrRZJX+GjHj1n/nPPsQeQzW36pa+Z8T spMhp0QvH7sUAaoeaXDf0mR2LLfnfB81pjODiqdvXdOv1MrWGl+xpYtm+xKTKlK8fW0K IJwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=uNM939BH; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s123si9306248pfs.215.2019.04.29.05.21.33; Mon, 29 Apr 2019 05:21:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=uNM939BH; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728034AbfD2MUk (ORCPT + 99 others); Mon, 29 Apr 2019 08:20:40 -0400 Received: from mail-oi1-f194.google.com ([209.85.167.194]:47030 "EHLO mail-oi1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727956AbfD2MUk (ORCPT ); Mon, 29 Apr 2019 08:20:40 -0400 Received: by mail-oi1-f194.google.com with SMTP id d62so2214435oib.13 for ; Mon, 29 Apr 2019 05:20:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=eFO0p/7UJRpxLYopOdRBBRpDf4lmxD0/G7tl+RGmL9s=; b=uNM939BHOv4+pdSPK+Vzc1/5zuB63RUW5hgUqQ8Hvx4yfKIDCXAC1oMA0G6OuEyHnX /YNeO7H0d+7nGGHTKK8hd4GR5qk4CYC0ZtE9XZTRpdRvxYvEw7vpMMUCq0D0CbIAxomt vHxpGTDGwa9PG+wkPmhPxy0QsCYz0SwAXIRCEgkmaA2BgKyWJvL5yryq3oE7qaSUq0k4 0lZaFwbW2VLyNRntMGB0m9bbY+EyEjwUbCEGA9U3hzDe94M2QfBqL+kDdO0TUrLxBkPE 1LPMAD6T9vn74cRN6leBRQRzEBCXIy+qP6Q2IhvaX93CREg5Cc1XQQmc/J6lhy+VhxvG zoSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=eFO0p/7UJRpxLYopOdRBBRpDf4lmxD0/G7tl+RGmL9s=; b=NeoqeWzMGnpIeXbnugWPmSOnKur2iavgydG67zl1QIrLYrkxh4uKaEhejU0CGVdQJS d0qKpwrusxtgb1WwMIUmb5GlQCgbw6FtXRTnBWcfrr85QcFKEOXmNvd7xNkqIU/Lm/TE bbo36YugulbCW8WPpZBdi/oVe4XsLlakyPRHpMKt+r1qWA9YlqoxFWrYUYeuE7KrgZsA WNz7Lq7KY32eqvtnZ1u25ozofWxdo+P/LoEqpU6eUp6zMm5Nusc4S/Ta2Yq4RGmMFHPR dZN0mAvekKcTWStH6/7FaBAOoG3k+S92NSpRylLj49P1DPqYnBpk0rxe7R3m3X1e6yrQ OS3g== X-Gm-Message-State: APjAAAWgF+SALTaXmYYYngsAIXADAG58RfOLWUwgfP0Z/gZswG3FfTsZ mXcO++QgWBJUSDLUhIZTilkS1XRGshidHdr9nTtzvg== X-Received: by 2002:aca:61c3:: with SMTP id v186mr15973210oib.27.1556540438914; Mon, 29 Apr 2019 05:20:38 -0700 (PDT) MIME-Version: 1.0 References: <20190429115723.GK3845@vkoul-mobl.Dlink> In-Reply-To: <20190429115723.GK3845@vkoul-mobl.Dlink> From: Baolin Wang Date: Mon, 29 Apr 2019 20:20:26 +0800 Message-ID: Subject: Re: [PATCH 4/7] dmaengine: sprd: Add device validation to support multiple controllers To: Vinod Koul Cc: Dan Williams , eric.long@unisoc.com, Orson Zhai , Chunyan Zhang , Mark Brown , dmaengine@vger.kernel.org, LKML Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 29 Apr 2019 at 19:57, Vinod Koul wrote: > > On 15-04-19, 20:14, Baolin Wang wrote: > > From: Eric Long > > > > Since we can support multiple DMA engine controllers, we should add > > device validation in filter function to check if the correct controller > > to be requested. > > > > Signed-off-by: Eric Long > > Signed-off-by: Baolin Wang > > --- > > drivers/dma/sprd-dma.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/drivers/dma/sprd-dma.c b/drivers/dma/sprd-dma.c > > index 0f92e60..9f99d4b 100644 > > --- a/drivers/dma/sprd-dma.c > > +++ b/drivers/dma/sprd-dma.c > > @@ -1020,8 +1020,13 @@ static void sprd_dma_free_desc(struct virt_dma_desc *vd) > > static bool sprd_dma_filter_fn(struct dma_chan *chan, void *param) > > { > > struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); > > + struct of_phandle_args *dma_spec = > > + container_of(param, struct of_phandle_args, args[0]); > > u32 slave_id = *(u32 *)param; > > > > + if (chan->device->dev->of_node != dma_spec->np) > > Are you not using of_dma_find_controller() that does this, so this would > be useless! Yes, we can use of_dma_find_controller(), but that will be a little complicated than current solution. Since we need introduce one structure to save the node to validate in the filter function like below, which seems make things complicated. But if you still like to use of_dma_find_controller(), I can change to use it in next version. Thank. struct sprd_dma_filter_param { struct device_node *np; }; static struct dma_chan* sprd_dma_xlate(struct of_phandle_args *dma_spec, struct of_dma *of_dma) { param.np = dma_spec->node; return dma_request_channel(xxx); } of_dma_controller_register(np, sprd_dma_xlate, sdev); -- Baolin Wang Best Regards