Messages in this thread | | | Date | Fri, 20 Jan 2012 18:03:58 +0530 | From | Ravi Kumar V <> | Subject | Re: [PATCH v2 1/2] dmaengine: Add support for per xfer specific privatedata & box dma |
| |
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.
| |