lkml.org 
[lkml]   [2012]   [Jan]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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.


    \
     
     \ /
      Last update: 2012-01-20 13:37    [W:3.144 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site