Re: [PATCH v2 1/2] dmaengine: Add support for per xfer specific privatedata & box dma

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/17/2012 7:23 PM, Vinod Koul wrote:
On Fri, 2012-01-06 at 18:17 +0530, Ravi Kumar V wrote:

diff --git a/include/asm-generic/scatterlist.h b/include/asm-generic/scatterlist.h
index 5de0735..e66dfcb 100644
--- a/include/asm-generic/scatterlist.h
+++ b/include/asm-generic/scatterlist.h
@@ -14,6 +14,7 @@ struct scatterlist {
  #ifdef CONFIG_NEED_SG_DMA_LENGTH
  	unsigned int	dma_length;
  #endif
+	unsigned long	private_data;
what do you plan to pass here. Please keep in mind this is a generic
scatterlist structure, and modifying it for your purposes doesn't seem
to be a great one!
Also why can't you pass this as addition argument in your new "BOX API"?
We are using DMA-Engine framework for both SG mode and BOX mode of our HW.
For SG mode we are using device_prep_dma_sg API but the problem we are facing is we need to pass command configuration parameter along with each descriptor to our HW, we did not find any suitable API/structure in framework to support this.
So thought of adding new element in struct scatterlist.
please can you suggest a way to pass private parameter with
every descriptor.

  };

  /*
+
+struct dma_box_list {
+	dma_addr_t dma_row_address;
+	unsigned int dma_row_len;
+	unsigned int dma_row_num;
+	unsigned int dma_row_offset;
+	unsigned long private_data;
+};
again a private data here?
is this some kind of interleaved pattern?
Yes this interleaved pattern.
+
  /**
   * struct dma_device - info on the entity supplying DMA services
   * @chancnt: how many DMA channels are supported
@@ -497,6 +507,11 @@ struct dma_device {
  	struct dma_async_tx_descriptor *(*device_prep_dma_cyclic)(
  		struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len,
  		size_t period_len, enum dma_data_direction direction);
+	struct dma_async_tx_descriptor *(*device_prep_dma_box)(
+		struct dma_chan *chan, struct dma_box_list *dst_box,
+		struct dma_box_list *src_box, unsigned int num_list,
+		unsigned long flags);
still not clean what kind of transfer do you want to do here
We are doing interleaved pattern of data transfer between source and destination boxs, num_list is number of box mode commands Please can you refer patch 0/2 I have replied explaining about box mode transfer clearly.
+
  	int (*device_control)(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
  		unsigned long arg);





--
Sent by a consultant of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux