From: Barry Song <21cnbao@gmail.com>
To: Jassi Brar <jaswinder.singh@linaro.org>
Cc: dan.j.williams@intel.com, vkoul@infradead.org,
linux-kernel@vger.kernel.org, rmk+kernel@arm.linux.org.uk
Subject: Re: [PATCHv2] DMAEngine: Define generic transfer request api
Date: Fri, 16 Sep 2011 15:17:03 +0800 [thread overview]
Message-ID: <CAGsJ_4whS+_hEdyNgOKOUzRBCn=99Z4x0x_jg1qnsL+uTmjt+A@mail.gmail.com> (raw)
In-Reply-To: <1316072789-12830-1-git-send-email-jaswinder.singh@linaro.org>
2011/9/15 Jassi Brar <jaswinder.singh@linaro.org>:
> Define a new api that could be used for doing fancy data transfers
> like interleaved to contiguous copy and vice-versa.
> Traditional SG_list based transfers tend to be very inefficient in
> such cases as where the interleave and chunk are only a few bytes,
> which call for a very condensed api to convey pattern of the transfer.
>
> This api supports all 4 variants of scatter-gather and contiguous transfer.
> Besides, in future it could also represent common operations like
> device_prep_dma_{cyclic, memset, memcpy}
> and maybe some more that I am not sure of.
>
> Of course, neither can this api help transfers that don't lend to DMA by
> nature, i.e, scattered tiny read/writes with no periodic pattern.
>
> Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
> ---
>
> Changes since v1:
> 1) Dropped the 'dma_transaction_type' member until we really
> merge another type into this api. Instead added special
> type for this api - DMA_GENXFER in dma_transaction_type.
> 2) Renamed 'xfer_template' to 'dmaxfer_template' inorder to
> preserve namespace, closer to as suggested by Barry Song.
>
> drivers/dma/dmaengine.c | 2 +
> include/linux/dmaengine.h | 71 +++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 73 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
> index b48967b..63284f6 100644
> --- a/drivers/dma/dmaengine.c
> +++ b/drivers/dma/dmaengine.c
> @@ -699,6 +699,8 @@ int dma_async_device_register(struct dma_device *device)
> !device->device_prep_dma_cyclic);
> BUG_ON(dma_has_cap(DMA_SLAVE, device->cap_mask) &&
> !device->device_control);
> + BUG_ON(dma_has_cap(DMA_GENXFER, device->cap_mask) &&
> + !device->device_prep_dma_genxfer);
i don't think it is what i want here. device_prep_dma_genxfer should
be able to cover memcpy, slave or other modes, but not parallel with
them.
For example, if i use genxfer, but my devices are slave. i might not
need a device_prep_slave_sg since i have already prep_dma_genxfer, but
anyway, i need a DMA_SLAVE_CONFIG to set burst size or others. then
i'd like to have DMA_SLAVE flag but without device_prep_slave_sg
callback.
>
> BUG_ON(!device->device_alloc_chan_resources);
> BUG_ON(!device->device_free_chan_resources);
> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> index 8fbf40e..68ebe6c 100644
> --- a/include/linux/dmaengine.h
> +++ b/include/linux/dmaengine.h
> @@ -71,11 +71,79 @@ enum dma_transaction_type {
> DMA_ASYNC_TX,
> DMA_SLAVE,
> DMA_CYCLIC,
> + DMA_GENXFER,
> };
-barry
next prev parent reply other threads:[~2011-09-16 7:17 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-12 11:14 [PATCH] DMAEngine: Define generic transfer request api Jassi Brar
2011-08-16 12:56 ` Koul, Vinod
2011-08-16 13:06 ` Linus Walleij
2011-08-19 13:43 ` Koul, Vinod
2011-08-19 14:19 ` Linus Walleij
2011-08-19 15:46 ` Jassi Brar
2011-08-19 17:28 ` Koul, Vinod
2011-08-19 18:45 ` Jassi Brar
2011-08-23 14:43 ` Matt Porter
2011-08-16 14:32 ` Jassi Brar
2011-09-15 7:46 ` [PATCHv2] " Jassi Brar
2011-09-15 8:22 ` Russell King
2011-09-15 10:02 ` Jassi Brar
2011-09-16 7:17 ` Barry Song [this message]
2011-09-16 11:03 ` Jassi Brar
2011-09-16 9:07 ` Vinod Koul
2011-09-16 12:30 ` Jassi Brar
2011-09-16 17:06 ` Vinod Koul
2011-09-16 17:51 ` Jassi Brar
2011-09-19 3:23 ` Vinod Koul
2011-09-20 12:12 ` [PATCHv3] DMAEngine: Define interleaved " Jassi Brar
2011-09-20 16:52 ` Vinod Koul
2011-09-20 18:08 ` Jassi Brar
2011-09-21 6:32 ` Vinod Koul
2011-09-21 6:45 ` Jassi Brar
2011-09-21 6:51 ` Vinod Koul
2011-09-21 7:31 ` Jassi Brar
2011-09-21 10:18 ` Russell King
2011-09-21 15:21 ` Jassi Brar
2011-09-28 6:39 ` [PATCHv4] " Jassi Brar
2011-09-28 9:03 ` Vinod Koul
2011-09-28 15:15 ` Jassi Brar
2011-09-29 11:17 ` Vinod Koul
2011-09-30 6:43 ` Barry Song
2011-09-30 16:01 ` Jassi Brar
2011-10-01 3:05 ` Barry Song
2011-10-01 18:11 ` Vinod Koul
2011-10-01 18:45 ` Jassi Brar
2011-10-01 18:41 ` Jassi Brar
2011-10-01 18:48 ` Jassi Brar
2011-10-02 0:33 ` Barry Song
2011-10-03 6:24 ` Jassi Brar
2011-10-03 16:13 ` Russell King
2011-10-03 16:19 ` Jassi Brar
2011-10-03 17:15 ` Williams, Dan J
2011-10-03 18:23 ` Jassi Brar
2011-10-05 18:19 ` Williams, Dan J
2011-10-06 9:06 ` Jassi Brar
2011-10-05 18:14 ` Williams, Dan J
2011-10-06 7:12 ` Jassi Brar
2011-10-07 5:45 ` Vinod Koul
2011-10-07 11:27 ` Jassi Brar
2011-10-07 14:19 ` Vinod Koul
2011-10-07 14:38 ` Jassi Brar
2011-10-10 6:53 ` Vinod Koul
2011-10-10 9:16 ` Jassi Brar
2011-10-10 9:18 ` Vinod Koul
2011-10-10 9:53 ` Jassi Brar
2011-10-10 10:45 ` Vinod Koul
2011-10-10 11:16 ` Jassi Brar
2011-10-10 16:02 ` Vinod Koul
2011-10-10 16:28 ` Jassi Brar
2011-10-11 11:56 ` Vinod Koul
2011-10-11 15:57 ` Jassi Brar
2011-10-11 16:45 ` Vinod Koul
2011-10-12 5:41 ` Barry Song
2011-10-12 6:19 ` Vinod Koul
2011-10-12 6:30 ` Jassi Brar
2011-10-12 6:53 ` Barry Song
2011-10-11 16:44 ` Williams, Dan J
2011-10-11 18:42 ` Jassi Brar
2011-10-14 18:11 ` Bounine, Alexandre
2011-10-14 17:50 ` Bounine, Alexandre
2011-10-14 18:36 ` Jassi Brar
2011-10-14 19:15 ` Bounine, Alexandre
2011-10-15 11:25 ` Jassi Brar
2011-10-17 14:07 ` Bounine, Alexandre
2011-10-17 15:16 ` Jassi Brar
2011-10-17 18:00 ` Bounine, Alexandre
2011-10-17 19:29 ` Jassi Brar
2011-10-17 21:07 ` Bounine, Alexandre
2011-10-18 5:45 ` Jassi Brar
2011-10-18 7:42 ` Russell King
2011-10-18 8:30 ` Jassi Brar
2011-10-18 8:26 ` Vinod Koul
2011-10-18 8:37 ` Jassi Brar
2011-10-18 14:44 ` Bounine, Alexandre
2011-10-18 9:49 ` Russell King
2011-10-18 11:50 ` Jassi Brar
2011-10-18 11:59 ` Russell King
2011-10-18 17:57 ` Bounine, Alexandre
2011-10-24 3:49 ` Vinod Koul
2011-10-24 12:36 ` Bounine, Alexandre
2011-10-24 15:27 ` Vinod Koul
2011-10-18 17:26 ` Bounine, Alexandre
2011-10-18 17:35 ` Russell King
2011-10-18 17:53 ` Jassi Brar
2011-10-18 13:51 ` Bounine, Alexandre
2011-10-18 14:54 ` Jassi Brar
2011-10-18 15:15 ` Bounine, Alexandre
2011-09-30 15:47 ` Jassi Brar
2011-10-13 7:03 ` [PATCHv5] " Jassi Brar
2011-10-14 7:32 ` Barry Song
2011-10-14 11:51 ` Jassi Brar
2011-10-14 13:31 ` Vinod Koul
2011-10-14 13:51 ` Jassi Brar
2011-10-14 14:05 ` Vinod Koul
2011-10-14 14:18 ` Vinod Koul
2011-10-14 14:55 ` Barry Song
2011-10-14 15:06 ` Vinod Koul
2011-10-14 15:38 ` Barry Song
2011-10-14 16:09 ` Vinod Koul
2011-10-14 16:35 ` Jassi Brar
2011-10-14 17:04 ` Vinod Koul
2011-10-14 17:59 ` Jassi Brar
2011-10-15 17:11 ` Vinod Koul
2011-10-14 15:16 ` Vinod Koul
2011-10-14 15:50 ` Barry Song
2011-10-16 11:16 ` Jassi Brar
2011-10-16 12:16 ` Vinod Koul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAGsJ_4whS+_hEdyNgOKOUzRBCn=99Z4x0x_jg1qnsL+uTmjt+A@mail.gmail.com' \
--to=21cnbao@gmail.com \
--cc=dan.j.williams@intel.com \
--cc=jaswinder.singh@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rmk+kernel@arm.linux.org.uk \
--cc=vkoul@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).