lkml.org 
[lkml]   [2008]   [Mar]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/2] Add device_prep_dma_interrupt support to fsldma.c
    On Mon, Mar 10, 2008 at 8:25 PM, Zhang Wei <wei.zhang@freescale.com> wrote:
    > This is a bug that I assigned DMA_INTERRUPT capability to fsldma
    > but missing device_prep_dma_interrupt function. For a bug in
    > dmaengine.c the driver passed BUG_ON() checking. The patch fixes it.
    >
    > Signed-off-by: Zhang Wei <wei.zhang@freescale.com>
    > ---
    > drivers/dma/fsldma.c | 27 +++++++++++++++++++++++++++
    > 1 files changed, 27 insertions(+), 0 deletions(-)
    >
    > diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
    > index 5dfedf3..5428f81 100644
    > --- a/drivers/dma/fsldma.c
    > +++ b/drivers/dma/fsldma.c
    > @@ -406,6 +406,32 @@ static void fsl_dma_free_chan_resources(struct dma_chan *chan)
    > dma_pool_destroy(fsl_chan->desc_pool);
    > }
    >
    > +static struct dma_async_tx_descriptor *fsl_dma_prep_interrupt(
    > + struct dma_chan *chan)
    > +{
    > + struct fsl_dma_chan *fsl_chan;
    > + struct fsl_desc_sw *new;
    > +
    > + if (!chan)
    > + return NULL;
    > +
    > + fsl_chan = to_fsl_chan(chan);
    > +
    > + new = fsl_dma_alloc_descriptor(fsl_chan);
    > + if (!new) {
    > + dev_err(fsl_chan->dev, "No free memory for link descriptor\n");
    > + return NULL;
    > + }
    > +
    > + new->async_tx.cookie = -EBUSY;
    > + new->async_tx.ack = 0;
    > +
    > + /* Set End-of-link to the last link descriptor of new list*/
    > + set_ld_eol(fsl_chan, new);

    Question, is 'set_ld_eol' safe to call on descriptors that may not be
    the last in the list? For example what about the following sequence:

    /* prepare two descriptors */
    tx1 = fsl_dma_prep_interrupt(chan);
    tx2 = fsl_dma_prep_memcpy(chan);

    /* submit out of order */
    tx2->tx_submit(tx2);
    tx1->tx_submit(tx1);

    This is only a concern if you plan to support channel switching at
    some point. For example, switching from a memcpy channel to an xor
    channel.

    Thanks,
    Dan


    \
     
     \ /
      Last update: 2008-03-11 22:59    [W:0.064 / U:0.112 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site