Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp747812imm; Wed, 25 Jul 2018 05:39:41 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdexF5RDYQtMyqV3SPOt17DF7j1TMJo98p9fQpqO5ZKg72ISJI0oT2HDBilCvGudD4m0h75 X-Received: by 2002:a17:902:6ac3:: with SMTP id i3-v6mr21017818plt.252.1532522380995; Wed, 25 Jul 2018 05:39:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532522380; cv=none; d=google.com; s=arc-20160816; b=IwUo+m5j9TvWVogJzJgTB3KCA1seHvLZcFsrOHO0/JY7bHT2hTZJU/zk9QfjmY2xom muyHg7cWkyK1Ats5llq1qj0cE4ZLXDDEmsYymlmhOL826YNvD6nLkUUXSqSLYV6EBvY9 dVTM9JNp+d+1esd9oOYVZ3MJmBK0QfmXo+4qCATO5yXCJUiclZuzsBCCGiMhIkEb/Xux NhcRhEO+4qBTQ9z8rP9ke/xzefojPw6pxlmk3SiPyUTOllMaaVg63eky8DVR1om+bLky I+UyxAIMIupA6trEPQh6Ue3yshzaRAcE8qbpXgL7cLxLZoQrzzWf8zXPaCPU0mh4QeSz ut/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=awimQQpMp2BT3h9kk/4Lr6cWS1QnJHrIQnGXjG7eLYk=; b=B1LWtTAm8MCirV8mYy+beQ8PbYXXO6RJ697co8eL3lh4tj7G41xhzn0yHVujKCiVoN J7g8aDR9upi5d/pisvV8jHoxlLUYebyxhvCGmoKYSGiXMCmdMSVgKDHpWrczUxkBIvA4 rf0XrI/xbJHJKoDYki9G4O/x+QxfQWdM7ne9Cb/EPqmnyV1mZXs0vqaPqoQqo5M4r+aJ 2wRlnII6Jplc+PlxKT/OgVWCp8s8dH5clSZtg1H3c5dQxnDs68qLriqas2WOCZENEznm G/BvQIT+u4+ZkQzF+rLOpbLoNlAxJbS9XjO5xyFe4onMwknDxEX2Tgayx5n6cCvrvX9e uYLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=pZ8nn61j; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r17-v6si14130232pgd.682.2018.07.25.05.39.25; Wed, 25 Jul 2018 05:39:40 -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=@kernel.org header.s=default header.b=pZ8nn61j; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728992AbeGYNuG (ORCPT + 99 others); Wed, 25 Jul 2018 09:50:06 -0400 Received: from mail.kernel.org ([198.145.29.99]:57382 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728863AbeGYNuG (ORCPT ); Wed, 25 Jul 2018 09:50:06 -0400 Received: from localhost (unknown [122.178.229.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C16B620894; Wed, 25 Jul 2018 12:38:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1532522314; bh=fBXOginqq4qlGAfn+SPO2ngJXbLyvIH4JFJF+Fq3t0I=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=pZ8nn61j3gnO6fhT3fduefxZEkgRRx8YGXQPp/QX99OtZiMUrozS8J8uCKipwkhFK Nucf/NBJGO4HPu1S0YBfe2dmJk+14xi1IegNFiUIjjaGTs4VlLdv8HDSS2lgJCdg2q w73Var4rEhHL+HTF2mK/9crrkuseOiYvTKC1trQY= Date: Wed, 25 Jul 2018 18:08:26 +0530 From: Vinod To: Huang Shijie Cc: corbet@lwn.net, dan.j.williams@intel.com, robh@kernel.org, linux-doc@vger.kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] dmaengine: add a new helper dmam_async_device_register Message-ID: <20180725123826.GT3661@vkoul-mobl> References: <20180725054645.9723-1-sjhuang@iluvatar.ai> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180725054645.9723-1-sjhuang@iluvatar.ai> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 25-07-18, 13:46, Huang Shijie wrote: > This patch adds the dmam_async_device_register for DMA code. > Use the Devres to call the release for the DMA engine driver. no users? > > Signed-off-by: Huang Shijie > --- > Documentation/driver-model/devres.txt | 1 + > drivers/dma/dmaengine.c | 35 +++++++++++++++++++++++++++ > include/linux/dmaengine.h | 1 + > 3 files changed, 37 insertions(+) > > diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt > index a3e8bceb5f19..26c6de621446 100644 > --- a/Documentation/driver-model/devres.txt > +++ b/Documentation/driver-model/devres.txt > @@ -240,6 +240,7 @@ CLOCK > devm_of_clk_add_hw_provider() > > DMA > + dmam_async_device_register() can we name it dmaengine_async_device_register, not to confuse with dma APIs > dmam_alloc_coherent() > dmam_alloc_attrs() > dmam_declare_coherent_memory() > diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c > index 84ac38dbdb65..2477af0bdfc7 100644 > --- a/drivers/dma/dmaengine.c > +++ b/drivers/dma/dmaengine.c > @@ -1135,6 +1135,41 @@ void dma_async_device_unregister(struct dma_device *device) > } > EXPORT_SYMBOL(dma_async_device_unregister); > > +static void dmam_device_release(struct device *dev, void *res) > +{ > + struct dma_device *device; > + > + device = *(struct dma_device **)res; > + dma_async_device_unregister(device); > +} > + > +/** > + * dmam_async_device_register - registers DMA devices found > + * @device: &dma_device > + * > + * The operation is managed and will be undone on driver detach. > + */ > +int dmam_async_device_register(struct dma_device *device) > +{ > + void *p; > + int ret; > + > + p = devres_alloc(dmam_device_release, sizeof(void *), GFP_KERNEL); > + if (!p) > + return -ENOMEM; > + > + ret = dma_async_device_register(device); > + if (!ret) { > + *(struct dma_device **)p = device; > + devres_add(device->dev, p); > + } else { > + devres_free(p); > + } > + > + return ret; > +} > +EXPORT_SYMBOL(dmam_async_device_register); > + > struct dmaengine_unmap_pool { > struct kmem_cache *cache; > const char *name; > diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h > index c8c3a7a93802..b98bced0b98e 100644 > --- a/include/linux/dmaengine.h > +++ b/include/linux/dmaengine.h > @@ -1406,6 +1406,7 @@ static inline int dmaengine_desc_free(struct dma_async_tx_descriptor *desc) > /* --- DMA device --- */ > > int dma_async_device_register(struct dma_device *device); > +int dmam_async_device_register(struct dma_device *device); > void dma_async_device_unregister(struct dma_device *device); > void dma_run_dependencies(struct dma_async_tx_descriptor *tx); > struct dma_chan *dma_get_slave_channel(struct dma_chan *chan); > -- > 2.17.1 -- ~Vinod