Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757833AbcLRQ0a (ORCPT ); Sun, 18 Dec 2016 11:26:30 -0500 Received: from mga09.intel.com ([134.134.136.24]:2582 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753427AbcLRQ02 (ORCPT ); Sun, 18 Dec 2016 11:26:28 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,370,1477983600"; d="scan'208";a="1083708836" Date: Sun, 18 Dec 2016 21:56:02 +0530 From: Vinod Koul To: Abhishek Sahu Cc: dan.j.williams@intel.com, andy.gross@linaro.org, stanimir.varbanov@linaro.org, mcgrof@suse.com, okaya@codeaurora.org, pramod.gurav@linaro.org, arnd@arndb.de, linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-arm-msm@vger.kernel.org Subject: Re: [PATCH 2/5] dmaengine: Add support for custom data mapping Message-ID: <20161218162602.GR25795@localhost> References: <1481795755-15302-1-git-send-email-absahu@codeaurora.org> <1481795755-15302-3-git-send-email-absahu@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1481795755-15302-3-git-send-email-absahu@codeaurora.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2398 Lines: 53 On Thu, Dec 15, 2016 at 03:25:52PM +0530, Abhishek Sahu wrote: > The current DMA APIs only support SGL or data in generic format. > The QCA BAM DMA engine data cannot be mapped with already > available APIs due to following reasons. > > 1. The QCA BAM DMA engine uses custom flags which cannot be > mapped with generic DMA engine flags. > 2. Some peripheral driver like QCA QPIC NAND/LCD requires to > set specific flags (Like NWD, EOT) for some of the descriptors > in scatter gather list. The already available mapping APIs take > flags parameter in API itself and there is no support for > passing DMA specific flags for each SGL entry. > > Now this patch adds the support for making the DMA descriptor from > custom data with new DMA mapping function prep_dma_custom_mapping. > The peripheral driver will pass the custom data in this function and > DMA engine driver will form the descriptor according to its own > logic. In future, this API can be used by any other DMA engine > drivers also which are unable to do DMA mapping with already > available API’s. > > Signed-off-by: Abhishek Sahu > --- > include/linux/dmaengine.h | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h > index cc535a4..6324c1f 100644 > --- a/include/linux/dmaengine.h > +++ b/include/linux/dmaengine.h > @@ -692,6 +692,8 @@ struct dma_filter { > * be called after period_len bytes have been transferred. > * @device_prep_interleaved_dma: Transfer expression in a generic way. > * @device_prep_dma_imm_data: DMA's 8 byte immediate data to the dst address > + * @device_prep_dma_custom_mapping: prepares a dma operation from dma driver > + * specific custom data > * @device_config: Pushes a new configuration to a channel, return 0 or an error > * code > * @device_pause: Pauses any transfer happening on a channel. Returns > @@ -783,6 +785,9 @@ struct dma_device { > struct dma_async_tx_descriptor *(*device_prep_dma_imm_data)( > struct dma_chan *chan, dma_addr_t dst, u64 data, > unsigned long flags); > + struct dma_async_tx_descriptor *(*device_prep_dma_custom_mapping)( > + struct dma_chan *chan, void *data, > + unsigned long flags); This needs a discussion. Why do you need to add a new API for framework. What are NWD and EOT flags, cna you details out the flags? -- ~Vinod